From ff0f3225e5b015e1447f9465a8e2c20bb8457f16 Mon Sep 17 00:00:00 2001
From: lechuck <l3chuck@autistici.org>
Date: Sat, 10 Aug 2013 11:12:12 +0000
Subject: [PATCH] Upgrade wordpress to 3.6

---
 license.txt                                   |    2 +-
 readme.html                                   |   39 +-
 wp-activate.php                               |    1 -
 wp-admin/about.php                            |  115 +-
 wp-admin/admin-ajax.php                       |    4 +-
 wp-admin/admin-header.php                     |    5 +-
 wp-admin/admin.php                            |    6 +-
 wp-admin/async-upload.php                     |    5 +-
 wp-admin/credits.php                          |    2 +-
 wp-admin/css/colors-classic.css               |   82 +-
 wp-admin/css/colors-classic.min.css           |    2 +-
 wp-admin/css/colors-fresh.css                 |  104 +-
 wp-admin/css/colors-fresh.min.css             |    2 +-
 wp-admin/css/customize-controls-rtl.css       |   24 +-
 wp-admin/css/customize-controls-rtl.min.css   |    2 +-
 wp-admin/css/customize-controls.css           |  209 +-
 wp-admin/css/customize-controls.min.css       |    2 +-
 wp-admin/css/ie-rtl.css                       |    6 +-
 wp-admin/css/ie.css                           |   16 +
 wp-admin/css/ie.min.css                       |    2 +-
 wp-admin/css/wp-admin-rtl.css                 |  376 +-
 wp-admin/css/wp-admin-rtl.min.css             |    2 +-
 wp-admin/css/wp-admin.css                     | 1326 +++++--
 wp-admin/css/wp-admin.min.css                 |    2 +-
 wp-admin/custom-background.php                |    9 +-
 wp-admin/custom-header.php                    |    5 +-
 wp-admin/customize.php                        |   12 +-
 wp-admin/edit-comments.php                    |   20 +-
 wp-admin/edit-form-advanced.php               |   71 +-
 wp-admin/edit-form-comment.php                |    6 +-
 wp-admin/edit-link-form.php                   |    1 -
 wp-admin/edit-tags.php                        |    4 +-
 wp-admin/edit.php                             |   25 +-
 wp-admin/freedoms.php                         |    6 +-
 wp-admin/images/arrows-pr-2x.png              |  Bin 0 -> 723 bytes
 wp-admin/images/arrows-pr.png                 |  Bin 0 -> 461 bytes
 wp-admin/images/lock-2x.png                   |  Bin 0 -> 716 bytes
 wp-admin/images/lock.png                      |  Bin 0 -> 338 bytes
 wp-admin/images/post-formats-vs.png           |  Bin 0 -> 2794 bytes
 wp-admin/images/post-formats.png              |  Bin 0 -> 2220 bytes
 wp-admin/images/post-formats32-vs.png         |  Bin 0 -> 7512 bytes
 wp-admin/images/post-formats32.png            |  Bin 0 -> 7829 bytes
 wp-admin/includes/ajax-actions.php            |  249 +-
 wp-admin/includes/bookmark.php                |    8 +-
 wp-admin/includes/class-ftp-pure.php          |    4 +-
 wp-admin/includes/class-ftp-sockets.php       |    4 +-
 wp-admin/includes/class-ftp.php               |    2 +-
 .../includes/class-wp-comments-list-table.php |   18 +-
 .../includes/class-wp-filesystem-base.php     |    4 +-
 .../includes/class-wp-filesystem-direct.php   |    2 +-
 .../class-wp-filesystem-ftpsockets.php        |    2 +-
 .../includes/class-wp-filesystem-ssh2.php     |    8 +-
 wp-admin/includes/class-wp-importer.php       |    3 +-
 .../includes/class-wp-links-list-table.php    |    2 +-
 wp-admin/includes/class-wp-list-table.php     |    4 +-
 .../includes/class-wp-media-list-table.php    |   26 +-
 .../includes/class-wp-ms-sites-list-table.php |    2 +-
 .../class-wp-ms-themes-list-table.php         |    8 +-
 .../includes/class-wp-ms-users-list-table.php |    6 +-
 .../class-wp-plugin-install-list-table.php    |    8 +-
 .../includes/class-wp-plugins-list-table.php  |   38 +-
 .../includes/class-wp-posts-list-table.php    |  128 +-
 .../includes/class-wp-terms-list-table.php    |   55 +-
 .../class-wp-theme-install-list-table.php     |   26 +-
 .../includes/class-wp-themes-list-table.php   |    4 +-
 wp-admin/includes/class-wp-upgrader.php       |   66 +-
 .../includes/class-wp-users-list-table.php    |    6 +-
 wp-admin/includes/comment.php                 |    8 +-
 wp-admin/includes/dashboard.php               |   30 +-
 wp-admin/includes/deprecated.php              |   11 +-
 wp-admin/includes/export.php                  |    2 +-
 wp-admin/includes/file.php                    |   22 +-
 wp-admin/includes/image-edit.php              |   23 +-
 wp-admin/includes/image.php                   |   40 +-
 wp-admin/includes/import.php                  |    3 +-
 wp-admin/includes/media.php                   |  322 +-
 wp-admin/includes/menu.php                    |    2 +-
 wp-admin/includes/meta-boxes.php              |   40 +-
 wp-admin/includes/misc.php                    |  114 +-
 wp-admin/includes/ms.php                      |   29 +-
 wp-admin/includes/nav-menu.php                |  258 +-
 wp-admin/includes/plugin-install.php          |   21 +-
 wp-admin/includes/plugin.php                  |    2 +-
 wp-admin/includes/post.php                    |  245 +-
 wp-admin/includes/revision.php                |  209 +
 wp-admin/includes/schema.php                  |   41 +-
 wp-admin/includes/screen.php                  |   43 +-
 wp-admin/includes/taxonomy.php                |    2 +-
 wp-admin/includes/template.php                |  161 +-
 wp-admin/includes/theme-install.php           |   22 +-
 wp-admin/includes/theme.php                   |    6 +-
 wp-admin/includes/update-core.php             |   29 +-
 wp-admin/includes/upgrade.php                 |   36 +-
 wp-admin/includes/user.php                    |   21 +-
 wp-admin/includes/widgets.php                 |    2 +-
 wp-admin/index.php                            |    2 -
 wp-admin/install.php                          |   22 +-
 wp-admin/js/accordion.js                      |   55 +
 wp-admin/js/accordion.min.js                  |    1 +
 wp-admin/js/categories.js                     |   34 -
 wp-admin/js/categories.min.js                 |    1 -
 wp-admin/js/color-picker.js                   |    5 +-
 wp-admin/js/color-picker.min.js               |    2 +-
 wp-admin/js/common.js                         |   16 +-
 wp-admin/js/common.min.js                     |    2 +-
 wp-admin/js/custom-fields.js                  |   34 -
 wp-admin/js/custom-fields.min.js              |    1 -
 wp-admin/js/customize-controls.js             |   25 +-
 wp-admin/js/customize-controls.min.js         |    2 +-
 wp-admin/js/editor.js                         |   11 +-
 wp-admin/js/editor.min.js                     |    2 +-
 wp-admin/js/inline-edit-post.js               |   52 +-
 wp-admin/js/inline-edit-post.min.js           |    2 +-
 wp-admin/js/inline-edit-tax.js                |    2 +-
 wp-admin/js/inline-edit-tax.min.js            |    2 +-
 wp-admin/js/iris.min.js                       |    6 +-
 wp-admin/js/link.js                           |    2 +-
 wp-admin/js/link.min.js                       |    2 +-
 wp-admin/js/nav-menu.js                       |  532 ++-
 wp-admin/js/nav-menu.min.js                   |    2 +-
 wp-admin/js/plugin-install.js                 |    2 +-
 wp-admin/js/plugin-install.min.js             |    2 +-
 wp-admin/js/post.js                           |  171 +-
 wp-admin/js/post.min.js                       |    2 +-
 wp-admin/js/revisions.js                      | 1080 ++++++
 wp-admin/js/revisions.min.js                  |    1 +
 wp-admin/js/tags.js                           |    2 +-
 wp-admin/js/tags.min.js                       |    2 +-
 wp-admin/js/theme.js                          |   25 +
 wp-admin/js/theme.min.js                      |    2 +-
 wp-admin/link-add.php                         |    5 +-
 wp-admin/link-manager.php                     |    4 +-
 wp-admin/link.php                             |    2 +-
 wp-admin/load-scripts.php                     |    2 +-
 wp-admin/load-styles.php                      |    2 +-
 wp-admin/maint/repair.php                     |    2 +-
 wp-admin/media-new.php                        |    2 +-
 wp-admin/menu-header.php                      |   12 +-
 wp-admin/menu.php                             |   20 +-
 wp-admin/nav-menus.php                        |  631 +--
 wp-admin/network.php                          |    7 +-
 wp-admin/network/index.php                    |   32 +-
 wp-admin/network/menu.php                     |    2 +-
 wp-admin/network/settings.php                 |   12 +-
 wp-admin/network/site-info.php                |    2 +-
 wp-admin/network/site-new.php                 |    2 +-
 wp-admin/network/site-settings.php            |   12 +-
 wp-admin/network/site-users.php               |   10 +-
 wp-admin/network/sites.php                    |    4 +-
 wp-admin/network/themes.php                   |    2 +
 wp-admin/network/upgrade.php                  |   16 +-
 wp-admin/network/user-new.php                 |    2 +-
 wp-admin/options-discussion.php               |    2 +-
 wp-admin/options-head.php                     |    5 +-
 wp-admin/options-media.php                    |    6 +-
 wp-admin/options-permalink.php                |   15 +-
 wp-admin/options-writing.php                  |   20 +-
 wp-admin/options.php                          |    8 +-
 wp-admin/plugin-editor.php                    |   17 +-
 wp-admin/plugin-install.php                   |    2 +-
 wp-admin/plugins.php                          |    2 +-
 wp-admin/post-new.php                         |   11 +
 wp-admin/post.php                             |   98 +-
 wp-admin/press-this.php                       |    9 +-
 wp-admin/revision.php                         |  283 +-
 wp-admin/setup-config.php                     |    4 +-
 wp-admin/theme-editor.php                     |   10 +-
 wp-admin/theme-install.php                    |    2 +-
 wp-admin/themes.php                           |    4 +-
 wp-admin/tools.php                            |    2 +-
 wp-admin/update-core.php                      |    6 +-
 wp-admin/upgrade.php                          |    6 +-
 wp-admin/upload.php                           |    8 +-
 wp-admin/user-edit.php                        |   63 +-
 wp-admin/user-new.php                         |   19 +-
 wp-admin/users.php                            |   11 +-
 wp-comments-post.php                          |    6 +-
 wp-content/plugins/akismet/admin.php          |   62 +-
 wp-content/plugins/akismet/akismet.php        |    4 +-
 wp-content/plugins/akismet/img/logo.png       |  Bin 0 -> 2710 bytes
 wp-content/plugins/akismet/img/logo@2x.png    |  Bin 0 -> 1467 bytes
 wp-content/plugins/akismet/readme.txt         |    7 +-
 wp-content/plugins/hello.php                  |    2 +-
 wp-content/themes/twentythirteen/404.php      |   31 +
 wp-content/themes/twentythirteen/archive.php  |   55 +
 .../themes/twentythirteen/author-bio.php      |   24 +
 wp-content/themes/twentythirteen/author.php   |   60 +
 wp-content/themes/twentythirteen/category.php |   41 +
 wp-content/themes/twentythirteen/comments.php |   59 +
 .../themes/twentythirteen/content-aside.php   |   31 +
 .../themes/twentythirteen/content-audio.php   |   37 +
 .../themes/twentythirteen/content-chat.php    |   31 +
 .../themes/twentythirteen/content-gallery.php |   45 +
 .../themes/twentythirteen/content-image.php   |   41 +
 .../themes/twentythirteen/content-link.php    |   36 +
 .../themes/twentythirteen/content-none.php    |   31 +
 .../themes/twentythirteen/content-quote.php   |   27 +
 .../themes/twentythirteen/content-status.php  |   25 +
 .../themes/twentythirteen/content-video.php   |   41 +
 wp-content/themes/twentythirteen/content.php  |   55 +
 .../twentythirteen/css/editor-style.css       |  578 +++
 wp-content/themes/twentythirteen/css/ie.css   |  284 ++
 .../themes/twentythirteen/fonts/COPYING.txt   |    9 +
 .../themes/twentythirteen/fonts/LICENSE.txt   |  339 ++
 .../fonts/genericons-regular-webfont.eot      |  Bin 0 -> 10388 bytes
 .../fonts/genericons-regular-webfont.svg      |  105 +
 .../fonts/genericons-regular-webfont.ttf      |  Bin 0 -> 19864 bytes
 .../fonts/genericons-regular-webfont.woff     |  Bin 0 -> 12156 bytes
 .../twentythirteen/fonts/genericons.css       |  157 +
 wp-content/themes/twentythirteen/footer.php   |   27 +
 .../themes/twentythirteen/functions.php       |  526 +++
 wp-content/themes/twentythirteen/header.php   |   51 +
 wp-content/themes/twentythirteen/image.php    |   82 +
 .../twentythirteen/images/dotted-line-2x.png  |  Bin 0 -> 86 bytes
 .../images/dotted-line-light-2x.png           |  Bin 0 -> 85 bytes
 .../images/dotted-line-light.png              |  Bin 0 -> 80 bytes
 .../twentythirteen/images/dotted-line.png     |  Bin 0 -> 80 bytes
 .../images/headers/circle-thumbnail.png       |  Bin 0 -> 8001 bytes
 .../twentythirteen/images/headers/circle.png  |  Bin 0 -> 33848 bytes
 .../images/headers/diamond-thumbnail.png      |  Bin 0 -> 1847 bytes
 .../twentythirteen/images/headers/diamond.png |  Bin 0 -> 14266 bytes
 .../images/headers/star-thumbnail.png         |  Bin 0 -> 4039 bytes
 .../twentythirteen/images/headers/star.png    |  Bin 0 -> 22620 bytes
 .../twentythirteen/images/search-icon-2x.png  |  Bin 0 -> 829 bytes
 .../twentythirteen/images/search-icon.png     |  Bin 0 -> 422 bytes
 .../themes/twentythirteen/inc/back-compat.php |   68 +
 .../twentythirteen/inc/custom-header.php      |  215 ++
 wp-content/themes/twentythirteen/index.php    |   38 +
 .../themes/twentythirteen/js/functions.js     |   81 +
 wp-content/themes/twentythirteen/js/html5.js  |    7 +
 .../twentythirteen/js/theme-customizer.js     |   40 +
 .../languages/twentythirteen.pot              |  333 ++
 wp-content/themes/twentythirteen/page.php     |   50 +
 wp-content/themes/twentythirteen/rtl.css      |  766 ++++
 .../themes/twentythirteen/screenshot.png      |  Bin 0 -> 54593 bytes
 wp-content/themes/twentythirteen/search.php   |   36 +
 .../themes/twentythirteen/sidebar-main.php    |   18 +
 wp-content/themes/twentythirteen/sidebar.php  |   20 +
 wp-content/themes/twentythirteen/single.php   |   28 +
 wp-content/themes/twentythirteen/style.css    | 3121 +++++++++++++++
 wp-content/themes/twentythirteen/tag.php      |   43 +
 .../twentythirteen/taxonomy-post_format.php   |   41 +
 .../themes/twentytwelve/content-aside.php     |    2 +-
 .../themes/twentytwelve/content-image.php     |    2 +-
 .../themes/twentytwelve/content-page.php      |    3 +
 wp-content/themes/twentytwelve/content.php    |    2 +-
 .../themes/twentytwelve/editor-style.css      |    4 +-
 wp-content/themes/twentytwelve/functions.php  |  122 +-
 .../themes/twentytwelve/inc/custom-header.php |   43 +-
 .../twentytwelve/js/theme-customizer.js       |   50 +-
 .../twentytwelve/languages/twentytwelve.pot   |   73 +-
 wp-content/themes/twentytwelve/rtl.css        |    2 +-
 wp-content/themes/twentytwelve/style.css      |   41 +-
 wp-includes/ID3/getid3.lib.php                | 1341 +++++++
 wp-includes/ID3/getid3.php                    | 1776 +++++++++
 wp-includes/ID3/license.commercial.txt        |   27 +
 wp-includes/ID3/license.txt                   |   28 +
 wp-includes/ID3/module.audio-video.asf.php    | 2019 ++++++++++
 wp-includes/ID3/module.audio-video.flv.php    |  729 ++++
 .../ID3/module.audio-video.matroska.php       | 1765 +++++++++
 .../ID3/module.audio-video.quicktime.php      | 2221 +++++++++++
 wp-includes/ID3/module.audio-video.riff.php   | 2435 ++++++++++++
 wp-includes/ID3/module.audio.ac3.php          |  473 +++
 wp-includes/ID3/module.audio.dts.php          |  290 ++
 wp-includes/ID3/module.audio.flac.php         |  442 +++
 wp-includes/ID3/module.audio.mp3.php          | 2009 ++++++++++
 wp-includes/ID3/module.audio.ogg.php          |  671 ++++
 wp-includes/ID3/module.tag.apetag.php         |  370 ++
 wp-includes/ID3/module.tag.id3v1.php          |  359 ++
 wp-includes/ID3/module.tag.id3v2.php          | 3414 +++++++++++++++++
 wp-includes/ID3/module.tag.lyrics3.php        |  294 ++
 wp-includes/ID3/readme.txt                    |  603 +++
 wp-includes/SimplePie/Misc.php                |    2 +-
 wp-includes/Text/Diff.php                     |   10 +-
 wp-includes/Text/Diff/Engine/native.php       |    8 +-
 wp-includes/Text/Diff/Engine/string.php       |   20 +-
 wp-includes/Text/Diff/Engine/xdiff.php        |    6 +-
 wp-includes/Text/Diff/Renderer.php            |    4 +-
 wp-includes/admin-bar.php                     |   20 +-
 wp-includes/atomlib.php                       |    4 +-
 wp-includes/author-template.php               |   12 +-
 wp-includes/bookmark.php                      |    2 +-
 wp-includes/cache.php                         |    8 +-
 wp-includes/canonical.php                     |   14 +-
 wp-includes/capabilities.php                  |   22 +-
 wp-includes/category-template.php             |   19 +-
 wp-includes/class-feed.php                    |    3 +-
 wp-includes/class-http.php                    |  195 +-
 wp-includes/class-json.php                    | 1568 ++++----
 wp-includes/class-oembed.php                  |   64 +-
 wp-includes/class-phpmailer.php               |  750 ++--
 wp-includes/class-smtp.php                    |  373 +-
 wp-includes/class-snoopy.php                  |    6 +-
 wp-includes/class-wp-customize-control.php    |    6 +-
 wp-includes/class-wp-customize-manager.php    |   18 +-
 wp-includes/class-wp-customize-section.php    |    6 +-
 wp-includes/class-wp-customize-setting.php    |    2 +-
 wp-includes/class-wp-editor.php               |   70 +-
 wp-includes/class-wp-error.php                |    6 +-
 wp-includes/class-wp-image-editor-gd.php      |   38 +-
 wp-includes/class-wp-image-editor-imagick.php |   21 +-
 wp-includes/class-wp-image-editor.php         |   17 +-
 wp-includes/class-wp-theme.php                |   15 +-
 wp-includes/class-wp-walker.php               |    6 +-
 wp-includes/class-wp-xmlrpc-server.php        |  140 +-
 wp-includes/class-wp.php                      |    4 +-
 wp-includes/class.wp-scripts.php              |    3 +
 wp-includes/class.wp-styles.php               |    2 +-
 wp-includes/comment-template.php              |  199 +-
 wp-includes/comment.php                       |   76 +-
 wp-includes/cron.php                          |    2 +-
 wp-includes/css/admin-bar.css                 |    4 +
 wp-includes/css/admin-bar.min.css             |    2 +-
 wp-includes/css/editor.css                    |  335 +-
 wp-includes/css/editor.min.css                |   29 +-
 wp-includes/css/jquery-ui-dialog.css          |  288 +-
 wp-includes/css/jquery-ui-dialog.min.css      |   29 +-
 wp-includes/css/media-views-rtl.css           |    9 +
 wp-includes/css/media-views-rtl.min.css       |    2 +-
 wp-includes/css/wp-auth-check.css             |   94 +
 wp-includes/css/wp-auth-check.min.css         |    1 +
 wp-includes/default-constants.php             |   22 +-
 wp-includes/default-filters.php               |   13 +-
 wp-includes/default-widgets.php               |   49 +-
 wp-includes/deprecated.php                    |   58 +-
 wp-includes/feed-atom-comments.php            |    2 +-
 wp-includes/feed.php                          |   21 +-
 wp-includes/formatting.php                    |  323 +-
 wp-includes/functions.php                     |  287 +-
 wp-includes/functions.wp-scripts.php          |   36 +-
 wp-includes/functions.wp-styles.php           |   40 +-
 wp-includes/general-template.php              |  281 +-
 wp-includes/http.php                          |  171 +-
 wp-includes/js/admin-bar.js                   |   33 +-
 wp-includes/js/admin-bar.min.js               |    2 +-
 wp-includes/js/autosave.js                    |  609 ++-
 wp-includes/js/autosave.min.js                |    2 +-
 wp-includes/js/backbone.min.js                |   37 +-
 wp-includes/js/crop/cropper.css               |    2 +-
 wp-includes/js/heartbeat.js                   |  461 +++
 wp-includes/js/heartbeat.min.js               |    1 +
 wp-includes/js/hoverIntent.js                 |  201 +-
 wp-includes/js/hoverIntent.min.js             |   10 +-
 wp-includes/js/jquery/jquery-migrate.js       |  521 +++
 wp-includes/js/jquery/jquery-migrate.min.js   |    2 +
 wp-includes/js/jquery/jquery.color.min.js     |    4 +-
 wp-includes/js/jquery/jquery.js               |    8 +-
 wp-includes/js/jquery/jquery.query.js         |    2 +-
 wp-includes/js/jquery/suggest.js              |   21 +-
 wp-includes/js/jquery/suggest.min.js          |    2 +-
 .../js/jquery/ui/jquery.ui.accordion.min.js   |    7 +-
 .../jquery/ui/jquery.ui.autocomplete.min.js   |    7 +-
 .../js/jquery/ui/jquery.ui.button.min.js      |    7 +-
 .../js/jquery/ui/jquery.ui.core.min.js        |    7 +-
 .../js/jquery/ui/jquery.ui.datepicker.min.js  |    8 +-
 .../js/jquery/ui/jquery.ui.dialog.min.js      |    7 +-
 .../js/jquery/ui/jquery.ui.draggable.min.js   |    7 +-
 .../js/jquery/ui/jquery.ui.droppable.min.js   |    7 +-
 .../jquery/ui/jquery.ui.effect-blind.min.js   |    7 +-
 .../jquery/ui/jquery.ui.effect-bounce.min.js  |    7 +-
 .../js/jquery/ui/jquery.ui.effect-clip.min.js |    7 +-
 .../js/jquery/ui/jquery.ui.effect-drop.min.js |    7 +-
 .../jquery/ui/jquery.ui.effect-explode.min.js |    7 +-
 .../js/jquery/ui/jquery.ui.effect-fade.min.js |    7 +-
 .../js/jquery/ui/jquery.ui.effect-fold.min.js |    7 +-
 .../ui/jquery.ui.effect-highlight.min.js      |    7 +-
 .../jquery/ui/jquery.ui.effect-pulsate.min.js |    7 +-
 .../jquery/ui/jquery.ui.effect-scale.min.js   |    7 +-
 .../jquery/ui/jquery.ui.effect-shake.min.js   |    7 +-
 .../jquery/ui/jquery.ui.effect-slide.min.js   |    7 +-
 .../ui/jquery.ui.effect-transfer.min.js       |    7 +-
 .../js/jquery/ui/jquery.ui.effect.min.js      |    7 +-
 .../js/jquery/ui/jquery.ui.menu.min.js        |    7 +-
 .../js/jquery/ui/jquery.ui.mouse.min.js       |    7 +-
 .../js/jquery/ui/jquery.ui.position.min.js    |    7 +-
 .../js/jquery/ui/jquery.ui.progressbar.min.js |    7 +-
 .../js/jquery/ui/jquery.ui.resizable.min.js   |    7 +-
 .../js/jquery/ui/jquery.ui.selectable.min.js  |    7 +-
 .../js/jquery/ui/jquery.ui.slider.min.js      |    7 +-
 .../js/jquery/ui/jquery.ui.sortable.min.js    |    7 +-
 .../js/jquery/ui/jquery.ui.spinner.min.js     |    7 +-
 .../js/jquery/ui/jquery.ui.tabs.min.js        |    7 +-
 .../js/jquery/ui/jquery.ui.tooltip.min.js     |    7 +-
 .../js/jquery/ui/jquery.ui.widget.min.js      |    7 +-
 wp-includes/js/media-editor.js                |   81 +-
 wp-includes/js/media-editor.min.js            |    2 +-
 wp-includes/js/media-models.js                |  126 +-
 wp-includes/js/media-models.min.js            |    2 +-
 wp-includes/js/media-views.js                 |  451 +--
 wp-includes/js/media-views.min.js             |    2 +-
 wp-includes/js/mediaelement/background.png    |  Bin 0 -> 166 bytes
 wp-includes/js/mediaelement/bigplay.png       |  Bin 0 -> 3001 bytes
 wp-includes/js/mediaelement/bigplay.svg       |    1 +
 wp-includes/js/mediaelement/controls.png      |  Bin 0 -> 1892 bytes
 wp-includes/js/mediaelement/controls.svg      |    1 +
 .../js/mediaelement/flashmediaelement.swf     |  Bin 0 -> 29142 bytes
 wp-includes/js/mediaelement/loading.gif       |  Bin 0 -> 6224 bytes
 .../mediaelement-and-player.min.js            |  173 +
 .../mediaelement/mediaelementplayer.min.css   |    1 +
 .../mediaelement/silverlightmediaelement.xap  |  Bin 0 -> 12461 bytes
 .../js/mediaelement/wp-mediaelement.css       |   15 +
 .../js/mediaelement/wp-mediaelement.js        |   15 +
 wp-includes/js/plupload/changelog.txt         |   14 +
 wp-includes/js/plupload/plupload.flash.js     |    2 +-
 wp-includes/js/plupload/plupload.html4.js     |    2 +-
 wp-includes/js/plupload/plupload.html5.js     |    2 +-
 wp-includes/js/plupload/plupload.js           |    4 +-
 .../js/plupload/plupload.silverlight.js       |    2 +-
 .../js/plupload/plupload.silverlight.xap      |  Bin 44116 -> 44139 bytes
 wp-includes/js/quicktags.js                   |   53 +-
 wp-includes/js/quicktags.min.js               |    2 +-
 wp-includes/js/swfupload/swfupload.swf        |  Bin 12767 -> 13133 bytes
 wp-includes/js/thickbox/thickbox.js           |    8 +-
 .../plugins/media/editor_plugin_src.js        |   11 +-
 .../plugins/wordpress/editor_plugin.js        |    2 +-
 .../plugins/wordpress/editor_plugin_src.js    |   45 +-
 .../plugins/wpdialogs/editor_plugin_src.js    |    2 +-
 .../js/tinymce/plugins/wpdialogs/js/popup.js  |    8 +-
 .../plugins/wpfullscreen/editor_plugin_src.js |    2 +-
 .../plugins/wpgallery/editor_plugin.js        |    2 +-
 .../plugins/wpgallery/editor_plugin_src.js    |   12 +-
 .../plugins/wplink/editor_plugin_src.js       |    2 +-
 .../advanced/skins/wp_theme/content.css       |   20 +-
 wp-includes/js/tinymce/wp-tinymce-schema.js   |    4 +-
 wp-includes/js/tinymce/wp-tinymce.js.gz       |  Bin 115794 -> 115941 bytes
 wp-includes/js/underscore.min.js              |    6 +-
 wp-includes/js/wp-auth-check.js               |  106 +
 wp-includes/js/wp-auth-check.min.js           |    1 +
 wp-includes/js/wp-backbone.js                 |  384 ++
 wp-includes/js/wp-backbone.min.js             |    1 +
 wp-includes/js/wp-util.js                     |  105 +
 wp-includes/js/wp-util.min.js                 |    1 +
 wp-includes/js/wplink.js                      |    6 +-
 wp-includes/js/wplink.min.js                  |    2 +-
 wp-includes/link-template.php                 |   63 +-
 wp-includes/load.php                          |   15 +-
 wp-includes/locale.php                        |   15 +
 wp-includes/media-template.php                |   39 +-
 wp-includes/media.php                         |  557 ++-
 wp-includes/meta.php                          |   38 +-
 wp-includes/ms-blogs.php                      |   20 +-
 wp-includes/ms-default-filters.php            |    5 +-
 wp-includes/ms-deprecated.php                 |   29 +
 wp-includes/ms-files.php                      |    2 +-
 wp-includes/ms-functions.php                  |  146 +-
 wp-includes/ms-load.php                       |    4 +-
 wp-includes/nav-menu-template.php             |   33 +-
 wp-includes/nav-menu.php                      |   23 +-
 wp-includes/option.php                        |   19 +-
 wp-includes/pluggable-deprecated.php          |    6 +-
 wp-includes/pluggable.php                     |   52 +-
 wp-includes/plugin.php                        |   29 +-
 wp-includes/pomo/translations.php             |    4 +-
 wp-includes/post-formats.php                  |  243 ++
 wp-includes/post-template.php                 |  390 +-
 wp-includes/post-thumbnail-template.php       |    2 +-
 wp-includes/post.php                          |  839 +---
 wp-includes/query.php                         |   83 +-
 wp-includes/revision.php                      |  603 +++
 wp-includes/rewrite.php                       |    6 +-
 wp-includes/rss.php                           |    4 +-
 wp-includes/script-loader.php                 |  168 +-
 wp-includes/shortcodes.php                    |   44 +-
 wp-includes/taxonomy.php                      |  180 +-
 wp-includes/template.php                      |   16 +-
 wp-includes/theme.php                         |   20 +-
 wp-includes/update.php                        |   18 +-
 wp-includes/user.php                          |   61 +-
 wp-includes/vars.php                          |    4 +-
 wp-includes/version.php                       |    6 +-
 wp-includes/widgets.php                       |   75 +-
 wp-includes/wp-db.php                         |   89 +-
 wp-includes/wp-diff.php                       |   46 +-
 wp-login.php                                  |  115 +-
 wp-mail.php                                   |    2 +-
 wp-settings.php                               |   12 +-
 wp-signup.php                                 |  152 +-
 wp-trackback.php                              |   18 +-
 xmlrpc.php                                    |    4 +-
 479 files changed, 44912 insertions(+), 6912 deletions(-)
 create mode 100644 wp-admin/images/arrows-pr-2x.png
 create mode 100644 wp-admin/images/arrows-pr.png
 create mode 100644 wp-admin/images/lock-2x.png
 create mode 100644 wp-admin/images/lock.png
 create mode 100644 wp-admin/images/post-formats-vs.png
 create mode 100644 wp-admin/images/post-formats.png
 create mode 100644 wp-admin/images/post-formats32-vs.png
 create mode 100644 wp-admin/images/post-formats32.png
 create mode 100644 wp-admin/includes/revision.php
 create mode 100644 wp-admin/js/accordion.js
 create mode 100644 wp-admin/js/accordion.min.js
 create mode 100644 wp-admin/js/revisions.js
 create mode 100644 wp-admin/js/revisions.min.js
 create mode 100644 wp-content/plugins/akismet/img/logo.png
 create mode 100644 wp-content/plugins/akismet/img/logo@2x.png
 create mode 100644 wp-content/themes/twentythirteen/404.php
 create mode 100644 wp-content/themes/twentythirteen/archive.php
 create mode 100644 wp-content/themes/twentythirteen/author-bio.php
 create mode 100644 wp-content/themes/twentythirteen/author.php
 create mode 100644 wp-content/themes/twentythirteen/category.php
 create mode 100644 wp-content/themes/twentythirteen/comments.php
 create mode 100644 wp-content/themes/twentythirteen/content-aside.php
 create mode 100644 wp-content/themes/twentythirteen/content-audio.php
 create mode 100644 wp-content/themes/twentythirteen/content-chat.php
 create mode 100644 wp-content/themes/twentythirteen/content-gallery.php
 create mode 100644 wp-content/themes/twentythirteen/content-image.php
 create mode 100644 wp-content/themes/twentythirteen/content-link.php
 create mode 100644 wp-content/themes/twentythirteen/content-none.php
 create mode 100644 wp-content/themes/twentythirteen/content-quote.php
 create mode 100644 wp-content/themes/twentythirteen/content-status.php
 create mode 100644 wp-content/themes/twentythirteen/content-video.php
 create mode 100644 wp-content/themes/twentythirteen/content.php
 create mode 100644 wp-content/themes/twentythirteen/css/editor-style.css
 create mode 100644 wp-content/themes/twentythirteen/css/ie.css
 create mode 100644 wp-content/themes/twentythirteen/fonts/COPYING.txt
 create mode 100644 wp-content/themes/twentythirteen/fonts/LICENSE.txt
 create mode 100644 wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.eot
 create mode 100644 wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.svg
 create mode 100644 wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.ttf
 create mode 100644 wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.woff
 create mode 100644 wp-content/themes/twentythirteen/fonts/genericons.css
 create mode 100644 wp-content/themes/twentythirteen/footer.php
 create mode 100644 wp-content/themes/twentythirteen/functions.php
 create mode 100644 wp-content/themes/twentythirteen/header.php
 create mode 100644 wp-content/themes/twentythirteen/image.php
 create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-2x.png
 create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-light-2x.png
 create mode 100644 wp-content/themes/twentythirteen/images/dotted-line-light.png
 create mode 100644 wp-content/themes/twentythirteen/images/dotted-line.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/circle.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/diamond.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/star-thumbnail.png
 create mode 100644 wp-content/themes/twentythirteen/images/headers/star.png
 create mode 100644 wp-content/themes/twentythirteen/images/search-icon-2x.png
 create mode 100644 wp-content/themes/twentythirteen/images/search-icon.png
 create mode 100644 wp-content/themes/twentythirteen/inc/back-compat.php
 create mode 100644 wp-content/themes/twentythirteen/inc/custom-header.php
 create mode 100644 wp-content/themes/twentythirteen/index.php
 create mode 100644 wp-content/themes/twentythirteen/js/functions.js
 create mode 100644 wp-content/themes/twentythirteen/js/html5.js
 create mode 100644 wp-content/themes/twentythirteen/js/theme-customizer.js
 create mode 100644 wp-content/themes/twentythirteen/languages/twentythirteen.pot
 create mode 100644 wp-content/themes/twentythirteen/page.php
 create mode 100644 wp-content/themes/twentythirteen/rtl.css
 create mode 100644 wp-content/themes/twentythirteen/screenshot.png
 create mode 100644 wp-content/themes/twentythirteen/search.php
 create mode 100644 wp-content/themes/twentythirteen/sidebar-main.php
 create mode 100644 wp-content/themes/twentythirteen/sidebar.php
 create mode 100644 wp-content/themes/twentythirteen/single.php
 create mode 100644 wp-content/themes/twentythirteen/style.css
 create mode 100644 wp-content/themes/twentythirteen/tag.php
 create mode 100644 wp-content/themes/twentythirteen/taxonomy-post_format.php
 create mode 100644 wp-includes/ID3/getid3.lib.php
 create mode 100644 wp-includes/ID3/getid3.php
 create mode 100644 wp-includes/ID3/license.commercial.txt
 create mode 100644 wp-includes/ID3/license.txt
 create mode 100644 wp-includes/ID3/module.audio-video.asf.php
 create mode 100644 wp-includes/ID3/module.audio-video.flv.php
 create mode 100644 wp-includes/ID3/module.audio-video.matroska.php
 create mode 100644 wp-includes/ID3/module.audio-video.quicktime.php
 create mode 100644 wp-includes/ID3/module.audio-video.riff.php
 create mode 100644 wp-includes/ID3/module.audio.ac3.php
 create mode 100644 wp-includes/ID3/module.audio.dts.php
 create mode 100644 wp-includes/ID3/module.audio.flac.php
 create mode 100644 wp-includes/ID3/module.audio.mp3.php
 create mode 100644 wp-includes/ID3/module.audio.ogg.php
 create mode 100644 wp-includes/ID3/module.tag.apetag.php
 create mode 100644 wp-includes/ID3/module.tag.id3v1.php
 create mode 100644 wp-includes/ID3/module.tag.id3v2.php
 create mode 100644 wp-includes/ID3/module.tag.lyrics3.php
 create mode 100644 wp-includes/ID3/readme.txt
 create mode 100644 wp-includes/css/wp-auth-check.css
 create mode 100644 wp-includes/css/wp-auth-check.min.css
 create mode 100644 wp-includes/js/heartbeat.js
 create mode 100644 wp-includes/js/heartbeat.min.js
 create mode 100644 wp-includes/js/jquery/jquery-migrate.js
 create mode 100644 wp-includes/js/jquery/jquery-migrate.min.js
 create mode 100644 wp-includes/js/mediaelement/background.png
 create mode 100644 wp-includes/js/mediaelement/bigplay.png
 create mode 100644 wp-includes/js/mediaelement/bigplay.svg
 create mode 100644 wp-includes/js/mediaelement/controls.png
 create mode 100644 wp-includes/js/mediaelement/controls.svg
 create mode 100644 wp-includes/js/mediaelement/flashmediaelement.swf
 create mode 100644 wp-includes/js/mediaelement/loading.gif
 create mode 100644 wp-includes/js/mediaelement/mediaelement-and-player.min.js
 create mode 100644 wp-includes/js/mediaelement/mediaelementplayer.min.css
 create mode 100644 wp-includes/js/mediaelement/silverlightmediaelement.xap
 create mode 100644 wp-includes/js/mediaelement/wp-mediaelement.css
 create mode 100644 wp-includes/js/mediaelement/wp-mediaelement.js
 create mode 100644 wp-includes/js/wp-auth-check.js
 create mode 100644 wp-includes/js/wp-auth-check.min.js
 create mode 100644 wp-includes/js/wp-backbone.js
 create mode 100644 wp-includes/js/wp-backbone.min.js
 create mode 100644 wp-includes/js/wp-util.js
 create mode 100644 wp-includes/js/wp-util.min.js
 create mode 100644 wp-includes/post-formats.php
 create mode 100644 wp-includes/revision.php

diff --git a/license.txt b/license.txt
index ec05d2948..06c105b12 100644
--- a/license.txt
+++ b/license.txt
@@ -1,6 +1,6 @@
 WordPress - Web publishing software
 
-Copyright 2011 by the contributors
+Copyright 2013 by the contributors
 
 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
diff --git a/readme.html b/readme.html
index 1f66b202d..1dde82294 100644
--- a/readme.html
+++ b/readme.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
+<!DOCTYPE html>
+<html>
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 	<title>WordPress &#8250; ReadMe</title>
@@ -8,12 +8,12 @@
 <body>
 <h1 id="logo">
 	<a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
-	<br /> Version 3.5.2
+	<br /> Version 3.6
 </h1>
 <p style="text-align: center">Semantic Personal Publishing Platform</p>
 
 <h1>First Things First</h1>
-<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'm proud to be a part of. Thousands of hours have gone into WordPress, and we're dedicated to making it better every day. Thank you for making it part of your world.</p>
+<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>
@@ -21,35 +21,32 @@
 	<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.
 		<ol>
-			<li>If for some reason this doesn't work, don't worry. It doesn't work on all web hosts. Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details.</li>
+			<li>If for some reason this doesn&#8217;t work, don&#8217;t worry. It doesn&#8217;t work on all web hosts. Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details.</li>
 			<li>Save the file as <code>wp-config.php</code> and upload it.</li>
 			<li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser.</li>
 		</ol>
 	</li>
 	<li>Once the configuration file is set up, the installer will set up the tables needed for your blog. If there is an error, double check your <code>wp-config.php</code> file, and try again. If it fails again, please go to the <a href="http://wordpress.org/support/" title="WordPress support">support forums</a> with as much data as you can gather.</li>
 	<li><strong>If you did not enter a password, note the password given to you.</strong> If you did not provide a username, it will be <code>admin</code>.</li>
-	<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 'Profile' to change the password.</li>
+	<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>
 <p>If you are updating from version 2.7 or higher, you can use the automatic updater:</p>
 <ol>
-	<li>Open the <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's it!</li>
+	<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>
 <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've modified.</li>
+	<li>Delete your old WordPress files, saving ones you&#8217;ve modified.</li>
 	<li>Upload the new files.</li>
 	<li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a>.</span></li>
 </ol>
 
-<h2>Theme Template Changes</h2>
-<p>If you have customized your theme templates, you may have to make some changes across major versions.</p>
-
 <h1>Migrating from other systems</h1>
 <p>WordPress can <a href="http://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>
 
@@ -66,34 +63,24 @@
 </ul>
 
 <h1>Online Resources</h1>
-<p>If you have any questions that aren't addressed in this document, please take advantage of WordPress' numerous online resources:</p>
+<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="http://codex.wordpress.org/">The WordPress Codex</a></dt>
 		<dd>The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.</dd>
 	<dt><a href="http://wordpress.org/news/">The WordPress Blog</a></dt>
-		<dd>This is where you'll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.</dd>
+		<dd>This is where you&#8217;ll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.</dd>
 	<dt><a href="http://planet.wordpress.org/">WordPress Planet</a></dt>
 		<dd>The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.</dd>
 	<dt><a href="http://wordpress.org/support/">WordPress Support Forums</a></dt>
-		<dd>If you've looked everywhere and still can't find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.</dd>
+		<dd>If you&#8217;ve looked everywhere and still can&#8217;t find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.</dd>
 	<dt><a href="http://codex.wordpress.org/IRC">WordPress <abbr title="Internet Relay Chat">IRC</abbr> Channel</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><abbr title="eXtensible Markup Language">XML</abbr>-<abbr title="Remote Procedure Call">RPC</abbr> and Atom Interface</h1>
-<p>You can post to your WordPress blog with tools like <a href="http://download.live.com/writer">Windows Live Writer</a>, <a href="http://illuminex.com/ecto/">Ecto</a>, <a href="http://bloggar.com/">w.bloggar</a>, <a href="http://radio.userland.com/">Radio Userland</a> (which means you can use Radio's email-to-blog feature), <a href="http://www.newzcrawler.com/">NewzCrawler</a>, and other tools that support the blogging <abbr title="application programming interface">API</abbr>s! :) You can read more about <a href="http://codex.wordpress.org/XML-RPC_Support"><abbr>XML</abbr>-<abbr>RPC</abbr> support on the Codex</a>.</p>
-
-<h1>Post via Email</h1>
-<p>You can post from an email client! To set this up go to your &quot;Writing&quot; options screen and fill in the connection details for your secret <abbr title="Post Office Protocol version 3">POP3</abbr> account. Then you need to set up <code>wp-mail.php</code> to execute periodically to check the mailbox for new posts. You can do it with <a href="http://en.wikipedia.org/wiki/Cron">cron</a>-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your <code>wp-mail.php</code> <abbr title="Uniform Resource Locator">URL</abbr>.</p>
-<p>Posting is easy: Any email sent to the address you specify will be posted, with the subject as the title. It is best to keep the address discrete. The script will <em>delete</em> emails that are successfully posted.</p>
-
-<h1>User Roles</h1>
-<p>We introduced a very flexible roles system in version 2.0. You can <a href="http://codex.wordpress.org/Roles_and_Capabilities" title="WordPress roles and capabilities">read more about Roles and Capabilities on the Codex</a>.</p>
-
 <h1>Final Notes</h1>
 <ul>
 	<li>If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the <a href="http://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="http://codex.wordpress.org/Plugin_API" title="WordPress plugin API">plugin documentation in the Codex</a>. You shouldn't modify any of the core code.</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="http://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>
diff --git a/wp-activate.php b/wp-activate.php
index 0d5f1dca3..6a474b12f 100644
--- a/wp-activate.php
+++ b/wp-activate.php
@@ -6,7 +6,6 @@
  * @package WordPress
  */
 
-/** Define ABSPATH as this file's directory */
 define( 'WP_INSTALLING', true );
 
 /** Sets up the WordPress Environment. */
diff --git a/wp-admin/about.php b/wp-admin/about.php
index 552437d67..8b155d21b 100644
--- a/wp-admin/about.php
+++ b/wp-admin/about.php
@@ -19,7 +19,7 @@ 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 to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s makes your writing experience even better.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -33,67 +33,66 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 	</a>
 </h2>
 
-<div class="changelog point-releases">
-	<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></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.', 12 ), '3.5.2', number_format_i18n( 12 ) ); ?>
-		<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.5.2' ); ?>
- 	</p>
-	<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.', 37 ), '3.5.1', number_format_i18n( 37 ) ); ?>
-		<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.5.1' ); ?>
- 	</p>
-</div>
-
 <div class="changelog">
-	<h3><?php _e( 'New Media Manager' ); ?></h3>
+	<h3><?php _e( 'Colorful New Theme' ); ?></h3>
 
-	<div class="feature-section col two-col">
-		<img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-media.png' ) ); ?>" class="image-100" />
-
-		<div>
-			<h4><?php _e( 'Beautiful Interface' ); ?></h4>
-			<p><?php _e( 'Adding media has been streamlined with an all-new experience, making it a breeze to upload files and place them into your posts.' ); ?></p>
-		</div>
-		<div class="last-feature">
-			<h4><?php _e( 'Picturesque Galleries' ); ?></h4>
-			<p><?php _e( 'Creating image galleries is faster with drag and drop reordering, inline caption editing, and simplified controls for layout.' ); ?></p>
-		</div>
+	<div class="feature-section images-stagger-right">
+		<img alt="" src="<?php echo is_ssl() ? 'https://' : '//s.'; ?>wordpress.org/images/core/3.6/twentythirteen.png" class="image-66" />
+		<h4><?php _e( 'Introducing Twenty Thirteen' ); ?></h4>
+		<p><?php printf( __( "The new default theme puts focus on your content with a colorful, single-column design made for media-rich blogging." ) ); ?></p>
+		<p><?php _e( 'Inspired by modern art, Twenty Thirteen features quirky details, beautiful typography, and bold, high-contrast colors &mdash; all with a flexible layout that looks great on any device, big or small.' ); ?></p>
 	</div>
 </div>
 
 <div class="changelog">
-	<h3><?php _e( 'New Default Theme' ); ?></h3>
+	<h3><?php _e( 'Write with Confidence' ); ?></h3>
 
 	<div class="feature-section images-stagger-right">
-		<img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-twenty-twelve.png' ) ); ?>" class="image-66" />
-		<h4><?php _e( 'Introducing Twenty Twelve' ); ?></h4>
-		<p><?php _e( 'The newest default theme for WordPress is simple, flexible, and elegant.' ); ?></p>
-		<p><?php _e( 'What makes it really shine are the design details, like the gorgeous Open Sans typeface and a fully responsive design that looks great on any device.' ); ?></p>
-		<p><?php _e( 'Naturally, Twenty Twelve supports all the theme features you’ve come to know and love, but it is also designed to be as great for a website as it is for a blog.' ); ?></p>
+		<img alt="" src="<?php echo is_ssl() ? 'https://' : '//s.'; ?>wordpress.org/images/core/3.6/revisions.png" class="image-66" />
+		<h4><?php _e( 'Explore Revisions' ); ?></h4>
+		<p></p>
+		<p><?php _e( 'From the first word you write, WordPress saves every change. Each revision is always at your fingertips. Text is highlighted as you scroll through revisions at lightning speed, so you can see what changes have been made along the way.' ); ?></p>
+		<p><?php _e( 'It&#8217;s easy to compare two revisions from any point in time, and to restore a revision and go back to writing. Now you can be confident that no mistake is permanent.' ); ?></p>
 	</div>
-</div>
 
-<div class="changelog">
-	<h3><?php _e( 'Retina Ready' ); ?></h3>
-
-	<div class="feature-section images-stagger-right">
-		<img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-retina.png' ) ); ?>" class="image-66" />
-		<h4><?php _e( 'So Sharp You Can&#8217;t See the Pixels' ); ?></h4>
-		<p><?php _e( 'The WordPress dashboard now looks beautiful on high-resolution screens like those found on the iPad, Kindle Fire HD, Nexus 10, and MacBook Pro with Retina Display. Icons and other visual elements are crystal clear and full of detail.' ); ?></p>
+	<div class="feature-section col two-col">
+		<div>
+			<h4><?php _e( 'Improved Autosaves' ); ?></h4>
+			<p><?php _e( 'Never lose a word you&#8217;ve written. Autosaving is now even better; whether your power goes out, your browser crashes, or you lose your internet connection, your content is safe.' ); ?></p>
+		</div>
+		<div class="last-feature">
+			<h4><?php _e( 'Better Post Locking' ); ?></h4>
+			<p><?php _e( 'Always know who&#8217;s editing with live updates that appear in the list of posts. And if someone leaves for lunch with a post open, you can take over where they left off.' ); ?></p>
+		</div>
 	</div>
 </div>
 
 <div class="changelog">
-	<h3><?php _e( 'Smoother Experience' ); ?></h3>
+	<h3><?php _e( 'Support for Audio and Video' ); ?></h3>
 
 	<div class="feature-section images-stagger-right">
-		<img alt="" src="<?php echo esc_url( admin_url( 'images/screenshots/about-color-picker.png' ) ); ?>" class="image-30" />
-		<h4><?php _e( 'Better Accessibility' ); ?></h4>
-		<p><?php _e( 'WordPress supports more usage modes than ever before. Screenreaders, touch devices, and mouseless workflows all have improved ease of use and accessibility.' ); ?></p>
-
-		<h4><?php _e( 'More Polish' ); ?></h4>
-		<p><?php _e( 'A number of screens and controls have been refined. For example, a new color picker makes it easier for you to choose that perfect shade of blue.' ); ?></p>
+		<div class="video image-66"><?php
+			$sample_video = ( is_ssl() ? 'https://' : 'http://s.' ) . 'wordpress.org/images/core/3.6/sample-video';
+			$args = array(
+				'mp4' => "$sample_video.mp4",
+				'ogv' => "$sample_video.ogv",
+				'width' => 625,
+				'height' => 360,
+			);
+			// Opera 12 (Presto, pre-Chromium) fails to load ogv properly
+			// when combined with ME.js. Works fine in Opera 15.
+			// Don't serve ogv to Opera 12 to avoid complete brokeness.
+			if ( $GLOBALS['is_opera'] )
+				unset( $args['ogv'] );
+			// Our current ME.js API is limited to shortcodes in posts.
+			echo wp_video_shortcode( $args );
+		?></div>
+		<h4><?php _e( 'New Media Player' ); ?></h4>
+		<p><?php _e( 'Share your audio and video with the new built-in HTML5 media player. Upload files using the media manager and embed them in your posts.' ); ?></p>
+
+		<h4><?php _e( 'Embed Music from Spotify, Rdio, and SoundCloud' ); ?></h4>
+		<p><?php _e( 'Embed songs and albums from your favorite artists, or playlists you&#8217;ve mixed yourself. It&#8217;s as simple as pasting a URL into a post on its own line.' ); ?></p>
+		<p><?php printf( __( '(Love another service? Check out all of the <a href="%s">embeds</a> that WordPress supports.)' ), 'http://codex.wordpress.org/Embeds' ); ?></p>
 	</div>
 </div>
 
@@ -102,31 +101,33 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 	<div class="feature-section col three-col">
 		<div>
-			<h4><?php _e( 'Meta Query Additions' ); ?></h4>
-			<p><?php _e( 'The <code>WP_Comment_Query</code> and <code>WP_User_Query</code> classes now support meta queries just like <code>WP_Query.</code> Meta queries now support querying for objects without a particular meta key.' ); ?></p>
+			<h4><?php _e( 'Audio/Video API' ); ?></h4>
+			<p><?php _e( 'The new audio/video APIs give developers access to powerful media metadata, like ID3 tags.' ); ?></p>
 		</div>
 		<div>
-			<h4><?php _e( 'Post Objects' ); ?></h4>
-			<p><?php _e( 'Post objects are now instances of a <code>WP_Post</code> class, which improves performance by loading selected properties on demand.' ); ?></p>
+			<h4><?php _e( 'Semantic Markup' ); ?></h4>
+			<p><?php _e( 'Themes can now choose improved HTML5 markup for comment forms, search forms, and comment lists.' ); ?></p>
 		</div>
 		<div class="last-feature">
-			<h4><?php _e( 'Image Editing API' ); ?></h4>
-			<p><?php _e( 'The <code>WP_Image_Editor</code> class abstracts image editing functionality such as cropping and scaling, and uses ImageMagick when available.' ); ?></p>
+			<h4><?php _e( 'JavaScript Utilities' ); ?></h4>
+			<p><?php _e( 'Handy JavaScript utilities ease common tasks like Ajax requests, templating, and Backbone view management.' ); ?></p>
 		</div>
 	</div>
 
 	<div class="feature-section col three-col">
 		<div>
-			<h4><?php _e( 'Multisite Improvements' ); ?></h4>
-			<p><?php _e( '<code>switch_to_blog()</code> is now significantly faster and more reliable.' ); ?></p>
+			<h4><?php _e( 'Shortcode Improvements' ); ?></h4>
+			<p><?php _e( 'Search content for shortcodes with <code>has_shortcode()</code> and adjust shortcode attributes with a new filter.' ); ?></p>
 		</div>
 		<div>
-			<h4><?php _e( 'XML-RPC API' ); ?></h4>
-			<p><?php printf( __( 'The <a href="%s">WordPress API</a> is now always enabled, and supports fetching users, editing profiles, managing post revisions, and searching posts.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?></p>
+			<h4><?php _e( 'Revision Control' ); ?></h4>
+			<p><?php _e( 'Fine-grained revision controls allow you to keep a different number of revisions for each post type.' ); ?></p>
 		</div>
 		<div class="last-feature">
 			<h4><?php _e( 'External Libraries' ); ?></h4>
-			<p><?php printf( __( 'WordPress now includes the <a href="%1$s">Underscore</a> and <a href="%2$s">Backbone</a> JavaScript libraries. TinyMCE, jQuery, jQuery UI, and SimplePie have all been updated to the latest versions.' ), 'http://underscorejs.org/', 'http://backbonejs.org/' ); ?></p>
+			<p><?php
+				/* translators: placeholders 2, 3 and 4 are version numbers */
+				printf( __( 'New and updated libraries: <a href="%1$s">MediaElement.js</a>, jQuery %2$s, jQuery UI %3$s, jQuery Migrate, Backbone %4$s.' ), 'http://mediaelementjs.com/', '1.10.2', '1.10.3', '1.0' ); ?></p>
 		</div>
 	</div>
 </div>
diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php
index 716e384da..c638d78aa 100644
--- a/wp-admin/admin-ajax.php
+++ b/wp-admin/admin-ajax.php
@@ -56,7 +56,7 @@ $core_actions_post = array(
 	'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
 	'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',
+	'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
 );
 
 // Register core Ajax calls.
@@ -66,7 +66,7 @@ if ( ! empty( $_GET['action'] ) && in_array( $_GET['action'], $core_actions_get
 if ( ! empty( $_POST['action'] ) && in_array( $_POST['action'], $core_actions_post ) )
 	add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );
 
-add_action( 'wp_ajax_nopriv_autosave', 'wp_ajax_nopriv_autosave', 1 );
+add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1 );
 
 if ( is_user_logged_in() )
 	do_action( 'wp_ajax_' . $_REQUEST['action'] ); // Authenticated actions
diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php
index f99934e58..00ad29969 100644
--- a/wp-admin/admin-header.php
+++ b/wp-admin/admin-header.php
@@ -98,9 +98,8 @@ $admin_body_class .= ' no-customize-support';
 </script>
 
 <?php
-// If the customize-loader script is enqueued, make sure the customize
-// body classes are correct as early as possible.
-if ( wp_script_is( 'customize-loader', 'queue' ) && current_user_can( 'edit_theme_options' ) )
+// Make sure the customize body classes are correct as early as possible.
+if ( current_user_can( 'edit_theme_options' ) )
 	wp_customize_support_script();
 ?>
 
diff --git a/wp-admin/admin.php b/wp-admin/admin.php
index bd2e5406a..4e739c3c8 100644
--- a/wp-admin/admin.php
+++ b/wp-admin/admin.php
@@ -43,7 +43,7 @@ if ( get_option('db_upgraded') ) {
 	do_action('after_db_upgrade');
 } elseif ( get_option('db_version') != $wp_db_version && empty($_POST) ) {
 	if ( !is_multisite() ) {
-		wp_redirect(admin_url('upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI']))));
+		wp_redirect( admin_url( 'upgrade.php?_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) );
 		exit;
 	} elseif ( apply_filters( 'do_mu_upgrade', true ) ) {
 		/**
@@ -77,14 +77,12 @@ set_screen_options();
 $date_format = get_option('date_format');
 $time_format = get_option('time_format');
 
-wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback'));
-
 wp_enqueue_script( 'common' );
 
 $editing = false;
 
 if ( isset($_GET['page']) ) {
-	$plugin_page = stripslashes($_GET['page']);
+	$plugin_page = wp_unslash( $_GET['page'] );
 	$plugin_page = plugin_basename($plugin_page);
 }
 
diff --git a/wp-admin/async-upload.php b/wp-admin/async-upload.php
index 5f2938e84..296342eaa 100644
--- a/wp-admin/async-upload.php
+++ b/wp-admin/async-upload.php
@@ -47,8 +47,7 @@ if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id
 	$post = get_post( $id );
 	if ( 'attachment' != $post->post_type )
 		wp_die( __( 'Unknown post type.' ) );
-	$post_type_object = get_post_type_object( 'attachment' );
-	if ( ! current_user_can( $post_type_object->cap->edit_post, $id ) )
+	if ( ! current_user_can( 'edit_post', $id ) )
 		wp_die( __( 'You are not allowed to edit this item.' ) );
 
 	switch ( $_REQUEST['fetch'] ) {
@@ -57,7 +56,7 @@ if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id
 				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
-			echo '<div class="filename new"><span class="title">' . esc_html( wp_html_excerpt( $title, 60 ) ) . '</span></div>';
+			echo '<div class="filename new"><span class="title">' . esc_html( wp_html_excerpt( $title, 60, '&hellip;' ) ) . '</span></div>';
 			break;
 		case 2 :
 			add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
diff --git a/wp-admin/credits.php b/wp-admin/credits.php
index 5249e1181..7052357b8 100644
--- a/wp-admin/credits.php
+++ b/wp-admin/credits.php
@@ -52,7 +52,7 @@ 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 to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s makes your writing experience even better.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
diff --git a/wp-admin/css/colors-classic.css b/wp-admin/css/colors-classic.css
index 2a2054541..2dbbb30a5 100644
--- a/wp-admin/css/colors-classic.css
+++ b/wp-admin/css/colors-classic.css
@@ -83,7 +83,7 @@ div.dashboard-widget,
 	background-color: #f1f1f1;
 }
 
-.widefat {
+table.widefat {
 	border-color: #d1e5ee;
 	background-color: #fff;
 }
@@ -164,6 +164,7 @@ textarea.disabled {
 	color: #fff;
 }
 
+.revisions-meta,
 .widget .widget-top,
 .postbox h3,
 .stuffbox h3,
@@ -1457,25 +1458,81 @@ div.wp-menu-image {
 
 /* end screen icons */
 
+/* Post format icons */
+
+.post-format-icon {
+	background: url(../images/post-formats-vs.png) no-repeat;
+}
+
 /* Diff */
 table.diff .diff-deletedline {
-	background-color: #fdd;
+	background-color: #ffe9e9;
 }
 
 table.diff .diff-deletedline del {
-	background-color: #f99;
+	background-color: #faa;
 }
 
 table.diff .diff-addedline {
-	background-color: #dfd;
+	background-color: #e9ffe9;
 }
 
 table.diff .diff-addedline ins {
-	background-color: #9f9;
+	background-color: #afa;
 }
 
-#att-info {
-	background-color: #e4f2fd;
+.revisions-meta {
+	border: 1px solid #d1e5ee;
+}
+
+.revisions-controls {
+	background: #fff;
+	background: -webkit-gradient(linear, left bottom, left top, color-stop(0%,rgba(255,255,255,1)), color-stop(30px,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,1)));
+	background: -webkit-linear-gradient(bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background:    -moz-linear-gradient(bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background:      -o-linear-gradient(bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background: linear-gradient(to top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+}
+
+.revisions-tooltip,
+.revisions-tooltip-arrow span {
+	border-color: #d1e5ee;
+	background-color: #fff;
+}
+
+.revisions-tickmarks > div {
+	border-color: #d1e5ee;
+}
+
+/* jQuery UI Slider */
+.wp-slider.ui-slider {
+	border-color: #d1e5ee;
+}
+
+.wp-slider .ui-slider-handle {
+	color: #333;
+	border-color: none;
+}
+
+.wp-slider .ui-slider-handle {
+	border-color: #d0dfe9;
+	background: #eff8ff;
+	background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff));
+	background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff);
+	background-image:    -moz-linear-gradient(bottom, #eff8ff, #fff);
+	background-image:      -o-linear-gradient(bottom, #eff8ff, #fff);
+	background-image: linear-gradient(to top, #eff8ff, #fff);
+}
+
+.wp-slider .ui-slider-handle:hover,
+.wp-slider .ui-slider-handle:focus {
+	border-color: #a0c3d5;
+}
+
+.wp-slider .ui-slider-handle.ui-state-hover,
+.wp-slider .ui-slider-handle.ui-state-focus {
+	border-color: #a0c3d5;
+	outline: none;
 }
 
 /* edit image */
@@ -1535,11 +1592,6 @@ table.diff .diff-addedline ins {
 	border-color: #ddd;
 }
 
-.inline-editor .categories .catshow,
-.inline-editor .categories .cathide {
-	color: #21759b;
-}
-
 .inline-editor .quick-edit-save {
 	background-color: #f1f1f1;
 }
@@ -2198,4 +2250,10 @@ h2.nav-tab-wrapper, h3.nav-tab-wrapper {
 		background-size: 16px auto;
 	}
 
+	/* 16px post formats */
+	.post-format-icon {
+		background-image: url(../images/post-formats32-vs.png);
+		background-size: 16px 304px;
+	}
+
 }
diff --git a/wp-admin/css/colors-classic.min.css b/wp-admin/css/colors-classic.min.css
index 8b368f33a..8c49a6bd9 100644
--- a/wp-admin/css/colors-classic.min.css
+++ b/wp-admin/css/colors-classic.min.css
@@ -1 +1 @@
-.find-box-search,.find-box-buttons{background-color:#eff8ff;border-top:1px solid #dce6f8}.find-box{background-color:#5589aa}.find-box-head{color:#fff}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#d1e5ee;background-color:#fff}ul.category-tabs li.tabs{border-color:#d1e5ee #d1e5ee #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eff8ff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#d1e5ee}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#b0c8d7}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#b0c8d7}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#eff8ff;border-color:#acd}#current-theme{border-bottom-color:#d1e5ee}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#b0c8d7;background-color:#eff8ff}.ui-autocomplete li a.ui-state-focus{background-color:#def1ff}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#d1e5ee}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#b0c8d7}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe);border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(to top,#def1ff,#eff8ff)}#screen-meta-links a{color:#606060;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#000;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:1px solid #d0dfe9}#wphead h1 a{color:#174f69}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9;background-color:#eff8ff}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#d1e5ee #d1e5ee #d0dfe9}#editorcontainer{border-color:#d1e5ee #d1e5ee #d0dfe9}#post-status-info{border-color:#d0dfe9 #d1e5ee #d1e5ee}.wp-admin .wp-editor-wrap .wp-switch-editor{background-color:#d3e9f2;border-color:#d1e5ee #d1e5ee #d3e9f2;color:#174f69}.wp-admin .wp-editor-wrap .wp-switch-editor:active{background-color:#f5fafd}.wp-admin .wp-editor-wrap.tmce-active .switch-tmce,.wp-admin .wp-editor-wrap.html-active .switch-html{background:#f7fcfe;border-color:#d1e5ee #d1e5ee #f7fcfe}.wp-admin .wp-editor-wrap .quicktags-toolbar,.wp-admin .wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{border-color:#d0dfe9;background-color:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.wp-admin .wp_themeSkin table.mceListBox{border-color:#d1e5ee}.wp-admin .wp_themeSkin table.mceListBoxEnabled:hover,.wp-admin .wp_themeSkin table.mceListBoxEnabled:active,.wp-admin .wp_themeSkin table.mceListBoxHover,.wp-admin .wp_themeSkin table.mceListBoxHover:active,.wp-admin .wp_themeSkin table.mceListBoxSelected{border-color:#b8cfdf}.wp-admin .wp_themeSkin a.mceButtonEnabled:hover,.wp-admin .wp_themeSkin table.mceSplitButton:hover{border-color:#c3d2dc;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f4f9fc),to(#fff));background-image:-webkit-linear-gradient(bottom,#f4f9fc,#fff);background-image:-moz-linear-gradient(bottom,#f4f9fc,#fff);background-image:-o-linear-gradient(bottom,#f4f9fc,#fff);background-image:linear-gradient(to top,#f4f9fc,#fff)}.wp-admin .wp_themeSkin a.mceButton:active,.wp-admin .wp_themeSkin a.mceButtonEnabled:active,.wp-admin .wp_themeSkin a.mceButtonSelected:active,.wp-admin .wp_themeSkin a.mceButtonActive,.wp-admin .wp_themeSkin a.mceButtonActive:active,.wp-admin .wp_themeSkin a.mceButtonActive:hover,.wp-admin .wp_themeSkin .mceSplitButtonSelected table,.wp-admin .wp_themeSkin .mceSplitButtonSelected table:hover{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f4f9fc));background-image:-webkit-linear-gradient(bottom,#fff,#f4f9fc);background-image:-moz-linear-gradient(bottom,#fff,#f4f9fc);background-image:-o-linear-gradient(bottom,#fff,#f4f9fc);background-image:linear-gradient(to top,#fff,#f4f9fc)}.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9}.wp-admin .wp_themeSkin .mceSplitButton:hover a{border-color:#c3d2dc}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e0f1ff;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(to top,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background:#5589aa;background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom right,#5589aa,#619bbb);background-image:linear-gradient(to top left,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e0f1ff;color:#333}#collapse-menu{color:#a0c3d5;border-top-color:#f9f9f9}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(to top,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu-vs.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#acd}#current-theme img{border-color:#b0c8d7}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#d1e5ee}#minor-publishing{border-bottom-color:#cae6ff}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#d1e5ee}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.nav-tab{border-color:#d1e5ee #d1e5ee #fff}.nav-tab:hover,.nav-tab-active{border-color:#acd #acd #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#acd}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f7fcfe;border-bottom-color:#f7fcfe}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#d1e5ee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-vs-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.nav-menus-php .item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-vs-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-vs-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-vs-2x.png?ver=20120916');background-size:16px auto}}
\ No newline at end of file
+.find-box-search,.find-box-buttons{background-color:#eff8ff;border-top:1px solid #dce6f8}.find-box{background-color:#5589aa}.find-box-head{color:#fff}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}table.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#d1e5ee;background-color:#fff}ul.category-tabs li.tabs{border-color:#d1e5ee #d1e5ee #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eff8ff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#d1e5ee}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#b0c8d7}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.revisions-meta,.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#b0c8d7}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#eff8ff;border-color:#acd}#current-theme{border-bottom-color:#d1e5ee}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#b0c8d7;background-color:#eff8ff}.ui-autocomplete li a.ui-state-focus{background-color:#def1ff}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#d1e5ee}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#b0c8d7}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe);border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(to top,#def1ff,#eff8ff)}#screen-meta-links a{color:#606060;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#000;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:1px solid #d0dfe9}#wphead h1 a{color:#174f69}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9;background-color:#eff8ff}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#d1e5ee #d1e5ee #d0dfe9}#editorcontainer{border-color:#d1e5ee #d1e5ee #d0dfe9}#post-status-info{border-color:#d0dfe9 #d1e5ee #d1e5ee}.wp-admin .wp-editor-wrap .wp-switch-editor{background-color:#d3e9f2;border-color:#d1e5ee #d1e5ee #d3e9f2;color:#174f69}.wp-admin .wp-editor-wrap .wp-switch-editor:active{background-color:#f5fafd}.wp-admin .wp-editor-wrap.tmce-active .switch-tmce,.wp-admin .wp-editor-wrap.html-active .switch-html{background:#f7fcfe;border-color:#d1e5ee #d1e5ee #f7fcfe}.wp-admin .wp-editor-wrap .quicktags-toolbar,.wp-admin .wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{border-color:#d0dfe9;background-color:#f5fafd;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#f7fcfe));background-image:-webkit-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-moz-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:-o-linear-gradient(bottom,#eff8ff,#f7fcfe);background-image:linear-gradient(to top,#eff8ff,#f7fcfe)}.wp-admin .wp_themeSkin table.mceListBox{border-color:#d1e5ee}.wp-admin .wp_themeSkin table.mceListBoxEnabled:hover,.wp-admin .wp_themeSkin table.mceListBoxEnabled:active,.wp-admin .wp_themeSkin table.mceListBoxHover,.wp-admin .wp_themeSkin table.mceListBoxHover:active,.wp-admin .wp_themeSkin table.mceListBoxSelected{border-color:#b8cfdf}.wp-admin .wp_themeSkin a.mceButtonEnabled:hover,.wp-admin .wp_themeSkin table.mceSplitButton:hover{border-color:#c3d2dc;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f4f9fc),to(#fff));background-image:-webkit-linear-gradient(bottom,#f4f9fc,#fff);background-image:-moz-linear-gradient(bottom,#f4f9fc,#fff);background-image:-o-linear-gradient(bottom,#f4f9fc,#fff);background-image:linear-gradient(to top,#f4f9fc,#fff)}.wp-admin .wp_themeSkin a.mceButton:active,.wp-admin .wp_themeSkin a.mceButtonEnabled:active,.wp-admin .wp_themeSkin a.mceButtonSelected:active,.wp-admin .wp_themeSkin a.mceButtonActive,.wp-admin .wp_themeSkin a.mceButtonActive:active,.wp-admin .wp_themeSkin a.mceButtonActive:hover,.wp-admin .wp_themeSkin .mceSplitButtonSelected table,.wp-admin .wp_themeSkin .mceSplitButtonSelected table:hover{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9;background:#f4f9fc;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f4f9fc));background-image:-webkit-linear-gradient(bottom,#fff,#f4f9fc);background-image:-moz-linear-gradient(bottom,#fff,#f4f9fc);background-image:-o-linear-gradient(bottom,#fff,#f4f9fc);background-image:linear-gradient(to top,#fff,#f4f9fc)}.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp-admin .wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#8f9da9 #c3d2dc #c3d2dc #8f9da9}.wp-admin .wp_themeSkin .mceSplitButton:hover a{border-color:#c3d2dc}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e0f1ff;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(to top,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background:#5589aa;background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom right,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom right,#5589aa,#619bbb);background-image:linear-gradient(to top left,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e0f1ff;color:#333}#collapse-menu{color:#a0c3d5;border-top-color:#f9f9f9}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(to top,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#5589aa;background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#d0dfe9;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu-vs.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}.post-format-icon{background:url(../images/post-formats-vs.png) no-repeat}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}.revisions-meta{border:1px solid #d1e5ee}.revisions-controls{background:#fff;background:-webkit-gradient(linear,left bottom,left top,color-stop(0%,rgba(255,255,255,1)),color-stop(30px,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,1)));background:-webkit-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:-moz-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:-o-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:linear-gradient(to top,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%)}.revisions-tooltip,.revisions-tooltip-arrow span{border-color:#d1e5ee;background-color:#fff}.revisions-tickmarks>div{border-color:#d1e5ee}.wp-slider.ui-slider{border-color:#d1e5ee}.wp-slider .ui-slider-handle{color:#333;border-color:none}.wp-slider .ui-slider-handle{border-color:#d0dfe9;background:#eff8ff;background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(to top,#eff8ff,#fff)}.wp-slider .ui-slider-handle:hover,.wp-slider .ui-slider-handle:focus{border-color:#a0c3d5}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle.ui-state-focus{border-color:#a0c3d5;outline:0}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#acd}#current-theme img{border-color:#b0c8d7}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#d1e5ee}#minor-publishing{border-bottom-color:#cae6ff}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#d1e5ee}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.nav-tab{border-color:#d1e5ee #d1e5ee #fff}.nav-tab:hover,.nav-tab-active{border-color:#acd #acd #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#acd}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f7fcfe;border-bottom-color:#f7fcfe}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#d1e5ee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-vs-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.nav-menus-php .item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-vs-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-vs-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-vs-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-vs-2x.png?ver=20120916');background-size:16px auto}.post-format-icon{background-image:url(../images/post-formats32-vs.png);background-size:16px 304px}}
\ No newline at end of file
diff --git a/wp-admin/css/colors-fresh.css b/wp-admin/css/colors-fresh.css
index 63f768159..92d8332da 100644
--- a/wp-admin/css/colors-fresh.css
+++ b/wp-admin/css/colors-fresh.css
@@ -83,13 +83,10 @@ div.dashboard-widget,
 	background-color: #f1f1f1;
 }
 
-.widefat {
+table.widefat {
 	border-color: #dfdfdf;
 	background-color: #f9f9f9;
 }
-textarea.widefat {
-	background-color: #fff;
-}
 
 div.dashboard-widget-error {
 	background-color: #c43;
@@ -167,6 +164,7 @@ textarea.disabled {
 	color: #fff;
 }
 
+.revisions-meta,
 .widget .widget-top,
 .postbox h3,
 .stuffbox h3,
@@ -187,6 +185,8 @@ h3.dashboard-widget-title small,
 	background-image: linear-gradient(to top, #ececec, #f9f9f9);
 }
 
+
+
 .widget .widget-top,
 .postbox h3,
 .stuffbox h3 {
@@ -412,7 +412,8 @@ div.dashboard-widget-submit input:hover,
 
 .submitbox .submitdelete:hover,
 #media-items a.delete:hover,
-#media-items a.delete-permanently:hover {
+#media-items a.delete-permanently:hover,
+#nav-menu-footer .menu-delete:hover {
 	color: #fff;
 	background-color: #f00;
 	border-bottom-color: #f00;
@@ -1351,25 +1352,78 @@ div.wp-menu-image {
 
 /* end screen icons */
 
+/* Post format icons */
+
+.post-format-icon {
+	background: url(../images/post-formats.png) no-repeat;
+}
+
 /* Diff */
 table.diff .diff-deletedline {
-	background-color: #fdd;
+	background-color: #ffe9e9;
 }
 
 table.diff .diff-deletedline del {
-	background-color: #f99;
+	background-color: #faa;
 }
 
 table.diff .diff-addedline {
-	background-color: #dfd;
+	background-color: #e9ffe9;
 }
 
 table.diff .diff-addedline ins {
-	background-color: #9f9;
+	background-color: #afa;
 }
 
-#att-info {
-	background-color: #e4f2Fd;
+.revisions-meta {
+	border: 1px solid #dfdfdf;
+}
+
+.revisions-controls {
+	background: #fff;
+	background: -webkit-gradient(linear, left bottom, left top, color-stop(0%,rgba(255,255,255,1)), color-stop(30px,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,1)));
+	background: -webkit-linear-gradient(bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background:    -moz-linear-gradient(bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background:      -o-linear-gradient(bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+	background: linear-gradient(to top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 30px, rgba(255,255,255,1) 100%);
+}
+
+.revisions-tooltip,
+.revisions-tooltip-arrow span {
+	border-color: #d7d7d7;
+	background-color: #fff;
+}
+
+.revisions-tickmarks > div {
+	border-color: #aaa;
+}
+
+/* jQuery UI Slider */
+.wp-slider.ui-slider {
+	border-color: #d7d7d7;
+}
+
+.wp-slider .ui-slider-handle {
+	border-color: #ccc;
+	border-radius: 50%;
+	background: #f4f4f4;
+	background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#fff));
+	background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff);
+	background-image:    -moz-linear-gradient(bottom, #dfdfdf, #fff);
+	background-image:      -o-linear-gradient(bottom, #dfdfdf, #fff);
+	background-image: linear-gradient(to top, #dfdfdf, #fff);
+	color: #333;
+}
+
+.wp-slider .ui-slider-handle:hover,
+.wp-slider .ui-slider-handle:focus {
+	border-color: #aaa;
+}
+
+.wp-slider .ui-slider-handle.ui-state-hover,
+.wp-slider .ui-slider-handle.ui-state-focus {
+	border-color: #aaa;
+	outline: none;
 }
 
 /* edit image */
@@ -1429,11 +1483,6 @@ table.diff .diff-addedline ins {
 	border-color: #ddd;
 }
 
-.inline-editor .categories .catshow,
-.inline-editor .categories .cathide {
-	color: #21759b;
-}
-
 .inline-editor .quick-edit-save {
 	background-color: #f1f1f1;
 }
@@ -1749,6 +1798,23 @@ div.widgets-sortables,
 	background: #21759b;
 	color: #fff;
 }
+
+.manage-menus {
+	border: 1px solid #eeeeee;
+	background: #fbfbfb;
+}
+
+.theme-location-set {
+	color: #999999;
+}
+
+.nav-menus-php .delete-action a {
+	color: #bc0b0b;
+}
+
+.is-submenu {
+	color: #999999;
+}
 /* end added from nav-menu.css */
 
 .nav-tab {
@@ -2073,4 +2139,10 @@ h2.nav-tab-wrapper, h3.nav-tab-wrapper {
 		background-size: 16px auto;
 	}
 
+	/* 16px post formats */
+	.post-format-icon {
+		background-image: url(../images/post-formats32.png);
+		background-size: 16px 304px;
+	}
+
 }
diff --git a/wp-admin/css/colors-fresh.min.css b/wp-admin/css/colors-fresh.min.css
index 77ae81397..9e9ed8b53 100644
--- a/wp-admin/css/colors-fresh.min.css
+++ b/wp-admin/css/colors-fresh.min.css
@@ -1 +1 @@
-.find-box-search,.find-box-buttons{background-color:#f7f7f7;border-top:1px solid #ddd}.find-box{background-color:#444}.find-box-head{color:#eee}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#dfdfdf;background-color:#f9f9f9}textarea.widefat{background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs{border-color:#dfdfdf #dfdfdf #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eaeaea}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#aaa}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}#current-theme{border-bottom-color:#dfdfdf}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#aaa;background-color:#efefef}.ui-autocomplete li a.ui-state-focus{background-color:#ddd}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#ececec}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#fafafa));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-moz-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-o-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:linear-gradient(to top,#f5f5f5,#fafafa);border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-moz-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:linear-gradient(to top,#f5f5f5,#f9f9f9)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background:#e3e3e3;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(to top,#dfdfdf,#f1f1f1)}#screen-meta-links a{color:#777;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#333;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e4e4e4;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background:#777;background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom right,#6d6d6d,#808080);background-image:linear-gradient(to top left,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e4e4e4;color:#333}#collapse-menu{color:#aaa;border-top-color:#f9f9f9}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(to top,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.nav-tab{border-color:#dfdfdf #dfdfdf #fff}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#ccc}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#eee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.sidebar-name:hover .sidebar-name-arrow,.nav-menus-php .item-edit:hover,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-2x.png?ver=20120916');background-size:16px auto}}
\ No newline at end of file
+.find-box-search,.find-box-buttons{background-color:#f7f7f7;border-top:1px solid #ddd}.find-box{background-color:#444}.find-box-head{color:#eee}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}table.widefat{border-color:#dfdfdf;background-color:#f9f9f9}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs{border-color:#dfdfdf #dfdfdf #fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}kbd,code{background:#eaeaea}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#aaa}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.revisions-meta,.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2,.wrap .add-new-h2:active{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}#current-theme{border-bottom-color:#dfdfdf}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{border-color:#aaa;background-color:#efefef}.ui-autocomplete li a.ui-state-focus{background-color:#ddd}.post-com-count{color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}a:hover,a:active{color:#d54e21}a:focus{color:#124964}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu .wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}#dashboard_right_now .table_content,#dashboard_right_now .table_discussion{border-top-color:#ececec}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover,#media-items a.delete-permanently:hover,#nav-menu-footer .menu-delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}th.sortable a:focus{background:#e1e1e1;background-image:-webkit-gradient(linear,left bottom,left top,from(#dcdcdc),to(#e9e9e9));background-image:-webkit-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-moz-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:-o-linear-gradient(bottom,#dcdcdc,#e9e9e9);background-image:linear-gradient(to top,#dcdcdc,#e9e9e9)}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,#media-items a.delete-permanently,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#wpfooter{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#fafafa));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-moz-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:-o-linear-gradient(bottom,#f5f5f5,#fafafa);background-image:linear-gradient(to top,#f5f5f5,#fafafa);border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px #fff}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-moz-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(bottom,#f5f5f5,#f9f9f9);background-image:linear-gradient(to top,#f5f5f5,#f9f9f9)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.js .sidebar-name:hover h3,.js .postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background:#e3e3e3;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(to top,#dfdfdf,#f1f1f1)}#screen-meta-links a{color:#777;background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a:hover,#screen-meta-links a:active{color:#333;background-color:transparent}#screen-meta-links a.screen-meta-active{background-position:right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#wpfooter a:link,#wpfooter a:visited{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu a.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{background-color:#e4e4e4;color:#d54e21;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.menu-top:hover>a span,#adminmenu li.menu-top>a:focus span{text-shadow:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background:#777;background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom right,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom right,#6d6d6d,#808080);background-image:linear-gradient(to top left,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{background-color:#e4e4e4;color:#333}#collapse-menu{color:#aaa;border-top-color:#f9f9f9}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(to top,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{background-color:#777;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}.auto-fold #adminmenu li.wp-has-current-submenu,.auto-fold #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{background-color:#fff;border-color:#dfdfdf;-webkit-box-shadow:2px 3px 6px rgba(0,0,0,0.4);box-shadow:2px 3px 6px rgba(0,0,0,0.4)}.auto-fold #collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url(../images/menu.png?ver=20121105)}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon16.icon-generic,#adminmenu .menu-icon-generic div.wp-menu-image{background-position:-330px -33px}#adminmenu .menu-icon-generic:hover div.wp-menu-image,#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-generic.current div.wp-menu-image{background-position:-330px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32.png?ver=20121105)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}.icon32.icon-generic,#icon-generic{background-position:-708px -5px}.post-format-icon{background:url(../images/post-formats.png) no-repeat}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}.revisions-meta{border:1px solid #dfdfdf}.revisions-controls{background:#fff;background:-webkit-gradient(linear,left bottom,left top,color-stop(0%,rgba(255,255,255,1)),color-stop(30px,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,1)));background:-webkit-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:-moz-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:-o-linear-gradient(bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%);background:linear-gradient(to top,rgba(255,255,255,0) 0,rgba(255,255,255,1) 30px,rgba(255,255,255,1) 100%)}.revisions-tooltip,.revisions-tooltip-arrow span{border-color:#d7d7d7;background-color:#fff}.revisions-tickmarks>div{border-color:#aaa}.wp-slider.ui-slider{border-color:#d7d7d7}.wp-slider .ui-slider-handle{border-color:#ccc;border-radius:50%;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(to top,#dfdfdf,#fff);color:#333}.wp-slider .ui-slider-handle:hover,.wp-slider .ui-slider-handle:focus{border-color:#aaa}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle.ui-state-focus{border-color:#aaa;outline:0}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.js .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-color:transparent;background-image:url('../images/list.png');background-repeat:no-repeat}.view-switch #view-switch-list{background-position:0 0}.view-switch .current #view-switch-list{background-position:-40px 0}.view-switch #view-switch-excerpt{background-position:-20px 0}.view-switch .current #view-switch-excerpt{background-position:-60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.js .sidebar-name:hover,.js #removing-widget{color:#d54e21}#removing-widget span{color:black}.js .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.nav-menus-php .item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}.manage-menus{border:1px solid #eee;background:#fbfbfb}.theme-location-set{color:#999}.nav-menus-php .delete-action a{color:#bc0b0b}.is-submenu{color:#999}.nav-tab{border-color:#dfdfdf #dfdfdf #fff}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-color:#ccc}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px #fff}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px #fff;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px #fff}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px #fff}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px #fff}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:transparent;border-left-color:#99d}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:transparent;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:none;box-shadow:none}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.rtl.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl.auto-fold #collapse-button div{background-position:0 -72px}}.js.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl #post-body .misc-pub-section{border-right-color:transparent;border-left-color:#eee}.js.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.js.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.curtime #timestamp{background-image:url("../images/date-button-2x.gif?ver=20120916");background-size:16px auto}.tagchecklist span a,#bulk-titles div a,.tagchecklist span a:hover,#bulk-titles div a:hover{background-image:url("../images/xit-2x.gif?ver=20120916");background-size:20px auto}#screen-meta-links a.show-settings,#screen-meta-links a.show-settings.screen-meta-active,#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle,#collapse-button div,.nav-menus-php .item-edit,.js .meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle,.js.rtl .meta-box-sortables .postbox:hover .handlediv,.rtl .sidebar-name-arrow{background-image:url("../images/arrows-2x.png?ver=20120916");background-size:15px 123px}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.sidebar-name:hover .sidebar-name-arrow,.nav-menus-php .item-edit:hover,.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,.rtl .sidebar-name:hover .sidebar-name-arrow{background-image:url("../images/arrows-dark-2x.png?ver=20120916");background-size:15px 123px}.view-switch #view-switch-list,.view-switch #view-switch-excerpt{background-image:url("../images/list-2x.png?ver=20120916");background-size:80px 20px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin,.icon32.icon-generic,#icon-generic{background-image:url(../images/icons32-2x.png?ver=20121105);background-size:756px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image,.icon16.icon-generic,.menu-icon-generic div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20121105');background-size:390px 64px}#header-logo{background-image:url('../images/wp-logo-2x.png?ver=20120916');background-size:16px auto}.post-format-icon{background-image:url(../images/post-formats32.png);background-size:16px 304px}}
\ No newline at end of file
diff --git a/wp-admin/css/customize-controls-rtl.css b/wp-admin/css/customize-controls-rtl.css
index de8fd8577..236d85d8c 100644
--- a/wp-admin/css/customize-controls-rtl.css
+++ b/wp-admin/css/customize-controls-rtl.css
@@ -1,11 +1,3 @@
-.control-section .customize-section-title {
-	font-family: Tahoma, Arial, sans-serif;
-}
-.customize-section-title:after {
-	right: auto;
-	left: 20px;
-}
-
 #customize-header-actions .button-primary {
 	float: left;
 }
@@ -29,11 +21,11 @@
 /*
  * Dropdowns
  */
-.customize-section .dropdown {
+.accordion-section .dropdown {
 	float: right;
 }
 
-.customize-section .dropdown-content {
+.accordion-section .dropdown-content {
 	float: right;
 	margin-right: 0px;
 	margin-left: 16px;
@@ -65,21 +57,21 @@
 	margin-left: 5px;
 }
 
-.customize-section input[type="text"].color-picker-hex {
-	float: right;
+.accordion-section input[type="text"].color-picker-hex {
+	direction: ltr;
 }
 
 /*
  * Image Picker
  */
-.customize-section .customize-control-image .actions {
+.accordion-section .customize-control-image .actions {
 	text-align: left;
 }
 
 .customize-control-image .library,
 .customize-control-image .actions,
-.customize-section .customize-control-image .library ul,
-.customize-section .customize-control-image .library li,
-.customize-section .customize-control-image .library-content {
+.accordion-section .customize-control-image .library ul,
+.accordion-section .customize-control-image .library li,
+.accordion-section .customize-control-image .library-content {
 	float: right;
 }
diff --git a/wp-admin/css/customize-controls-rtl.min.css b/wp-admin/css/customize-controls-rtl.min.css
index 374168e2e..498d0ce19 100644
--- a/wp-admin/css/customize-controls-rtl.min.css
+++ b/wp-admin/css/customize-controls-rtl.min.css
@@ -1 +1 @@
-.control-section .customize-section-title{font-family:Tahoma,Arial,sans-serif}.customize-section-title:after{right:auto;left:20px}#customize-header-actions .button-primary{float:left}#customize-header-actions .spinner{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.customize-section .dropdown{float:right}.customize-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.customize-section input[type="text"].color-picker-hex{float:right}.customize-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.customize-section .customize-control-image .library ul,.customize-section .customize-control-image .library li,.customize-section .customize-control-image .library-content{float:right}
\ No newline at end of file
+#customize-header-actions .button-primary{float:left}#customize-header-actions .spinner{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.accordion-section .dropdown{float:right}.accordion-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.accordion-section input[type="text"].color-picker-hex{direction:ltr}.accordion-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.accordion-section .customize-control-image .library ul,.accordion-section .customize-control-image .library li,.accordion-section .customize-control-image .library-content{float:right}
\ No newline at end of file
diff --git a/wp-admin/css/customize-controls.css b/wp-admin/css/customize-controls.css
index 7441dea27..14f6f212d 100644
--- a/wp-admin/css/customize-controls.css
+++ b/wp-admin/css/customize-controls.css
@@ -6,124 +6,7 @@ body {
 	text-decoration: none;
 }
 
-.customize-section {
-	border-top: 1px solid #fff;
-	border-bottom: 1px solid #dfdfdf;
-	margin: 0;
-}
-
-.control-section.customize-section:hover,
-.control-section.customize-section.open {
-	border-top-color: #808080;
-}
-
-.control-section.customize-section:hover {
-	border-bottom-color: #6d6d6d;
-}
-
-.customize-section.open:hover {
-	border-bottom-color: #dfdfdf;
-}
-
-.customize-section:last-child {
-	box-shadow: 0 1px 0 0px #fff;
-}
-
-.customize-section-title {
-	margin: 0;
-	padding: 15px 20px;
-	position: relative;
-
-	cursor: pointer;
-
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	user-select: none;
-}
-
-.customize-section-title:focus {
-	outline: none;
-}
-
-.cannot-expand .customize-section-title {
-	cursor: auto;
-}
-
-.customize-section-content {
-	display: none;
-	padding: 10px 20px 15px;
-	overflow: hidden;
-}
-
-.control-section .customize-section-title {
-	padding: 10px 20px;
-	font-size: 15px;
-	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
-	font-weight: normal;
-	text-shadow: 0 1px 0 #fff;
-	background: #f5f5f5;
-	background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(#f5f5f5));
-	background-image: -webkit-linear-gradient(bottom, #eee, #f5f5f5);
-	background-image:    -moz-linear-gradient(bottom, #eee, #f5f5f5);
-	background-image:      -o-linear-gradient(bottom, #eee, #f5f5f5);
-	background-image: linear-gradient(to top, #eee, #f5f5f5);
-}
-
-.control-section:hover .customize-section-title,
-.control-section .customize-section-title:hover,
-.control-section.open .customize-section-title,
-.control-section .customize-section-title:focus {
-	color: #fff;
-	text-shadow: 0 -1px 0 #333;
-	background: #808080;
-	background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080));
-	background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080);
-	background-image:    -moz-linear-gradient(bottom, #6d6d6d, #808080);
-	background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080);
-	background-image: linear-gradient(to top, #6d6d6d, #808080);
-}
-
-.control-section.open .customize-section-title {
-	border-bottom: 1px solid #6d6d6d;
-}
-
-.customize-section.open .customize-section-content {
-	display: block;
-	background: #fdfdfd;
-}
-
-.customize-section-title:after {
-	content: '';
-	width: 0;
-	height: 0;
-	border-color: #ccc transparent;
-	border-style: solid;
-	border-width: 6px 6px 0;
-	position: absolute;
-	top: 25px;
-	right: 20px;
-	z-index: 1;
-}
-
-.cannot-expand .customize-section-title:after {
-	display: none;
-}
-
-.customize-section-title:hover:after,
-.customize-section-title:focus:after {
-	border-color: #aaa transparent;
-}
-
-.control-section .customize-section-title:hover:after,
-.control-section .customize-section-title:focus:after {
-	border-color: #eee transparent;
-}
-
-.control-section .customize-section-title:after {
-	top: 15px;
-}
-
-#customize-info .customize-section-content {
+#customize-info .accordion-section-content {
 	background: transparent;
 }
 
@@ -158,7 +41,7 @@ body {
 }
 
 #customize-theme-controls > ul,
-#customize-theme-controls .customize-section-content {
+#customize-theme-controls .accordion-section-content {
 	margin: 0;
 }
 
@@ -238,6 +121,36 @@ body {
 	height: 100%;
 }
 
+#customize-theme-controls .accordion-section-title:hover:after,
+#customize-theme-controls .accordion-section-title:focus:after {
+	border-color: #eee transparent;
+}
+
+#customize-theme-controls .control-section:hover .accordion-section-title,
+#customize-theme-controls .control-section .accordion-section-title:hover,
+#customize-theme-controls .control-section.open .accordion-section-title,
+#customize-theme-controls .control-section .accordion-section-title:focus {
+	color: #fff;
+	text-shadow: 0 -1px 0 #333;
+	background: #808080;
+	background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080));
+	background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080);
+	background-image:    -moz-linear-gradient(bottom, #6d6d6d, #808080);
+	background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080);
+	background-image: linear-gradient(to top, #6d6d6d, #808080);
+	border-left: 1px solid #808080;
+	border-right: 1px solid #808080;
+}
+
+#customize-theme-controls .control-section.accordion-section:hover,
+#customize-theme-controls .control-section.accordion-section.open {
+	border-top-color: #808080;
+}
+
+#customize-theme-controls .control-section.open .accordion-section-title {
+	border-bottom: 1px solid #6d6d6d;
+}
+
 /*
  * Style for custom settings
  */
@@ -245,7 +158,7 @@ body {
 /*
  * Dropdowns
  */
-.customize-section .dropdown {
+.accordion-section .dropdown {
 	float: left;
 	display: block;
 	position: relative;
@@ -255,7 +168,7 @@ body {
 	border-radius: 3px;
 }
 
-.customize-section .dropdown-content {
+.accordion-section .dropdown-content {
 	overflow: hidden;
 	float: left;
 	min-width: 30px;
@@ -301,12 +214,12 @@ body {
 	z-index: 1;
 }
 
-.customize-section .dropdown:hover .dropdown-content,
+.accordion-section .dropdown:hover .dropdown-content,
 .customize-control .dropdown:hover .dropdown-arrow {
 	border-color: #aaa;
 }
 
-.customize-section .dropdown:hover .dropdown-arrow:after {
+.accordion-section .dropdown:hover .dropdown-arrow:after {
 	border-color: #aaa transparent;
 }
 
@@ -341,7 +254,7 @@ body {
 	border-color: rgba( 0, 0, 0, 0.25 );
 }
 
-.customize-section input[type="text"].color-picker-hex {
+.accordion-section input[type="text"].color-picker-hex {
 	width: 65px;
 	font-family: monospace;
 	text-align: center;
@@ -349,10 +262,10 @@ body {
 }
 
 /* The centered cursor overlaps the placeholder in webkit. Hide it when selected. */
-.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder {
+.accordion-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder {
 	color: transparent;
 }
-.customize-section input[type="text"].color-picker-hex:-moz-placeholder {
+.accordion-section input[type="text"].color-picker-hex:-moz-placeholder {
 	color: #999;
 }
 
@@ -371,18 +284,18 @@ body {
 	display: block;
 }
 
-.customize-section .customize-control-image .dropdown-content {
+.accordion-section .customize-control-image .dropdown-content {
 	height: auto;
 	min-height: 24px;
 	min-width: 40px;
 	padding: 0;
 }
 
-.customize-section .customize-control-image .dropdown-status {
+.accordion-section .customize-control-image .dropdown-status {
 	padding: 4px 5px;
 }
 
-.customize-section .customize-control-image .preview-thumbnail img {
+.accordion-section .customize-control-image .preview-thumbnail img {
 	display: block;
 	width: 100%;
 	max-width: 122px;
@@ -390,18 +303,18 @@ body {
 	margin: 0 auto;
 }
 
-.customize-section .customize-control-image .actions {
+.accordion-section .customize-control-image .actions {
 	text-align: right;
 }
 
-.customize-section .customize-control-image .library ul {
+.accordion-section .customize-control-image .library ul {
 	border-bottom: 1px solid #dfdfdf;
 	float: left;
 	width: 100%;
 	margin: 10px 0 0;
 }
 
-.customize-section .customize-control-image .library li {
+.accordion-section .customize-control-image .library li {
 	color: #999;
 	float: left;
 	padding: 3px 5px;
@@ -411,7 +324,7 @@ body {
 	border-width: 1px 1px 0 1px;
 }
 
-.customize-section .customize-control-image .library li.library-selected {
+.accordion-section .customize-control-image .library li.library-selected {
 	margin-bottom: -1px;
 	padding-bottom: 4px;
 
@@ -422,27 +335,27 @@ body {
 	border-radius: 3px 3px 0 0 ;
 }
 
-.customize-section .customize-control-image .library-content {
+.accordion-section .customize-control-image .library-content {
 	display: none;
 	width: 100%;
 	float: left;
 	padding: 10px 0;
 }
 
-.customize-section .customize-control-image .library-content.library-selected {
+.accordion-section .customize-control-image .library-content.library-selected {
 	display: block;
 }
 
-.customize-section .customize-control-image .library .thumbnail {
+.accordion-section .customize-control-image .library .thumbnail {
 	display: block;
 	width: 100%;
 }
 
-.customize-section .customize-control-image .library .thumbnail:hover img {
+.accordion-section .customize-control-image .library .thumbnail:hover img {
 	border-color: #21759b;
 }
 
-.customize-section .customize-control-image .library .thumbnail img {
+.accordion-section .customize-control-image .library .thumbnail img {
 	display: block;
 	max-width: 90%;
 	max-height: 80px;
@@ -453,13 +366,13 @@ body {
 	border: 1px solid #dfdfdf;
 }
 
-.customize-section .customize-control-upload .upload-fallback,
-.customize-section .customize-control-image .upload-fallback {
+.accordion-section .customize-control-upload .upload-fallback,
+.accordion-section .customize-control-image .upload-fallback {
 	display: none;
 }
 
-.customize-section .customize-control-upload .upload-dropzone,
-.customize-section .customize-control-image .upload-dropzone {
+.accordion-section .customize-control-upload .upload-dropzone,
+.accordion-section .customize-control-image .upload-dropzone {
 	display: none;
 	padding: 15px 10px;
 	border: 3px dashed #dfdfdf;
@@ -470,8 +383,8 @@ body {
 	cursor: default;
 }
 
-.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,
-.customize-section .customize-control-image .upload-dropzone.supports-drag-drop {
+.accordion-section .customize-control-upload .upload-dropzone.supports-drag-drop,
+.accordion-section .customize-control-image .upload-dropzone.supports-drag-drop {
 	display: block;
 	-webkit-transition: border-color 0.1s;
 	-moz-transition:    border-color 0.1s;
@@ -480,13 +393,13 @@ body {
 	transition:         border-color 0.1s;
 }
 
-.customize-section .customize-control-upload .library ul li,
-.customize-section .customize-control-image .library ul li {
+.accordion-section .customize-control-upload .library ul li,
+.accordion-section .customize-control-image .library ul li {
 	cursor: pointer;
 }
 
-.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,
-.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over {
+.accordion-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,
+.accordion-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over {
 	border-color: #83b4d8;
 }
 
diff --git a/wp-admin/css/customize-controls.min.css b/wp-admin/css/customize-controls.min.css
index d4e432af5..99e7ea19b 100644
--- a/wp-admin/css/customize-controls.min.css
+++ b/wp-admin/css/customize-controls.min.css
@@ -1 +1 @@
-body{overflow:hidden}#customize-controls a{text-decoration:none}.customize-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.control-section.customize-section:hover,.control-section.customize-section.open{border-top-color:#808080}.control-section.customize-section:hover{border-bottom-color:#6d6d6d}.customize-section.open:hover{border-bottom-color:#dfdfdf}.customize-section:last-child{box-shadow:0 1px 0 0 #fff}.customize-section-title{margin:0;padding:15px 20px;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-section-title:focus{outline:0}.cannot-expand .customize-section-title{cursor:auto}.customize-section-content{display:none;padding:10px 20px 15px;overflow:hidden}.control-section .customize-section-title{padding:10px 20px;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#f5f5f5));background-image:-webkit-linear-gradient(bottom,#eee,#f5f5f5);background-image:-moz-linear-gradient(bottom,#eee,#f5f5f5);background-image:-o-linear-gradient(bottom,#eee,#f5f5f5);background-image:linear-gradient(to top,#eee,#f5f5f5)}.control-section:hover .customize-section-title,.control-section .customize-section-title:hover,.control-section.open .customize-section-title,.control-section .customize-section-title:focus{color:#fff;text-shadow:0 -1px 0 #333;background:#808080;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080)}.control-section.open .customize-section-title{border-bottom:1px solid #6d6d6d}.customize-section.open .customize-section-content{display:block;background:#fdfdfd}.customize-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.cannot-expand .customize-section-title:after{display:none}.customize-section-title:hover:after,.customize-section-title:focus:after{border-color:#aaa transparent}.control-section .customize-section-title:hover:after,.control-section .customize-section-title:focus:after{border-color:#eee transparent}.control-section .customize-section-title:after{top:15px}#customize-info .customize-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .customize-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:10px}#customize-header-actions .spinner{margin-top:16px;margin-right:4px}.saving #customize-header-actions .spinner{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}.customize-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.customize-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.customize-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.customize-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.customize-section input[type="text"].color-picker-hex{width:65px;font-family:monospace;text-align:center;line-height:16px}.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.customize-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.customize-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.customize-section .customize-control-image .dropdown-status{padding:4px 5px}.customize-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.customize-section .customize-control-image .actions{text-align:right}.customize-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.customize-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.customize-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.customize-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.customize-section .customize-control-image .library-content.library-selected{display:block}.customize-section .customize-control-image .library .thumbnail{display:block;width:100%}.customize-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.customize-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.customize-section .customize-control-upload .upload-fallback,.customize-section .customize-control-image .upload-fallback{display:none}.customize-section .customize-control-upload .upload-dropzone,.customize-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.customize-section .customize-control-upload .library ul li,.customize-section .customize-control-image .library ul li{cursor:pointer}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px}
\ No newline at end of file
+body{overflow:hidden}#customize-controls a{text-decoration:none}#customize-info .accordion-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .accordion-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:10px}#customize-header-actions .spinner{margin-top:16px;margin-right:4px}.saving #customize-header-actions .spinner{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}#customize-theme-controls .accordion-section-title:hover:after,#customize-theme-controls .accordion-section-title:focus:after{border-color:#eee transparent}#customize-theme-controls .control-section:hover .accordion-section-title,#customize-theme-controls .control-section .accordion-section-title:hover,#customize-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section .accordion-section-title:focus{color:#fff;text-shadow:0 -1px 0 #333;background:#808080;background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(to top,#6d6d6d,#808080);border-left:1px solid #808080;border-right:1px solid #808080}#customize-theme-controls .control-section.accordion-section:hover,#customize-theme-controls .control-section.accordion-section.open{border-top-color:#808080}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom:1px solid #6d6d6d}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.accordion-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.accordion-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.accordion-section input[type="text"].color-picker-hex{width:65px;font-family:monospace;text-align:center;line-height:16px}.accordion-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.accordion-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.accordion-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.accordion-section .customize-control-image .dropdown-status{padding:4px 5px}.accordion-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.accordion-section .customize-control-image .actions{text-align:right}.accordion-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.accordion-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.accordion-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.accordion-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.accordion-section .customize-control-image .library-content.library-selected{display:block}.accordion-section .customize-control-image .library .thumbnail{display:block;width:100%}.accordion-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.accordion-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.accordion-section .customize-control-upload .upload-fallback,.accordion-section .customize-control-image .upload-fallback{display:none}.accordion-section .customize-control-upload .upload-dropzone,.accordion-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.accordion-section .customize-control-upload .upload-dropzone.supports-drag-drop,.accordion-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.accordion-section .customize-control-upload .library ul li,.accordion-section .customize-control-image .library ul li{cursor:pointer}.accordion-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.accordion-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px}
\ No newline at end of file
diff --git a/wp-admin/css/ie-rtl.css b/wp-admin/css/ie-rtl.css
index 50e2e8d41..b947f0b20 100644
--- a/wp-admin/css/ie-rtl.css
+++ b/wp-admin/css/ie-rtl.css
@@ -234,7 +234,7 @@ p.button-controls,
 	right: 0;
 }
 
-.screen-reader-text { 
+.screen-reader-text {
 	right: auto;
-	text-indent: -1000em; 
-} 
\ No newline at end of file
+	text-indent: -1000em;
+}
\ No newline at end of file
diff --git a/wp-admin/css/ie.css b/wp-admin/css/ie.css
index 6730c2e5b..98b7b379b 100644
--- a/wp-admin/css/ie.css
+++ b/wp-admin/css/ie.css
@@ -396,6 +396,12 @@ div#dashboard-widgets {
 	display: inline;
 }
 
+a.post-state-format {
+	text-indent: 0;
+	line-height: 0;
+	font-size: 0;
+}
+
 table.ie-fixed {
 	table-layout: fixed;
 }
@@ -624,3 +630,13 @@ table.ie-fixed {
 * html #adminmenu div.wp-menu-image {
 	height: 29px;
 }
+
+.revisions-tickmarks,
+.revisions-tooltip {
+	display: none !important;
+}
+
+.revisions.pinned .revisions-controls {
+    position: relative;
+}
+
diff --git a/wp-admin/css/ie.min.css b/wp-admin/css/ie.min.css
index c3833e28a..d5650663e 100644
--- a/wp-admin/css/ie.min.css
+++ b/wp-admin/css/ie.min.css
@@ -1 +1 @@
-#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}.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%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#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 #adminmenu .wp-submenu{border-top-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}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#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 h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,#template,#template div,#editcat,#addcat{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}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#widget-list .widget,.feature-filter .feature-group li{display:inline}.feature-filter .feature-group li input{vertical-align:middle}#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 #parent_id,#poststuff .inside #page_template,.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{width:250px}#submitdiv input,#submitdiv select,#submitdiv a.button{position:relative}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .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}table.ie-fixed{table-layout:fixed}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat thead .check-column,.widefat tfoot .check-column{padding-top:6px}.widefat tbody th.check-column,.media.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}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{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}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* 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%}.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%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#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 #adminmenu .wp-submenu{border-top-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}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#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 h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,#template,#template div,#editcat,#addcat{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}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#widget-list .widget,.feature-filter .feature-group li{display:inline}.feature-filter .feature-group li input{vertical-align:middle}#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 #parent_id,#poststuff .inside #page_template,.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{width:250px}#submitdiv input,#submitdiv select,#submitdiv a.button{position:relative}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .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 tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat thead .check-column,.widefat tfoot .check-column{padding-top:6px}.widefat tbody th.check-column,.media.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}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{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}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* 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}.revisions-tickmarks,.revisions-tooltip{display:none!important}.revisions.pinned .revisions-controls{position:relative}
\ No newline at end of file
diff --git a/wp-admin/css/wp-admin-rtl.css b/wp-admin/css/wp-admin-rtl.css
index 12dbef623..3061592a5 100644
--- a/wp-admin/css/wp-admin-rtl.css
+++ b/wp-admin/css/wp-admin-rtl.css
@@ -23,6 +23,7 @@ TABLE OF CONTENTS:
 	11.1 - Custom Fields
 	11.2 - Post Revisions
 	11.3 - Featured Images
+	11.4 - Post formats
 12.0 - Categories
 13.0 - Tags
 14.0 - Media Screen
@@ -44,6 +45,8 @@ TABLE OF CONTENTS:
 25.0 - TinyMCE tweaks
 26.0 - Full Overlay w/ Sidebar
 27.0 - Customize Loader
+28.0 - Nav Menus
+29.0 - HiDPI
 
 
 ------------------------------------------------------------------------------*/
@@ -688,17 +691,29 @@ form.upgrade .hint {
 .fixed .column-comments {
 	text-align: right;
 }
+
 .fixed .column-comments .vers {
 	padding-left: 0;
 	padding-right: 3px;
 }
+
 .fixed .column-comments a {
 	float: right;
 }
+
+.fixed .column-menus {
+	text-align: right;
+}
+
 .sorting-indicator {
 	margin-left: 0;
 	margin-right: 7px;
 }
+
+tr.wp-locked .locked-indicator {
+	margin: -2px 6px 0 0;
+}
+
 th.sortable a span,
 th.sorted a span {
 	float: right;
@@ -816,8 +831,6 @@ th.sorted a span {
 }
 
 .inline-edit-row fieldset ul.cat-checklist label,
-.inline-edit-row .catshow,
-.inline-edit-row .cathide,
 .inline-edit-row #bulk-titles div {
 	font-family: Tahoma, Arial, sans-serif;
 }
@@ -941,6 +954,23 @@ th.sorted a span {
 	padding-left: 10px;
 }
 
+#post-lock-dialog .post-locked-message a.button {
+	margin-right: 0;
+	margin-left: 10px;
+}
+
+#post-lock-dialog .post-locked-avatar {
+	float: right;
+	margin: 0 0 20px 20px;
+}
+
+#post-lock-dialog .locked-saving img {
+	float: right;
+	margin-right: 0;
+	margin-left: 3px;
+}
+
+
 /*------------------------------------------------------------------------------
   11.1 - Custom Fields
 ------------------------------------------------------------------------------*/
@@ -950,9 +980,113 @@ th.sorted a span {
 /*------------------------------------------------------------------------------
   11.2 - Post Revisions
 ------------------------------------------------------------------------------*/
+.wp-slider .ui-slider-handle.from-handle:before,
+.wp-slider .ui-slider-handle.to-handle:before {
+	height: 8px;
+	width: 7px;
+}
+
+.wp-slider .ui-slider-handle.from-handle:before {
+	background-position: -5px -10px;
+	left: 6px;
+}
+
+.wp-slider .ui-slider-handle.to-handle:before {
+	background-position: -4px -29px;
+	left: 6px;
+}
+
+.revision-toggle-compare-mode {
+	right: auto;
+	left: 0;
+}
+
+.revisions .loading-indicator {
+	margin-right: -90px;
+}
+
+body.folded .revisions .loading-indicator {
+	margin-right: -32px;
+}
+
+.revisions-next {
+	float: left;
+}
+
+.revisions-previous {
+	float: right;
+}
+
+.diff-title strong {
+	text-align: left;
+	float: right;
+	margin-right: 0;
+	margin-left: 5px;
+}
+
+.revisions-controls .author-card .avatar,
+.revisions-controls .author-card .author-info {
+	float: right;
+}
+
+.diff-meta input.restore-revision {
+	float: left;
+}
+
+.diff-col-title-added,
+.diff-col-title-removed {
+	text-align: right;
+	float: right;
+}
 
-table.diff td, table.diff th {
-	font-family: Consolas, Monaco, monospace;
+.revisions-tooltip {
+	margin-left: 0;
+	margin-right: -69px;
+}
+
+.revisions-tooltip.flipped {
+	margin-right: 0;
+	margin-left: -70px;
+}
+
+.ie8 .revisions-tooltip {
+	margin-right: -75px;
+}
+
+.ie8 .revisions-tooltip.flipped {
+	margin-left: -63px;
+}
+
+.revisions-tooltip-arrow {
+	right: 0;
+	margin-left: 0;
+	margin-right: 35px;
+}
+
+.revisions-tooltip.flipped .revisions-tooltip-arrow {
+	margin-right: 0;
+	margin-left: 35px;
+	right: auto;
+	left: 0;
+}
+
+.revisions-tooltip-arrow > span {
+	left: auto;
+	right: 20px;
+}
+
+.revisions-tooltip.flipped .revisions-tooltip-arrow > span {
+	right: auto;
+	left: 20px;
+}
+
+.ie8 .revisions-tooltip-arrow > span {
+	right: 21px;
+}
+
+.revisions-tickmarks > div {
+	float: right;
+	border-width: 0 0 0 1px;
 }
 
 /*------------------------------------------------------------------------------
@@ -963,6 +1097,62 @@ table.diff td, table.diff th {
 	float: right;
 }
 
+/*------------------------------------------------------------------------------
+  11.4 - Post formats
+------------------------------------------------------------------------------*/
+
+a.post-state-format {
+	margin-right: 0;
+	margin-left: 5px;
+}
+
+label.post-format-icon {
+	margin-left: 0;
+	margin-right: 5px;
+	padding-left: 0px;
+	padding-right: 21px;
+}
+
+.post-format-icon.post-format-standard  {
+	background-position: 100% 0;
+}
+
+.post-format-icon.post-format-image  {
+	background-position: 100% -32px;
+}
+
+.post-format-icon.post-format-gallery {
+	background-position: 100% -64px;
+}
+
+.post-format-icon.post-format-audio {
+	background-position: 100% -96px;
+}
+
+.post-format-icon.post-format-video {
+	background-position: 100% -128px;
+}
+
+.post-format-icon.post-format-chat {
+	background-position: 100% -160px;
+}
+
+.post-format-icon.post-format-status {
+	background-position: 100% -192px;
+}
+
+.post-format-icon.post-format-aside {
+	background-position: 100% -224px;
+}
+
+.post-format-icon.post-format-quote {
+	background-position: 100% -256px;
+}
+
+.post-format-icon.post-format-link {
+	background-position: 100% -288px;
+}
+
 /*------------------------------------------------------------------------------
   12.0 - Categories
 ------------------------------------------------------------------------------*/
@@ -1448,6 +1638,18 @@ h2 .nav-tab {
 	font-family: Tahoma, Arial, sans-serif;
 }
 
+#permalink_structure {
+	float: right;
+}
+
+.options-permalink-php code {
+	unicode-bidi: embed;
+}
+
+.options-permalink-php #rules {
+	direction: ltr;
+}
+
 /*------------------------------------------------------------------------------
   21.0 - Admin Footer
 ------------------------------------------------------------------------------*/
@@ -1527,7 +1729,8 @@ h2 .nav-tab {
 	margin: 0 0 10px 0.7%;
 }
 
-.about-wrap .feature-section.images-stagger-right img {
+.about-wrap .feature-section.images-stagger-right img,
+.about-wrap .feature-section.images-stagger-right .video {
 	float: left;
 	margin: 0 2em 12px 5px;
 }
@@ -1544,16 +1747,22 @@ h2 .nav-tab {
 	margin-left: 10px;
 }
 
+@media only screen and (max-width: 900px) {
+	.about-wrap .feature-section.images-stagger-right .video.image-66 {
+		margin-right: 3px;
+	}
+}
+
 @media only screen and (max-width: 768px) {
-	.about-wrap .feature-section img.image-66 {
+	.about-wrap .feature-section .image-66 {
 		float: none;
 	}
 
-	.about-wrap .feature-section.images-stagger-right img.image-66 {
+	.about-wrap .feature-section.images-stagger-right .image-66 {
 		margin-right: 3px;
 	}
 
-	.about-wrap .feature-section.images-stagger-left img.image-66 {
+	.about-wrap .feature-section.images-stagger-left .image-66 {
 		margin-left: 3px;
 	}
 }
@@ -1717,9 +1926,10 @@ table .column-rating {
 }
 
 /* Collapse Button */
-.wp-full-overlay .collapse-sidebar {
-	right: 0;
+.wp-full-overlay a.collapse-sidebar {
 	left: auto;
+	right: 0;
+	margin-left: 0;
 	margin-right: 15px;
 }
 
@@ -1730,7 +1940,7 @@ table .column-rating {
 .wp-full-overlay .collapse-sidebar-arrow {
 	margin-right: 2px;
 	margin-left: 0;
-	background: transparent url('../images/arrows.png') no-repeat 0 -108px;
+	background: transparent url('../images/arrows.png') no-repeat 1px -108px;
 }
 
 .wp-full-overlay.collapsed .collapse-sidebar-arrow {
@@ -2083,6 +2293,27 @@ body.login {
 	float: right;
 }
 
+.menu-location-menus select {
+	float: right;
+}
+
+.locations-row-links {
+	float: right;
+	margin: 4px 6px 0 0;
+}
+
+.locations-add-menu-link {
+	direction: rtl;
+}
+
+.locations-edit-menu-link {
+	border-left: 1px solid #CCCCCC;
+	border-right: 0;
+	padding-left: 6px;
+	padding-right: 0;
+	float: right;
+}
+
 /* Menu Container */
 #menu-management-liquid {
 	float: right;
@@ -2141,9 +2372,11 @@ body.login {
 }
 
 /* Add Menu Item Boxes */
-.postbox .howto input {
+.postbox .howto input,
+.accordion-container .howto input {
 	float: left;
 }
+
 #nav-menu-theme-locations .button-controls {
 	text-align: left;
 }
@@ -2202,12 +2435,23 @@ body.login {
 .menu-item-handle .item-title {
 	margin-left:13em;
 	margin-right:0;
+	overflow: hidden;
 }
 .menu-item-handle .item-edit {
 	right: auto;
 	left: -20px;
 }
 
+.menu-item-handle .menu-item-title {
+	float: right;
+}
+
+.menu-item-settings .field-move a,
+.menu-item-settings .field-move span {
+	float: right;
+	margin-left: 4px;
+}
+
 /* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
 .menu-item-depth-0 { margin-right: 0px; margin-left:0;}
 .menu-item-depth-1 { margin-right: 30px; margin-left:0;}
@@ -2305,10 +2549,6 @@ body.login {
 	margin-right:0;
 }
 
-.auto-add-pages {
-	float: right;
-}
-
 /* Star ratings */
 div.star-holder {
 	background: url('../images/stars-rtl.png?ver=20121108') repeat-x bottom right;
@@ -2318,27 +2558,17 @@ div.star-holder .star-rating {
 	float: right;
 }
 
+#plugin-information .wrap {
+	margin: 4px 15px 0 0;
+}
+
 #plugin-information ul#sidemenu {
 	left: auto;
 	right: 0;
 }
 
-#plugin-information h2 {
-	margin-right: 0;
-	margin-left: 200px;
-}
-
 #plugin-information .fyi {
-	margin-left: 5px;
-	margin-right: 20px;
-}
-
-#plugin-information .fyi h2 {
-	margin-left: 0;
-}
-
-#plugin-information .fyi ul {
-	padding: 10px 7px 10px 5px;
+	float: right;
 }
 
 #plugin-information #section-screenshots li p {
@@ -2346,13 +2576,6 @@ div.star-holder .star-rating {
 	padding-right: 20px;
 }
 
-#plugin-information #section-screenshots ol,
-#plugin-information .updated,
-#plugin-information pre {
-	margin-right: 0;
-	margin-left: 215px;
-}
-
 #plugin-information .updated,
 #plugin-information .error {
 	clear: none;
@@ -2441,6 +2664,14 @@ h3.tb {
 	left: 25px;
 }
 
+#TB_closeAjaxWindow {
+	float: left;
+}
+
+#TB_ajaxWindowTitle {
+	float: right;
+}
+
 #post_status {
 	margin-left: 0;
 	margin-right: 10px;
@@ -2536,9 +2767,64 @@ div.sidebar-name h3 {
 	direction: ltr;
 }
 
-/**
- * HiDPI Displays
- */
+.control-section .accordion-section-title {
+	font-family: Tahoma, Arial, sans-serif;
+}
+
+.js .accordion-section-title:after {
+	right: auto;
+	left: 20px;
+}
+
+/*------------------------------------------------------------------------------
+  28.0 - Nav Menus
+------------------------------------------------------------------------------*/
+.nav-menus-php .major-publishing-actions .publishing-action {
+	float: left;
+}
+
+.menu-settings dd {
+	float: right;
+}
+
+.manage-menus span {
+	float: right;
+}
+
+.manage-menus select {
+	float: right;
+	margin-right: 0;
+	margin-left: 6px;
+}
+
+.manage-menus .submit-btn {
+	float: right;
+}
+
+.manage-menus .selected-menu {
+	float: right;
+	margin: 5px 0 0 6px;
+}
+
+.nav-menus-php .add-new-menu-action {
+	float: right;
+	margin: 4px 6px 0 0;
+}
+
+.nav-menus-php .meta-sep,
+.nav-menus-php .submitdelete,
+.nav-menus-php .submitcancel {
+	float: right;
+}
+
+.is-submenu {
+	float: right;
+	margin-right: 8px;
+}
+
+/*------------------------------------------------------------------------------
+  29.0 - HiDPI
+------------------------------------------------------------------------------*/
 @media print,
   (-o-min-device-pixel-ratio: 5/4),
   (-webkit-min-device-pixel-ratio: 1.25),
@@ -2572,6 +2858,12 @@ div.sidebar-name h3 {
 	#content-resize-handle {
 		background: transparent url('../images/resize-rtl-2x.gif') no-repeat scroll left bottom;
 	}
+
+	.wp-slider .ui-slider-handle:before {
+		background-image: url(../images/arrows-pr-2x.png);
+		background-size: 16px 102px;
+	}
+
 }
 
 /* =Localized CSS
@@ -2590,8 +2882,6 @@ body.locale-he-il,
 .locale-he-il .inline-edit-row fieldset span.title,
 .locale-he-il .inline-edit-row fieldset span.checkbox-title,
 .locale-he-il .inline-edit-row fieldset ul.cat-checklist label,
-.locale-he-il .inline-edit-row .catshow,
-.locale-he-il .inline-edit-row .cathide,
 .locale-he-il .inline-edit-row #bulk-titles div,
 .locale-he-il p.help,
 .locale-he-il p.description,
diff --git a/wp-admin/css/wp-admin-rtl.min.css b/wp-admin/css/wp-admin-rtl.min.css
index 8bcf2eeeb..b8b6fe8b0 100644
--- a/wp-admin/css/wp-admin-rtl.min.css
+++ b/wp-admin/css/wp-admin-rtl.min.css
@@ -1 +1 @@
-ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:right;margin-right:0;margin-left:4px}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left;text-align:left}#publishing-action .spinner{float:right}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #wpfooter{margin-left:15px;margin-right:52px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}#adminmenu div.wp-menu-image,.folded #adminmenu div.wp-menu-image{float:right;width:30px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(-26px);-webkit-transform:translate(-26px);-o-transform:translate(-26px);-ms-transform:translate(-26px);transform:translate(-26px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{padding:7px 7px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 10px 5px 4px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){.auto-fold #wpcontent{margin-left:0;margin-right:52px}.auto-fold.wp-admin #wpfooter{margin-left:15px;margin-right:52px}.auto-fold #adminmenu div.wp-menu-image{float:right;width:30px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.auto-fold #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}.auto-fold #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}.auto-fold #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.post-com-count{background-image:url('../images/bubble_bg-rtl.gif')}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.postbox-container{float:right}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel-content{margin-left:0;margin-right:13px}.welcome-panel .welcome-panel-column{float:right}.welcome-panel .welcome-panel-column ul{margin-right:0;margin-left:1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.welcome-panel .welcome-add-page{background-position:right 2px}.welcome-panel .welcome-edit-page{background-position:right -90px}.welcome-panel .welcome-learn-more{background-position:right -136px}.welcome-panel .welcome-comments{background-position:right -182px}.welcome-panel .welcome-view-site{background-position:right -274px}.welcome-panel .welcome-widgets-menus{background-position:right -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:right -44px}.welcome-panel .welcome-icon{padding:2px 32px 8px 0}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{margin-right:0;margin-left:13px}.welcome-panel .welcome-icon{padding-right:25px;padding-left:0}}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.sorting-indicator{margin-left:0;margin-right:7px}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .actions select{float:right;margin-right:0;margin-left:6px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#save-action .spinner,#show-comments a,#show-comments .spinner{float:right}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}#wp-fullscreen-save .spinner,#wp-fullscreen-save .fs-saved{float:left}#edit-slug-box .cancel{margin-right:0;margin-left:10px}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv .spinner{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}.compat-attachment-fields th{padding-right:0;padding-left:10px}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace}#select-featured-image a{float:right}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .edit-attachment,.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-input{float:right}#find-posts-search{float:right;margin-right:3px;margin-left:4px}.find-box-search .spinner{left:auto;right:115px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.wp_attachment_image .button,.A1B1 .button{float:right}.wp_attachment_image .spinner,.A1B1 .spinner{float:right}.imgedit-menu div{float:right}.imgedit-crop{margin:0}.imgedit-rleft,.imgedit-flipv,.imgedit-undo{margin:0 8px 0 3px}.imgedit-rright,.imgedit-fliph,.imgedit-redo{margin:0 3px}.imgedit-applyto img{margin:0 0 0 8px}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit .spinner,.inline-edit-save .spinner{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}.ie8 .available-theme .action-links li{padding-left:7px;margin-left:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#wpfooter{margin-left:20px}#wpcontent,#wpfooter{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 2em}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}@media only screen and (max-width:768px){.about-wrap .feature-section img.image-66{float:none}.about-wrap .feature-section.images-stagger-right img.image-66{margin-right:3px}.about-wrap .feature-section.images-stagger-left img.image-66{margin-left:3px}}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{left:auto;right:-1000em}.screen-reader-shortcut:focus{left:auto;right:6px}* html #template div{margin-left:0}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}#content-resize-handle{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;right:auto;left:2px;cursor:sw-resize}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay .collapse-sidebar{right:0;left:auto;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../images/arrows.png') no-repeat 0 -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:10px}.js #dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1px 0 .7em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.button.right,.button-secondary.right,.button-primary.right{float:left}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}.auto-add-pages{float:right}div.star-holder{background:url('../images/stars-rtl.png?ver=20121108') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20121108') repeat-x top right;float:right}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information h2{margin-right:0;margin-left:200px}#plugin-information .fyi{margin-left:5px;margin-right:20px}#plugin-information .fyi h2{margin-left:0}#plugin-information .fyi ul{padding:10px 7px 10px 5px}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-group li{padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.post-com-count{background-image:url('../images/bubble_bg-rtl-2x.gif');background-size:18px 100px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}div.star-holder{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x bottom right;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x top right;background-size:21px 37px}#post-body .wp_themeSkin .mceStatusbar a.mceResize,#content-resize-handle{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll left bottom}}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row .catshow,.locale-he-il .inline-edit-row .cathide,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold}
\ No newline at end of file
+ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:right;margin-right:0;margin-left:4px}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left;text-align:left}#publishing-action .spinner{float:right}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #wpfooter{margin-left:15px;margin-right:52px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}#adminmenu div.wp-menu-image,.folded #adminmenu div.wp-menu-image{float:right;width:30px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(-26px);-webkit-transform:translate(-26px);-o-transform:translate(-26px);-ms-transform:translate(-26px);transform:translate(-26px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{padding:7px 7px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 10px 5px 4px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){.auto-fold #wpcontent{margin-left:0;margin-right:52px}.auto-fold.wp-admin #wpfooter{margin-left:15px;margin-right:52px}.auto-fold #adminmenu div.wp-menu-image{float:right;width:30px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.auto-fold #adminmenu .wp-has-submenu:hover .wp-submenu{left:auto;right:32px}.auto-fold #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}.auto-fold #adminmenu li.wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.post-com-count{background-image:url('../images/bubble_bg-rtl.gif')}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.postbox-container{float:right}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel-content{margin-left:0;margin-right:13px}.welcome-panel .welcome-panel-column{float:right}.welcome-panel .welcome-panel-column ul{margin-right:0;margin-left:1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.welcome-panel .welcome-add-page{background-position:right 2px}.welcome-panel .welcome-edit-page{background-position:right -90px}.welcome-panel .welcome-learn-more{background-position:right -136px}.welcome-panel .welcome-comments{background-position:right -182px}.welcome-panel .welcome-view-site{background-position:right -274px}.welcome-panel .welcome-widgets-menus{background-position:right -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:right -44px}.welcome-panel .welcome-icon{padding:2px 32px 8px 0}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{margin-right:0;margin-left:13px}.welcome-panel .welcome-icon{padding-right:25px;padding-left:0}}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.fixed .column-menus{text-align:right}.sorting-indicator{margin-left:0;margin-right:7px}tr.wp-locked .locked-indicator{margin:-2px 6px 0 0}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .actions select{float:right;margin-right:0;margin-left:6px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#save-action .spinner,#show-comments a,#show-comments .spinner{float:right}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}#wp-fullscreen-save .spinner,#wp-fullscreen-save .fs-saved{float:left}#edit-slug-box .cancel{margin-right:0;margin-left:10px}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv .spinner{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}.compat-attachment-fields th{padding-right:0;padding-left:10px}#post-lock-dialog .post-locked-message a.button{margin-right:0;margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .locked-saving img{float:right;margin-right:0;margin-left:3px}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{height:8px;width:7px}.wp-slider .ui-slider-handle.from-handle:before{background-position:-5px -10px;left:6px}.wp-slider .ui-slider-handle.to-handle:before{background-position:-4px -29px;left:6px}.revision-toggle-compare-mode{right:auto;left:0}.revisions .loading-indicator{margin-right:-90px}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions-next{float:left}.revisions-previous{float:right}.diff-title strong{text-align:left;float:right;margin-right:0;margin-left:5px}.revisions-controls .author-card .avatar,.revisions-controls .author-card .author-info{float:right}.diff-meta input.restore-revision{float:left}.diff-col-title-added,.diff-col-title-removed{text-align:right;float:right}.revisions-tooltip{margin-left:0;margin-right:-69px}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.ie8 .revisions-tooltip{margin-right:-75px}.ie8 .revisions-tooltip.flipped{margin-left:-63px}.revisions-tooltip-arrow{right:0;margin-left:0;margin-right:35px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{left:auto;right:20px}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.ie8 .revisions-tooltip-arrow>span{right:21px}.revisions-tickmarks>div{float:right;border-width:0 0 0 1px}#select-featured-image a{float:right}a.post-state-format{margin-right:0;margin-left:5px}label.post-format-icon{margin-left:0;margin-right:5px;padding-left:0;padding-right:21px}.post-format-icon.post-format-standard{background-position:100% 0}.post-format-icon.post-format-image{background-position:100% -32px}.post-format-icon.post-format-gallery{background-position:100% -64px}.post-format-icon.post-format-audio{background-position:100% -96px}.post-format-icon.post-format-video{background-position:100% -128px}.post-format-icon.post-format-chat{background-position:100% -160px}.post-format-icon.post-format-status{background-position:100% -192px}.post-format-icon.post-format-aside{background-position:100% -224px}.post-format-icon.post-format-quote{background-position:100% -256px}.post-format-icon.post-format-link{background-position:100% -288px}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .edit-attachment,.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-input{float:right}#find-posts-search{float:right;margin-right:3px;margin-left:4px}.find-box-search .spinner{left:auto;right:115px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.wp_attachment_image .button,.A1B1 .button{float:right}.wp_attachment_image .spinner,.A1B1 .spinner{float:right}.imgedit-menu div{float:right}.imgedit-crop{margin:0}.imgedit-rleft,.imgedit-flipv,.imgedit-undo{margin:0 8px 0 3px}.imgedit-rright,.imgedit-fliph,.imgedit-redo{margin:0 3px}.imgedit-applyto img{margin:0 0 0 8px}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit .spinner,.inline-edit-save .spinner{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}.ie8 .available-theme .action-links li{padding-left:7px;margin-left:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#permalink_structure{float:right}.options-permalink-php code{unicode-bidi:embed}.options-permalink-php #rules{direction:ltr}#wpfooter{margin-left:20px}#wpcontent,#wpfooter{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img,.about-wrap .feature-section.images-stagger-right .video{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 2em}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-right .video.image-66{margin-right:3px}}@media only screen and (max-width:768px){.about-wrap .feature-section .image-66{float:none}.about-wrap .feature-section.images-stagger-right .image-66{margin-right:3px}.about-wrap .feature-section.images-stagger-left .image-66{margin-left:3px}}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{left:auto;right:-1000em}.screen-reader-shortcut:focus{left:auto;right:6px}* html #template div{margin-left:0}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}#content-resize-handle{background:transparent url('../images/resize-rtl.gif') no-repeat scroll left bottom;right:auto;left:2px;cursor:sw-resize}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay a.collapse-sidebar{left:auto;right:0;margin-left:0;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../images/arrows.png') no-repeat 1px -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:10px}.js #dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1px 0 .7em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}.menu-location-menus select{float:right}.locations-row-links{float:right;margin:4px 6px 0 0}.locations-add-menu-link{direction:rtl}.locations-edit-menu-link{border-left:1px solid #ccc;border-right:0;padding-left:6px;padding-right:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input,.accordion-container .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.button.right,.button-secondary.right,.button-primary.right{float:left}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0;overflow:hidden}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-handle .menu-item-title{float:right}.menu-item-settings .field-move a,.menu-item-settings .field-move span{float:right;margin-left:4px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}div.star-holder{background:url('../images/stars-rtl.png?ver=20121108') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20121108') repeat-x top right;float:right}#plugin-information .wrap{margin:4px 15px 0 0}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information .fyi{float:right}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#TB_closeAjaxWindow{float:left}#TB_ajaxWindowTitle{float:right}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-group li{padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}.control-section .accordion-section-title{font-family:Tahoma,Arial,sans-serif}.js .accordion-section-title:after{right:auto;left:20px}.nav-menus-php .major-publishing-actions .publishing-action{float:left}.menu-settings dd{float:right}.manage-menus span{float:right}.manage-menus select{float:right;margin-right:0;margin-left:6px}.manage-menus .submit-btn{float:right}.manage-menus .selected-menu{float:right;margin:5px 0 0 6px}.nav-menus-php .add-new-menu-action{float:right;margin:4px 6px 0 0}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{float:right}.is-submenu{float:right;margin-right:8px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.post-com-count{background-image:url('../images/bubble_bg-rtl-2x.gif');background-size:18px 100px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}div.star-holder{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x bottom right;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-rtl-2x.png?ver=20121108') repeat-x top right;background-size:21px 37px}#post-body .wp_themeSkin .mceStatusbar a.mceResize,#content-resize-handle{background:transparent url('../images/resize-rtl-2x.gif') no-repeat scroll left bottom}.wp-slider .ui-slider-handle:before{background-image:url(../images/arrows-pr-2x.png);background-size:16px 102px}}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold}
\ No newline at end of file
diff --git a/wp-admin/css/wp-admin.css b/wp-admin/css/wp-admin.css
index f1ca26904..b756ef1d2 100644
--- a/wp-admin/css/wp-admin.css
+++ b/wp-admin/css/wp-admin.css
@@ -24,6 +24,7 @@ TABLE OF CONTENTS:
 	11.1 - Custom Fields
 	11.2 - Post Revisions
 	11.3 - Featured Images
+	11.4 - Post Format Selection
 12.0 - Categories
 13.0 - Tags
 14.0 - Media Screen
@@ -280,6 +281,7 @@ body {
 
 body.iframe {
 	min-width: 0;
+	padding-top: 1px;
 }
 
 body.login {
@@ -750,7 +752,8 @@ input[readonly] {
 	background-color: #eee;
 }
 
-:-moz-placeholder {
+:-moz-placeholder,
+.wp-core-ui :-moz-placeholder {
    color: #a9a9a9;
 }
 
@@ -1143,6 +1146,11 @@ form.upgrade .hint {
 	margin: -0.5em 0 2em 0;
 }
 
+.update-php .spinner {
+	float: none;
+	margin: -4px 0;
+}
+
 #ajax-loading,
 .ajax-loading,
 .ajax-feedback,
@@ -1359,7 +1367,7 @@ form.upgrade .hint {
 	display: block;
 }
 
-.help-tab-content li {
+.help-tab-content ul li {
 	list-style-type: disc;
 	margin-left: 18px;
 }
@@ -1450,7 +1458,7 @@ form.upgrade .hint {
 #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
 #adminmenu .wp-has-current-submenu.opensub .wp-submenu {
 	position: relative;
-	z-index: 2;
+	z-index: 3;
 	top: auto;
 	left: auto;
 	right: auto;
@@ -2417,14 +2425,16 @@ table.fixed {
 	width: 8%;
 }
 
+.fixed .column-posts,
 .fixed .column-date,
 .fixed .column-parent,
-.fixed .column-links {
+.fixed .column-links,
+.fixed .column-author,
+.fixed .column-format {
 	width: 10%;
 }
 
 .fixed .column-response,
-.fixed .column-author,
 .fixed .column-categories,
 .fixed .column-tags,
 .fixed .column-rel,
@@ -2432,6 +2442,14 @@ table.fixed {
 	width: 15%;
 }
 
+.fixed .column-slug {
+	width: 25%;
+}
+
+.fixed .column-locations {
+	width: 35%;
+}
+
 .fixed .column-comments {
 	width: 4em;
 	padding: 8px 0;
@@ -2446,14 +2464,6 @@ table.fixed {
 	float: left;
 }
 
-.fixed .column-slug {
-	width: 25%;
-}
-
-.fixed .column-posts {
-	width: 10%;
-}
-
 .fixed .column-icon {
 	width: 80px;
 }
@@ -2522,10 +2532,46 @@ table.fixed {
 	background-repeat: no-repeat;
 }
 
+tr.wp-locked .locked-indicator {
+	background: url('../images/lock.png') no-repeat;
+	margin: -2px 0 0 6px;
+	height: 20px;
+	width: 16px;
+}
+
+tr.wp-locked .check-column label,
+tr.wp-locked .check-column input[type="checkbox"],
+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 {
+	height: auto;
+	opacity: 1;
+}
+
+tr.locked-info, tr.wp-locked .locked-info {
+	-webkit-transition: height 1s, opacity 500ms;
+	-moz-transition:    height 1s, opacity 500ms;
+	-ms-transition:     height 1s, opacity 500ms;
+	-o-transition:      height 1s, opacity 500ms;
+	transition:         height 1s, opacity 500ms;
+}
+
 .fixed .column-comments .sorting-indicator {
 	margin-top: 3px;
 }
 
+#menu-locations-wrap .widefat {
+	width: 60%;
+}
+
 .widefat th.sortable,
 .widefat th.sorted {
 	padding: 0;
@@ -2664,10 +2710,6 @@ th.asc:hover span.sorting-indicator {
 	padding: 0 0 .2em 1px;
 }
 
-span.post-state-format {
-	font-weight: normal;
-}
-
 
 /*------------------------------------------------------------------------------
   10.1 - Inline Editing
@@ -2786,6 +2828,7 @@ tr.inline-edit-row td,
 
 .inline-edit-row fieldset label.inline-edit-tags span.title {
 	margin: .2em 0;
+	width: auto;
 }
 
 .inline-edit-row fieldset label span.title {
@@ -2873,11 +2916,6 @@ tr.inline-edit-row td,
 	width: 8em;
 }
 
-.inline-edit-row .catshow,
-.inline-edit-row .cathide {
-	cursor: pointer;
-}
-
 ul.cat-checklist {
 	height: 12em;
 	border-style: solid;
@@ -2903,21 +2941,12 @@ ul.cat-checklist {
 }
 
 .inline-edit-row fieldset ul.cat-checklist label,
-.inline-edit-row .catshow,
-.inline-edit-row .cathide,
 .inline-edit-row #bulk-titles div {
 	font-family: sans-serif;
 	font-style: normal;
 	font-size: 11px;
 }
 
-table .inline-edit-row fieldset ul.cat-hover {
-	height: auto;
-	max-height: 30em;
-	overflow-y: auto;
-	position: absolute;
-}
-
 .inline-edit-row fieldset label input.inline-edit-menu-order-input {
 	width: 3em;
 }
@@ -2964,9 +2993,20 @@ table .inline-edit-row fieldset ul.cat-hover {
 	float: left;
 }
 
+#lost-connection-notice .spinner {
+	display: block;
+	float: left;
+	margin: 0 5px 0 0;
+}
+
+.rtl #lost-connection-notice .spinner {
+	float: right;
+	margin: 0 0 0 5px;
+}
+
 #titlediv {
 	position: relative;
-	margin-bottom: 10px;
+	margin-bottom: 5px;
 }
 
 #titlediv label {
@@ -2986,8 +3026,10 @@ table .inline-edit-row fieldset ul.cat-hover {
 	padding: 3px 8px;
 	font-size: 1.7em;
 	line-height: 100%;
+	height: 1.7em;
 	width: 100%;
 	outline: none;
+	margin: 1px 0;
 }
 
 #titlediv #title-prompt-text,
@@ -2995,7 +3037,7 @@ table .inline-edit-row fieldset ul.cat-hover {
 	color: #bbb;
 	position: absolute;
 	font-size: 1.7em;
-	padding: 8px 10px;
+	padding: 11px 10px;
 }
 
 #wp-fullscreen-save .fs-saved {
@@ -3028,10 +3070,10 @@ input#link_url {
 }
 
 #edit-slug-box {
-	line-height: 23px;
-	min-height: 23px;
+	line-height: 24px;
+	min-height: 25px; /* Yes, line-height + 1 */
 	margin-top: 5px;
-	padding: 0 10px;
+	padding-right: 6px;
 }
 
 #edit-slug-box .cancel {
@@ -3078,7 +3120,7 @@ input#link_url {
 	margin: 2px 0 2px -2px;
 }
 
-#post-status-select, #post-format {
+#post-status-select {
 	line-height: 2.5em;
 	margin-top: 3px;
 }
@@ -3332,6 +3374,56 @@ td.plugin-title p {
 	border-style: solid;
 }
 
+.notification-dialog {
+	position: fixed;
+	top: 30%;
+	left: 50%;
+	width: 450px;
+	margin-left: -225px;
+	background: #fff;
+	line-height: 1.5;
+	z-index: 1000005;
+}
+
+.notification-dialog-background {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background: #000;
+	opacity: 0.5;
+	filter: alpha(opacity=50);
+	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.saving .locked-saving,
+#post-lock-dialog.saved .locked-saved {
+	display: inline;
+}
 
 /*------------------------------------------------------------------------------
   11.1 - Custom Fields
@@ -3419,167 +3511,624 @@ td.plugin-title p {
 /*------------------------------------------------------------------------------
   11.2 - Post Revisions
 ------------------------------------------------------------------------------*/
-
-table.diff {
-	width: 100%;
+.revisions-control-frame,
+.revisions-diff-frame {
+	position: relative;
 }
 
-table.diff col.content {
-	width: 50%;
+.revisions-controls {
+	padding-top: 40px;
+	height: 100px;
+	z-index: 1;
 }
 
-table.diff tr {
-	background-color: transparent;
+.revisions-controls input[type="checkbox"] {
+	position: relative;
+	top: -1px;
+	vertical-align: text-bottom;
 }
 
-table.diff td, table.diff th {
-	padding: .5em;
-	font-family: Consolas, Monaco, monospace;
-	border: none;
+.revisions.pinned .revisions-controls {
+	position: fixed;
+	top: 0;
+	padding-bottom: 10px;
 }
 
-table.diff .diff-deletedline del, table.diff .diff-addedline ins {
-	text-decoration: none;
+.revisions-tickmarks {
+	position: relative;
+	margin: 0 auto;
+	height: 0.8em;
+	top: 7px;
+	max-width: 70%;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
 }
 
-/*------------------------------------------------------------------------------
-  11.3 - Featured Images
-------------------------------------------------------------------------------*/
-
-#select-featured-image {
-	padding: 4px 0;
-	overflow: hidden;
+.revisions-tickmarks > div {
+	position: absolute;
+	height: 100%;
+	border-style: solid;
+	border-width: 0 1px 0 0;
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
 }
 
-#select-featured-image img {
-	max-width: 100%;
-	height: auto;
-	margin-bottom: 10px;
+.revisions-tickmarks > div:first-child {
+	border-width: 0;
 }
 
-#select-featured-image a {
-	float: left;
-	clear: both;
+.comparing-two-revisions .revisions-controls {
+	height: 140px;
 }
 
-#select-featured-image .remove {
+.revisions .diff-error {
+	position: absolute;
+	text-align: center;
+	margin: 0 auto;
+	width: 100%;
 	display: none;
-	margin-top: 10px;
 }
 
-.js #select-featured-image.has-featured-image .remove {
-	display: inline-block;
+.revisions.diff-error .diff-error {
+	display: block;
 }
 
-.no-js #select-featured-image .choose {
-	display: none;
+.revisions .loading-indicator {
+	position: fixed;
+	vertical-align: middle;
+	opacity: 0;
+	width: 100%;
+	top: 50%;
+	margin-left: -90px;
+	-webkit-transition: opacity 0.5s;
+	-moz-transition:    opacity 0.5s;
+	-ms-transition:     opacity 0.5s;
+	-o-transition:      opacity 0.5s;
+	transition:         opacity 0.5s;
+	filter: alpha(opacity=0); /* ie8 and earlier */
 }
 
-/*------------------------------------------------------------------------------
-  12.0 - Categories
-------------------------------------------------------------------------------*/
-
-.category-adder {
-	margin-left: 120px;
-	padding: 4px 0;
+body.folded .revisions .loading-indicator {
+	margin-left: -32px;
 }
 
-.category-adder h4 {
-	margin: 0 0 8px;
+.revisions .loading-indicator span.spinner {
+	display: block;
+	margin: 0 auto;
+	float: none;
 }
 
-#side-sortables .category-adder {
-	margin: 0;
+.revisions.loading .loading-indicator {
+	opacity: 1;
+	filter: alpha(opacity=100); /* ie8 and earlier */
 }
 
-#post-body ul.add-menu-item-tabs {
-	float: left;
-	width: 120px;
-	text-align: right;
-	/* Negative margin for the sake of those without JS: all tabs display */
-	margin: 0 -120px 0 5px;
-	padding: 0;
+.revisions .diff {
+	-webkit-transition: opacity 0.5s;
+	-moz-transition:    opacity 0.5s;
+	-ms-transition:     opacity 0.5s;
+	-o-transition:      opacity 0.5s;
+	transition:         opacity 0.5s;
 }
 
-#post-body ul.add-menu-item-tabs li {
-	padding: 8px;
+.revisions.loading .diff {
+	opacity: 0.5;
+	filter: alpha(opacity=50); /* ie8 and earlier */
 }
 
-#post-body ul.add-menu-item-tabs li.tabs {
-	-webkit-border-top-left-radius: 3px;
-	-webkit-border-bottom-left-radius: 3px;
-	border-top-left-radius: 3px;
-	border-bottom-left-radius: 3px;
+.revisions.diff-error .diff {
+	visibility: hidden;
 }
 
-.wp-tab-panel,
-.categorydiv div.tabs-panel,
-.customlinkdiv div.tabs-panel,
-.posttypediv div.tabs-panel,
-.taxonomydiv div.tabs-panel {
-	min-height: 42px;
-	max-height: 200px;
-	overflow: auto;
-	padding: 0 0.9em;
-	border-style: solid;
-	border-width: 1px;
+.revisions-meta {
+	margin-top: 15px;
 }
 
-div.tabs-panel-active {
-	display:block;
+.revision-toggle-compare-mode {
+	position: absolute;
+	top: 0;
+	right: 0;
 }
 
-div.tabs-panel-inactive {
-	display:none;
+.comparing-two-revisions .revisions-previous,
+.comparing-two-revisions .revisions-next,
+.revisions-meta .diff-meta-to strong {
+	display: none;
 }
 
-#front-page-warning,
-#front-static-pages ul,
-ul.export-filters,
-.inline-editor ul.cat-checklist ul,
-.categorydiv ul.categorychecklist ul,
-.customlinkdiv ul.categorychecklist ul,
-.posttypediv ul.categorychecklist ul,
-.taxonomydiv ul.categorychecklist ul {
-	margin-left: 18px;
+.revisions-controls .author-card .date {
+	color: #777;
 }
 
-ul.categorychecklist li {
-	margin: 0;
-	padding: 0;
-	line-height: 19px;
-	word-wrap: break-word;
+.revisions-controls .author-card.autosave {
+	color: #d54e21;
 }
 
-.categorydiv .tabs-panel,
-.customlinkdiv .tabs-panel,
-.posttypediv .tabs-panel,
-.taxonomydiv .tabs-panel {
-	border-width: 3px;
-	border-style: solid;
+.revisions-controls .author-card .author-name {
+	font-weight: bold;
 }
 
-.form-wrap p,
-.form-wrap label {
-	font-size: 11px;
+.comparing-two-revisions .diff-meta-to strong {
+	display: block;
 }
 
-.form-wrap label {
-	display: block;
-	padding: 2px;
-	font-size: 12px;
+.revisions-previous,
+.revisions-next {
+	position: relative;
+	z-index: 1;
 }
 
-.form-field input,
-.form-field textarea {
-	border-style: solid;
-	border-width: 1px;
-	width: 95%;
+.revisions-previous {
+	float: left;
 }
 
-p.description,
-.form-wrap p {
-	margin: 2px 0 5px;
+.revisions-next {
+	float: right;
+}
+
+.revisions-controls .wp-slider {
+	max-width: 70%;
+	margin: 0 auto;
+	top: -3px;
+}
+
+/* Revision meta box */
+.post-revisions li img,
+#revisions-meta-restored img {
+	vertical-align: middle;
+}
+
+table.diff {
+	table-layout: fixed;
+	width: 100%;
+	white-space: pre-wrap;
+	word-wrap: break-word;
+}
+
+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 {
+	padding: .5em;
+	font-family: Consolas, Monaco, monospace;
+}
+
+table.diff .diff-deletedline del,
+table.diff .diff-addedline ins {
+	text-decoration: none;
+}
+
+.diff-meta {
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	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 .avatar,
+.revisions-controls .author-card .author-info {
+	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;
+	display: none;
+	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);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	-o-transform: rotate(45deg);
+	tranform: 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-width: 1px;
+	border-style: solid;
+}
+
+div.revisions-controls > .wp-slider > .ui-slider-handle {
+	margin-left: -10px;
+}
+
+ /* jQuery UI Slider */
+.wp-slider.ui-slider {
+	position: relative;
+	border-width: 1px;
+	border-style: solid;
+	border-radius: 3px;
+	text-align: left;
+	cursor: pointer;
+}
+
+.wp-slider .ui-slider-handle {
+	position: absolute;
+	z-index: 2;
+	margin-top: -3px;
+	width: 19px;
+	height: 19px;
+	border-width: 1px;
+	border-style: solid;
+	border-radius: 50%;
+}
+
+.wp-slider .ui-slider-handle:before {
+	content: "";
+	position: absolute;
+	top: 6px;
+	left: 3px;
+	height: 8px;
+	width: 13px;
+	background: url(../images/arrows-pr.png) no-repeat -2px -47px;
+}
+
+.wp-slider .ui-slider-handle.from-handle:before,
+.wp-slider .ui-slider-handle.to-handle:before {
+	height: 8px;
+	width: 7px;
+}
+
+.wp-slider .ui-slider-handle.from-handle:before {
+	background-position: -5px -84px;
+	left: 7px;
+}
+
+.wp-slider .ui-slider-handle.to-handle:before {
+	background-position: -4px -65px;
+	left: 5px;
+}
+
+.wp-slider .ui-slider-range {
+	position: absolute;
+	font-size: .7em;
+	display: block;
+	border: 0;
+	background-color: transparent;
+	background-image: none;
+}
+
+.wp-slider.ui-slider-horizontal {
+	height: .8em;
+}
+
+.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;
+}
+
+
+/*------------------------------------------------------------------------------
+  11.3 - Featured Images
+------------------------------------------------------------------------------*/
+
+#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;
+}
+
+/*------------------------------------------------------------------------------
+  11.4 - Post formats
+------------------------------------------------------------------------------*/
+
+a.post-state-format {
+	overflow: hidden;
+	display: inline-block;
+	vertical-align: middle;
+	height: 16px;
+	width: 16px;
+	margin-right: 5px;
+	background-repeat: no-repeat;
+	text-indent: -999em;
+}
+
+#post-formats-select {
+	line-height: 2em;
+}
+
+label.post-format-icon {
+	margin-left: 5px;
+	padding: 2px 0 2px 21px;
+}
+
+.post-format-icon.post-format-standard  {
+	background-position: 0 0;
+}
+
+.post-format-icon.post-format-image  {
+	background-position: 0 -32px;
+}
+
+.post-format-icon.post-format-gallery {
+	background-position: 0 -64px;
+}
+
+.post-format-icon.post-format-audio {
+	background-position: 0 -96px;
+}
+
+.post-format-icon.post-format-video {
+	background-position: 0 -128px;
+}
+
+.post-format-icon.post-format-chat {
+	background-position: 0 -160px;
+}
+
+.post-format-icon.post-format-status {
+	background-position: 0 -192px;
+}
+
+.post-format-icon.post-format-aside {
+	background-position: 0 -224px;
+}
+
+.post-format-icon.post-format-quote {
+	background-position: 0 -256px;
+}
+
+.post-format-icon.post-format-link {
+	background-position: 0 -288px;
+}
+
+
+/*------------------------------------------------------------------------------
+  12.0 - Categories
+------------------------------------------------------------------------------*/
+
+.category-adder {
+	margin-left: 120px;
+	padding: 4px 0;
+}
+
+.category-adder h4 {
+	margin: 0 0 8px;
+}
+
+#side-sortables .category-adder {
+	margin: 0;
+}
+
+#post-body ul.add-menu-item-tabs {
+	float: left;
+	width: 120px;
+	text-align: right;
+	/* Negative margin for the sake of those without JS: all tabs display */
+	margin: 0 -120px 0 5px;
+	padding: 0;
+}
+
+#post-body ul.add-menu-item-tabs li {
+	padding: 8px;
+}
+
+#post-body ul.add-menu-item-tabs li.tabs {
+	-webkit-border-top-left-radius: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-top-left-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
+.wp-tab-panel,
+.categorydiv div.tabs-panel,
+.customlinkdiv div.tabs-panel,
+.posttypediv div.tabs-panel,
+.taxonomydiv div.tabs-panel {
+	min-height: 42px;
+	max-height: 200px;
+	overflow: auto;
+	padding: 0 0.9em;
+	border-style: solid;
+	border-width: 1px;
+}
+
+div.tabs-panel-active {
+	display:block;
+}
+
+div.tabs-panel-inactive {
+	display:none;
+}
+
+#front-page-warning,
+#front-static-pages ul,
+ul.export-filters,
+.inline-editor ul.cat-checklist ul,
+.categorydiv ul.categorychecklist ul,
+.customlinkdiv ul.categorychecklist ul,
+.posttypediv ul.categorychecklist ul,
+.taxonomydiv ul.categorychecklist ul {
+	margin-left: 18px;
+}
+
+ul.categorychecklist li {
+	margin: 0;
+	padding: 0;
+	line-height: 19px;
+	word-wrap: break-word;
+}
+
+.categorydiv .tabs-panel,
+.customlinkdiv .tabs-panel,
+.posttypediv .tabs-panel,
+.taxonomydiv .tabs-panel {
+	border-width: 3px;
+	border-style: solid;
+}
+
+.form-wrap p,
+.form-wrap label {
+	font-size: 11px;
+}
+
+.form-wrap label {
+	display: block;
+	padding: 2px;
+	font-size: 12px;
+}
+
+.form-field input,
+.form-field textarea {
+	border-style: solid;
+	border-width: 1px;
+	width: 95%;
+}
+
+p.description,
+.form-wrap p {
+	margin: 2px 0 5px;
 }
 
 p.help,
@@ -3596,6 +4145,10 @@ span.description,
 	padding: 8px 0;
 }
 
+.form-wrap .form-field #parent {
+	max-width: 100%;
+}
+
 .col-wrap h3 {
 	margin: 12px 0;
 	font-size: 1.1em;
@@ -4381,10 +4934,6 @@ span.imgedit-scale-warn {
 	padding: 2px 10px;
 }
 
-.wp_attachment_details {
-	margin-bottom: 20px;
-}
-
 /*------------------------------------------------------------------------------
   15.0 - Comments Screen
 ------------------------------------------------------------------------------*/
@@ -4596,7 +5145,7 @@ span.imgedit-scale-warn {
 }
 
 h3.available-themes {
-	margin: 0 0 1em;
+	margin: 0.3em 0 1em;
 	float: left;
 }
 
@@ -5276,13 +5825,18 @@ h2 .nav-tab {
 
 /* Changelog / Update screen */
 
-.about-wrap .feature-section img {
+.about-wrap .feature-section img,
+.about-wrap .feature-section .video {
 	border: none;
 	margin: 0 1.94% 10px 0;
 	-webkit-border-radius: 3px;
 	border-radius: 3px;
 }
 
+.about-wrap .feature-section .video video {
+	max-width: 100%;
+}
+
 .about-wrap .feature-section.three-col img {
 	margin: 0.5em 0 0.5em 5px;
 	max-width: 100%;
@@ -5293,7 +5847,8 @@ h2 .nav-tab {
 	margin-left: 0;
 }
 
-.about-wrap .feature-section.images-stagger-right img {
+.about-wrap .feature-section.images-stagger-right img,
+.about-wrap .feature-section.images-stagger-right .video {
 	float: right;
 	margin: 0 5px 12px 2em;
 }
@@ -5303,16 +5858,20 @@ h2 .nav-tab {
 	margin: 0 2em 12px 5px;
 }
 
-.about-wrap .feature-section img.image-100 {
+.about-wrap .feature-section .image-100 {
 	margin: 0 0 2em 0;
 	width: 100%;
 }
 
-.about-wrap .feature-section img.image-66 {
+.about-wrap .feature-section .image-66 {
 	width: 65%;
 }
 
-.about-wrap .feature-section img.image-50 {
+.about-wrap .feature-section .image-66.video {
+	max-width: 600px;
+}
+
+.about-wrap .feature-section .image-50 {
 	max-width: 50%;
 }
 
@@ -5371,7 +5930,6 @@ h2 .nav-tab {
 
 .about-wrap .changelog .feature-section {
 	overflow: hidden;
-	padding-bottom: 0;
 }
 
 .about-wrap .changelog li {
@@ -5381,23 +5939,34 @@ h2 .nav-tab {
 
 @media only screen and (max-width: 900px) {
 	.about-wrap .feature-section.images-stagger-left img,
-	.about-wrap .feature-section.images-stagger-right img {
+	.about-wrap .feature-section.images-stagger-right img,
+	.about-wrap .feature-section.images-stagger-right .video {
 		clear: both;
 	}
+
+	.about-wrap .feature-section .video.image-66 {
+		float: none;
+		width: 98%;
+		max-width: 98%;
+	}
+
+	.about-wrap .feature-section.images-stagger-right .video.image-66 {
+		margin-left: 3px;
+	}
 }
 
 @media only screen and (max-width: 768px) {
-	.about-wrap .feature-section img.image-66 {
+	.about-wrap .feature-section .image-66 {
 		float: none;
 		width: 98%;
 		max-width: 98%;
 	}
 
-	.about-wrap .feature-section.images-stagger-right img.image-66 {
+	.about-wrap .feature-section.images-stagger-right .image-66 {
 		margin-left: 3px;
 	}
 
-	.about-wrap .feature-section.images-stagger-left img.image-66 {
+	.about-wrap .feature-section.images-stagger-left .image-66 {
 		margin-right: 3px;
 	}
 }
@@ -5424,7 +5993,7 @@ h2 .nav-tab {
 
 .about-wrap ul.wp-people-group {
 	overflow: hidden;
-	padding: 5px;
+	padding: 0 5px;
 	margin: 0 -15px 0 -5px;
 }
 
@@ -5605,6 +6174,10 @@ body.full-overlay-active {
 	overflow: auto;
 }
 
+.wp-full-overlay-sidebar-content .accordion-section:first-child {
+	border-top: 1px solid #fff;
+}
+
 /* Close Link */
 .wp-full-overlay .close-full-overlay {
 	text-decoration: none;
@@ -5924,8 +6497,7 @@ table.form-table td .updated {
 	width: 250px;
 }
 
-#post-visibility-select,
-#post-formats-select {
+#post-visibility-select {
 	line-height: 1.5em;
 	margin-top: 3px;
 }
@@ -5935,7 +6507,7 @@ table.form-table td .updated {
 	padding: 0;
 }
 
-#post-body-content {
+.edit-form-section {
 	margin-bottom: 20px;
 }
 
@@ -6706,6 +7278,27 @@ a.rsswidget {
 	width: auto;
 }
 
+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 */
 /* Dashboard: MS Specific Data */
@@ -6749,8 +7342,36 @@ a.rsswidget {
 
 /* nav-menu */
 
+.no-js #message {
+	display: block;
+}
+
+#nav-menu-meta ul.outer-border {
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.accordion-section ul.category-tabs,
+.accordion-section ul.add-menu-item-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 {
@@ -6759,11 +7380,7 @@ a.rsswidget {
 	margin-left: -300px;
 	clear: both;
 	float: left;
-	padding-top: 24px;
-}
-
-.no-js #wpbody-content #menu-settings-column {
-	padding-top: 31px;
+	padding-top: 0;
 }
 
 #menu-settings-column .inside {
@@ -6771,7 +7388,8 @@ a.rsswidget {
 	margin: 10px 0 0;
 }
 
-.metabox-holder-disabled .postbox {
+.metabox-holder-disabled .postbox,
+.metabox-holder-disabled .accordion-section-content  {
 	opacity: 0.5;
 	filter: alpha(opacity=50);
 }
@@ -6784,10 +7402,84 @@ a.rsswidget {
 	position: relative;
 }
 
+.blank-slate .menu-name {
+	height: 2em;
+}
+
+.blank-slate .menu-settings {
+	border: none;
+	margin-top: 0;
+	padding-top: 0;
+	overflow: hidden;
+}
+
+.is-submenu {
+	font-style: italic;
+	font-weight: normal;
+	margin-left: 4px;
+}
+
+.manage-menus {
+	margin-top: 23px;
+	padding: 10px;
+	overflow: hidden;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.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 p {
+	margin: .3em 0 .6em;
+}
+
+.menu-edit #post-body-content h3 {
+	margin: 0 0 10px;
+}
+
+.menu-settings {
+	margin-top: 2em;
+	overflow: hidden;
+}
+
+.menu-settings dl {
+	margin: 0 0 10px;
+	overflow: hidden;
+	position: relative;
+}
+
+.menu-settings dd {
+	float: left;
+	margin: 0;
+	width: 60%;
+}
+
+.menu-edit .checkbox-input {
+	margin-top: 4px;
+}
+
+.theme-location-set {
+	font-size: 11px;
+}
+
 /* Menu Container */
 #menu-management-liquid {
 	float: left;
 	min-width: 100%;
+	margin-top: 3px;
 }
 
 #menu-management {
@@ -6802,7 +7494,7 @@ a.rsswidget {
 }
 
 .nav-menus-php #post-body {
-	padding: 10px;
+	padding: 0 10px 10px;
 	border-width: 1px 0;
 	border-style: solid;
 }
@@ -6814,6 +7506,11 @@ a.rsswidget {
 
 #nav-menu-header {
 	border-bottom: 1px solid;
+	margin-bottom: 13px;
+}
+
+#nav-menu-header .menu-name-label {
+	margin-top: 2px;
 }
 
 #nav-menu-footer {
@@ -6834,68 +7531,52 @@ a.rsswidget {
 	font-weight:bold;
 }
 
-/* Menu Tabs */
-
-#menu-management .nav-tabs-nav {
-	margin: 0 20px;
+#select-nav-menu-container {
+	text-align: right;
+	padding: 0 10px 3px 10px;
+	margin-bottom: 5px;
 }
 
-#menu-management .nav-tabs-arrow {
-	width: 10px;
-	padding: 0 5px 4px;
-	cursor: pointer;
-	position: absolute;
-	top: 0;
-	line-height: 22px;
-	font-size: 18px;
-	text-shadow: 0 1px 0 #fff;
+#select-nav-menu {
+	width: 100px;
+	display: inline;
 }
 
-#menu-management .nav-tabs-arrow-left {
-	left: 0;
+#menu-name-label {
+	margin-top: -2px;
 }
 
-#menu-management .nav-tabs-arrow-right {
-	right: 0;
-	text-align: right;
+.widefat td.menu-location-menus {
+	padding-bottom: 5px;
 }
 
-#menu-management .nav-tabs-wrapper {
-	width: 100%;
-	height: 28px;
-	margin-bottom: -1px;
-	overflow: hidden;
+.menu-location-menus select {
+	float: left;
 }
 
-#menu-management .nav-tabs {
-	padding-left: 20px;
-	padding-right: 10px;
+#locations-nav-menu-wrapper {
+	padding: 5px 0;
 }
 
-.js #menu-management .nav-tabs {
+.locations-nav-menu-select select {
 	float: left;
-	margin-left: 0px;
-	margin-right: -400px;
-}
-
-#menu-management .nav-tab {
-	margin-bottom: 0;
-	font-size: 14px;
+	width: 160px;
+	margin-right: 5px;
 }
 
-#select-nav-menu-container {
-	text-align: right;
-	padding: 0 10px 3px 10px;
-	margin-bottom: 5px;
+.locations-row-links {
+	float: left;
+	margin: 6px 0 0 6px;
 }
 
-#select-nav-menu {
-	width: 100px;
-	display: inline;
+.locations-edit-menu-link,
+.locations-add-menu-link {
+	margin: 0 3px;
 }
 
-#menu-name-label {
-	margin-top: -2px;
+.locations-edit-menu-link {
+	padding-right: 3px;
+	border-right: 1px solid #ccc;
 }
 
 #wpbody .open-label {
@@ -6916,13 +7597,46 @@ a.rsswidget {
 }
 
 /* Add Menu Item Boxes */
-.postbox .howto input {
+.postbox .howto input,
+.accordion-container .howto input {
 	width: 180px;
 	float: right;
 }
 
+.accordion-container .outer-border {
+	margin: 0;
+}
+
+#nav-menu-meta .accordion-container .top {
+	border-top: 1px solid #dfdfdf;
+}
+
+#nav-menu-meta .accordion-container .accordion-section:first-child,
+#nav-menu-meta .accordion-container .accordion-section:first-child h3,
+#nav-menu-meta .accordion-container .top,
+#nav-menu-meta .accordion-container .top h3 {
+	-webkit-border-top-right-radius: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-right-radius: 3px;
+	border-top-left-radius: 3px;
+}
+
+#nav-menu-meta .accordion-container .accordion-section:last-child,
+#nav-menu-meta .accordion-container .accordion-section:last-child .accordion-section-content,
+#nav-menu-meta .accordion-container .bottom,
+#nav-menu-meta .accordion-container .bottom:not(.open) h3 {
+	-webkit-border-bottom-right-radius: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-right-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
 .customlinkdiv .howto input {
-	width: 200px;
+	width: 180px;
+}
+
+.customlinkdiv p {
+	margin-top: 0
 }
 
 #nav-menu-theme-locations .howto select {
@@ -6939,8 +7653,14 @@ a.rsswidget {
 
 /* Button Primary Actions */
 #menu-container .submit {
-	margin: 0px 0px 10px;
-	padding: 0px;
+	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,
@@ -7079,7 +7799,8 @@ a.rsswidget {
 }
 
 #menu-to-edit {
-	padding: 1em 0;
+	margin: 0;
+	padding: 0.1em 0;
 }
 
 .menu ul {
@@ -7095,7 +7816,7 @@ a.rsswidget {
 	clear:both;
 	line-height:1.5em;
 	position:relative;
-	margin: 13px 0 0 0;
+	margin: 9px 0 0;
 }
 
 .menu-item-handle {
@@ -7259,6 +7980,11 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 	border-bottom-right-radius: 3px;
 }
 
+.menu-item-settings .field-move a {
+	display: none;
+	margin: 0 2px;
+}
+
 .menu-item-edit-active .menu-item-settings {
 	display: block;
 }
@@ -7322,34 +8048,16 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 	text-align: right;
 	float: right;
 	line-height: 23px;
-	margin: 5px 0 1px;
+	margin: 2px 0 1px;
 }
 
-.nav-menus-php .major-publishing-actions .delete-action {
-	vertical-align: middle;
-	text-align: left;
-	float: left;
-	padding-right: 15px;
-	margin-top: 5px;
-}
-
-.menu-name-label span,
-.auto-add-pages label {
-	font-size: 12px;
-	font-style: normal;
-}
-
-.menu-name-label {
-	margin-right: 15px;
-}
-
-.auto-add-pages input {
-	margin-top: 0;
+.nav-menus-php .blank-slate .menu-settings {
+	display: none;
 }
 
-.auto-add-pages {
-	margin-top: 4px;
+.nav-menus-php .delete-action {
 	float: left;
+	margin-top: 2px;
 }
 
 .nav-menus-php .submitbox .submitcancel {
@@ -8336,6 +9044,122 @@ a.widget-control-edit {
 	-ms-touch-action: none;
 }
 
+/* Accordion */
+
+.accordion-section {
+	border-top: 1px solid #fff;
+	border-bottom: 1px solid #dfdfdf;
+	margin: 0;
+}
+
+.accordion-section:first-child {
+	border-top: 1px solid #dfdfdf;
+}
+
+.accordion-section:last-child {
+	box-shadow: 0 1px 0 0px #fff;
+}
+
+.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: #fdfdfd;
+	border-left: 1px solid #dfdfdf;
+	border-right: 1px solid #dfdfdf;
+}
+
+.accordion-section-title {
+	margin: 0;
+	padding: 15px 20px;
+	position: relative;
+	border-left: 1px solid #dfdfdf;
+	border-right: 1px solid #dfdfdf;
+
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	user-select: none;
+}
+
+.js .accordion-section-title {
+	cursor: pointer;
+}
+
+.js .accordion-section-title:after {
+	content: '';
+	width: 0;
+	height: 0;
+	border-color: #ccc transparent;
+	border-style: solid;
+	border-width: 6px 6px 0;
+	position: absolute;
+	top: 25px;
+	right: 20px;
+	z-index: 1;
+}
+
+.accordion-section-title:focus {
+	outline: none;
+}
+
+.accordion-section-title:hover:after,
+.accordion-section-title:focus:after {
+	border-color: #aaa transparent;
+}
+
+.cannot-expand .accordion-section-title {
+	cursor: auto;
+}
+
+.cannot-expand .accordion-section-title:after {
+	display: none;
+}
+
+.control-section .accordion-section-title {
+	padding: 10px 20px;
+	color: #464646;
+	font-size: 15px;
+	font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+	font-weight: normal;
+	text-shadow: 0 1px 0 #fff;
+	background: #f5f5f5;
+	background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(#f5f5f5));
+	background-image: -webkit-linear-gradient(bottom, #eee, #f5f5f5);
+	background-image:    -moz-linear-gradient(bottom, #eee, #f5f5f5);
+	background-image:      -o-linear-gradient(bottom, #eee, #f5f5f5);
+	background-image: linear-gradient(to top, #eee, #f5f5f5);
+}
+
+.control-section .accordion-section-title:after {
+	top: 15px;
+}
+
+.js .control-section:hover .accordion-section-title,
+.js .control-section .accordion-section-title:hover,
+.js .control-section.open .accordion-section-title,
+.js .control-section .accordion-section-title:focus {
+	color: #000;
+	background: #f9f9f9;
+	background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9));
+	background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9);
+	background-image:    -moz-linear-gradient(bottom, #ececec, #f9f9f9);
+	background-image:      -o-linear-gradient(bottom, #ececec, #f9f9f9);
+	background-image: linear-gradient(to top, #ececec, #f9f9f9);
+}
+
+.control-section.open .accordion-section-title {
+	border-bottom: 1px solid #dfdfdf;
+}
+
 /* =Media Queries
 -------------------------------------------------------------- */
 
@@ -8441,6 +9265,11 @@ a.widget-control-edit {
 		background-size: 18px 100px;
 	}
 
+	tr.wp-locked .locked-indicator  {
+		background-image: url('../images/lock-2x.png');
+		background-size: 16px 16px;
+	}
+
 	th .comment-grey-bubble {
 		background-image: url('../images/comment-grey-bubble-2x.png');
 		background-size: 12px 12px;
@@ -8511,6 +9340,12 @@ a.widget-control-edit {
 	.customize-loading #customize-container {
 		background-image: url(../images/wpspin_light-2x.gif);
 	}
+
+	.wp-slider .ui-slider-handle:before {
+		background-image: url(../images/arrows-pr-2x.png);
+		background-size: 16px 102px;
+	}
+
 }
 
 /* =Localized CSS
@@ -8574,8 +9409,3 @@ a.widget-control-edit {
 .locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap {
 	margin-left: 8em;
 }
-
-.update-php .spinner {
-	float: none;
-	margin: -4px 0;
-}
diff --git a/wp-admin/css/wp-admin.min.css b/wp-admin/css/wp-admin.min.css
index 9db46c68b..9760c6c50 100644
--- a/wp-admin/css/wp-admin.min.css
+++ b/wp-admin/css/wp-admin.min.css
@@ -1 +1 @@
-#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#wpfooter{margin-left:165px}.folded #wpcontent,.folded #wpfooter{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .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%}.col-wrap{padding:0 7px}.alignleft{float:left}.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;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-21px;height:auto;width:auto;display:block;font-size:14px;font-weight:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;border-radius:3px;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}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js,.js.wp-core-ui .hide-if-js,.js .wp-core-ui .hide-if-js,.no-js.wp-core-ui .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select,button{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],select,textarea,div{outline:0}a:focus,a:active{outline:thin dotted}#adminmenu a:focus,#adminmenu a:active,.screen-reader-text:focus{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;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}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;border:0}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th 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 tbody th.check-column{padding:9px 0 22px}.widefat.media .check-column{padding-top:8px}.widefat thead .check-column,.widefat tfoot .check-column{padding:10px 0 0}.no-js .widefat thead .check-column input,.no-js .widefat tfoot .check-column input{display:none}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{background-color:#fff;color:#333}select{color:#000}select[disabled]{color:#7f7f7f}select:focus{border-color:#aaa}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{-webkit-box-shadow:1px 1px 2px rgba(0,0,0,0.1);box-shadow:1px 1px 2px rgba(0,0,0,0.1)}input[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #delete_all,.tablenav #clear-recent-list{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}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:2em;margin:0 4px 0 0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-focus{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}.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-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#ajax-loading,.ajax-loading,.ajax-feedback,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta-links a:focus{-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.4);box-shadow:1px 1px 1px rgba(0,0,0,0.4);outline:0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.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}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#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:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.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 li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:28px;position:relative}#adminmenu .wp-submenu{list-style:none;padding:4px 0;margin:0;position:absolute;top:-1000em;left:146px;z-index:1000;overflow:visible;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.js #adminmenu .sub-open,.js #adminmenu .opensub .wp-submenu,#adminmenu a.menu-top:focus+.wp-submenu,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;border:0 none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:-1px;left:32px}.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}#adminmenu .wp-submenu a{font-size:12px;line-height:18px;margin:0;padding-left:12px}#adminmenu .wp-not-current-submenu li>a{padding-left:16px}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;font-weight:bold;line-height:18px;padding:0}#adminmenu .wp-submenu-head,.folded #adminmenu .wp-menu-name{display:none}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu a.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{padding:7px 0 0 7px;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:5px}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:28px}.wp-menu-arrow{z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu .wp-menu-arrow div{display:none;position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid;top:0}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow div,#adminmenu li.wp-has-submenu .wp-menu-arrow div,#adminmenu li.current .wp-menu-arrow div,.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow,#adminmenu a:hover .wp-menu-arrow{display:block}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-menu-open .wp-menu-arrow{top:0}.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li .wp-menu-arrow div,.no-js #adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current .wp-menu-arrow,.folded #adminmenu li.current .wp-menu-arrow div,.folded #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.folded #adminmenu li.wp-menu-open .wp-menu-arrow,.folded #adminmenu li a:focus .wp-menu-arrow{display:block}#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:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 4px 5px 10px;margin:-4px -1px 4px;border-width:1px 0;border-style:solid;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}.folded #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px;border-width:1px 0 0;border-style:solid}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:52px}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap,.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top{width:32px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu{top:-1px;left:32px}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{display:none}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:28px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}.auto-fold #adminmenu li .wp-menu-arrow div{display:none}.auto-fold #adminmenu li.current .wp-menu-arrow,.auto-fold #adminmenu li.current .wp-menu-arrow div,.auto-fold #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.auto-fold #adminmenu li.wp-menu-open .wp-menu-arrow,.auto-fold #adminmenu li a:focus .wp-menu-arrow{display:block}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold #collapse-menu span{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{background-image:url('../images/bubble_bg.gif');height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble.png');background-repeat:no-repeat;height:12px;width:12px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.metabox-holder .postbox-container .empty-container{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#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 #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#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 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#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 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.js .postbox .hndle{cursor:move}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px}.js .postbox .handlediv{cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .widget .widget-top,.js .postbox h3{cursor:move}.postbox .inside,.stuffbox .inside{padding:0 12px 0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#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:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{position:relative;overflow:auto;margin:20px 0;padding:23px 10px 12px;border-width:1px;border-style:solid;border-radius:3px;font-size:13px;line-height:2.1em}.welcome-panel h3{margin:0;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:normal;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:13px}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:5px;right:10px;padding:8px 3px;font-size:13px;text-decoration:none;line-height:1}.welcome-panel .welcome-panel-close:before{content:' ';position:absolute;left:-12px;width:10px;height:100%;background:url('../images/xit.gif') 0 17% no-repeat}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px}.welcome-panel-content{margin-left:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;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{margin-top:7px}.welcome-panel .welcome-icon{display:block;padding:2px 0 8px 32px;background-image:url('../images/welcome-icons.png');background-repeat:no-repeat;background-size:16px}.welcome-panel .welcome-add-page{background-position:0 2px}.welcome-panel .welcome-edit-page{background-position:0 -90px}.welcome-panel .welcome-learn-more{background-position:0 -136px}.welcome-panel .welcome-comments{background-position:0 -182px}.welcome-panel .welcome-view-site{background-position:0 -274px}.welcome-panel .welcome-widgets-menus{background-position:1px -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:0 -44px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none}@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}.welcome-panel .welcome-icon{padding-left:25px}}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-slug{width:25%}.fixed .column-posts{width:10%}.fixed .column-icon{width:80px}#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 #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv .spinner{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url('../images/sort.gif');background-repeat:no-repeat}.fixed .column-comments .sorting-indicator{margin-top:3px}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 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.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{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;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.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.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{overflow:hidden;padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}span.post-state-format{font-weight:normal}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#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 .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .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%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.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:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#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-save .spinner{padding:4px 10px 0;vertical-align:top;float:right}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.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}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute}.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%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a,#show-comments .spinner{float:left}#titlediv{position:relative;margin-bottom:10px}#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%;width:100%;outline:0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px}#wp-fullscreen-save .fs-saved{color:#999;float:right;margin-top:4px}#wp-fullscreen-title-prompt-text{padding:11px}#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 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:23px;min-height:23px;margin-top:5px;padding:0 10px}#edit-slug-box .cancel{margin-right:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select,#post-format{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#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 input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li{border-style:solid;border-width:1px;position:relative}ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#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{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 1px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#content-resize-handle{background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;position:absolute;right:2px;height:19px}.press-this #content-resize-handle{bottom:2px}.tmce-active #content-resize-handle{display:none}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left center;padding:2px 0 1px 20px}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;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-width:1px;border-style:solid;border-spacing:0}#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 th.left,#postcustomstuff td.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}table.diff{width:100%}table.diff col.content{width:50%}table.diff tr{background-color:transparent}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:0}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}#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}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border-style:solid;border-width:1px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;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;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.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}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;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 .media-item-info tr{background-color:transparent}.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:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.media-item .edit-attachment,.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}.media-new-php #media-items{margin:1em 0}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#f7f7f7;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f7f7f7));background-image:-webkit-linear-gradient(bottom,#fff,#f7f7f7);background-image:-moz-linear-gradient(bottom,#fff,#f7f7f7);background-image:-o-linear-gradient(bottom,#fff,#f7f7f7);background-image:linear-gradient(to top,#fff,#f7f7f7);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#8cc1e9;background-image:-webkit-gradient(linear,left bottom,left top,from(#72a7cf),to(#8cc1e9));background-image:-webkit-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-moz-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-o-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:linear-gradient(to top,#72a7cf,#8cc1e9);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:600px;height:300px;overflow:hidden;padding:33px 0 51px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;padding:6px;height:100%}.find-box-search{overflow:hidden;padding:9px;position:relative}.find-box-search .spinner{float:none;left:125px;position:absolute;top:9px}#find-posts-input{float:left;width:140px;height:24px}#find-posts-search{float:left;margin:1px 4px 0 3px}#find-posts-response{margin:8px 0;padding:0 1px 6px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:3px 0 0 8px;width:15px}.find-box-buttons{padding:8px;overflow:hidden}.find-box #resize-se{position:absolute;right:1px;bottom:1px}.ui-find-overlay{position:absolute;top:0;left:0;background-color:#000;opacity:.6;filter:alpha(opacity=60)}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;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}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.post-php .imgedit-wrap table{width:100%}.describe .imgedit-wrap table td,.wp_attachment_holder .imgedit-wrap table td{vertical-align:top;padding-top:0}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}.wp_attachment_holder .imgedit-wrap table td.imgedit-settings{width:250px}td.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;background-size:16px 16px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.spinner{background:url(../images/wpspin_light.gif) no-repeat;background-size:16px 16px;display:none;float:right;opacity:.7;filter:alpha(opacity=70);width:16px;height:16px;margin:5px 5px 0}.no-float{float:none}.media-disabled,.imgedit-settings .disabled{color:grey}.wp_attachment_image,.A1B1{overflow:hidden}.wp_attachment_image .button,.A1B1 .button{float:left}.no-js .wp_attachment_image .button{display:none}.wp_attachment_image .spinner,.A1B1 .spinner{float:left;padding:0 4px 4px;vertical-align:bottom}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}a.imgedit-help-toggle{text-decoration:none}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 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{border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;margin-bottom:8px;padding:2px 10px}.wp_attachment_details{margin-bottom:20px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .spinner{padding:2px 0 0;vertical-align:top;float:right}#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}#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}.comment-php .wp-editor-area{height:200px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-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}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}.theme-install-php .spinner{margin-top:9px}h3.available-themes{margin:0 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}.available-theme a.screenshot:focus{border-color:#777}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}.ie8 .available-theme .action-links li{padding-right:7px;margin-right:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom-width:1px;border-bottom-style:solid;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.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}.nav-tab{border-style:solid;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-width:1px;border-bottom-style:solid;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#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}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a,.pressthis a:hover,.pressthis a:focus,.pressthis a:active{display:inline-block;position:relative;cursor:move;color:#333;background:#e6e6e6;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(7%,#e6e6e6),color-stop(77%,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(to top,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:active{outline:0}.pressthis a:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;background-size:24px 20px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .spinner{float:none;margin:-3px 3px}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#wpfooter p{margin:0;line-height:20px}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.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 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.images-stagger-right img{float:right;margin:0 5px 12px 2em}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section img.image-100{margin:0 0 2em 0;width:100%}.about-wrap .feature-section img.image-66{width:65%}.about-wrap .feature-section img.image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .images-stagger-right img.image-30:nth-child(2){margin-left:1em}.about-wrap .feature-section.col{margin-bottom:0}.about-wrap .feature-section.col h4{margin:0 0 .6em 0}.about-wrap .feature-section.col .last-feature{margin-right:0}.about-wrap .feature-section.two-col div{width:47%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .changelog .feature-section{overflow:hidden;padding-bottom:0}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img{clear:both}}@media only screen and (max-width:768px){.about-wrap .feature-section img.image-66{float:none;width:98%;max-width:98%}.about-wrap .feature-section.images-stagger-right img.image-66{margin-left:3px}.about-wrap .feature-section.images-stagger-left img.image-66{margin-right:3px}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{float:left;margin-right:10px}.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{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.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:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.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{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay a.collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat -1px -73px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:-1px -109px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-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:#fff url("../images/wpspin_light.gif") no-repeat fixed center center;background-size:16px 16px}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .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}.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 .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,#poststuff .inside #page_template{max-width:100%}.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{max-width:80%}.ie8 #poststuff .inside #parent_id,.ie8 #poststuff .inside #page_template,.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name="page_template"]{width:250px}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 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:30px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}.no-js #dashboard_quick_press{display:none}#dashboard_quick_press .easy-blogging{padding:0 8px;text-align:left}#dashboard_quick_press .input-text-wrap{position:relative}#dashboard_quick_press .prompt{color:#bbb;position:absolute}#dashboard_quick_press div.updated{padding:0 5px}#title-wrap label,#tags-input-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;line-height:100%;outline:0}#tags-input-wrap #tags-input{outline:0}#title-wrap #title-prompt-text{font-size:1.3em;padding:5px 8px}#tags-input-wrap #tags-input-prompt-text{font-size:1em;padding:4px 8px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 0}#dashboard_quick_press .wp-media-buttons{margin:0 0 .2em 1px;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 .7em 0 1px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{vertical-align:middle;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#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;text-shadow:none;background:transparent none;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;outline:0;overflow:hidden;padding-bottom:15px;display:block}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}#nav-menus-frame{margin-left:300px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px}.no-js #wpbody-content #menu-settings-column{padding-top:31px}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}#menu-management-liquid{float:left;min-width:100%}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#menu-management .nav-tabs-nav{margin:0 20px}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff}#menu-management .nav-tabs-arrow-left{left:0}#menu-management .nav-tabs-arrow-right{right:0;text-align:right}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden}#menu-management .nav-tabs{padding-left:20px;padding-right:10px}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px}#menu-management .nav-tab{margin-bottom:0;font-size:14px}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input{width:180px;float:right}.customlinkdiv .howto input{width:200px}#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 .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button.right,.button-secondary.right,.button-primary.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox .spinner{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#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:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom: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-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{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:13px 0 0 0}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(to top,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.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{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.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;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal}.menu-name-label{margin-right:15px}.auto-add-pages input{margin-top:0}.auto-add-pages{margin-top:4px;float:left}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#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}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20121108') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20121108') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px;padding:0}.press-this #photo-add-url-div input[type="text"]{width:220px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-32px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px;overflow:hidden}#waiting span{float:right;margin:0 0 0 5px}#waiting .spinner{display:block}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:120px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:345px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}.press-this #publishing-actions .spinner{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline-block;vertical-align:top;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;display:inline-block}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .sidebar-name{cursor:pointer}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;display:inline-block;vertical-align:top}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:27px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;padding-bottom:.2em;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name .spinner{float:none;margin:0 3px -3px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.ui-sortable,.ui-draggable{-ms-touch-action:none}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@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{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.press-this .tagchecklist span a{background-image:url('../images/xit-2x.gif');background-size:20px auto}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv,.widget-top a.widget-action{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.widget-top a.widget-action:hover{background-image:url('../images/arrows-dark-2x.png');background-size:15px 123px}.post-com-count{background-image:url('../images/bubble_bg-2x.gif');background-size:18px 100px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble-2x.png');background-size:12px 12px}.sorting-indicator{background-image:url('../images/sort-2x.gif?ver=20130102');background-size:14px 4px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}div.star-holder{background:url('../images/stars-2x.png?ver=20121108') repeat-x bottom left;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-2x.png?ver=20121108') repeat-x top left;background-size:21px 37px}.welcome-panel .welcome-panel-close:before{background-image:url('../images/xit-2x.gif');background-size:20px auto}.welcome-panel .welcome-icon{background-image:url('../images/welcome-icons-2x.png')}.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.pressthis a span{background-image:url(../images/press-this-2x.png?v=20121105)}.imgedit-crop,.imgedit-rleft,.imgedit-rright,.imgedit-flipv,.imgedit-fliph,.imgedit-undo,.imgedit-redo{background-image:url('../images/imgedit-icons-2x.png');background-size:260px 64px}.spinner,.imgedit-wait,.customize-loading #customize-container{background-image:url(../images/wpspin_light-2x.gif)}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-ru-ru #customize-header-actions .button{padding:0 8px 1px}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.update-php .spinner{float:none;margin:-4px 0}
\ No newline at end of file
+#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#wpfooter{margin-left:165px}.folded #wpcontent,.folded #wpfooter{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .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%}.col-wrap{padding:0 7px}.alignleft{float:left}.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;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-21px;height:auto;width:auto;display:block;font-size:14px;font-weight:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;border-radius:3px;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}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js,.js.wp-core-ui .hide-if-js,.js .wp-core-ui .hide-if-js,.no-js.wp-core-ui .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select,button{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],select,textarea,div{outline:0}a:focus,a:active{outline:thin dotted}#adminmenu a:focus,#adminmenu a:active,.screen-reader-text:focus{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;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}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;border:0}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th 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 tbody th.check-column{padding:9px 0 22px}.widefat.media .check-column{padding-top:8px}.widefat thead .check-column,.widefat tfoot .check-column{padding:10px 0 0}.no-js .widefat thead .check-column input,.no-js .widefat tfoot .check-column input{display:none}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{background-color:#fff;color:#333}select{color:#000}select[disabled]{color:#7f7f7f}select:focus{border-color:#aaa}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{-webkit-box-shadow:1px 1px 2px rgba(0,0,0,0.1);box-shadow:1px 1px 2px rgba(0,0,0,0.1)}input[readonly]{background-color:#eee}:-moz-placeholder,.wp-core-ui :-moz-placeholder{color:#a9a9a9}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #delete_all,.tablenav #clear-recent-list{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}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}.search-box input[name="s"],#search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:2em;margin:0 4px 0 0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-focus{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}.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-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-loading,.ajax-feedback,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta-links a:focus{-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.4);box-shadow:1px 1px 1px rgba(0,0,0,0.4);outline:0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.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}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#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:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.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}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:28px;position:relative}#adminmenu .wp-submenu{list-style:none;padding:4px 0;margin:0;position:absolute;top:-1000em;left:146px;z-index:1000;overflow:visible;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.js #adminmenu .sub-open,.js #adminmenu .opensub .wp-submenu,#adminmenu a.menu-top:focus+.wp-submenu,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0 none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:-1px;left:32px}.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}#adminmenu .wp-submenu a{font-size:12px;line-height:18px;margin:0;padding-left:12px}#adminmenu .wp-not-current-submenu li>a{padding-left:16px}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;font-weight:bold;line-height:18px;padding:0}#adminmenu .wp-submenu-head,.folded #adminmenu .wp-menu-name{display:none}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu a.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{padding:7px 0 0 7px;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:5px}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:28px}.wp-menu-arrow{z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu .wp-menu-arrow div{display:none;position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid;top:0}.folded #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.wp-has-current-submenu .wp-menu-arrow div,#adminmenu li.wp-has-submenu .wp-menu-arrow div,#adminmenu li.current .wp-menu-arrow div,.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow,#adminmenu a:hover .wp-menu-arrow{display:block}#adminmenu li.current .wp-menu-arrow,#adminmenu li.wp-menu-open .wp-menu-arrow{top:0}.no-js #adminmenu li.wp-has-submenu:hover .wp-menu-arrow,#adminmenu li.wp-has-submenu.opensub .wp-menu-arrow,#adminmenu a.wp-has-submenu:focus .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li .wp-menu-arrow div,.no-js #adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current .wp-menu-arrow,.folded #adminmenu li.current .wp-menu-arrow div,.folded #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.folded #adminmenu li.wp-menu-open .wp-menu-arrow,.folded #adminmenu li a:focus .wp-menu-arrow{display:block}#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:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:5px 4px 5px 10px;margin:-4px -1px 4px;border-width:1px 0;border-style:solid;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}.folded #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px;border-width:1px 0 0;border-style:solid}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:52px}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap,.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top{width:32px}.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu{top:-1px;left:32px}.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{border-width:1px;border-style:solid;position:absolute;top:-1000em}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{display:none}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{width:32px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:28px}.auto-fold #adminmenu li .wp-menu-arrow{-moz-transform:translate(32px);-webkit-transform:translate(32px);-o-transform:translate(32px);-ms-transform:translate(32px);transform:translate(32px)}.auto-fold #adminmenu li .wp-menu-arrow div{display:none}.auto-fold #adminmenu li.current .wp-menu-arrow,.auto-fold #adminmenu li.current .wp-menu-arrow div,.auto-fold #adminmenu li.wp-has-current-submenu .wp-menu-arrow div,.auto-fold #adminmenu li.wp-menu-open .wp-menu-arrow,.auto-fold #adminmenu li a:focus .wp-menu-arrow{display:block}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu li.wp-has-current-submenu{margin-bottom:1px}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold #collapse-menu span{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{background-image:url('../images/bubble_bg.gif');height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble.png');background-repeat:no-repeat;height:12px;width:12px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.metabox-holder .postbox-container .empty-container{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#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 #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#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 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#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 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.js .postbox .hndle{cursor:move}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px}.js .postbox .handlediv{cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .widget .widget-top,.js .postbox h3{cursor:move}.postbox .inside,.stuffbox .inside{padding:0 12px 0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#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:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{position:relative;overflow:auto;margin:20px 0;padding:23px 10px 12px;border-width:1px;border-style:solid;border-radius:3px;font-size:13px;line-height:2.1em}.welcome-panel h3{margin:0;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:normal;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:13px}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:5px;right:10px;padding:8px 3px;font-size:13px;text-decoration:none;line-height:1}.welcome-panel .welcome-panel-close:before{content:' ';position:absolute;left:-12px;width:10px;height:100%;background:url('../images/xit.gif') 0 17% no-repeat}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px}.welcome-panel-content{margin-left:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;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{margin-top:7px}.welcome-panel .welcome-icon{display:block;padding:2px 0 8px 32px;background-image:url('../images/welcome-icons.png');background-repeat:no-repeat;background-size:16px}.welcome-panel .welcome-add-page{background-position:0 2px}.welcome-panel .welcome-edit-page{background-position:0 -90px}.welcome-panel .welcome-learn-more{background-position:0 -136px}.welcome-panel .welcome-comments{background-position:0 -182px}.welcome-panel .welcome-view-site{background-position:0 -274px}.welcome-panel .welcome-widgets-menus{background-position:1px -229px;line-height:14px}.welcome-panel .welcome-write-blog{background-position:0 -44px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none}@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}.welcome-panel .welcome-icon{padding-left:25px}}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-posts,.fixed .column-date,.fixed .column-parent,.fixed .column-links,.fixed .column-author,.fixed .column-format{width:10%}.fixed .column-response,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-icon{width:80px}#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 #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv .spinner{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url('../images/sort.gif');background-repeat:no-repeat}tr.wp-locked .locked-indicator{background:url('../images/lock.png') no-repeat;margin:-2px 0 0 6px;height:20px;width:16px}tr.wp-locked .check-column label,tr.wp-locked .check-column input[type="checkbox"],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{height:auto;opacity:1}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity 500ms;-moz-transition:height 1s,opacity 500ms;-ms-transition:height 1s,opacity 500ms;-o-transition:height 1s,opacity 500ms;transition:height 1s,opacity 500ms}.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;overflow:hidden;padding:7px 7px 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.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{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;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.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.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{overflow:hidden;padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#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 .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .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%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.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:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.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{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#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-save .spinner{padding:4px 10px 0;vertical-align:top;float:right}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.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{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row #bulk-titles div{font-family:sans-serif;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%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a,#show-comments .spinner{float:left}#lost-connection-notice .spinner{display:block;float:left;margin:0 5px 0 0}.rtl #lost-connection-notice .spinner{float:right;margin:0 0 0 5px}#titlediv{position:relative;margin-bottom:5px}#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:1px 0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:11px 10px}#wp-fullscreen-save .fs-saved{color:#999;float:right;margin-top:4px}#wp-fullscreen-title-prompt-text{padding:11px}#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 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding-right:6px}#edit-slug-box .cancel{margin-right:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#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 input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li{border-style:solid;border-width:1px;position:relative}ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#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{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 1px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#content-resize-handle{background:transparent url('../images/resize.gif') no-repeat scroll right bottom;width:12px;cursor:se-resize;position:absolute;right:2px;height:19px}.press-this #content-resize-handle{bottom:2px}.tmce-active #content-resize-handle{display:none}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left center;padding:2px 0 1px 20px}#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%;left:50%;width:450px;margin-left:-225px;background:#fff;line-height:1.5;z-index:1000005}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.5;filter:alpha(opacity=50);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.saving .locked-saving,#post-lock-dialog.saved .locked-saved{display:inline}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;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-width:1px;border-style:solid;border-spacing:0}#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 th.left,#postcustomstuff td.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}.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;padding-bottom:10px}.revisions-tickmarks{position:relative;margin:0 auto;height:.8em;top:7px;max-width:70%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div{position:absolute;height:100%;border-style:solid;border-width:0 1px 0 0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.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:fixed;vertical-align:middle;opacity:0;width:100%;top:50%;margin-left:-90px;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-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;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-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:15px}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-previous,.comparing-two-revisions .revisions-next,.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:bold}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions-previous,.revisions-next{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}.post-revisions li img,#revisions-meta-restored img{vertical-align:middle}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap;word-wrap:break-word}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{padding:.5em;font-family:Consolas,Monaco,monospace}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}.diff-meta{-webkit-border-radius:3px;border-radius:3px;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 .avatar,.revisions-controls .author-card .author-info{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;display:none;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);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);tranform: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-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border-width:1px;border-style:solid;border-radius:3px;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{position:absolute;z-index:2;margin-top:-3px;width:19px;height:19px;border-width:1px;border-style:solid;border-radius:50%}.wp-slider .ui-slider-handle:before{content:"";position:absolute;top:6px;left:3px;height:8px;width:13px;background:url(../images/arrows-pr.png) no-repeat -2px -47px}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{height:8px;width:7px}.wp-slider .ui-slider-handle.from-handle:before{background-position:-5px -84px;left:7px}.wp-slider .ui-slider-handle.to-handle:before{background-position:-4px -65px;left:5px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.8em}.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}#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}a.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:16px;width:16px;margin-right:5px;background-repeat:no-repeat;text-indent:-999em}#post-formats-select{line-height:2em}label.post-format-icon{margin-left:5px;padding:2px 0 2px 21px}.post-format-icon.post-format-standard{background-position:0 0}.post-format-icon.post-format-image{background-position:0 -32px}.post-format-icon.post-format-gallery{background-position:0 -64px}.post-format-icon.post-format-audio{background-position:0 -96px}.post-format-icon.post-format-video{background-position:0 -128px}.post-format-icon.post-format-chat{background-position:0 -160px}.post-format-icon.post-format-status{background-position:0 -192px}.post-format-icon.post-format-aside{background-position:0 -224px}.post-format-icon.post-format-quote{background-position:0 -256px}.post-format-icon.post-format-link{background-position:0 -288px}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border-style:solid;border-width:1px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.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 .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;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;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.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}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;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 .media-item-info tr{background-color:transparent}.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:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.media-item .edit-attachment,.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}.media-new-php #media-items{margin:1em 0}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#f7f7f7;background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#f7f7f7));background-image:-webkit-linear-gradient(bottom,#fff,#f7f7f7);background-image:-moz-linear-gradient(bottom,#fff,#f7f7f7);background-image:-o-linear-gradient(bottom,#fff,#f7f7f7);background-image:linear-gradient(to top,#fff,#f7f7f7);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#8cc1e9;background-image:-webkit-gradient(linear,left bottom,left top,from(#72a7cf),to(#8cc1e9));background-image:-webkit-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-moz-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:-o-linear-gradient(bottom,#72a7cf,#8cc1e9);background-image:linear-gradient(to top,#72a7cf,#8cc1e9);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:600px;height:300px;overflow:hidden;padding:33px 0 51px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;padding:6px;height:100%}.find-box-search{overflow:hidden;padding:9px;position:relative}.find-box-search .spinner{float:none;left:125px;position:absolute;top:9px}#find-posts-input{float:left;width:140px;height:24px}#find-posts-search{float:left;margin:1px 4px 0 3px}#find-posts-response{margin:8px 0;padding:0 1px 6px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:3px 0 0 8px;width:15px}.find-box-buttons{padding:8px;overflow:hidden}.find-box #resize-se{position:absolute;right:1px;bottom:1px}.ui-find-overlay{position:absolute;top:0;left:0;background-color:#000;opacity:.6;filter:alpha(opacity=60)}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;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}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.post-php .imgedit-wrap table{width:100%}.describe .imgedit-wrap table td,.wp_attachment_holder .imgedit-wrap table td{vertical-align:top;padding-top:0}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}.wp_attachment_holder .imgedit-wrap table td.imgedit-settings{width:250px}td.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;background-size:16px 16px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.spinner{background:url(../images/wpspin_light.gif) no-repeat;background-size:16px 16px;display:none;float:right;opacity:.7;filter:alpha(opacity=70);width:16px;height:16px;margin:5px 5px 0}.no-float{float:none}.media-disabled,.imgedit-settings .disabled{color:grey}.wp_attachment_image,.A1B1{overflow:hidden}.wp_attachment_image .button,.A1B1 .button{float:left}.no-js .wp_attachment_image .button{display:none}.wp_attachment_image .spinner,.A1B1 .spinner{float:left;padding:0 4px 4px;vertical-align:bottom}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url('../images/imgedit-icons.png') no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}a.imgedit-help-toggle{text-decoration:none}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 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{border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;margin-bottom:8px;padding:2px 10px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .spinner{padding:2px 0 0;vertical-align:top;float:right}#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}#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}.comment-php .wp-editor-area{height:200px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-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}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}.theme-install-php .spinner{margin-top:9px}h3.available-themes{margin:.3em 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}.available-theme a.screenshot:focus{border-color:#777}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}.ie8 .available-theme .action-links li{padding-right:7px;margin-right:7px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom-width:1px;border-bottom-style:solid;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.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}.nav-tab{border-style:solid;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom-width:1px;border-bottom-style:solid;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#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}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a,.pressthis a:hover,.pressthis a:focus,.pressthis a:active{display:inline-block;position:relative;cursor:move;color:#333;background:#e6e6e6;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(7%,#e6e6e6),color-stop(77%,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(to top,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:active{outline:0}.pressthis a:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;background-size:24px 20px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .spinner{float:none;margin:-3px 3px}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#wpfooter p{margin:0;line-height:20px}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.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 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img,.about-wrap .feature-section .video{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section .video video{max-width:100%}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.images-stagger-right img,.about-wrap .feature-section.images-stagger-right .video{float:right;margin:0 5px 12px 2em}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 2em 12px 5px}.about-wrap .feature-section .image-100{margin:0 0 2em 0;width:100%}.about-wrap .feature-section .image-66{width:65%}.about-wrap .feature-section .image-66.video{max-width:600px}.about-wrap .feature-section .image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .images-stagger-right img.image-30:nth-child(2){margin-left:1em}.about-wrap .feature-section.col{margin-bottom:0}.about-wrap .feature-section.col h4{margin:0 0 .6em 0}.about-wrap .feature-section.col .last-feature{margin-right:0}.about-wrap .feature-section.two-col div{width:47%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .changelog .feature-section{overflow:hidden}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img,.about-wrap .feature-section.images-stagger-right .video{clear:both}.about-wrap .feature-section .video.image-66{float:none;width:98%;max-width:98%}.about-wrap .feature-section.images-stagger-right .video.image-66{margin-left:3px}}@media only screen and (max-width:768px){.about-wrap .feature-section .image-66{float:none;width:98%;max-width:98%}.about-wrap .feature-section.images-stagger-right .image-66{margin-left:3px}.about-wrap .feature-section.images-stagger-left .image-66{margin-right:3px}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.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{float:left;margin-right:10px}.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{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.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:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.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{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay-sidebar-content .accordion-section:first-child{border-top:1px solid #fff}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay a.collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat -1px -73px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:-1px -109px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-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:#fff url("../images/wpspin_light.gif") no-repeat fixed center center;background-size:16px 16px}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .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}.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 .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,#poststuff .inside #page_template{max-width:100%}.inline-edit-row #post_parent,.inline-edit-row select[name="page_template"]{max-width:80%}.ie8 #poststuff .inside #parent_id,.ie8 #poststuff .inside #page_template,.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name="page_template"]{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}.edit-form-section{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 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:30px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top-width:1px;border-top-style:solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}.no-js #dashboard_quick_press{display:none}#dashboard_quick_press .easy-blogging{padding:0 8px;text-align:left}#dashboard_quick_press .input-text-wrap{position:relative}#dashboard_quick_press .prompt{color:#bbb;position:absolute}#dashboard_quick_press div.updated{padding:0 5px}#title-wrap label,#tags-input-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;line-height:100%;outline:0}#tags-input-wrap #tags-input{outline:0}#title-wrap #title-prompt-text{font-size:1.3em;padding:5px 8px}#tags-input-wrap #tags-input-prompt-text{font-size:1em;padding:4px 8px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 0}#dashboard_quick_press .wp-media-buttons{margin:0 0 .2em 1px;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 .7em 0 1px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit .spinner{vertical-align:middle;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#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;text-shadow:none;background:transparent none;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;outline:0;overflow:hidden;padding-bottom:15px;display:block}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}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}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}.no-js #message{display:block}#nav-menu-meta ul.outer-border{-webkit-border-radius:3px;border-radius:3px}.accordion-section ul.category-tabs,.accordion-section ul.add-menu-item-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 .postbox,.metabox-holder-disabled .accordion-section-content{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:0;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{font-style:italic;font-weight:normal;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;-webkit-border-radius:3px;border-radius:3px}.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 p{margin:.3em 0 .6em}.menu-edit #post-body-content h3{margin:0 0 10px}.menu-settings{margin-top:2em;overflow:hidden}.menu-settings dl{margin:0 0 10px;overflow:hidden;position:relative}.menu-settings dd{float:left;margin:0;width:60%}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{font-size:11px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid;margin-bottom:13px}#nav-menu-header .menu-name-label{margin-top:2px}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat td.menu-location-menus{padding-bottom:5px}.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-edit-menu-link,.locations-add-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{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input,.accordion-container .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}#nav-menu-meta .accordion-container .top{border-top:1px solid #dfdfdf}#nav-menu-meta .accordion-container .accordion-section:first-child,#nav-menu-meta .accordion-container .accordion-section:first-child h3,#nav-menu-meta .accordion-container .top,#nav-menu-meta .accordion-container .top h3{-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}#nav-menu-meta .accordion-container .accordion-section:last-child,#nav-menu-meta .accordion-container .accordion-section:last-child .accordion-section-content,#nav-menu-meta .accordion-container .bottom,#nav-menu-meta .accordion-container .bottom:not(.open) h3{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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 .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button.right,.button-secondary.right,.button-primary.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox .spinner{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#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:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom: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-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-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(to top,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.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{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.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;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:2px 0 1px}.nav-menus-php .blank-slate .menu-settings{display:none}.nav-menus-php .delete-action{float:left;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#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}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20121108') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20121108') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px;padding:0}.press-this #photo-add-url-div input[type="text"]{width:220px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-32px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px;overflow:hidden}#waiting span{float:right;margin:0 0 0 5px}#waiting .spinner{display:block}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:120px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:345px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}.press-this #publishing-actions .spinner{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline-block;vertical-align:top;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;display:inline-block}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .sidebar-name{cursor:pointer}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;display:inline-block;vertical-align:top}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:27px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;padding-bottom:.2em;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name .spinner{float:none;margin:0 3px -3px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.ui-sortable,.ui-draggable{-ms-touch-action:none}.accordion-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.accordion-section:first-child{border-top:1px solid #dfdfdf}.accordion-section:last-child{box-shadow:0 1px 0 0 #fff}.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:#fdfdfd;border-left:1px solid #dfdfdf;border-right:1px solid #dfdfdf}.accordion-section-title{margin:0;padding:15px 20px;position:relative;border-left:1px solid #dfdfdf;border-right:1px solid #dfdfdf;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:hover:after,.accordion-section-title:focus:after{border-color:#aaa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title{padding:10px 20px;color:#464646;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background:#f5f5f5;background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#f5f5f5));background-image:-webkit-linear-gradient(bottom,#eee,#f5f5f5);background-image:-moz-linear-gradient(bottom,#eee,#f5f5f5);background-image:-o-linear-gradient(bottom,#eee,#f5f5f5);background-image:linear-gradient(to top,#eee,#f5f5f5)}.control-section .accordion-section-title:after{top:15px}.js .control-section:hover .accordion-section-title,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section .accordion-section-title:focus{color:#000;background:#f9f9f9;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.control-section.open .accordion-section-title{border-bottom:1px solid #dfdfdf}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@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{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.press-this .tagchecklist span a{background-image:url('../images/xit-2x.gif');background-size:20px auto}.js .postbox:hover .handlediv,.js .stuffbox:hover .handlediv,.widget-top a.widget-action{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.widget-top a.widget-action:hover{background-image:url('../images/arrows-dark-2x.png');background-size:15px 123px}.post-com-count{background-image:url('../images/bubble_bg-2x.gif');background-size:18px 100px}tr.wp-locked .locked-indicator{background-image:url('../images/lock-2x.png');background-size:16px 16px}th .comment-grey-bubble{background-image:url('../images/comment-grey-bubble-2x.png');background-size:12px 12px}.sorting-indicator{background-image:url('../images/sort-2x.gif?ver=20130102');background-size:14px 4px}#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url('../images/resize-2x.gif') no-repeat scroll right bottom;background-size:11px 11px}div.star-holder{background:url('../images/stars-2x.png?ver=20121108') repeat-x bottom left;background-size:21px 37px}div.star-holder .star-rating{background:url('../images/stars-2x.png?ver=20121108') repeat-x top left;background-size:21px 37px}.welcome-panel .welcome-panel-close:before{background-image:url('../images/xit-2x.gif');background-size:20px auto}.welcome-panel .welcome-icon{background-image:url('../images/welcome-icons-2x.png')}.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}.wp-full-overlay .collapse-sidebar-arrow{background-image:url('../images/arrows-2x.png');background-size:15px 123px}.pressthis a span{background-image:url(../images/press-this-2x.png?v=20121105)}.imgedit-crop,.imgedit-rleft,.imgedit-rright,.imgedit-flipv,.imgedit-fliph,.imgedit-undo,.imgedit-redo{background-image:url('../images/imgedit-icons-2x.png');background-size:260px 64px}.spinner,.imgedit-wait,.customize-loading #customize-container{background-image:url(../images/wpspin_light-2x.gif)}.wp-slider .ui-slider-handle:before{background-image:url(../images/arrows-pr-2x.png);background-size:16px 102px}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-ru-ru #customize-header-actions .button{padding:0 8px 1px}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}
\ No newline at end of file
diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php
index a924ecaf7..ac2941f28 100644
--- a/wp-admin/custom-background.php
+++ b/wp-admin/custom-background.php
@@ -203,16 +203,17 @@ if ( $bgcolor = get_background_color() )
 	$background_styles .= 'background-color: #' . $bgcolor . ';';
 
 if ( get_background_image() ) {
+	$background_image_thumb = esc_url( set_url_scheme( get_theme_mod( 'background_image_thumb', str_replace( '%', '%%', get_background_image() ) ) ) );
 	// background-image URL must be single quote, see below
-	$background_styles .= ' background-image: url(\'' . set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ) . '\');'
+	$background_styles .= ' background-image: url(\'' . $background_image_thumb . '\');'
 		. ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';'
 		. ' background-position: top ' . get_theme_mod('background_position_x', 'left');
 }
 ?>
 <div id="custom-background-image" style="<?php echo $background_styles; ?>"><?php // must be double quote, see above ?>
 <?php if ( get_background_image() ) { ?>
-<img class="custom-background-image" src="<?php echo set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ); ?>" style="visibility:hidden;" alt="" /><br />
-<img class="custom-background-image" src="<?php echo set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ); ?>" style="visibility:hidden;" alt="" />
+<img class="custom-background-image" src="<?php echo $background_image_thumb; ?>" style="visibility:hidden;" alt="" /><br />
+<img class="custom-background-image" src="<?php echo $background_image_thumb; ?>" style="visibility:hidden;" alt="" />
 <?php } ?>
 </div>
 <?php } ?>
@@ -301,7 +302,7 @@ if ( get_background_image() ) {
 </tr>
 
 <tr valign="top">
-<th scope="row"><?php _e( 'Attachment' ); ?></th>
+<th scope="row"><?php _ex( 'Attachment', 'Background Attachment' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Attachment' ); ?></span></legend>
 <label>
 <input name="background-attachment" type="radio" value="scroll" <?php checked('scroll', get_theme_mod('background_attachment', 'scroll')); ?> />
diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php
index 14f01dfb5..12288430c 100644
--- a/wp-admin/custom-header.php
+++ b/wp-admin/custom-header.php
@@ -663,8 +663,8 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
 			list( $width, $height, $type, $attr ) = getimagesize( $file );
 		} else {
 			$data = wp_get_attachment_metadata( $attachment_id );
-			$height = $data[ 'height' ];
-			$width = $data[ 'width' ];
+			$height = isset( $data[ 'height' ] ) ? $data[ 'height' ] : 0;
+			$width = isset( $data[ 'width' ] ) ? $data[ 'width' ] : 0;
 			unset( $data );
 		}
 
@@ -1001,6 +1001,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
 
 		$default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );
 
+		$default_data = array();
 		foreach ( $this->default_headers as $header => $details ) {
 			if ( $details['url'] == $default ) {
 				$default_data = $details;
diff --git a/wp-admin/customize.php b/wp-admin/customize.php
index 093f9987b..a9e05c2fd 100644
--- a/wp-admin/customize.php
+++ b/wp-admin/customize.php
@@ -36,6 +36,8 @@ do_action( 'customize_controls_init' );
 wp_enqueue_script( 'customize-controls' );
 wp_enqueue_style( 'customize-controls' );
 
+wp_enqueue_script( 'accordion' );
+
 do_action( 'customize_controls_enqueue_scripts' );
 
 // Let's roll.
@@ -44,7 +46,7 @@ do_action( 'customize_controls_enqueue_scripts' );
 wp_user_settings();
 _wp_admin_html_begin();
 
-$body_class = 'wp-core-ui';
+$body_class = 'wp-core-ui js';
 
 if ( wp_is_mobile() ) :
 	$body_class .= ' mobile';
@@ -88,16 +90,16 @@ do_action( 'customize_controls_print_scripts' );
 			$cannot_expand = ! ( $screenshot || $wp_customize->theme()->get('Description') );
 		?>
 
-		<div class="wp-full-overlay-sidebar-content" tabindex="-1">
-			<div id="customize-info" class="customize-section<?php if ( $cannot_expand ) echo ' cannot-expand'; ?>">
-				<div class="customize-section-title" aria-label="<?php esc_attr_e( 'Theme Customizer Options' ); ?>" tabindex="0">
+		<div class="wp-full-overlay-sidebar-content accordion-container" tabindex="-1">
+			<div id="customize-info" class="accordion-section <?php if ( $cannot_expand ) echo ' cannot-expand'; ?>">
+				<div class="accordion-section-title" aria-label="<?php esc_attr_e( 'Theme Customizer Options' ); ?>" tabindex="0">
 					<span class="preview-notice"><?php
 						/* translators: %s is the theme name in the Customize/Live Preview pane */
 						echo sprintf( __( 'You are previewing %s' ), '<strong class="theme-name">' . $wp_customize->theme()->display('Name') . '</strong>' );
 					?></span>
 				</div>
 				<?php if ( ! $cannot_expand ) : ?>
-				<div class="customize-section-content">
+				<div class="accordion-section-content">
 					<?php if ( $screenshot ) : ?>
 						<img class="theme-screenshot" src="<?php echo esc_url( $screenshot ); ?>" />
 					<?php endif; ?>
diff --git a/wp-admin/edit-comments.php b/wp-admin/edit-comments.php
index 174cd9af1..889270938 100644
--- a/wp-admin/edit-comments.php
+++ b/wp-admin/edit-comments.php
@@ -20,9 +20,9 @@ if ( $doaction ) {
 	check_admin_referer( 'bulk-comments' );
 
 	if ( 'delete_all' == $doaction && !empty( $_REQUEST['pagegen_timestamp'] ) ) {
-		$comment_status = $wpdb->escape( $_REQUEST['comment_status'] );
-		$delete_time = $wpdb->escape( $_REQUEST['pagegen_timestamp'] );
-		$comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = '$comment_status' AND '$delete_time' > comment_date_gmt" );
+		$comment_status = wp_unslash( $_REQUEST['comment_status'] );
+		$delete_time = wp_unslash( $_REQUEST['pagegen_timestamp'] );
+		$comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = %s AND %s > comment_date_gmt", $comment_status, $delete_time ) );
 		$doaction = 'delete';
 	} elseif ( isset( $_REQUEST['delete_comments'] ) ) {
 		$comment_ids = $_REQUEST['delete_comments'];
@@ -95,7 +95,7 @@ if ( $doaction ) {
 	wp_safe_redirect( $redirect_to );
 	exit;
 } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) {
-	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) );
+	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
 	 exit;
 }
 
@@ -105,7 +105,7 @@ 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));
+	$title = sprintf( __( 'Comments on &#8220;%s&#8221;' ), wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '&hellip;' ) );
 else
 	$title = __('Comments');
 
@@ -143,17 +143,17 @@ require_once('./admin-header.php');
 <?php screen_icon(); ?>
 <h2><?php
 if ( $post_id )
-	echo sprintf(__('Comments on &#8220;%s&#8221;'),
-		sprintf('<a href="%s">%s</a>',
-			get_edit_post_link($post_id),
-			wp_html_excerpt(_draft_or_post_title($post_id), 50)
+	echo sprintf( __( 'Comments on &#8220;%s&#8221;' ),
+		sprintf( '<a href="%s">%s</a>',
+			get_edit_post_link( $post_id ),
+			wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '&hellip;' )
 		)
 	);
 else
 	echo __('Comments');
 
 if ( isset($_REQUEST['s']) && $_REQUEST['s'] )
-	printf( '<span class="subtitle">' . sprintf( __( 'Search results for &#8220;%s&#8221;' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ) . '</span>' ); ?>
+	printf( '<span class="subtitle">' . sprintf( __( 'Search results for &#8220;%s&#8221;' ), wp_html_excerpt( esc_html( wp_unslash( $_REQUEST['s'] ) ), 50, '&hellip;' ) ) . '</span>' ); ?>
 </h2>
 
 <?php
diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php
index fdf21139e..f3a65e52c 100644
--- a/wp-admin/edit-form-advanced.php
+++ b/wp-admin/edit-form-advanced.php
@@ -29,6 +29,9 @@ if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type,
 	wp_enqueue_media( array( 'post' => $post_ID ) );
 }
 
+// Add the local autosave notice HTML
+add_action( 'admin_footer', '_local_storage_notice' );
+
 $messages = array();
 $messages['post'] = array(
 	 0 => '', // Unused. Messages start at index 1.
@@ -95,6 +98,9 @@ if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql
 			break;
 		}
 	}
+	// If this autosave isn't different from the current post, begone.
+	if ( ! $notice )
+		wp_delete_post_revision( $autosave->ID );
 	unset($autosave_field, $_autosave_field);
 }
 
@@ -103,13 +109,30 @@ $post_type_object = get_post_type_object($post_type);
 // All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
 require_once('./includes/meta-boxes.php');
 
+
+$publish_callback_args = null;
+if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) {
+	$revisions = wp_get_post_revisions( $post_ID );
+
+	// Check if the revisions have been upgraded
+	if ( ! empty( $revisions ) && _wp_get_post_revision_version( end( $revisions ) ) < 1 )
+		_wp_upgrade_revisions_of_post( $post, $revisions );
+
+	// We should aim to show the revisions metabox only when there are revisions.
+	if ( count( $revisions ) > 1 ) {
+		reset( $revisions ); // Reset pointer for key()
+		$publish_callback_args = array( 'revisions_count' => count( $revisions ), 'revision_id' => key( $revisions ) );
+		add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core');
+	}
+}
+
 if ( 'attachment' == $post_type ) {
 	wp_enqueue_script( 'image-edit' );
 	wp_enqueue_style( 'imgareaselect' );
 	add_meta_box( 'submitdiv', __('Save'), 'attachment_submit_meta_box', null, 'side', 'core' );
 	add_action( 'edit_form_after_title', 'edit_form_image_editor' );
 } else {
-	add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core' );
+	add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', null, 'side', 'core', $publish_callback_args );
 }
 
 if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) )
@@ -132,8 +155,15 @@ foreach ( get_object_taxonomies( $post ) as $tax_name ) {
 if ( post_type_supports($post_type, 'page-attributes') )
 	add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', null, 'side', 'core');
 
-if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) )
-		add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', null, 'side', 'low');
+$audio_post_support = $video_post_support = false;
+$theme_support = current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' );
+if ( 'attachment' === $post_type && ! empty( $post->post_mime_type ) ) {
+	$audio_post_support = 0 === strpos( $post->post_mime_type, 'audio/' ) && current_theme_supports( 'post-thumbnails', 'attachment:audio' ) && post_type_supports( 'attachment:audio', 'thumbnail' );
+	$video_post_support = 0 === strpos( $post->post_mime_type, 'video/' ) && current_theme_supports( 'post-thumbnails', 'attachment:video' ) && post_type_supports( 'attachment:video', 'thumbnail' );
+}
+
+if ( $theme_support || $audio_post_support || $video_post_support )
+	add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', null, 'side', 'low');
 
 if ( post_type_supports($post_type, 'excerpt') )
 	add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core');
@@ -159,9 +189,6 @@ if ( post_type_supports($post_type, 'author') ) {
 		add_meta_box('authordiv', __('Author'), 'post_author_meta_box', null, 'normal', 'core');
 }
 
-if ( post_type_supports($post_type, 'revisions') && 0 < $post_ID && wp_get_post_revisions( $post_ID ) )
-	add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core');
-
 do_action('add_meta_boxes', $post_type, $post);
 do_action('add_meta_boxes_' . $post_type, $post);
 
@@ -291,11 +318,17 @@ if ( isset( $post_new_file ) && current_user_can( $post_type_object->cap->create
 	echo ' <a href="' . esc_url( $post_new_file ) . '" class="add-new-h2">' . esc_html( $post_type_object->labels->add_new ) . '</a>';
 ?></h2>
 <?php if ( $notice ) : ?>
-<div id="notice" class="error"><p><?php echo $notice ?></p></div>
+<div id="notice" class="error"><p id="has-newer-autosave"><?php echo $notice ?></p></div>
 <?php endif; ?>
 <?php if ( $message ) : ?>
 <div id="message" class="updated"><p><?php echo $message; ?></p></div>
 <?php endif; ?>
+<div id="lost-connection-notice" class="error hidden">
+	<p><span class="spinner"></span> <?php _e( '<strong>Connection lost.</strong> Saving has been disabled until you&#8217;re reconnected.' ); ?>
+	<span class="hide-if-no-sessionstorage"><?php _e( 'We&#8217;re backing up this post in your browser, just in case.' ); ?></span>
+	</p>
+</div>
+
 <form name="post" action="post.php" method="post" id="post"<?php do_action('post_edit_form_tag', $post); ?>>
 <?php wp_nonce_field($nonce_action); ?>
 <input type="hidden" id="user-id" name="user_ID" value="<?php echo (int) $user_ID ?>" />
@@ -304,7 +337,7 @@ if ( isset( $post_new_file ) && current_user_can( $post_type_object->cap->create
 <input type="hidden" id="post_author" name="post_author" value="<?php echo esc_attr( $post->post_author ); ?>" />
 <input type="hidden" id="post_type" name="post_type" value="<?php echo esc_attr( $post_type ) ?>" />
 <input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo esc_attr( $post->post_status) ?>" />
-<input type="hidden" id="referredby" name="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<input type="hidden" id="referredby" name="referredby" value="<?php echo esc_url(wp_get_referer()); ?>" />
 <?php if ( ! empty( $active_post_lock ) ) { ?>
 <input type="hidden" id="active_post_lock" value="<?php echo esc_attr( implode( ':', $active_post_lock ) ); ?>" />
 <?php
@@ -320,9 +353,9 @@ wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 ?>
 
 <div id="poststuff">
-
 <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
 <div id="post-body-content">
+
 <?php if ( post_type_supports($post_type, 'title') ) { ?>
 <div id="titlediv">
 <div id="titlewrap">
@@ -336,10 +369,12 @@ $shortlink = wp_get_shortlink($post->ID, 'post');
 if ( !empty($shortlink) )
     $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 ) ) ) { ?>
+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;
+?>
 	<div id="edit-slug-box" class="hide-if-no-js">
 	<?php
-		if ( $sample_permalink_html && 'auto-draft' != $post->post_status )
+		if ( $has_sample_permalink )
 			echo $sample_permalink_html;
 	?>
 	</div>
@@ -358,10 +393,13 @@ do_action( 'edit_form_after_title', $post );
 
 if ( post_type_supports($post_type, 'editor') ) {
 ?>
-<div id="postdivrich" class="postarea">
-
-<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabfocus_elements' => 'sample-permalink,post-preview', 'editor_height' => 360) ); ?>
+<div id="postdivrich" class="postarea edit-form-section">
 
+<?php wp_editor( $post->post_content, 'content', array(
+	'dfw' => true,
+	'tabfocus_elements' => 'insert-media-button,save-post',
+	'editor_height' => 360,
+) ); ?>
 <table id="post-status-info" cellspacing="0"><tbody><tr>
 	<td id="wp-word-count"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></td>
 	<td class="autosave-info">
@@ -381,9 +419,10 @@ if ( post_type_supports($post_type, 'editor') ) {
 </tr></tbody></table>
 
 </div>
-<?php } ?>
+<?php }
 
-<?php do_action( 'edit_form_after_editor', $post ); ?>
+do_action( 'edit_form_after_editor', $post );
+?>
 </div><!-- /post-body-content -->
 
 <div id="postbox-container-1" class="postbox-container">
diff --git a/wp-admin/edit-form-comment.php b/wp-admin/edit-form-comment.php
index 14a296680..d9a0523ed 100644
--- a/wp-admin/edit-form-comment.php
+++ b/wp-admin/edit-form-comment.php
@@ -23,7 +23,7 @@ if ( !defined('ABSPATH') )
 <input type="hidden" name="comment_post_ID" value="<?php echo esc_attr( $comment->comment_post_ID ); ?>" />
 
 <div id="post-body" class="metabox-holder columns-2">
-<div id="post-body-content">
+<div id="post-body-content" class="edit-form-section">
 <div id="namediv" class="stuffbox">
 <h3><label for="name"><?php _e( 'Author' ) ?></label></h3>
 <div class="inside">
@@ -63,7 +63,7 @@ if ( !defined('ABSPATH') )
 
 <div id="postdiv" class="postarea">
 <?php
-	$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
+	$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' );
 	wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
 	wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
 </div>
@@ -132,7 +132,7 @@ do_meta_boxes(null, 'normal', $comment);
 
 <input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID) ?>" />
 <input type="hidden" name="p" value="<?php echo esc_attr($comment->comment_post_ID) ?>" />
-<input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url( wp_get_referer() ); ?>" />
 <?php wp_original_referer_field(true, 'previous'); ?>
 <input type="hidden" name="noredir" value="1" />
 
diff --git a/wp-admin/edit-link-form.php b/wp-admin/edit-link-form.php
index 6d81ec014..0aca6e7bc 100644
--- a/wp-admin/edit-link-form.php
+++ b/wp-admin/edit-link-form.php
@@ -126,7 +126,6 @@ do_meta_boxes(null, 'advanced', $link);
 if ( $link_id ) : ?>
 <input type="hidden" name="action" value="save" />
 <input type="hidden" name="link_id" value="<?php echo (int) $link_id; ?>" />
-<input type="hidden" name="order_by" value="<?php echo esc_attr($order_by); ?>" />
 <input type="hidden" name="cat_id" value="<?php echo (int) $cat_id ?>" />
 <?php else: ?>
 <input type="hidden" name="action" value="add" />
diff --git a/wp-admin/edit-tags.php b/wp-admin/edit-tags.php
index 7250a6698..8375202df 100644
--- a/wp-admin/edit-tags.php
+++ b/wp-admin/edit-tags.php
@@ -164,7 +164,7 @@ break;
 
 default:
 if ( ! empty($_REQUEST['_wp_http_referer']) ) {
-	$location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) );
+	$location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) );
 
 	if ( ! empty( $_REQUEST['paged'] ) )
 		$location = add_query_arg( 'paged', (int) $_REQUEST['paged'] );
@@ -265,7 +265,7 @@ $messages[6] = __('Items deleted.');
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title );
 if ( !empty($_REQUEST['s']) )
-	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_REQUEST['s']) ) ); ?>
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( wp_unslash($_REQUEST['s']) ) ); ?>
 </h2>
 
 <?php if ( isset($_REQUEST['message']) && ( $msg = (int) $_REQUEST['message'] ) ) : ?>
diff --git a/wp-admin/edit.php b/wp-admin/edit.php
index 9eae3cf39..65fd03426 100644
--- a/wp-admin/edit.php
+++ b/wp-admin/edit.php
@@ -48,7 +48,7 @@ $doaction = $wp_list_table->current_action();
 if ( $doaction ) {
 	check_admin_referer('bulk-posts');
 
-	$sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() );
+	$sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'locked', 'ids'), wp_get_referer() );
 	if ( ! $sendback )
 		$sendback = admin_url( $parent_file );
 	$sendback = add_query_arg( 'paged', $pagenum, $sendback );
@@ -75,22 +75,29 @@ if ( $doaction ) {
 
 	switch ( $doaction ) {
 		case 'trash':
-			$trashed = 0;
+			$trashed = $locked = 0;
+
 			foreach( (array) $post_ids as $post_id ) {
-				if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
+				if ( !current_user_can( 'delete_post', $post_id) )
 					wp_die( __('You are not allowed to move this item to the Trash.') );
 
+				if ( wp_check_post_lock( $post_id ) ) {
+					$locked++;
+					continue;
+				}
+
 				if ( !wp_trash_post($post_id) )
 					wp_die( __('Error in moving to Trash.') );
 
 				$trashed++;
 			}
-			$sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback );
+
+			$sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback );
 			break;
 		case 'untrash':
 			$untrashed = 0;
 			foreach( (array) $post_ids as $post_id ) {
-				if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
+				if ( !current_user_can( 'delete_post', $post_id) )
 					wp_die( __('You are not allowed to restore this item from the Trash.') );
 
 				if ( !wp_untrash_post($post_id) )
@@ -105,15 +112,15 @@ if ( $doaction ) {
 			foreach( (array) $post_ids as $post_id ) {
 				$post_del = get_post($post_id);
 
-				if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
+				if ( !current_user_can( 'delete_post', $post_id ) )
 					wp_die( __('You are not allowed to delete this item.') );
 
 				if ( $post_del->post_type == 'attachment' ) {
 					if ( ! wp_delete_attachment($post_id) )
-						wp_die( __('Error in deleting...') );
+						wp_die( __('Error in deleting.') );
 				} else {
 					if ( !wp_delete_post($post_id) )
-						wp_die( __('Error in deleting...') );
+						wp_die( __('Error in deleting.') );
 				}
 				$deleted++;
 			}
@@ -138,7 +145,7 @@ if ( $doaction ) {
 	wp_redirect($sendback);
 	exit();
 } elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
-	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) );
+	 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ) );
 	 exit;
 }
 
diff --git a/wp-admin/freedoms.php b/wp-admin/freedoms.php
index 1b462adcf..d7accd1b5 100644
--- a/wp-admin/freedoms.php
+++ b/wp-admin/freedoms.php
@@ -19,7 +19,7 @@ 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 to the latest version! WordPress %s is more polished and enjoyable than ever before. We hope you like it.' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s makes your writing experience even better.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -46,8 +46,8 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <p><?php
 
-$plugins_url = current_user_can( 'activate_plugins' ) ? admin_url( 'plugins.php' ) : 'http://wordpress.org/extend/plugins/';
-$themes_url = current_user_can( 'switch_themes' ) ? admin_url( 'themes.php' ) : 'http://wordpress.org/extend/themes/';
+$plugins_url = current_user_can( 'activate_plugins' ) ? admin_url( 'plugins.php' ) : 'http://wordpress.org/plugins/';
+$themes_url = current_user_can( 'switch_themes' ) ? admin_url( 'themes.php' ) : 'http://wordpress.org/themes/';
 
 printf( __( 'Every plugin and theme in WordPress.org&#8217;s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding <a href="%1$s">plugins</a> and <a href="%2$s">themes</a> there. If you get a plugin or theme from another source, make sure to <a href="%3$s">ask them if it&#8217;s GPL</a> first. If they don&#8217;t respect the WordPress license, we don&#8217;t recommend them.' ), $plugins_url, $themes_url, 'http://wordpress.org/about/license/' ); ?></p>
 
diff --git a/wp-admin/images/arrows-pr-2x.png b/wp-admin/images/arrows-pr-2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a384c4028d9edb0a2dd9470662d9fac3f6dbee09
GIT binary patch
literal 723
zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU^v6U%)r2)suXAs;sp4Fxc>kDKP@dyrE#rF
z;~EDC2j!-<$_=a1z<{BlL9Ss{a&mHFVqz*7C^fBCX;=$VpF2sVajjItvb3}`orVnz
z4GlVt8+98tXg6%oY22XDuwJKOqi*8{<;JzT4I6bDHfYyv)M;3w&@f-OVS`S?MxDkD
zI*sc!YB%UqZ%9Z;&~8|z-LO72HC4A^qjtkOu;ppGjT^KZ*Q+$H0U1@XRIXyFOv5Ur
z#x=@KAg4w}MI|REr>3T+q@<*!rRg?qRB2ipx_5~l0|SF&NswPK!`0tcS+;v@|IMQ1
zp*1xtYpMwQYmwJ~nSQ*FdL+<u>HXdkM?Hb17xxwG$_mK!zF+3_Zpw$q?1zGaLQ~$o
z6%=}#{r6qWbOr{-QcoAhkczms6OR{ZD~h<dTRxvNS#<4_Ie+Co{QsX4B7Slb>)E6*
zt-@`!t9I?InBH)BV&B0Z-|Wsg$eat4V0O|vP&VVVWTM9TBQp=htTUK;n>D78oz;`E
zhvobgzk|#FwX@Dj`v30rfrlL`x=kF<;x{U|XijfvQW0Tgatv-zSiZ-xahXEnvLC`#
z{+u?Oaw?b2cmDcd<w}|Q?@J#RY&kB{bNg4#jYlFMo-b6>D_d2g{~>Gn5A*r{7WN#I
zPX19@clOnvkOyBQ-<rpNv0TWqX#b7p{k-dhD;BS8S>{+VfobEMS1m6;WjuLM^TeSy
zq-WQ1r}C1r6<0ql40C-y=k3EQYu7G+n(BOL+1prYK6fLg$FsjLU?@}y7h>YLIN?U3
zo_Nbb8+j3~;+=;=^27^{vWuvs8VK10TeHspCCqJd^xxg<jfVxjqglkx*CaM>^fKdN
z^;BSGX<EkM==ZaY$=8v|_oMon|Lq@7G(DYJ$G5d@`Ld!vcf}hHe`MY+*CV-Z+nM_e
P3=9mOu6{1-oD!M<`?o`Z

literal 0
HcmV?d00001

diff --git a/wp-admin/images/arrows-pr.png b/wp-admin/images/arrows-pr.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2b909b0804fb4be59ac938cd482afd192aef4ac
GIT binary patch
literal 461
zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU`XR&W?*3W8uqZCfq`K{fKQ0)|Ns9J6BFec
zRw*~Fb#QRdY21*OmX@5HoR*fR)38CgVO3gMno8qZhK2@}#x=SP8<d(>t2C@l1p}#u
zW!eqv($dnj8`i5duGOtrs?e|=#I4(?)38w`cam<yMump?2?+^lX=!p5OH~@zq@|@P
zH?CD^n6K2hM!9KiR8&-IYHCVKif-dZm8P|6X=#0Hb>1>CFzA*9`2{m*X>DhDwB6(C
zUyt9vS*|Y4nmRR0#7U(0wV=Rj#~$`&90KnIv!}clnDS2WeYVQx2Z{^~4EsG@978JN
z?)JL(9X8-`z3Y9aTL0xtrI-J<a~sP^EMlq1-_QF|{)B&O`wFqH=ev*Z$Vib*p0h!=
zW77e3ag_$6uQUF96L>L8Va5EIjSIH)F{?Cu*rF@9oniX3N4NK0ax+*|c6P64g23kZ
zM;1Gt_zRRv*efZe2s(TbEZ&+I^0_GFPq|2Tw(-FkQcpE9th&xm_unaT#B}K#i&lZu
zM*n>i7(N|Y{^_=J!pf$ExL>`j$+2k)j27Rv{rG8Gkg2)vu6%x^qxjyouI|qa3=9mO
Lu6{1-oD!M<BfrBN

literal 0
HcmV?d00001

diff --git a/wp-admin/images/lock-2x.png b/wp-admin/images/lock-2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..46c5a482b7b27d718ef1810a8eb861dbb781cc12
GIT binary patch
literal 716
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGr2>3HT>t<7UsP07SXkK5
z(9qY{R}2OvB_(BGP*_;l-Q8UT2F1n2Jv}{setsn-B@AFtTwGjQT3TFOTvSw4T3T9I
zSO_tyxVX5Yq5^DEaa>$ne0+R#baYWs(cQauZ{51}`Sa)Z@81^}7r%S=?$f7F-@bk8
z>FHU!cJ0NB7tfzR|KY=jbLY-2TefV+jvd#oUE92Q^U9Sg)6&xV`uYwWIB@jn(T<Le
zvuDqqIdf+I{P{Cy&b)vB{*^0Nu3o+R<;#~JKYslF{rmaz=N~_Q?CtG+@ZiDs@83_I
zI`#GI*W<^J@7lHN`t|FVFJJEJ>U#3zNlZ-4f&~j6J$f{2)~uH=U%q<v>d&7)&z?Oi
zEG)cn<HqaPul>#}p2NVvpi~m%7tHWXi0yBm*3Tck+CTHAc>amMF2XhS+V1k}oHO=5
z7krlg`bGY&h5if-jP{-`jv*Csxu-&lju;5I2J#!XTTZH+F>|J(&+q$gZz5)uOf9j0
za{a0Dfjj%S*MGnAT<nLX)47-N=T>{a`@ebCvdq2nK3-WTD^p-pZ9dEAOu1N6qrH)#
zSK=I_{et$)G3<*SF4Rf$%s73t;YN+!{rj_D*W{m(V75t$JyceFb7P3OEl<GGvtrT0
z`R0>OF~n$n*L*SEdj{+7lC~zFs^g3|o#r*wD4u3K{alr8GVAN>rftGv+g8rWd8oWW
z(@Onl8OtiA_cKyl|FZ8CS}wzKe~H`Xn+v3yR;FBabIUFAVZ7kFx{uT9$pyt1k)b{T
zitH?(x~E3CuF#s~-1fjhO2K4-bkjrim8}8Y?-UtUn+FLlRJyCpQRflcva7^-!W9oK
zr}z?e#)u~tx(X7neUcg8xyjFQGiOnGbg^CCum56&lRzEg)@{u)UiJ4u>6O9L)z4*}
HQ$iB}9<^)?

literal 0
HcmV?d00001

diff --git a/wp-admin/images/lock.png b/wp-admin/images/lock.png
new file mode 100644
index 0000000000000000000000000000000000000000..e17cc7dcb68a74bf580f5b0f68ca41edd77fde61
GIT binary patch
literal 338
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7B|TjnLn?0dPO#2u4G?h+
zPM1@he8OkTMgi-i_jy>>=3M2B*n5tXBU5POW+4$B9UY&C+c#Jia@(=g`$yb)Z1-F5
zpt;g5#jZ!~>t6TIWJ_=>yK<Lxl1gpVw6D{bY34e%-CgT&d5gQuah63IQ4#kyR=Zwk
zN%Uw-oUm$DJj3TXju-YSEl}X#cpg}$J!8MezW2iCCclY$P<hX<;Z4v2jZ@}a>l@zr
zHMm|jG2uC^`eH$~M#k-FpKRh!Z0gCm%{Jq@%-n3pKoM@wNdkur7(UO6=iaq$@g|-5
zGnR2~leBu?wD0}ORjbt3y`J>g;x^CR;)51_A=kfh{WCkcY0udUJH>o1mmJ-gP<M~j
v@yEl;c@}-j(^B~l^3C1(yW4ulZ~iZ@K6ELFOps(?U|{fc^>bP0l+XkK-V~Hb

literal 0
HcmV?d00001

diff --git a/wp-admin/images/post-formats-vs.png b/wp-admin/images/post-formats-vs.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8e7e8d3fd2d27c2869153338c21ab5376ddbf83
GIT binary patch
literal 2794
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
Q7#J8lUHx3vIVCg!0H&QHqW}N^

literal 0
HcmV?d00001

diff --git a/wp-admin/images/post-formats.png b/wp-admin/images/post-formats.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d749bef6ac0528d1b071f7383d1d09e5b09d95b
GIT binary patch
literal 2220
zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU^L)hVPIeoQMAlpVBjeBba4!+h<iJux*+7L
z>~Z_&?@T9b5Rmdz5vUB27I0%bDzNg_f=8b(25#ARG=%+kfm)`y_M$?e$IK<OF2v3$
zJ0_ByB`b5A(LK<yNy*M>LIcaA=I|U*A(hUX6P~N>{{4Ec@$T|6bMFm)|6kYbD}E<g
zxBvXS;=?nmIajv?D_C6=3Dc=O^v;bXdh4zEr}B3G){J#E=vb^?tM@!GsOq?v$>EkM
zhPDoD{QCR9-efs+cDv}E`zQ34O*pmqwAg<|r5Ag-=l{LBYWB5r;az##47zg9?BH18
zRPsAi@Z(9vo64n+c<)}WxW4XbX;Z=?Lvgl7JC=+oZRYX6ETyVh6EmHAJKjw1f4VQW
zNtVZC^`*3BW<kDs?i_rH&Mpu9&z$=CXtM43i>H<d1kU*N*;`{t8~gPyqSsP4e_HOc
zaMc4Dy9bKlyqty}k2&>xFKi3fsHn*)mv^?RV>|5pKeA~-%S6K;_Ck}Issbfuil?f?
zi3mT4S4opfXnL@qRo207a);Uy)}|S67BJj6rpv%$;lRy&Cw+axBJM5xb#{x`85nsu
z5{o!{-#ks9Vew<iyc@a)4wh(3^%d~U?$|K*vjnq)I`850P9IJ4H%w)-OAxNh320cU
z-V&z$QR9HbON*WpV(QMd=QpoNR1sOZ#K23v^|C=DgEP;g>ym%=y>DMKp~ilN(}5Nz
zp}@uMVhQr^87otS6Ri%|C>{E((^K_Bv16IyE4AHg8Zw{W&q-8fFpuEm=Kgv(zTu>u
zHgkqW*WRNg%NU*CJT@@Xc%yr5^Th3u=j#@&+#a5A;1s_dxA23;iLFu+fdLFBc-Q#r
zhzLa{7bZ0tNKbm-{=apCh)>R`%QG@myK^?J@ll#=e4<b2h3t8WO9hkC;{Q8sIj~ka
zpK<PTp*|ytf4$-HACGgFo|SoQu~ugLB`4|oMFwswEV?aD8G3g-Skh84r}O+GFZNX4
zGpklS&C&QN%Re!6)7{R<M@J67)rc!g+Ma*@$K$;z8y`;ERW<qQ=K7!9E#h((L5?lb
zdMfNEmg`-Auxz#DX^UqEZn{`(=@%~9EP2n!a)<JJt6MAD%{w+cntf8VT<MRj`MS+9
z^1GPUEncT|P_$2B$CMY5ocC?-ul_%2^NGCrMIxv2W#(L;c-4<VeWuENeosZI&{|&o
z3BF2EJL_M%t%{C%+OS8}=*=yytGY~Ai(<0Y82+hpTIFi6pzpKf+y}p|f3Q8l;&&{3
z#}v-+0;4!aAAwsJE*#<UQ+86zV0`n)u;$FelAK4Z5((<|&t!Ts921k83uZWeVwf7y
z5OeORpsqxqla#oTAa9#)OYDrat-%*u)+Y!#9bTI8D7>QcK*xUppKJElV?ITmxEhn+
z+xo<KdhwcHDW3b}Cpqyf+ukt!<iR%OJF$DtdT-o&XqR<Smj>VR4(p-_e-X9i>6aV@
zS{F3<oahh@Ffs1B*pSqrqu|Hjs&Cu!CjE@|1K#`noQGyMFf%wR)HEM@ZW(>;@ket{
z52cnRo?+g*OHPzu<LGq%u){{NUyScmao9oa_a_py<D*tZGzISITFKzMN7qqoa|7p(
zHD45O?5<kkXv28kSB}$j`i~{2y_Wy@B9?gY@{64}X8k>D`2DiZJjJJsKa5>j7{sS)
z?3hq<fV=57!-MU+c(484&=G%~|E+`Z){3b@ZI9<3|IHn=ZMn$mBgcI|>gnD3C;hK8
zO(gkb64&LE4|$AECJ6<fOl0y4vN`$PIY{DPPF4LOW1S=!vpEUer@Q%?n$p{r7jOTe
zDz*QOnE&$hwgd)ku4Ct2Uo1ACW7o1%q$iy<D#C=@p0S0)iNSvJLob8ILd`X7(-`z!
z&$>Ri!sNiQP@JR5_ICQgPRG1wQB`YVvd?cfV6lx#IQ=|jvRlK#0;VMs&!%sX^jT1H
zJGE#2(U~_4JcMu8OlcB2VBIVlb1)+3#j<Jc-QPdQ+eY47zW46E<?aFn_g^m2XngSZ
z!f!=}soB+$b3d2_G8|nx#fV3B&D^HR8!aST8<{wb7F4}l82;=1FSDO@9$Xh^JP`Hs
z+GzCEC23EC7+=pGR+BkiJBnL$c}#fUJY}e^m>zX+W6<g27qwYVE|Nbgp)KXKL}&|Z
z%i%BC)jX0vK3+VZp>~r=F>P^yfYafbEP_tk8XkH7`E_}5=Hl743@k6Vvz}9CWp`AN
z)=AWS|0z<zLY{|#-M7Yt`Tm7gy_eq})Yxqek8m(?+$}4%=g1}hfbGgnN?m%71U#O)
z`=m%2&pd3ST|DEYiCWavEArp|cQ2XnhiP+-S)7bb+(zCc?Y6vlr@y7si|uYQ6pAj)
z@tT>xe#+NrPdTj&MVVK`O}WS8Dr$Z4Na!iOIOW|-b0!P;#T<Rm$i3l+QBIP!TKIfl
zj<PA`!Ka%=k1K3*TAGpKu+8hHw$sfgH@YTr@my$~z&@Q(a-(Q6!;iLnOD8EGhMK~u
zn+~7-G_@wD*G}`bfXce04SU?0o=iL%Rw1XbZBff7>B^3sUpBX0>QWF04m@;XMc?t?
z7ES-kHVLn9I?bM5I!Eqj*`=8^_H%qZxZa(Z^SbWr-KXDnUf)@KP=&92U-IS9$LC!?
zK7GVHedp(?N46Eq&c8F~-E-RmN9E$;(*;hSYATVJzP0P~sgDNS>w4}d1zN`&`%Qeg
zFCoU+K4C{;vh%6Tw|CC(6<%RzruTq*g{k(&hbwQZ_3Uf+`Q~t~Cc#_0Ux`C?r|SBt
zCAOEMMXmIds+W3&oml;;Al-9c!_{-~*CMsoM?WpF{^AjTvU5_Ysxj-qUtf&kCto=|
z`I1ncedX!|_U5VAmvg_qmBGKEJ?a*_+;8^8J7GRzXBSVpV4CvxZK{#lC7}b$gbV^0
z7i>Csy-X>>!R(4q^TB6sb^fd`t>2&ZdETri*DLOI|BLA+9`m_tzOt@gb%#GMC!ncX
w?L1FR-4(+Pzc0*kKFcF?VEu7{Yk%Z@PGu>Th{Yx{FfcH9y85}Sb4q9e0MwBJzW@LL

literal 0
HcmV?d00001

diff --git a/wp-admin/images/post-formats32-vs.png b/wp-admin/images/post-formats32-vs.png
new file mode 100644
index 0000000000000000000000000000000000000000..af2c59fe038a462cc5c7d8fb86f7528e7deb51ab
GIT binary patch
literal 7512
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

literal 0
HcmV?d00001

diff --git a/wp-admin/images/post-formats32.png b/wp-admin/images/post-formats32.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccafc80d795253b239e0d6682a84cfb5cb47ca4a
GIT binary patch
literal 7829
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

literal 0
HcmV?d00001

diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php
index c39effe75..734409fe1 100644
--- a/wp-admin/includes/ajax-actions.php
+++ b/wp-admin/includes/ajax-actions.php
@@ -10,19 +10,34 @@
  * No-privilege Ajax handlers.
  */
 
-function wp_ajax_nopriv_autosave() {
-	$id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0;
+/**
+ * Heartbeat API (experimental)
+ *
+ * Runs when the user is not logged in.
+ */
+function wp_ajax_nopriv_heartbeat() {
+	$response = array();
 
-	if ( ! $id )
-		wp_die( -1 );
+	// screen_id is the same as $current_screen->id and the JS global 'pagenow'
+	if ( ! empty($_POST['screen_id']) )
+		$screen_id = sanitize_key($_POST['screen_id']);
+	else
+		$screen_id = 'front';
 
-	$message = sprintf( __('<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="%s" target="_blank">Please log in again.</a>'), wp_login_url() );
-	$x = new WP_Ajax_Response( array(
-		'what' => 'autosave',
-		'id' => $id,
-		'data' => $message
-	) );
-	$x->send();
+	if ( ! empty($_POST['data']) ) {
+		$data = wp_unslash( (array) $_POST['data'] );
+		$response = apply_filters( 'heartbeat_nopriv_received', $response, $data, $screen_id );
+	}
+
+	$response = apply_filters( 'heartbeat_nopriv_send', $response, $screen_id );
+
+	// Allow the transport to be replaced with long-polling easily
+	do_action( 'heartbeat_nopriv_tick', $response, $screen_id );
+
+	// send the current time according to the server
+	$response['server_time'] = time();
+
+	wp_send_json($response);
 }
 
 /*
@@ -59,7 +74,7 @@ function wp_ajax_ajax_tag_search() {
 		wp_die( 0 );
 	}
 
-	$s = stripslashes( $_GET['q'] );
+	$s = wp_unslash( $_GET['q'] );
 
 	$comma = _x( ',', 'tag delimiter' );
 	if ( ',' !== $comma )
@@ -559,7 +574,7 @@ function wp_ajax_add_link_category( $action ) {
 	check_ajax_referer( $action );
 	if ( !current_user_can( 'manage_categories' ) )
 		wp_die( -1 );
-	$names = explode(',', $_POST['newcat']);
+	$names = explode(',', wp_unslash( $_POST['newcat'] ) );
 	$x = new WP_Ajax_Response();
 	foreach ( $names as $cat_name ) {
 		$cat_name = trim($cat_name);
@@ -572,7 +587,7 @@ function wp_ajax_add_link_category( $action ) {
 			continue;
 		else if ( is_array( $cat_id ) )
 			$cat_id = $cat_id['term_id'];
-		$cat_name = esc_html(stripslashes($cat_name));
+		$cat_name = esc_html( $cat_name );
 		$x->add( array(
 			'what' => 'link-category',
 			'id' => $cat_id,
@@ -651,7 +666,7 @@ function wp_ajax_get_tagcloud() {
 	$tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
 
 	if ( empty( $tags ) )
-		wp_die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') );
+		wp_die( $tax->labels->not_found );
 
 	if ( is_wp_error( $tags ) )
 		wp_die( $tags->get_error_message() );
@@ -715,22 +730,24 @@ function wp_ajax_replyto_comment( $action ) {
 	check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
 
 	$comment_post_ID = (int) $_POST['comment_post_ID'];
-	if ( !current_user_can( 'edit_post', $comment_post_ID ) )
+	$post = get_post( $comment_post_ID );
+	if ( ! $post )
 		wp_die( -1 );
 
-	$status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
+	if ( !current_user_can( 'edit_post', $comment_post_ID ) )
+		wp_die( -1 );
 
-	if ( empty($status) )
+	if ( empty( $post->post_status ) )
 		wp_die( 1 );
-	elseif ( in_array($status, array('draft', 'pending', 'trash') ) )
+	elseif ( in_array($post->post_status, array('draft', 'pending', 'trash') ) )
 		wp_die( __('ERROR: you are replying to a comment on a draft post.') );
 
 	$user = wp_get_current_user();
 	if ( $user->exists() ) {
 		$user_ID = $user->ID;
-		$comment_author       = $wpdb->escape($user->display_name);
-		$comment_author_email = $wpdb->escape($user->user_email);
-		$comment_author_url   = $wpdb->escape($user->user_url);
+		$comment_author       = wp_slash( $user->display_name );
+		$comment_author_email = wp_slash( $user->user_email );
+		$comment_author_url   = wp_slash( $user->user_url );
 		$comment_content      = trim($_POST['content']);
 		if ( current_user_can( 'unfiltered_html' ) ) {
 			if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
@@ -903,6 +920,7 @@ function wp_ajax_add_menu_item() {
 		);
 		echo walk_nav_menu_tree( $menu_items, 0, (object) $args );
 	}
+	wp_die();
 }
 
 function wp_ajax_add_meta() {
@@ -924,7 +942,7 @@ function wp_ajax_add_meta() {
 			$_POST['post_type'] = $post->post_type;
 			$_POST['post_status'] = 'draft';
 			$now = current_time('timestamp', 1);
-			$_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now));
+			$_POST['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() ) {
 				if ( is_wp_error( $pid ) ) {
@@ -956,8 +974,8 @@ function wp_ajax_add_meta() {
 		) );
 	} else { // Update?
 		$mid = (int) key( $_POST['meta'] );
-		$key = stripslashes( $_POST['meta'][$mid]['key'] );
-		$value = stripslashes( $_POST['meta'][$mid]['value'] );
+		$key = wp_unslash( $_POST['meta'][$mid]['key'] );
+		$value = wp_unslash( $_POST['meta'][$mid]['value'] );
 		if ( '' == trim($key) )
 			wp_die( __( 'Please provide a custom field name.' ) );
 		if ( '' == trim($value) )
@@ -1024,68 +1042,51 @@ function wp_ajax_add_user( $action ) {
 }
 
 function wp_ajax_autosave() {
-	global $login_grace_period;
-
 	define( 'DOING_AUTOSAVE', true );
 
-	$nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' );
+	check_ajax_referer( 'autosave', 'autosavenonce' );
 
 	$_POST['post_category'] = explode(",", $_POST['catslist']);
 	if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )
 		unset($_POST['post_category']);
 
-	$do_autosave = (bool) $_POST['autosave'];
-	$do_lock = true;
-
-	$data = $alert = '';
-	/* translators: draft saved date format, see http://php.net/date */
-	$draft_saved_date_format = __('g:i:s a');
-	/* translators: %s: date and time */
-	$message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) );
-
+	$data = '';
 	$supplemental = array();
-	if ( isset($login_grace_period) )
-		$alert .= sprintf( __('Your login has expired. Please open a new browser window and <a href="%s" target="_blank">log in again</a>. '), add_query_arg( 'interim-login', 1, wp_login_url() ) );
-
 	$id = $revision_id = 0;
 
-	$post_ID = (int) $_POST['post_ID'];
-	$_POST['ID'] = $post_ID;
-	$post = get_post($post_ID);
+	$post_id = (int) $_POST['post_id'];
+	$_POST['ID'] = $_POST['post_ID'] = $post_id;
+	$post = get_post($post_id);
 	if ( 'auto-draft' == $post->post_status )
 		$_POST['post_status'] = 'draft';
 
-	if ( $last = wp_check_post_lock( $post->ID ) ) {
-		$do_autosave = $do_lock = false;
-
-		$last_user = get_userdata( $last );
-		$last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
-		$data = __( 'Autosave disabled.' );
-
-		$supplemental['disable_autosave'] = 'disable';
-		$alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) );
-	}
-
 	if ( 'page' == $post->post_type ) {
-		if ( !current_user_can('edit_page', $post_ID) )
+		if ( !current_user_can('edit_page', $post->ID) )
 			wp_die( __( 'You are not allowed to edit this page.' ) );
 	} else {
-		if ( !current_user_can('edit_post', $post_ID) )
+		if ( !current_user_can('edit_post', $post->ID) )
 			wp_die( __( 'You are not allowed to edit this post.' ) );
 	}
 
-	if ( $do_autosave ) {
-		// Drafts and auto-drafts are just overwritten by autosave
-		if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) {
+	if ( ! empty( $_POST['autosave'] ) ) {
+		if ( ! wp_check_post_lock( $post->ID ) && get_current_user_id() == $post->post_author && ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) ) {
+			// Drafts and auto-drafts are just overwritten by autosave for the same user if the post is not locked
 			$id = edit_post();
-		} else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
+		} else {
+			// Non drafts or other users drafts are not overwritten. The autosave is stored in a special post revision for each user.
 			$revision_id = wp_create_post_autosave( $post->ID );
 			if ( is_wp_error($revision_id) )
 				$id = $revision_id;
 			else
 				$id = $post->ID;
 		}
-		$data = $message;
+
+		if ( ! is_wp_error($id) ) {
+			/* translators: draft saved date format, see http://php.net/date */
+			$draft_saved_date_format = __('g:i:s a');
+			/* translators: %s: date and time */
+			$data = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) );
+		}
 	} else {
 		if ( ! empty( $_POST['auto_draft'] ) )
 			$id = 0; // This tells us it didn't actually save
@@ -1093,32 +1094,11 @@ function wp_ajax_autosave() {
 			$id = $post->ID;
 	}
 
-	if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) {
-		$lock_result = wp_set_post_lock( $id );
-		$supplemental['active-post-lock'] = implode( ':', $lock_result );
-	}
-
-	if ( $nonce_age == 2 ) {
-		$supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
-		$supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
-		$supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
-		$supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
-		$supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' );
-		if ( $id ) {
-			if ( $_POST['post_type'] == 'post' )
-				$supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
-			elseif ( $_POST['post_type'] == 'page' )
-				$supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
-		}
-	}
-
-	if ( ! empty($alert) )
-		$supplemental['alert'] = $alert;
-
+	// @todo Consider exposing any errors, rather than having 'Saving draft...'
 	$x = new WP_Ajax_Response( array(
 		'what' => 'autosave',
 		'id' => $id,
-		'data' => $id ? $data : '',
+		'data' => $data,
 		'supplemental' => $supplemental
 	) );
 	$x->send();
@@ -1226,7 +1206,7 @@ function wp_ajax_wp_link_ajax() {
 	$args = array();
 
 	if ( isset( $_POST['search'] ) )
-		$args['s'] = stripslashes( $_POST['search'] );
+		$args['s'] = wp_unslash( $_POST['search'] );
 	$args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
 
 	require(ABSPATH . WPINC . '/class-wp-editor.php');
@@ -1327,7 +1307,7 @@ function wp_ajax_inline_save() {
 	$data = &$_POST;
 
 	$post = get_post( $post_ID, ARRAY_A );
-	$post = add_magic_quotes($post); //since it is from db
+	$post = wp_slash($post); //since it is from db
 
 	$data['content'] = $post['post_content'];
 	$data['excerpt'] = $post['post_excerpt'];
@@ -1349,6 +1329,12 @@ function wp_ajax_inline_save() {
 	if ( empty($data['ping_status']) )
 		$data['ping_status'] = 'closed';
 
+	// Hack: wp_unique_post_slug() doesn't work for drafts, so we will fake that our post is published.
+	if ( ! empty( $data['post_name'] ) && in_array( $post['post_status'], array( 'draft', 'pending' ) ) ) {
+		$post['post_status'] = 'publish';
+		$data['post_name'] = wp_unique_post_slug( $data['post_name'], $post['ID'], $post['post_status'], $post['post_type'], $post['post_parent'] );
+	}
+
 	// update the post
 	edit_post();
 
@@ -1412,7 +1398,7 @@ function wp_ajax_inline_save_tax() {
 		$parent = $parent_tag->parent;
 		$level++;
 	}
-	echo $wp_list_table->single_row( $tag, $level );
+	$wp_list_table->single_row( $tag, $level );
 	wp_die();
 }
 
@@ -1424,7 +1410,7 @@ function wp_ajax_find_posts() {
 	$post_types = get_post_types( array( 'public' => true ), 'objects' );
 	unset( $post_types['attachment'] );
 
-	$s = stripslashes( $_POST['ps'] );
+	$s = wp_unslash( $_POST['ps'] );
 	$searchand = $search = '';
 	$args = array(
 		'post_type' => array_keys( $post_types ),
@@ -1776,7 +1762,7 @@ function wp_ajax_wp_remove_post_lock() {
 	if ( $active_lock[1] != get_current_user_id() )
 		wp_die( 0 );
 
-	$new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ) + 5 ) . ':' . $active_lock[1];
+	$new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', 120 ) + 5 ) . ':' . $active_lock[1];
 	update_post_meta( $post_id, '_edit_lock', $new_lock, implode( ':', $active_lock ) );
 	wp_die( 1 );
 }
@@ -1888,11 +1874,10 @@ function wp_ajax_save_attachment() {
 		$post['post_content'] = $changes['description'];
 
 	if ( isset( $changes['alt'] ) ) {
-		$alt = get_post_meta( $id, '_wp_attachment_image_alt', true );
-		$new_alt = stripslashes( $changes['alt'] );
-		if ( $alt != $new_alt ) {
-			$new_alt = wp_strip_all_tags( $new_alt, true );
-			update_post_meta( $id, '_wp_attachment_image_alt', addslashes( $new_alt ) );
+		$alt = wp_unslash( $changes['alt'] );
+		if ( $alt != get_post_meta( $id, '_wp_attachment_image_alt', true ) ) {
+			$alt = wp_strip_all_tags( $alt, true );
+			update_post_meta( $id, '_wp_attachment_image_alt', wp_slash( $alt ) );
 		}
 	}
 
@@ -1989,7 +1974,7 @@ function wp_ajax_save_attachment_order() {
 function wp_ajax_send_attachment_to_editor() {
 	check_ajax_referer( 'media-send-to-editor', 'nonce' );
 
-	$attachment = stripslashes_deep( $_POST['attachment'] );
+	$attachment = wp_unslash( $_POST['attachment'] );
 
 	$id = intval( $attachment['id'] );
 
@@ -2015,7 +2000,7 @@ function wp_ajax_send_attachment_to_editor() {
 		$html = '<a href="' . esc_url( $url ) . '"' . $rel . '>' . $html . '</a>';
 	}
 
-	remove_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
+	remove_filter( 'media_send_to_editor', 'image_media_send_to_editor' );
 
 	if ( 'image' === substr( $post->post_mime_type, 0, 5 ) ) {
 		$align = isset( $attachment['align'] ) ? $attachment['align'] : 'none';
@@ -2024,6 +2009,8 @@ function wp_ajax_send_attachment_to_editor() {
 		$caption = isset( $attachment['post_excerpt'] ) ? $attachment['post_excerpt'] : '';
 		$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 );
+	} elseif ( 'video' === substr( $post->post_mime_type, 0, 5 ) || 'audio' === substr( $post->post_mime_type, 0, 5 )  ) {
+		$html = stripslashes_deep( $_POST['html'] );
 	}
 
 	$html = apply_filters( 'media_send_to_editor', $html, $id, $attachment );
@@ -2044,7 +2031,7 @@ function wp_ajax_send_attachment_to_editor() {
 function wp_ajax_send_link_to_editor() {
 	check_ajax_referer( 'media-send-to-editor', 'nonce' );
 
-	if ( ! $src = stripslashes( $_POST['src'] ) )
+	if ( ! $src = wp_unslash( $_POST['src'] ) )
 		wp_send_json_error();
 
 	if ( ! strpos( $src, '://' ) )
@@ -2053,7 +2040,7 @@ function wp_ajax_send_link_to_editor() {
 	if ( ! $src = esc_url_raw( $src ) )
 		wp_send_json_error();
 
-	if ( ! $title = trim( stripslashes( $_POST['title'] ) ) )
+	if ( ! $title = trim( wp_unslash( $_POST['title'] ) ) )
 		$title = wp_basename( $src );
 
 	$html = '';
@@ -2070,3 +2057,69 @@ function wp_ajax_send_link_to_editor() {
 
 	wp_send_json_success( $html );
 }
+
+/**
+ * Heartbeat API (experimental)
+ *
+ * Runs when the user is logged in.
+ */
+function wp_ajax_heartbeat() {
+	if ( empty( $_POST['_nonce'] ) )
+		wp_send_json_error();
+
+	$response = array();
+
+	if ( false === wp_verify_nonce( $_POST['_nonce'], 'heartbeat-nonce' ) ) {
+		// User is logged in but nonces have expired.
+		$response['nonces_expired'] = true;
+		wp_send_json($response);
+	}
+
+	// screen_id is the same as $current_screen->id and the JS global 'pagenow'
+	if ( ! empty($_POST['screen_id']) )
+		$screen_id = sanitize_key($_POST['screen_id']);
+	else
+		$screen_id = 'front';
+
+	if ( ! empty($_POST['data']) ) {
+		$data = (array) $_POST['data'];
+		$response = apply_filters( 'heartbeat_received', $response, $data, $screen_id );
+	}
+
+	$response = apply_filters( 'heartbeat_send', $response, $screen_id );
+
+	// Allow the transport to be replaced with long-polling easily
+	do_action( 'heartbeat_tick', $response, $screen_id );
+
+	// Send the current time according to the server
+	$response['server_time'] = time();
+
+	wp_send_json($response);
+}
+
+function wp_ajax_get_revision_diffs() {
+	require ABSPATH . 'wp-admin/includes/revision.php';
+
+	if ( ! $post = get_post( (int) $_REQUEST['post_id'] ) )
+		wp_send_json_error();
+
+	if ( ! current_user_can( 'read_post', $post->ID ) )
+		wp_send_json_error();
+
+	// Really just pre-loading the cache here.
+	if ( ! $revisions = wp_get_post_revisions( $post->ID, array( 'check_enabled' => false ) ) )
+		wp_send_json_error();
+
+	$return = array();
+	@set_time_limit( 0 );
+
+	foreach ( $_REQUEST['compare'] as $compare_key ) {
+		list( $compare_from, $compare_to ) = explode( ':', $compare_key ); // from:to
+
+		$return[] = array(
+			'id' => $compare_key,
+			'fields' => wp_get_revision_ui_diff( $post, $compare_from, $compare_to ),
+		);
+	}
+	wp_send_json_success( $return );
+}
diff --git a/wp-admin/includes/bookmark.php b/wp-admin/includes/bookmark.php
index 4d240b775..0897fdc5a 100644
--- a/wp-admin/includes/bookmark.php
+++ b/wp-admin/includes/bookmark.php
@@ -55,12 +55,12 @@ function edit_link( $link_id = 0 ) {
 function get_default_link_to_edit() {
 	$link = new stdClass;
 	if ( isset( $_GET['linkurl'] ) )
-		$link->link_url = esc_url( $_GET['linkurl'] );
+		$link->link_url = esc_url( wp_unslash( $_GET['linkurl'] ) );
 	else
 		$link->link_url = '';
 
 	if ( isset( $_GET['name'] ) )
-		$link->link_name = esc_attr( $_GET['name'] );
+		$link->link_name = esc_attr( wp_unslash( $_GET['name'] ) );
 	else
 		$link->link_name = '';
 
@@ -137,7 +137,7 @@ function wp_insert_link( $linkdata, $wp_error = false ) {
 	$linkdata = wp_parse_args( $linkdata, $defaults );
 	$linkdata = sanitize_bookmark( $linkdata, 'db' );
 
-	extract( stripslashes_deep( $linkdata ), EXTR_SKIP );
+	extract( wp_unslash( $linkdata ), EXTR_SKIP );
 
 	$update = false;
 
@@ -251,7 +251,7 @@ function wp_update_link( $linkdata ) {
 	$link = get_bookmark( $link_id, ARRAY_A );
 
 	// Escape data pulled from DB.
-	$link = add_magic_quotes( $link );
+	$link = wp_slash( $link );
 
 	// Passed link category list overwrites existing category list if not empty.
 	if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] )
diff --git a/wp-admin/includes/class-ftp-pure.php b/wp-admin/includes/class-ftp-pure.php
index c947f4484..c765d553e 100644
--- a/wp-admin/includes/class-ftp-pure.php
+++ b/wp-admin/includes/class-ftp-pure.php
@@ -9,7 +9,7 @@
  * @copyright Alexey Dotsenko
  * @author Alexey Dotsenko
  * @link http://www.phpclasses.org/browse/package/1743.html Site
- * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ * @license LGPL http://www.opensource.org/licenses/lgpl-license.html
  */
 
 /**
@@ -23,7 +23,7 @@
  * @copyright Alexey Dotsenko
  * @author Alexey Dotsenko
  * @link http://www.phpclasses.org/browse/package/1743.html Site
- * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ * @license LGPL http://www.opensource.org/licenses/lgpl-license.html
  */
 class ftp extends ftp_base {
 
diff --git a/wp-admin/includes/class-ftp-sockets.php b/wp-admin/includes/class-ftp-sockets.php
index 4026dd0bb..abdf0db68 100644
--- a/wp-admin/includes/class-ftp-sockets.php
+++ b/wp-admin/includes/class-ftp-sockets.php
@@ -9,7 +9,7 @@
  * @copyright Alexey Dotsenko
  * @author Alexey Dotsenko
  * @link http://www.phpclasses.org/browse/package/1743.html Site
- * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ * @license LGPL http://www.opensource.org/licenses/lgpl-license.html
  */
 
 /**
@@ -23,7 +23,7 @@
  * @copyright Alexey Dotsenko
  * @author Alexey Dotsenko
  * @link http://www.phpclasses.org/browse/package/1743.html Site
- * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ * @license LGPL http://www.opensource.org/licenses/lgpl-license.html
  */
 class ftp extends ftp_base {
 
diff --git a/wp-admin/includes/class-ftp.php b/wp-admin/includes/class-ftp.php
index 1ae3e870e..f068f157b 100644
--- a/wp-admin/includes/class-ftp.php
+++ b/wp-admin/includes/class-ftp.php
@@ -9,7 +9,7 @@
  * @copyright Alexey Dotsenko
  * @author Alexey Dotsenko
  * @link http://www.phpclasses.org/browse/package/1743.html Site
- * @license LGPL License http://www.opensource.org/licenses/lgpl-license.html
+ * @license LGPL http://www.opensource.org/licenses/lgpl-license.html
  */
 
 /**
diff --git a/wp-admin/includes/class-wp-comments-list-table.php b/wp-admin/includes/class-wp-comments-list-table.php
index cf0ab88a8..23f3169d0 100644
--- a/wp-admin/includes/class-wp-comments-list-table.php
+++ b/wp-admin/includes/class-wp-comments-list-table.php
@@ -170,7 +170,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 			/*
 			// I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark
 			if ( !empty( $_REQUEST['s'] ) )
-				$link = add_query_arg( 's', esc_attr( stripslashes( $_REQUEST['s'] ) ), $link );
+				$link = add_query_arg( 's', esc_attr( wp_unslash( $_REQUEST['s'] ) ), $link );
 			*/
 			$status_links[$status] = "<a href='$link'$class>" . sprintf(
 				translate_nooped_plural( $label, $num_comments->$status ),
@@ -315,7 +315,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 		$this->user_can = current_user_can( 'edit_comment', $comment->comment_ID );
 
 		echo "<tr id='comment-$comment->comment_ID' class='$the_comment_class'>";
-		echo $this->single_row_columns( $comment );
+		$this->single_row_columns( $comment );
 		echo "</tr>\n";
 	}
 
@@ -336,12 +336,6 @@ class WP_Comments_List_Table extends WP_List_Table {
 		$comment_url = esc_url( get_comment_link( $comment->comment_ID ) );
 		$the_comment_status = wp_get_comment_status( $comment->comment_ID );
 
-		$ptime = date( 'G', strtotime( $comment->comment_date ) );
-		if ( ( abs( time() - $ptime ) ) < DAY_IN_SECONDS )
-			$ptime = sprintf( __( '%s ago' ), human_time_diff( $ptime ) );
-		else
-			$ptime = mysql2date( __( 'Y/m/d \a\t g:i A' ), $comment->comment_date );
-
 		if ( $user_can ) {
 			$del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
 			$approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) );
@@ -360,8 +354,10 @@ class WP_Comments_List_Table extends WP_List_Table {
 		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' ) ),
-			/* translators: comment time format. See http://php.net/date */ get_comment_date( get_option( 'time_format' ) ) );
+			/* 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 );
@@ -456,7 +452,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 			$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 ) . '...';
+			$author_url_display = substr( $author_url_display, 0, 49 ) . '&hellip;';
 
 		echo "<strong>"; comment_author(); echo '</strong><br />';
 		if ( !empty( $author_url ) )
diff --git a/wp-admin/includes/class-wp-filesystem-base.php b/wp-admin/includes/class-wp-filesystem-base.php
index 75808df8a..d64fe4bba 100644
--- a/wp-admin/includes/class-wp-filesystem-base.php
+++ b/wp-admin/includes/class-wp-filesystem-base.php
@@ -203,7 +203,7 @@ class WP_Filesystem_Base {
 				continue; //We want this to be caught by the next code block.
 
 			//Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder,
-			// If its found, change into it and follow through looking for it.
+			// If it's found, change into it and follow through looking for it.
 			// If it cant find WordPress down that route, it'll continue onto the next folder level, and see if that matches, and so on.
 			// If it reaches the end, and still cant find it, it'll return false for the entire function.
 			if ( isset($files[ $key ]) ){
@@ -241,7 +241,7 @@ class WP_Filesystem_Base {
 	 * @access public
 	 *
 	 * @param string $file string filename
-	 * @return int octal representation of permissions
+	 * @return string *nix style representation of permissions
 	 */
 	function gethchmod($file){
 		$perms = $this->getchmod($file);
diff --git a/wp-admin/includes/class-wp-filesystem-direct.php b/wp-admin/includes/class-wp-filesystem-direct.php
index 457f199c3..e25c9ef8d 100644
--- a/wp-admin/includes/class-wp-filesystem-direct.php
+++ b/wp-admin/includes/class-wp-filesystem-direct.php
@@ -229,7 +229,7 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
 		if ( ! $recursive && $this->is_dir($file) )
 			return @rmdir($file);
 
-		//At this point its a folder, and we're in recursive mode
+		//At this point it's a folder, and we're in recursive mode
 		$file = trailingslashit($file);
 		$filelist = $this->dirlist($file, true);
 
diff --git a/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/wp-admin/includes/class-wp-filesystem-ftpsockets.php
index 1c931e192..728385b70 100644
--- a/wp-admin/includes/class-wp-filesystem-ftpsockets.php
+++ b/wp-admin/includes/class-wp-filesystem-ftpsockets.php
@@ -97,7 +97,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
 		if ( ! $this->ftp->fget($temphandle, $file) ) {
 			fclose($temphandle);
 			unlink($temp);
-			return ''; //Blank document, File does exist, Its just blank.
+			return ''; //Blank document, File does exist, It's just blank.
 		}
 
 		fseek($temphandle, 0); //Skip back to the start of the file being written to
diff --git a/wp-admin/includes/class-wp-filesystem-ssh2.php b/wp-admin/includes/class-wp-filesystem-ssh2.php
index 3114456e0..8ff3cb18e 100644
--- a/wp-admin/includes/class-wp-filesystem-ssh2.php
+++ b/wp-admin/includes/class-wp-filesystem-ssh2.php
@@ -184,8 +184,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
 		if ( ! $this->exists($file) )
 			return false;
 		if ( ! $recursive || ! $this->is_dir($file) )
-			return $this->run_command(sprintf('chgrp %o %s', $mode, escapeshellarg($file)), true);
-		return $this->run_command(sprintf('chgrp -R %o %s', $mode, escapeshellarg($file)), true);
+			return $this->run_command(sprintf('chgrp %s %s', escapeshellarg($group), escapeshellarg($file)), true);
+		return $this->run_command(sprintf('chgrp -R %s %s', escapeshellarg($group), escapeshellarg($file)), true);
 	}
 
 	function chmod($file, $mode = false, $recursive = false) {
@@ -210,8 +210,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
 		if ( ! $this->exists($file) )
 			return false;
 		if ( ! $recursive || ! $this->is_dir($file) )
-			return $this->run_command(sprintf('chown %o %s', $mode, escapeshellarg($file)), true);
-		return $this->run_command(sprintf('chown -R %o %s', $mode, escapeshellarg($file)), true);
+			return $this->run_command(sprintf('chown %s %s', escapeshellarg($owner), escapeshellarg($file)), true);
+		return $this->run_command(sprintf('chown -R %s %s', escapeshellarg($owner), escapeshellarg($file)), true);
 	}
 
 	function owner($file) {
diff --git a/wp-admin/includes/class-wp-importer.php b/wp-admin/includes/class-wp-importer.php
index 0268e7e6e..b017c84fc 100644
--- a/wp-admin/includes/class-wp-importer.php
+++ b/wp-admin/includes/class-wp-importer.php
@@ -183,7 +183,6 @@ class WP_Importer {
 
 		$headers = array();
 		$args = array();
-		$args['reject_unsafe_urls'] = true;
 		if ( true === $head )
 			$args['method'] = 'HEAD';
 		if ( !empty( $username ) && !empty( $password ) )
@@ -191,7 +190,7 @@ class WP_Importer {
 
 		$args['headers'] = $headers;
 
-		return wp_remote_request( $url, $args );
+		return wp_safe_remote_request( $url, $args );
 	}
 
 	/**
diff --git a/wp-admin/includes/class-wp-links-list-table.php b/wp-admin/includes/class-wp-links-list-table.php
index b5cbc5560..e1c5f18b1 100644
--- a/wp-admin/includes/class-wp-links-list-table.php
+++ b/wp-admin/includes/class-wp-links-list-table.php
@@ -23,7 +23,7 @@ class WP_Links_List_Table extends WP_List_Table {
 	function prepare_items() {
 		global $cat_id, $s, $orderby, $order;
 
-		wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) );
+		wp_reset_vars( array( 'action', 'cat_id', 'link_id', 'orderby', 'order', 's' ) );
 
 		$args = array( 'hide_invisible' => 0, 'hide_empty' => 0 );
 
diff --git a/wp-admin/includes/class-wp-list-table.php b/wp-admin/includes/class-wp-list-table.php
index 8a22bd4e0..22c35f5ed 100644
--- a/wp-admin/includes/class-wp-list-table.php
+++ b/wp-admin/includes/class-wp-list-table.php
@@ -72,7 +72,7 @@ class WP_List_Table {
 	var $_pagination;
 
 	/**
-	 * Constructor. The child class should call this constructor from it's own constructor
+	 * Constructor. The child class should call this constructor from its own constructor
 	 *
 	 * @param array $args An associative array with information about the current table
 	 * @access protected
@@ -826,7 +826,7 @@ class WP_List_Table {
 		$row_class = ( $row_class == '' ? ' class="alternate"' : '' );
 
 		echo '<tr' . $row_class . '>';
-		echo $this->single_row_columns( $item );
+		$this->single_row_columns( $item );
 		echo '</tr>';
 	}
 
diff --git a/wp-admin/includes/class-wp-media-list-table.php b/wp-admin/includes/class-wp-media-list-table.php
index 2c2bf7c39..67fd187cf 100644
--- a/wp-admin/includes/class-wp-media-list-table.php
+++ b/wp-admin/includes/class-wp-media-list-table.php
@@ -47,8 +47,7 @@ class WP_Media_List_Table extends WP_List_Table {
 		$type_links = array();
 		$_num_posts = (array) wp_count_attachments();
 		$_total_posts = array_sum($_num_posts) - $_num_posts['trash'];
-		if ( !isset( $total_orphans ) )
-				$total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" );
+		$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));
 		foreach ( $matches as $type => $reals )
 			foreach ( $reals as $real )
@@ -176,7 +175,7 @@ class WP_Media_List_Table extends WP_List_Table {
 	}
 
 	function display_rows() {
-		global $post, $id;
+		global $post;
 
 		add_filter( 'the_title','esc_html' );
 		$alt = '';
@@ -192,7 +191,7 @@ class WP_Media_List_Table extends WP_List_Table {
 			$post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other';
 			$att_title = _draft_or_post_title();
 ?>
-	<tr id='post-<?php echo $id; ?>' class='<?php echo trim( $alt . ' author-' . $post_owner . ' status-' . $post->post_status ); ?>' valign="top">
+	<tr id='post-<?php echo $post->ID; ?>' class='<?php echo trim( $alt . ' author-' . $post_owner . ' status-' . $post->post_status ); ?>' valign="top">
 <?php
 
 list( $columns, $hidden ) = $this->get_column_info();
@@ -266,7 +265,12 @@ foreach ( $columns as $column_name => $column_display_name ) {
 
 	case 'author':
 ?>
-		<td <?php echo $attributes ?>><?php the_author() ?></td>
+		<td <?php echo $attributes ?>><?php
+			printf( '<a href="%s">%s</a>',
+				esc_url( add_query_arg( array( 'author' => get_the_author_meta('ID') ), 'upload.php' ) ),
+				get_the_author()
+			);
+		?></td>
 <?php
 		break;
 
@@ -297,13 +301,11 @@ foreach ( $columns as $column_name => $column_display_name ) {
 		break;
 
 	case 'parent':
-		if ( $post->post_parent > 0 ) {
-			if ( get_post( $post->post_parent ) ) {
-				$title =_draft_or_post_title( $post->post_parent );
-			}
+		if ( $post->post_parent > 0 && get_post( $post->post_parent ) ) {
+			$title = _draft_or_post_title( $post->post_parent );
 ?>
 			<td <?php echo $attributes ?>><strong>
-				<?php if( current_user_can( 'edit_post', $post->post_parent ) ) { ?>
+				<?php if ( current_user_can( 'edit_post', $post->post_parent ) ) { ?>
 					<a href="<?php echo get_edit_post_link( $post->post_parent ); ?>">
 						<?php echo $title ?></a><?php
 				} else {
@@ -315,7 +317,7 @@ foreach ( $columns as $column_name => $column_display_name ) {
 		} else {
 ?>
 			<td <?php echo $attributes ?>><?php _e( '(Unattached)' ); ?><br />
-			<?php if( $user_can_edit ) {?>
+			<?php if ( $user_can_edit ) { ?>
 				<a class="hide-if-no-js"
 					onclick="findPosts.open( 'media[]','<?php echo $post->ID ?>' ); return false;"
 					href="#the-list">
@@ -375,7 +377,7 @@ foreach ( $columns as $column_name => $column_display_name ) {
 		}
 ?>
 		<td <?php echo $attributes ?>>
-			<?php do_action( 'manage_media_custom_column', $column_name, $id ); ?>
+			<?php do_action( 'manage_media_custom_column', $column_name, $post->ID ); ?>
 		</td>
 <?php
 		break;
diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php
index 371901a63..b9d68a1f3 100644
--- a/wp-admin/includes/class-wp-ms-sites-list-table.php
+++ b/wp-admin/includes/class-wp-ms-sites-list-table.php
@@ -29,7 +29,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 
 		$pagenum = $this->get_pagenum();
 
-		$s = isset( $_REQUEST['s'] ) ? stripslashes( trim( $_REQUEST[ 's' ] ) ) : '';
+		$s = isset( $_REQUEST['s'] ) ? wp_unslash( trim( $_REQUEST[ 's' ] ) ) : '';
 		$wild = '';
 		if ( false !== strpos($s, '*') ) {
 			$wild = '%';
diff --git a/wp-admin/includes/class-wp-ms-themes-list-table.php b/wp-admin/includes/class-wp-ms-themes-list-table.php
index 2461b1d1d..1d61af9f8 100644
--- a/wp-admin/includes/class-wp-ms-themes-list-table.php
+++ b/wp-admin/includes/class-wp-ms-themes-list-table.php
@@ -126,7 +126,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
 	function _search_callback( $theme ) {
 		static $term;
 		if ( is_null( $term ) )
-			$term = stripslashes( $_REQUEST['s'] );
+			$term = wp_unslash( $_REQUEST['s'] );
 
 		foreach ( array( 'Name', 'Description', 'Author', 'Author', 'AuthorURI' ) as $field ) {
 			// Don't mark up; Do translate.
@@ -243,11 +243,11 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
 	}
 
 	function display_rows() {
-		foreach ( $this->items as $key => $theme )
-			$this->single_row( $key, $theme );
+		foreach ( $this->items as $theme )
+			$this->single_row( $theme );
 	}
 
-	function single_row( $key, $theme ) {
+	function single_row( $theme ) {
 		global $status, $page, $s, $totals;
 
 		$context = $status;
diff --git a/wp-admin/includes/class-wp-ms-users-list-table.php b/wp-admin/includes/class-wp-ms-users-list-table.php
index 6a4268f6a..ab1ee3620 100644
--- a/wp-admin/includes/class-wp-ms-users-list-table.php
+++ b/wp-admin/includes/class-wp-ms-users-list-table.php
@@ -173,10 +173,10 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 
 					case 'username':
 						$avatar	= get_avatar( $user->user_email, 32 );
-						$edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
+						$edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
 
 						echo "<td $attributes>"; ?>
-							<?php echo $avatar; ?><strong><a href="<?php echo $edit_link; ?>" class="edit"><?php echo stripslashes( $user->user_login ); ?></a><?php
+							<?php echo $avatar; ?><strong><a href="<?php echo $edit_link; ?>" class="edit"><?php echo $user->user_login; ?></a><?php
 							if ( in_array( $user->user_login, $super_admins ) )
 								echo ' - ' . __( 'Super Admin' );
 							?></strong>
@@ -186,7 +186,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 								$actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
 
 								if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
-									$actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
+									$actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
 								}
 
 								$actions = apply_filters( 'ms_user_row_actions', $actions, $user );
diff --git a/wp-admin/includes/class-wp-plugin-install-list-table.php b/wp-admin/includes/class-wp-plugin-install-list-table.php
index ca06dbedf..76ef2ce2c 100644
--- a/wp-admin/includes/class-wp-plugin-install-list-table.php
+++ b/wp-admin/includes/class-wp-plugin-install-list-table.php
@@ -40,7 +40,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 		$tabs = apply_filters( 'install_plugins_tabs', $tabs );
 		$nonmenu_tabs = apply_filters( 'install_plugins_nonmenu_tabs', $nonmenu_tabs );
 
-		// If a non-valid menu tab has been selected, And its not a non-menu action.
+		// If a non-valid menu tab has been selected, And it's not a non-menu action.
 		if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) )
 			$tab = key( $tabs );
 
@@ -48,8 +48,8 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 
 		switch ( $tab ) {
 			case 'search':
-				$type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
-				$term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
+				$type = isset( $_REQUEST['type'] ) ? wp_unslash( $_REQUEST['type'] ) : 'term';
+				$term = isset( $_REQUEST['s'] ) ? wp_unslash( $_REQUEST['s'] ) : '';
 
 				switch ( $type ) {
 					case 'tag':
@@ -73,7 +73,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 				break;
 
 			case 'favorites':
-				$user = isset( $_GET['user'] ) ? stripslashes( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
+				$user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
 				update_user_meta( get_current_user_id(), 'wporg_favorites', $user );
 				if ( $user )
 					$args['user'] = $user;
diff --git a/wp-admin/includes/class-wp-plugins-list-table.php b/wp-admin/includes/class-wp-plugins-list-table.php
index a1cbeec68..ae1d1b8d8 100644
--- a/wp-admin/includes/class-wp-plugins-list-table.php
+++ b/wp-admin/includes/class-wp-plugins-list-table.php
@@ -22,7 +22,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 			$status = $_REQUEST['plugin_status'];
 
 		if ( isset($_REQUEST['s']) )
-			$_SERVER['REQUEST_URI'] = add_query_arg('s', stripslashes($_REQUEST['s']) );
+			$_SERVER['REQUEST_URI'] = add_query_arg('s', wp_unslash($_REQUEST['s']) );
 
 		$page = $this->get_pagenum();
 	}
@@ -53,7 +53,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
 		$screen = $this->screen;
 
-		if ( ! is_multisite() || ( $screen->is_network && current_user_can('manage_network_plugins') ) ) {
+		if ( ! is_multisite() || ( $screen->in_admin( 'network' ) && current_user_can( 'manage_network_plugins' ) ) ) {
 			if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) )
 				$plugins['mustuse'] = get_mu_plugins();
 			if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) )
@@ -72,7 +72,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
 		set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), DAY_IN_SECONDS );
 
-		if ( ! $screen->is_network ) {
+		if ( ! $screen->in_admin( 'network' ) ) {
 			$recently_activated = get_option( 'recently_activated', array() );
 
 			foreach ( $recently_activated as $key => $time )
@@ -83,15 +83,15 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
 		foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) {
 			// Filter into individual sections
-			if ( is_multisite() && ! $screen->is_network && is_network_only_plugin( $plugin_file ) ) {
+			if ( is_multisite() && ! $screen->in_admin( 'network' ) && is_network_only_plugin( $plugin_file ) ) {
 				unset( $plugins['all'][ $plugin_file ] );
-			} elseif ( ! $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) {
+			} elseif ( ! $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) {
 				unset( $plugins['all'][ $plugin_file ] );
-			} elseif ( ( ! $screen->is_network && is_plugin_active( $plugin_file ) )
-				|| ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) {
+			} elseif ( ( ! $screen->in_admin( 'network' ) && is_plugin_active( $plugin_file ) )
+				|| ( $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) ) {
 				$plugins['active'][ $plugin_file ] = $plugin_data;
 			} else {
-				if ( ! $screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated?
+				if ( ! $screen->in_admin( 'network' ) && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated?
 					$plugins['recently_activated'][ $plugin_file ] = $plugin_data;
 				$plugins['inactive'][ $plugin_file ] = $plugin_data;
 			}
@@ -140,7 +140,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 	function _search_callback( $plugin ) {
 		static $term;
 		if ( is_null( $term ) )
-			$term = stripslashes( $_REQUEST['s'] );
+			$term = wp_unslash( $_REQUEST['s'] );
 
 		foreach ( $plugin as $value )
 			if ( stripos( $value, $term ) !== false )
@@ -237,12 +237,12 @@ class WP_Plugins_List_Table extends WP_List_Table {
 		$actions = array();
 
 		if ( 'active' != $status )
-			$actions['activate-selected'] = $this->screen->is_network ? __( 'Network Activate' ) : __( 'Activate' );
+			$actions['activate-selected'] = $this->screen->in_admin( 'network' ) ? __( 'Network Activate' ) : __( 'Activate' );
 
 		if ( 'inactive' != $status && 'recent' != $status )
-			$actions['deactivate-selected'] = $this->screen->is_network ? __( 'Network Deactivate' ) : __( 'Deactivate' );
+			$actions['deactivate-selected'] = $this->screen->in_admin( 'network' ) ? __( 'Network Deactivate' ) : __( 'Deactivate' );
 
-		if ( !is_multisite() || $this->screen->is_network ) {
+		if ( !is_multisite() || $this->screen->in_admin( 'network' ) ) {
 			if ( current_user_can( 'update_plugins' ) )
 				$actions['update-selected'] = __( 'Update' );
 			if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) )
@@ -269,7 +269,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
 		echo '<div class="alignleft actions">';
 
-		if ( ! $this->screen->is_network && 'recently_activated' == $status )
+		if ( ! $this->screen->in_admin( 'network' ) && '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>';
@@ -289,7 +289,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
 	function display_rows() {
 		global $status;
 
-		if ( is_multisite() && ! $this->screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) )
+		if ( is_multisite() && ! $this->screen->in_admin( 'network' ) && in_array( $status, array( 'mustuse', 'dropins' ) ) )
 			return;
 
 		foreach ( $this->items as $plugin_file => $plugin_data )
@@ -331,12 +331,12 @@ class WP_Plugins_List_Table extends WP_List_Table {
 			if ( $plugin_data['Description'] )
 				$description .= '<p>' . $plugin_data['Description'] . '</p>';
 		} else {
-			if ( $screen->is_network )
+			if ( $screen->in_admin( 'network' ) )
 				$is_active = is_plugin_active_for_network( $plugin_file );
 			else
 				$is_active = is_plugin_active( $plugin_file );
 
-			if ( $screen->is_network ) {
+			if ( $screen->in_admin( 'network' ) ) {
 				if ( $is_active ) {
 					if ( current_user_can( 'manage_network_plugins' ) )
 						$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) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
@@ -355,13 +355,13 @@ class WP_Plugins_List_Table extends WP_List_Table {
 					if ( ! is_multisite() && current_user_can('delete_plugins') )
 						$actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
 				} // end if $is_active
-			 } // end if $screen->is_network
+			 } // end if $screen->in_admin( 'network' )
 
-			if ( ( ! is_multisite() || $screen->is_network ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
+			if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
 				$actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . esc_attr__('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
 		} // end if $context
 
-		$prefix = $screen->is_network ? 'network_admin_' : '';
+		$prefix = $screen->in_admin( 'network' ) ? 'network_admin_' : '';
 		$actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context );
 		$actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context );
 
diff --git a/wp-admin/includes/class-wp-posts-list-table.php b/wp-admin/includes/class-wp-posts-list-table.php
index c772fa63c..a798a2c2b 100644
--- a/wp-admin/includes/class-wp-posts-list-table.php
+++ b/wp-admin/includes/class-wp-posts-list-table.php
@@ -382,8 +382,10 @@ class WP_Posts_List_Table extends WP_List_Table {
 			if ( $count >= $end )
 				break;
 
-			if ( $count >= $start )
-				echo "\t" . $this->single_row( $page, $level );
+			if ( $count >= $start ) {
+				echo "\t";
+				$this->single_row( $page, $level );
+			}
 
 			$count++;
 
@@ -397,8 +399,12 @@ class WP_Posts_List_Table extends WP_List_Table {
 				foreach ( $orphans as $op ) {
 					if ( $count >= $end )
 						break;
-					if ( $count >= $start )
-						echo "\t" . $this->single_row( $op, 0 );
+
+					if ( $count >= $start ) {
+						echo "\t";
+						$this->single_row( $op, 0 );
+					}
+
 					$count++;
 				}
 			}
@@ -444,13 +450,16 @@ class WP_Posts_List_Table extends WP_List_Table {
 				}
 				$num_parents = count( $my_parents );
 				while ( $my_parent = array_pop( $my_parents ) ) {
-					echo "\t" . $this->single_row( $my_parent, $level - $num_parents );
+					echo "\t";
+					$this->single_row( $my_parent, $level - $num_parents );
 					$num_parents--;
 				}
 			}
 
-			if ( $count >= $start )
-				echo "\t" . $this->single_row( $page, $level );
+			if ( $count >= $start ) {
+				echo "\t";
+				$this->single_row( $page, $level );
+			}
 
 			$count++;
 
@@ -471,10 +480,16 @@ class WP_Posts_List_Table extends WP_List_Table {
 		$edit_link = get_edit_post_link( $post->ID );
 		$title = _draft_or_post_title();
 		$post_type_object = get_post_type_object( $post->post_type );
-		$can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID );
+		$can_edit_post = current_user_can( 'edit_post', $post->ID );
 
 		$alternate = 'alternate' == $alternate ? '' : 'alternate';
 		$classes = $alternate . ' iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' );
+
+		$lock_holder = wp_check_post_lock( $post->ID );
+		if ( $lock_holder ) {
+			$classes .= ' wp-locked';
+			$lock_holder = get_userdata( $lock_holder );
+		}
 	?>
 		<tr id="post-<?php echo $post->ID; ?>" class="<?php echo implode( ' ', get_post_class( $classes, $post->ID ) ); ?>" valign="top">
 	<?php
@@ -495,18 +510,23 @@ class WP_Posts_List_Table extends WP_List_Table {
 			case 'cb':
 			?>
 			<th scope="row" class="check-column">
-				<?php if ( $can_edit_post ) { ?>
+				<?php
+				if ( $can_edit_post ) {
+
+				?>
 				<label class="screen-reader-text" for="cb-select-<?php the_ID(); ?>"><?php printf( __( 'Select %s' ), $title ); ?></label>
 				<input id="cb-select-<?php the_ID(); ?>" type="checkbox" name="post[]" value="<?php the_ID(); ?>" />
-				<?php } ?>
+				<div class="locked-indicator"></div>
+				<?php
+				}
+				?>
 			</th>
 			<?php
 			break;
 
 			case 'title':
+				$attributes = 'class="post-title page-title column-title"' . $style;
 				if ( $this->hierarchical_display ) {
-					$attributes = 'class="post-title page-title column-title"' . $style;
-
 					if ( 0 == $level && (int) $post->post_parent > 0 ) {
 						//sent level 0 by accident, by default, or because we don't know the actual level
 						$find_main_page = (int) $post->post_parent;
@@ -523,29 +543,49 @@ class WP_Posts_List_Table extends WP_List_Table {
 								$parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID );
 						}
 					}
+				}
 
-					$pad = str_repeat( '&#8212; ', $level );
-?>
-			<td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states( $post ); echo isset( $parent_name ) ? ' | ' . $post_type_object->labels->parent_item_colon . ' ' . esc_html( $parent_name ) : ''; ?></strong>
-<?php
+				$pad = str_repeat( '&#8212; ', $level );
+				echo "<td $attributes><strong>";
+
+				if ( $format = get_post_format( $post->ID ) ) {
+					$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> ";
 				}
-				else {
-					$attributes = 'class="post-title page-title column-title"' . $style;
 
-					$pad = str_repeat( '&#8212; ', $level );
-?>
-			<td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states( $post ); ?></strong>
-<?php
-					if ( 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
-						the_excerpt();
+				if ( $can_edit_post && $post->post_status != 'trash' ) {
+					echo '<a class="row-title" href="' . $edit_link . '" title="' . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ) . '">' . $pad . $title . '</a>';
+				} else {
+					echo $pad . $title;
+				}
+				_post_states( $post );
+
+				if ( isset( $parent_name ) )
+					echo ' | ' . $post_type_object->labels->parent_item_colon . ' ' . esc_html( $parent_name );
+
+				echo "</strong>\n";
+
+				if ( $can_edit_post && $post->post_status != 'trash' ) {
+					if ( $lock_holder ) {
+						$locked_avatar = get_avatar( $lock_holder->ID, 18 );
+						$locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) );
+					} else {
+						$locked_avatar = $locked_text = '';
+					}
+
+					echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
 				}
 
+				if ( ! $this->hierarchical_display && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
+						the_excerpt();
+
 				$actions = array();
 				if ( $can_edit_post && 'trash' != $post->post_status ) {
 					$actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '" title="' . esc_attr( __( 'Edit this item' ) ) . '">' . __( 'Edit' ) . '</a>';
 					$actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr( __( 'Edit this item inline' ) ) . '">' . __( 'Quick&nbsp;Edit' ) . '</a>';
 				}
-				if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) {
+				if ( current_user_can( 'delete_post', $post->ID ) ) {
 					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 )
@@ -556,7 +596,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 				if ( $post_type_object->public ) {
 					if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
 						if ( $can_edit_post )
-							$actions['view'] = '<a href="' . esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
+							$actions['view'] = '<a href="' . esc_url( apply_filters( 'preview_post_link', set_url_scheme( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ) ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
 					} elseif ( 'trash' != $post->post_status ) {
 						$actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
 					}
@@ -820,10 +860,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 class="catshow"><?php _e( '[more]' ); ?></span>
-				<span class="cathide" style="display:none;"><?php _e( '[less]' ); ?></span>
-			</span>
+			<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" />
 			<ul class="cat-checklist <?php echo esc_attr( $taxonomy->name )?>-checklist">
 				<?php wp_terms_checklist( null, array( 'taxonomy' => $taxonomy->name ) ) ?>
@@ -997,32 +1034,6 @@ class WP_Posts_List_Table extends WP_List_Table {
 	<?php endif; // 'post' && $can_publish && current_user_can( 'edit_others_cap' ) ?>
 
 			</div>
-
-	<?php if ( post_type_supports( $screen->post_type, 'post-formats' ) && current_theme_supports( 'post-formats' ) ) :
-		$post_formats = get_theme_support( 'post-formats' );
-		if ( isset( $post_formats[0] ) && is_array( $post_formats[0] ) ) :
-			$all_post_formats = get_post_format_strings();
-			unset( $all_post_formats['standard'] ); ?>
-			<div class="inline-edit-group">
-				<label class="alignleft" for="post_format">
-				<span class="title"><?php _ex( 'Format', 'post format' ); ?></span>
-				<select name="post_format">
-				<?php if ( $bulk ) : ?>
-					<option value="-1"><?php _e( '&mdash; No Change &mdash;' ); ?></option>
-				<?php endif; ?>
-					<option value="0"><?php _ex( 'Standard', 'Post format' ); ?></option>
-				<?php foreach ( $all_post_formats as $slug => $format ) :
-					$unsupported = ! in_array( $slug, $post_formats[0] );
-					if ( $bulk && $unsupported )
-						continue;
-					?>
-					<option value="<?php echo esc_attr( $slug ); ?>"<?php if ( $unsupported ) echo ' class="unsupported"'; ?>><?php echo esc_html( $format ); ?></option>
-				<?php endforeach; ?>
-				</select></label>
-			</div>
-		<?php endif; ?>
-	<?php endif; // post-formats ?>
-
 		</div></fieldset>
 
 	<?php
@@ -1035,12 +1046,11 @@ class WP_Posts_List_Table extends WP_List_Table {
 		}
 	?>
 		<p class="submit inline-edit-save">
-			<a accesskey="c" href="#inline-edit" title="<?php esc_attr_e( 'Cancel' ); ?>" class="button-secondary cancel alignleft"><?php _e( 'Cancel' ); ?></a>
+			<a accesskey="c" href="#inline-edit" class="button-secondary cancel alignleft"><?php _e( 'Cancel' ); ?></a>
 			<?php if ( ! $bulk ) {
 				wp_nonce_field( 'inlineeditnonce', '_inline_edit', false );
-				$update_text = __( 'Update' );
 				?>
-				<a accesskey="s" href="#inline-edit" title="<?php esc_attr_e( 'Update' ); ?>" class="button-primary save alignright"><?php echo esc_attr( $update_text ); ?></a>
+				<a accesskey="s" href="#inline-edit" class="button-primary save alignright"><?php _e( 'Update' ); ?></a>
 				<span class="spinner"></span>
 			<?php } else {
 				submit_button( __( 'Update' ), 'button-primary alignright', 'bulk_edit', false, array( 'accesskey' => 's' ) );
diff --git a/wp-admin/includes/class-wp-terms-list-table.php b/wp-admin/includes/class-wp-terms-list-table.php
index 85010105c..eef7ccfdb 100644
--- a/wp-admin/includes/class-wp-terms-list-table.php
+++ b/wp-admin/includes/class-wp-terms-list-table.php
@@ -52,7 +52,7 @@ class WP_Terms_List_Table extends WP_List_Table {
 			$tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter
 		}
 
-		$search = !empty( $_REQUEST['s'] ) ? trim( stripslashes( $_REQUEST['s'] ) ) : '';
+		$search = !empty( $_REQUEST['s'] ) ? trim( wp_unslash( $_REQUEST['s'] ) ) : '';
 
 		$args = array(
 			'search' => $search,
@@ -61,10 +61,10 @@ class WP_Terms_List_Table extends WP_List_Table {
 		);
 
 		if ( !empty( $_REQUEST['orderby'] ) )
-			$args['orderby'] = trim( stripslashes( $_REQUEST['orderby'] ) );
+			$args['orderby'] = trim( wp_unslash( $_REQUEST['orderby'] ) );
 
 		if ( !empty( $_REQUEST['order'] ) )
-			$args['order'] = trim( stripslashes( $_REQUEST['order'] ) );
+			$args['order'] = trim( wp_unslash( $_REQUEST['order'] ) );
 
 		$this->callback_args = $args;
 
@@ -136,7 +136,6 @@ class WP_Terms_List_Table extends WP_List_Table {
 		$args['offset'] = $offset = ( $page - 1 ) * $number;
 
 		// convert it to table rows
-		$out = '';
 		$count = 0;
 
 		$terms = array();
@@ -144,37 +143,37 @@ class WP_Terms_List_Table extends WP_List_Table {
 		if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) {
 			// We'll need the full set of terms then.
 			$args['number'] = $args['offset'] = 0;
+		}
+		$terms = get_terms( $taxonomy, $args );
 
-			$terms = get_terms( $taxonomy, $args );
+		if ( empty( $terms ) ) {
+			list( $columns, $hidden ) = $this->get_column_info();
+			echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
+			$this->no_items();
+			echo '</td></tr>';
+			return;
+		}
+
+		if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) {
 			if ( !empty( $search ) ) // Ignore children on searches.
 				$children = array();
 			else
 				$children = _get_term_hierarchy( $taxonomy );
 
 			// Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake
-			$out .= $this->_rows( $taxonomy, $terms, $children, $offset, $number, $count );
+			$this->_rows( $taxonomy, $terms, $children, $offset, $number, $count );
 		} else {
 			$terms = get_terms( $taxonomy, $args );
 			foreach ( $terms as $term )
-				$out .= $this->single_row( $term, 0, $taxonomy );
+				$this->single_row( $term );
 			$count = $number; // Only displaying a single page.
 		}
-
-		if ( empty( $terms ) ) {
-			list( $columns, $hidden ) = $this->get_column_info();
-			echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
-			$this->no_items();
-			echo '</td></tr>';
-		} else {
-			echo $out;
-		}
 	}
 
-	function _rows( $taxonomy, $terms, &$children, $start = 0, $per_page = 20, &$count, $parent = 0, $level = 0 ) {
+	function _rows( $taxonomy, $terms, &$children, $start, $per_page, &$count, $parent = 0, $level = 0 ) {
 
 		$end = $start + $per_page;
 
-		$output = '';
 		foreach ( $terms as $key => $term ) {
 
 			if ( $count >= $end )
@@ -199,23 +198,24 @@ class WP_Terms_List_Table extends WP_List_Table {
 
 				$num_parents = count( $my_parents );
 				while ( $my_parent = array_pop( $my_parents ) ) {
-					$output .=  "\t" . $this->single_row( $my_parent, $level - $num_parents, $taxonomy );
+					echo "\t";
+					$this->single_row( $my_parent, $level - $num_parents );
 					$num_parents--;
 				}
 			}
 
-			if ( $count >= $start )
-				$output .= "\t" . $this->single_row( $term, $level, $taxonomy );
+			if ( $count >= $start ) {
+				echo "\t";
+				$this->single_row( $term, $level );
+			}
 
 			++$count;
 
 			unset( $terms[$key] );
 
 			if ( isset( $children[$term->term_id] ) && empty( $_REQUEST['s'] ) )
-				$output .= $this->_rows( $taxonomy, $terms, $children, $start, $per_page, $count, $term->term_id, $level + 1 );
+				$this->_rows( $taxonomy, $terms, $children, $start, $per_page, $count, $term->term_id, $level + 1 );
 		}
-
-		return $output;
 	}
 
 	function single_row( $tag, $level = 0 ) {
@@ -225,7 +225,7 @@ class WP_Terms_List_Table extends WP_List_Table {
 		$this->level = $level;
 
 		echo '<tr id="tag-' . $tag->term_id . '"' . $row_class . '>';
-		echo $this->single_row_columns( $tag );
+		$this->single_row_columns( $tag );
 		echo '</tr>';
 	}
 
@@ -361,9 +361,8 @@ class WP_Terms_List_Table extends WP_List_Table {
 	?>
 
 		<p class="inline-edit-save submit">
-			<a accesskey="c" href="#inline-edit" title="<?php esc_attr_e( 'Cancel' ); ?>" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
-			<?php $update_text = $tax->labels->update_item; ?>
-			<a accesskey="s" href="#inline-edit" title="<?php echo esc_attr( $update_text ); ?>" class="save button-primary alignright"><?php echo $update_text; ?></a>
+			<a accesskey="c" href="#inline-edit" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
+			<a accesskey="s" href="#inline-edit" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></a>
 			<span class="spinner"></span>
 			<span class="error" style="display:none;"></span>
 			<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
diff --git a/wp-admin/includes/class-wp-theme-install-list-table.php b/wp-admin/includes/class-wp-theme-install-list-table.php
index 319a9989f..8a46199f1 100644
--- a/wp-admin/includes/class-wp-theme-install-list-table.php
+++ b/wp-admin/includes/class-wp-theme-install-list-table.php
@@ -24,7 +24,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 		$search_terms = array();
 		$search_string = '';
 		if ( ! empty( $_REQUEST['s'] ) ){
-			$search_string = strtolower( stripslashes( $_REQUEST['s'] ) );
+			$search_string = strtolower( wp_unslash( $_REQUEST['s'] ) );
 			$search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', $search_string ) ) ) );
 		}
 
@@ -51,7 +51,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 		$tabs = apply_filters( 'install_themes_tabs', $tabs );
 		$nonmenu_tabs = apply_filters( 'install_themes_nonmenu_tabs', $nonmenu_tabs );
 
-		// If a non-valid menu tab has been selected, And its not a non-menu action.
+		// If a non-valid menu tab has been selected, And it's not a non-menu action.
 		if ( empty( $tab ) || ( ! isset( $tabs[ $tab ] ) && ! in_array( $tab, (array) $nonmenu_tabs ) ) )
 			$tab = key( $tabs );
 
@@ -59,7 +59,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 
 		switch ( $tab ) {
 			case 'search':
-				$type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
+				$type = isset( $_REQUEST['type'] ) ? wp_unslash( $_REQUEST['type'] ) : 'term';
 				switch ( $type ) {
 					case 'tag':
 						$args['tag'] = array_map( 'sanitize_key', $search_terms );
@@ -164,17 +164,17 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 	 *
 	 * Example theme data:
 	 *   object(stdClass)[59]
-	 *     public 'name' => string 'Magazine Basic' (length=14)
-	 *     public 'slug' => string 'magazine-basic' (length=14)
-	 *     public 'version' => string '1.1' (length=3)
-	 *     public 'author' => string 'tinkerpriest' (length=12)
-	 *     public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36)
-	 *     public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68)
+	 *     public 'name' => string 'Magazine Basic'
+	 *     public 'slug' => string 'magazine-basic'
+	 *     public 'version' => string '1.1'
+	 *     public 'author' => string 'tinkerpriest'
+	 *     public 'preview_url' => string 'http://wp-themes.com/?magazine-basic'
+	 *     public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png'
 	 *     public 'rating' => float 80
 	 *     public 'num_ratings' => int 1
-	 *     public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49)
-	 *     public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.' (length=214)
-	 *     public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66)
+	 *     public 'homepage' => string 'http://wordpress.org/themes/magazine-basic'
+	 *     public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.'
+	 *     public 'download_link' => string 'http://wordpress.org/themes/download/magazine-basic.1.1.zip'
 	 */
 	function single_row( $theme ) {
 		global $themes_allowedtags;
@@ -362,7 +362,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 	 * @uses $tab Global; current tab within Themes->Install screen
 	 * @uses $type Global; type of search.
 	 */
-	function _js_vars() {
+	function _js_vars( $extra_args = array() ) {
 		global $tab, $type;
 		parent::_js_vars( compact( 'tab', 'type' ) );
 	}
diff --git a/wp-admin/includes/class-wp-themes-list-table.php b/wp-admin/includes/class-wp-themes-list-table.php
index 420495efe..684bd8be0 100644
--- a/wp-admin/includes/class-wp-themes-list-table.php
+++ b/wp-admin/includes/class-wp-themes-list-table.php
@@ -28,7 +28,7 @@ class WP_Themes_List_Table extends WP_List_Table {
 		$themes = wp_get_themes( array( 'allowed' => true ) );
 
 		if ( ! empty( $_REQUEST['s'] ) )
-			$this->search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', strtolower( stripslashes( $_REQUEST['s'] ) ) ) ) ) );
+			$this->search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', strtolower( wp_unslash( $_REQUEST['s'] ) ) ) ) ) );
 
 		if ( ! empty( $_REQUEST['features'] ) )
 			$this->features = $_REQUEST['features'];
@@ -235,7 +235,7 @@ class WP_Themes_List_Table extends WP_List_Table {
 	 * @uses _pagination_args['total_pages']
 	 */
 	 function _js_vars( $extra_args = array() ) {
-		$search_string = isset( $_REQUEST['s'] ) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : '';
+		$search_string = isset( $_REQUEST['s'] ) ? esc_attr( wp_unslash( $_REQUEST['s'] ) ) : '';
 
 		$args = array(
 			'search' => $search_string,
diff --git a/wp-admin/includes/class-wp-upgrader.php b/wp-admin/includes/class-wp-upgrader.php
index 63155927d..6c399c7ec 100644
--- a/wp-admin/includes/class-wp-upgrader.php
+++ b/wp-admin/includes/class-wp-upgrader.php
@@ -50,6 +50,7 @@ class WP_Upgrader {
 
 		$this->strings['download_failed'] = __('Download failed.');
 		$this->strings['installing_package'] = __('Installing the latest version&#8230;');
+		$this->strings['no_files'] = __('The package contains no files.');
 		$this->strings['folder_exists'] = __('Destination folder already exists.');
 		$this->strings['mkdir_failed'] = __('Could not create directory.');
 		$this->strings['incompatible_archive'] = __('The package could not be installed.');
@@ -166,6 +167,7 @@ class WP_Upgrader {
 		global $wp_filesystem;
 		$defaults = array( 'source' => '', 'destination' => '', //Please always pass these
 						'clear_destination' => false, 'clear_working' => false,
+						'abort_if_destination_exists' => true,
 						'hook_extra' => array());
 
 		$args = wp_parse_args($args, $defaults);
@@ -193,8 +195,8 @@ class WP_Upgrader {
 		if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents.
 			$source = trailingslashit($source) . trailingslashit($source_files[0]);
 		elseif ( count($source_files) == 0 )
-			return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __( 'The plugin contains no files.' ) ); //There are no files?
-		else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename.
+			return new WP_Error( 'incompatible_archive', $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.
 			$source = trailingslashit($source);
 
 		//Hook ability to change the source file location..
@@ -224,7 +226,7 @@ class WP_Upgrader {
 				return $removed;
 			else if ( ! $removed )
 				return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']);
-		} elseif ( $wp_filesystem->exists($remote_destination) ) {
+		} elseif ( $abort_if_destination_exists && $wp_filesystem->exists($remote_destination) ) {
 			//If we're not clearing the destination folder and something exists there already, Bail.
 			//But first check to see if there are actually any files in the folder.
 			$_files = $wp_filesystem->dirlist($remote_destination);
@@ -272,6 +274,7 @@ class WP_Upgrader {
 		$defaults = array( 	'package' => '', //Please always pass this.
 							'destination' => '', //And this
 							'clear_destination' => false,
+							'abort_if_destination_exists' => true, // Abort if the Destination directory exists, Pass clear_destination as false please
 							'clear_working' => true,
 							'is_multi' => false,
 							'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters.
@@ -318,6 +321,7 @@ class WP_Upgrader {
 											'source' => $working_dir,
 											'destination' => $destination,
 											'clear_destination' => $clear_destination,
+											'abort_if_destination_exists' => $abort_if_destination_exists,
 											'clear_working' => $clear_working,
 											'hook_extra' => $hook_extra
 										) );
@@ -385,6 +389,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 		$this->strings['downloading_package'] = __('Downloading install package from <span class="code">%s</span>&#8230;');
 		$this->strings['unpack_package'] = __('Unpacking the package&#8230;');
 		$this->strings['installing_package'] = __('Installing the plugin&#8230;');
+		$this->strings['no_files'] = __('The plugin contains no files.');
 		$this->strings['process_failed'] = __('Plugin install failed.');
 		$this->strings['process_success'] = __('Plugin installed successfully.');
 	}
@@ -412,6 +417,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 		// Force refresh of plugin update information
 		delete_site_transient('update_plugins');
 		wp_cache_delete( 'plugins', 'plugins' );
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'install', 'type' => 'plugin' ), $package );
 
 		return true;
 	}
@@ -457,6 +463,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 		// Force refresh of plugin update information
 		delete_site_transient('update_plugins');
 		wp_cache_delete( 'plugins', 'plugins' );
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'plugin' ), $plugin );
 	}
 
 	function bulk_upgrade($plugins) {
@@ -539,6 +546,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 		// Force refresh of plugin update information
 		delete_site_transient('update_plugins');
 		wp_cache_delete( 'plugins', 'plugins' );
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'plugin', 'bulk' => true ), $plugins );
 
 		return $results;
 	}
@@ -615,11 +623,11 @@ class Plugin_Upgrader extends WP_Upgrader {
 		$plugins_dir = $wp_filesystem->wp_plugins_dir();
 		$this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );
 
-		if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished.
+		if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If it's already vanished.
 			return $removed;
 
 		// If plugin is in its own directory, recursively delete the directory.
-		if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder
+		if ( strpos($plugin, '/') && $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);
 		else
 			$deleted = $wp_filesystem->delete($plugins_dir . $plugin);
@@ -661,6 +669,7 @@ class Theme_Upgrader extends WP_Upgrader {
 		$this->strings['downloading_package'] = __('Downloading install package from <span class="code">%s</span>&#8230;');
 		$this->strings['unpack_package'] = __('Unpacking the package&#8230;');
 		$this->strings['installing_package'] = __('Installing the theme&#8230;');
+		$this->strings['no_files'] = __('The theme contains no files.');
 		$this->strings['process_failed'] = __('Theme install failed.');
 		$this->strings['process_success'] = __('Theme installed successfully.');
 		/* translators: 1: theme name, 2: version */
@@ -757,13 +766,14 @@ class Theme_Upgrader extends WP_Upgrader {
 		$this->run($options);
 
 		remove_filter('upgrader_source_selection', array(&$this, 'check_package') );
-		remove_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'), 10, 3);
+		remove_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'));
 
 		if ( ! $this->result || is_wp_error($this->result) )
 			return $this->result;
 
 		// Force refresh of theme update information
 		wp_clean_themes_cache();
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'install', 'type' => 'theme' ), $package );
 
 		return true;
 	}
@@ -801,15 +811,16 @@ class Theme_Upgrader extends WP_Upgrader {
 
 		$this->run($options);
 
-		remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2);
-		remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2);
-		remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4);
+		remove_filter('upgrader_pre_install', array(&$this, 'current_before'));
+		remove_filter('upgrader_post_install', array(&$this, 'current_after'));
+		remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'));
 
 		if ( ! $this->result || is_wp_error($this->result) )
 			return $this->result;
 
 		// Force refresh of theme update information
 		wp_clean_themes_cache();
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'theme' ), $theme );
 
 		return true;
 	}
@@ -891,12 +902,13 @@ class Theme_Upgrader extends WP_Upgrader {
 		$this->skin->footer();
 
 		// Cleanup our hooks, in case something else does a upgrade on this connection.
-		remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2);
-		remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2);
-		remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4);
+		remove_filter('upgrader_pre_install', array(&$this, 'current_before'));
+		remove_filter('upgrader_post_install', array(&$this, 'current_after'));
+		remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'));
 
 		// Force refresh of theme update information
 		wp_clean_themes_cache();
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'theme', 'bulk' => true ), $themes );
 
 		return $results;
 	}
@@ -1020,9 +1032,6 @@ class Core_Upgrader extends WP_Upgrader {
 		$this->init();
 		$this->upgrade_strings();
 
-		if ( !empty($feedback) )
-			add_filter('update_feedback', $feedback);
-
 		// Is an update available?
 		if ( !isset( $current->response ) || $current->response == 'latest' )
 			return new WP_Error('up_to_date', $this->strings['up_to_date']);
@@ -1067,7 +1076,9 @@ class Core_Upgrader extends WP_Upgrader {
 		if ( ! function_exists( 'update_core' ) )
 			return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'] );
 
-		return update_core($working_dir, $wp_dir);
+		$result = update_core( $working_dir, $wp_dir );
+		do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'core' ), $result );
+		return $result;
 	}
 
 }
@@ -1118,7 +1129,7 @@ class WP_Upgrader_Skin {
 			return;
 		$this->done_header = true;
 		echo '<div class="wrap">';
-		echo screen_icon();
+		screen_icon();
 		echo '<h2>' . $this->options['title'] . '</h2>';
 	}
 	function footer() {
@@ -1234,7 +1245,7 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
 
 	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>.');
+		$this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: <strong>%2$s</strong>');
 		$this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.');
 		$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.');
@@ -1310,8 +1321,9 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
 
 			echo '<script type="text/javascript">jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').show();</script>';
 		}
-		if ( !empty($this->result) && !is_wp_error($this->result) ) {
-			echo '<div class="updated"><p>' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '</p></div>';
+		if ( $this->result && ! is_wp_error( $this->result ) ) {
+			if ( ! $this->error )
+				echo '<div class="updated"><p>' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '</p></div>';
 			echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
 		}
 
@@ -1342,11 +1354,11 @@ class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin {
 		$this->upgrader->strings['skin_before_update_header'] = __('Updating Plugin %1$s (%2$d/%3$d)');
 	}
 
-	function before() {
+	function before($title = '') {
 		parent::before($this->plugin_info['Title']);
 	}
 
-	function after() {
+	function after($title = '') {
 		parent::after($this->plugin_info['Title']);
 	}
 	function bulk_footer() {
@@ -1376,11 +1388,11 @@ class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin {
 		$this->upgrader->strings['skin_before_update_header'] = __('Updating Theme %1$s (%2$d/%3$d)');
 	}
 
-	function before() {
+	function before($title = '') {
 		parent::before( $this->theme_info->display('Name') );
 	}
 
-	function after() {
+	function after($title = '') {
 		parent::after( $this->theme_info->display('Name') );
 	}
 
@@ -1433,7 +1445,7 @@ class Plugin_Installer_Skin extends WP_Upgrader_Skin {
 
 		$install_actions = array();
 
-		$from = isset($_GET['from']) ? stripslashes($_GET['from']) : 'plugins';
+		$from = isset($_GET['from']) ? wp_unslash( $_GET['from'] ) : 'plugins';
 
 		if ( 'import' == $from )
 			$install_actions['activate_plugin'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;from=import&amp;plugin=' . urlencode( $plugin_file ), 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin &amp; Run Importer') . '</a>';
@@ -1603,7 +1615,7 @@ class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
 }
 
 /**
- * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if its a local file to the Upgrade/Installer functions.
+ * 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.
  *
  * @TODO More Detailed docs, for methods as well.
  *
@@ -1621,7 +1633,7 @@ class File_Upload_Upgrader {
 		if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) )
 			wp_die(__('Please select a file'));
 
-		//Handle a newly uploaded file, Else assume its already been uploaded
+		//Handle a newly uploaded file, Else assume it's already been uploaded
 		if ( ! empty($_FILES) ) {
 			$overrides = array( 'test_form' => false, 'test_type' => false );
 			$file = wp_handle_upload( $_FILES[$form], $overrides );
diff --git a/wp-admin/includes/class-wp-users-list-table.php b/wp-admin/includes/class-wp-users-list-table.php
index 9ad3c13ae..48c9c0c25 100644
--- a/wp-admin/includes/class-wp-users-list-table.php
+++ b/wp-admin/includes/class-wp-users-list-table.php
@@ -209,7 +209,7 @@ class WP_Users_List_Table extends WP_List_Table {
 				continue;
 
 			$style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
-			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, $style, $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
 		}
 	}
 
@@ -241,7 +241,7 @@ class WP_Users_List_Table extends WP_List_Table {
 		// 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( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) );
+			$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();
@@ -260,7 +260,7 @@ class WP_Users_List_Table extends WP_List_Table {
 			$actions = apply_filters( 'user_row_actions', $actions, $user_object );
 			$edit .= $this->row_actions( $actions );
 
-			// Set up the checkbox ( because the user is editable, otherwise its empty )
+			// Set up the checkbox ( because the user is editable, otherwise it's empty )
 			$checkbox = '<label class="screen-reader-text" for="cb-select-' . $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}' />";
 
diff --git a/wp-admin/includes/comment.php b/wp-admin/includes/comment.php
index 845891157..1620755b6 100644
--- a/wp-admin/includes/comment.php
+++ b/wp-admin/includes/comment.php
@@ -7,14 +7,14 @@
  */
 
 /**
- * {@internal Missing Short Description}}
+ * Determine if a comment exists based on author and date.
  *
  * @since 2.0.0
  * @uses $wpdb
  *
  * @param string $comment_author Author of the comment
  * @param string $comment_date Date of the comment
- * @return mixed Comment ID on success.
+ * @return mixed Comment post ID on success.
  */
 function comment_exists($comment_author, $comment_date) {
 	global $wpdb;
@@ -68,11 +68,11 @@ function edit_comment() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Returns a comment object based on comment ID.
  *
  * @since 2.0.0
  *
- * @param int $id ID of comment to retrieve
+ * @param int $id ID of comment to retrieve.
  * @return bool|object Comment if found. False on failure.
  */
 function get_comment_to_edit( $id ) {
diff --git a/wp-admin/includes/dashboard.php b/wp-admin/includes/dashboard.php
index 0df8109f5..657402f94 100644
--- a/wp-admin/includes/dashboard.php
+++ b/wp-admin/includes/dashboard.php
@@ -232,7 +232,7 @@ function wp_dashboard_right_now() {
 
 	$num_tags = wp_count_terms('post_tag');
 
-	$num_comm = wp_count_comments( );
+	$num_comm = wp_count_comments();
 
 	echo "\n\t".'<div class="table table_content">';
 	echo "\n\t".'<p class="sub">' . __('Content') . '</p>'."\n\t".'<table>';
@@ -589,8 +589,8 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
 			$url = get_edit_post_link( $draft->ID );
 			$title = _draft_or_post_title( $draft->ID );
 			$item = "<h4><a href='$url' title='" . sprintf( __( 'Edit &#8220;%s&#8221;' ), esc_attr( $title ) ) . "'>" . esc_html($title) . "</a> <abbr title='" . get_the_time(__('Y/m/d g:i:s A'), $draft) . "'>" . get_the_time( get_option( 'date_format' ), $draft ) . '</abbr></h4>';
-			if ( $the_content = preg_split( '#[\r\n\t ]#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) )
-				$item .= '<p>' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '&hellip;' : '' ) . '</p>';
+			if ( $the_content = wp_trim_words( $draft->post_content, 10 ) )
+				$item .= '<p>' . $the_content . '</p>';
 			$list[] = $item;
 		}
 ?>
@@ -827,7 +827,7 @@ function wp_dashboard_incoming_links_output() {
 			$publisher = "<strong>$publisher</strong>";
 
 		$content = $item->get_content();
-		$content = wp_html_excerpt($content, 50) . ' ...';
+		$content = wp_html_excerpt( $content, 50, ' &hellip;' );
 
 		if ( $link )
 			/* translators: incoming links feed, %1$s is other person, %3$s is content */
@@ -869,7 +869,7 @@ function wp_dashboard_primary_control() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Display primary dashboard RSS widget feed.
  *
  * @since 2.5.0
  *
@@ -923,8 +923,8 @@ function wp_dashboard_secondary_output() {
 
 function wp_dashboard_plugins() {
 	wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array(
-		'http://wordpress.org/extend/plugins/rss/browse/popular/',
-		'http://wordpress.org/extend/plugins/rss/browse/new/'
+		'http://wordpress.org/plugins/rss/browse/popular/',
+		'http://wordpress.org/plugins/rss/browse/new/'
 	) );
 }
 
@@ -934,8 +934,8 @@ function wp_dashboard_plugins() {
  * @since 2.5.0
  */
 function wp_dashboard_plugins_output() {
-	$popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' );
-	$new     = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' );
+	$popular = fetch_feed( 'http://wordpress.org/plugins/rss/browse/popular/' );
+	$new     = fetch_feed( 'http://wordpress.org/plugins/rss/browse/new/' );
 
 	if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
 		$plugin_slugs = array_keys( get_plugins() );
@@ -1093,7 +1093,7 @@ function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) {
 	$widget_options[$widget_id]['number'] = $number;
 
 	if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) {
-		$_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] );
+		$_POST['widget-rss'][$number] = wp_unslash( $_POST['widget-rss'][$number] );
 		$widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] );
 		// title is optional. If black, fill it if possible
 		if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) {
@@ -1114,7 +1114,15 @@ function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) {
 	wp_widget_rss_form( $widget_options[$widget_id], $form_inputs );
 }
 
-// Display File upload quota on dashboard
+/**
+ * Display file upload quota on dashboard.
+ *
+ * Runs on the activity_box_end hook in wp_dashboard_right_now().
+ *
+ * @since 3.0.0
+ *
+ * @return bool True if not multisite, user can't upload files, or the space check option is disabled.
+*/
 function wp_dashboard_quota() {
 	if ( !is_multisite() || !current_user_can('upload_files') || get_site_option( 'upload_space_check_disabled' ) )
 		return true;
diff --git a/wp-admin/includes/deprecated.php b/wp-admin/includes/deprecated.php
index 5d88b3a1e..399577ed4 100644
--- a/wp-admin/includes/deprecated.php
+++ b/wp-admin/includes/deprecated.php
@@ -472,14 +472,13 @@ class WP_User_Search {
 	function WP_User_Search ($search_term = '', $page = '', $role = '') {
 		_deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' );
 
-		$this->search_term = stripslashes( $search_term );
+		$this->search_term = wp_unslash( $search_term );
 		$this->raw_page = ( '' == $page ) ? false : (int) $page;
 		$this->page = (int) ( '' == $page ) ? 1 : $page;
 		$this->role = $role;
 
 		$this->prepare_query();
 		$this->query();
-		$this->prepare_vars_for_template_usage();
 		$this->do_paging();
 	}
 
@@ -550,9 +549,7 @@ class WP_User_Search {
 	 * @since 2.1.0
 	 * @access public
 	 */
-	function prepare_vars_for_template_usage() {
-		$this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone
-	}
+	function prepare_vars_for_template_usage() {}
 
 	/**
 	 * {@internal Missing Short Description}}
@@ -1015,7 +1012,7 @@ function get_default_page_to_edit() {
  * @since 1.2.0
  * @deprecated 3.5.0
  * @deprecated Use image_resize()
- * @see  image_resize()
+ * @see image_resize()
  *
  * @param mixed $file Filename of the original image, Or attachment id.
  * @param int $max_side Maximum length of a single side for the thumbnail.
@@ -1023,6 +1020,6 @@ function get_default_page_to_edit() {
  * @return string Thumbnail path on success, Error string on failure.
  */
 function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
-	_deprecated_function( __FUNCTION__, '3.5', 'image_resize' );
+	_deprecated_function( __FUNCTION__, '3.5', 'image_resize()' );
 	return apply_filters( 'wp_create_thumbnail', image_resize( $file, $max_side, $max_side ) );
 }
diff --git a/wp-admin/includes/export.php b/wp-admin/includes/export.php
index c66b7f363..ae08c3c17 100644
--- a/wp-admin/includes/export.php
+++ b/wp-admin/includes/export.php
@@ -371,7 +371,7 @@ function export_wp( $args = array() ) {
 		<link><?php the_permalink_rss() ?></link>
 		<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><?php echo get_the_author_meta( 'login' ); ?></dc:creator>
-		<guid isPermaLink="false"><?php esc_url( the_guid() ); ?></guid>
+		<guid isPermaLink="false"><?php the_guid(); ?></guid>
 		<description></description>
 		<content:encoded><?php echo wxr_cdata( apply_filters( 'the_content_export', $post->post_content ) ); ?></content:encoded>
 		<excerpt:encoded><?php echo wxr_cdata( apply_filters( 'the_excerpt_export', $post->post_excerpt ) ); ?></excerpt:encoded>
diff --git a/wp-admin/includes/file.php b/wp-admin/includes/file.php
index 96b6db45c..ca424264b 100644
--- a/wp-admin/includes/file.php
+++ b/wp-admin/includes/file.php
@@ -90,7 +90,7 @@ function get_home_path() {
 		$home_path = ABSPATH;
 	}
 
-	return $home_path;
+	return str_replace( '\\', '/', $home_path );
 }
 
 /**
@@ -497,7 +497,7 @@ function download_url( $url, $timeout = 300 ) {
 	if ( ! $tmpfname )
 		return new WP_Error('http_no_file', __('Could not create Temporary file.'));
 
-	$response = wp_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname, 'reject_unsafe_urls' => true ) );
+	$response = wp_safe_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname ) );
 
 	if ( is_wp_error( $response ) ) {
 		unlink( $tmpfname );
@@ -911,13 +911,13 @@ function request_filesystem_credentials($form_post, $type = '', $error = false,
 	$credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => ''));
 
 	// If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option)
-	$credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? stripslashes($_POST['hostname']) : $credentials['hostname']);
-	$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? stripslashes($_POST['username']) : $credentials['username']);
-	$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? stripslashes($_POST['password']) : '');
+	$credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? wp_unslash( $_POST['hostname'] ) : $credentials['hostname']);
+	$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? wp_unslash( $_POST['username'] ) : $credentials['username']);
+	$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? wp_unslash( $_POST['password'] ) : '');
 
 	// Check to see if we are setting the public/private keys for ssh
-	$credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? stripslashes($_POST['public_key']) : '');
-	$credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? stripslashes($_POST['private_key']) : '');
+	$credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? wp_unslash( $_POST['public_key'] ) : '');
+	$credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? wp_unslash( $_POST['private_key'] ) : '');
 
 	//sanitize the hostname, Some people might pass in odd-data:
 	$credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off
@@ -935,8 +935,8 @@ function request_filesystem_credentials($form_post, $type = '', $error = false,
 	else if ( (defined('FTP_SSL') && FTP_SSL) && 'ftpext' == $type ) //Only the FTP Extension understands SSL
 		$credentials['connection_type'] = 'ftps';
 	else if ( !empty($_POST['connection_type']) )
-		$credentials['connection_type'] = stripslashes($_POST['connection_type']);
-	else if ( !isset($credentials['connection_type']) ) //All else fails (And its not defaulted to something else saved), Default to FTP
+		$credentials['connection_type'] = wp_unslash( $_POST['connection_type'] );
+	else if ( !isset($credentials['connection_type']) ) //All else fails (And it's not defaulted to something else saved), Default to FTP
 		$credentials['connection_type'] = 'ftp';
 
 	if ( ! $error &&
@@ -989,7 +989,7 @@ jQuery(function($){
 });
 -->
 </script>
-<form action="<?php echo $form_post ?>" method="post">
+<form action="<?php echo esc_url( $form_post ) ?>" method="post">
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php _e('Connection Information') ?></h2>
@@ -1060,7 +1060,7 @@ jQuery(function($){
 <?php
 foreach ( (array) $extra_fields as $field ) {
 	if ( isset( $_POST[ $field ] ) )
-		echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( stripslashes( $_POST[ $field ] ) ) . '" />';
+		echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( wp_unslash( $_POST[ $field ] ) ) . '" />';
 }
 submit_button( __( 'Proceed' ), 'button', 'upgrade' );
 ?>
diff --git a/wp-admin/includes/image-edit.php b/wp-admin/includes/image-edit.php
index 01bce7bd9..9d717d7ea 100644
--- a/wp-admin/includes/image-edit.php
+++ b/wp-admin/includes/image-edit.php
@@ -13,7 +13,7 @@ function wp_image_editor($post_id, $msg = false) {
 	$sub_sizes = isset($meta['sizes']) && is_array($meta['sizes']);
 	$note = '';
 
-	if ( is_array($meta) && isset($meta['width']) )
+	if ( isset( $meta['width'], $meta['height'] ) )
 		$big = max( $meta['width'], $meta['height'] );
 	else
 		die( __('Image data does not exist. Please re-upload the image.') );
@@ -21,8 +21,9 @@ function wp_image_editor($post_id, $msg = false) {
 	$sizer = $big > 400 ? 400 / $big : 1;
 
 	$backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true );
-	$can_restore = !empty($backup_sizes) && isset($backup_sizes['full-orig'])
-		&& $backup_sizes['full-orig']['file'] != basename($meta['file']);
+	$can_restore = false;
+	if ( ! empty( $backup_sizes ) && isset( $backup_sizes['full-orig'], $meta['file'] ) )
+		$can_restore = $backup_sizes['full-orig']['file'] != basename( $meta['file'] );
 
 	if ( $msg ) {
 		if ( isset($msg->error) )
@@ -63,8 +64,8 @@ function wp_image_editor($post_id, $msg = false) {
 	<input type="hidden" id="imgedit-history-<?php echo $post_id; ?>" value="" />
 	<input type="hidden" id="imgedit-undone-<?php echo $post_id; ?>" value="0" />
 	<input type="hidden" id="imgedit-selection-<?php echo $post_id; ?>" value="" />
-	<input type="hidden" id="imgedit-x-<?php echo $post_id; ?>" value="<?php echo $meta['width']; ?>" />
-	<input type="hidden" id="imgedit-y-<?php echo $post_id; ?>" value="<?php echo $meta['height']; ?>" />
+	<input type="hidden" id="imgedit-x-<?php echo $post_id; ?>" value="<?php echo isset( $meta['width'] ) ? $meta['width'] : 0; ?>" />
+	<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); ?>" />
@@ -81,10 +82,12 @@ function wp_image_editor($post_id, $msg = false) {
 	<div class="imgedit-group-top">
 		<a class="imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;" href="#"><strong><?php _e('Scale Image'); ?></strong></a>
 		<div class="imgedit-help">
-		<p><?php _e('You can proportionally scale the original image. For best results the scaling should be done before performing any other operations on it like crop, rotate, etc. Note that if you make the image larger it may become fuzzy.'); ?></p>
+		<p><?php _e('You can proportionally scale the original image. For best results the scaling should be done before performing any other operations on it like crop, rotate, etc. Note that images can only be scaled down, not up.'); ?></p>
+		<?php if ( isset( $meta['width'], $meta['height'] ) ): ?>
 		<p><?php printf( __('Original dimensions %s'), $meta['width'] . '&times;' . $meta['height'] ); ?></p>
+		<?php endif ?>
 		<div class="imgedit-submit">
-		<span class="nowrap"><input type="text" id="imgedit-scale-width-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" style="width:4em;" value="<?php echo $meta['width']; ?>" />&times;<input type="text" id="imgedit-scale-height-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" style="width:4em;" value="<?php echo $meta['height']; ?>" />
+		<span class="nowrap"><input type="text" id="imgedit-scale-width-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 1)" style="width:4em;" value="<?php echo isset( $meta['width'] ) ? $meta['width'] : 0; ?>" />&times;<input type="text" id="imgedit-scale-height-<?php echo $post_id; ?>" onkeyup="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" onblur="imageEdit.scaleChanged(<?php echo $post_id; ?>, 0)" style="width:4em;" value="<?php echo isset( $meta['height'] ) ? $meta['height'] : 0; ?>" />
 		<span class="imgedit-scale-warn" id="imgedit-scale-warn-<?php echo $post_id; ?>">!</span></span>
 		<input type="button" onclick="imageEdit.action(<?php echo "$post_id, '$nonce'"; ?>, 'scale')" class="button-primary" value="<?php esc_attr_e( 'Scale' ); ?>" />
 		</div>
@@ -454,7 +457,7 @@ function stream_preview_image( $post_id ) {
     if ( is_wp_error( $img ) )
         return false;
 
-	$changes = !empty($_REQUEST['history']) ? json_decode( stripslashes($_REQUEST['history']) ) : null;
+	$changes = !empty($_REQUEST['history']) ? json_decode( wp_unslash($_REQUEST['history']) ) : null;
 	if ( $changes )
 		$img = image_edit_apply_changes( $img, $changes );
 
@@ -499,7 +502,7 @@ function wp_restore_image($post_id) {
 					$delpath = apply_filters('wp_delete_file', $file);
 					@unlink($delpath);
 				}
-			} else {
+			} elseif ( isset( $meta['width'], $meta['height'] ) ) {
 				$backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']);
 			}
 		}
@@ -587,7 +590,7 @@ function wp_save_image( $post_id ) {
 			return $return;
 		}
 	} elseif ( !empty($_REQUEST['history']) ) {
-		$changes = json_decode( stripslashes($_REQUEST['history']) );
+		$changes = json_decode( wp_unslash($_REQUEST['history']) );
 		if ( $changes )
 			$img = image_edit_apply_changes($img, $changes);
 	} else {
diff --git a/wp-admin/includes/image.php b/wp-admin/includes/image.php
index c0fdfd9c2..f2e636bbb 100644
--- a/wp-admin/includes/image.php
+++ b/wp-admin/includes/image.php
@@ -20,7 +20,7 @@
  * @param int $dst_h The destination height.
  * @param int $src_abs Optional. If the source crop points are absolute.
  * @param string $dst_file Optional. The destination file to write to.
- * @return string|WP_Error|false New filepath on success, WP_Error or false on failure.
+ * @return string|WP_Error New filepath on success, WP_Error on failure.
  */
 function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
 	$src_file = $src;
@@ -54,6 +54,9 @@ function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $s
 	$dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) );
 
 	$result = $editor->save( $dst_file );
+	if ( is_wp_error( $result ) )
+		return $result;
+
 	return $dst_file;
 }
 
@@ -70,6 +73,7 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
 	$attachment = get_post( $attachment_id );
 
 	$metadata = array();
+	$support = false;
 	if ( preg_match('!^image/!', get_post_mime_type( $attachment )) && file_is_displayable_image($file) ) {
 		$imagesize = getimagesize( $file );
 		$metadata['width'] = $imagesize[0];
@@ -81,6 +85,7 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
 		// make thumbnails and other intermediate sizes
 		global $_wp_additional_image_sizes;
 
+		$sizes = array();
 		foreach ( get_intermediate_image_sizes() as $s ) {
 			$sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => false );
 			if ( isset( $_wp_additional_image_sizes[$s]['width'] ) )
@@ -113,7 +118,40 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
 		if ( $image_meta )
 			$metadata['image_meta'] = $image_meta;
 
+	} elseif ( preg_match( '#^video/#', get_post_mime_type( $attachment ) ) ) {
+		$metadata = wp_read_video_metadata( $file );
+		$support = current_theme_supports( 'post-thumbnails', 'attachment:video' ) && post_type_supports( 'attachment:video', 'thumbnail' );
+	} elseif ( preg_match( '#^audio/#', get_post_mime_type( $attachment ) ) ) {
+		$metadata = wp_read_audio_metadata( $file );
+		$support = current_theme_supports( 'post-thumbnails', 'attachment:audio' ) && post_type_supports( 'attachment:audio', 'thumbnail' );
+	}
+
+	if ( $support && ! empty( $metadata['image']['data'] ) ) {
+		$ext = '.jpg';
+		switch ( $metadata['image']['mime'] ) {
+		case 'image/gif':
+			$ext = '.gif';
+			break;
+		case 'image/png':
+			$ext = '.png';
+			break;
+		}
+		$basename = str_replace( '.', '-', basename( $file ) ) . '-image' . $ext;
+		$uploaded = wp_upload_bits( $basename, '', $metadata['image']['data'] );
+		if ( false === $uploaded['error'] ) {
+			$attachment = array(
+				'post_mime_type' => $metadata['image']['mime'],
+				'post_type' => 'attachment',
+				'post_content' => '',
+			);
+			$sub_attachment_id = wp_insert_attachment( $attachment, $uploaded['file'] );
+			$attach_data = wp_generate_attachment_metadata( $sub_attachment_id, $uploaded['file'] );
+			wp_update_attachment_metadata( $sub_attachment_id, $attach_data );
+			update_post_meta( $attachment_id, '_thumbnail_id', $sub_attachment_id );
+		}
 	}
+	// remove the blob of binary data from the array
+	unset( $metadata['image']['data'] );
 
 	return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id );
 }
diff --git a/wp-admin/includes/import.php b/wp-admin/includes/import.php
index 907bbb92f..69f7ebe6a 100644
--- a/wp-admin/includes/import.php
+++ b/wp-admin/includes/import.php
@@ -110,7 +110,8 @@ function wp_get_popular_importers() {
 	if ( ! $popular_importers ) {
 		$url = add_query_arg( 'locale', get_locale(), 'http://api.wordpress.org/core/importers/1.0/' );
 		$options = array( 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() );
-		$popular_importers = maybe_unserialize( wp_remote_retrieve_body( wp_remote_get( $url, $options ) ) );
+		$response = wp_remote_get( $url, $options );
+		$popular_importers = maybe_unserialize( wp_remote_retrieve_body( $response ) );
 
 		if ( is_array( $popular_importers ) )
 			set_site_transient( 'popular_importers_' . $locale, $popular_importers, 2 * DAY_IN_SECONDS );
diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php
index 3938943a1..b8cc09817 100644
--- a/wp-admin/includes/media.php
+++ b/wp-admin/includes/media.php
@@ -224,8 +224,60 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
 	$title = $name;
 	$content = '';
 
+	if ( preg_match( '#^audio#', $type ) ) {
+		$meta = wp_read_audio_metadata( $file );
+
+		if ( ! empty( $meta['title'] ) )
+			$title = $meta['title'];
+
+		$content = '';
+
+		if ( ! empty( $title ) ) {
+
+			if ( ! empty( $meta['album'] ) && ! empty( $meta['artist'] ) ) {
+				/* translators: 1: audio track title, 2: album title, 3: artist name */
+				$content .= sprintf( __( '"%1$s" from %2$s by %3$s.' ), $title, $meta['album'], $meta['artist'] );
+			} else if ( ! empty( $meta['album'] ) ) {
+				/* translators: 1: audio track title, 2: album title */
+				$content .= sprintf( __( '"%1$s" from %2$s.' ), $title, $meta['album'] );
+			} else if ( ! empty( $meta['artist'] ) ) {
+				/* translators: 1: audio track title, 2: artist name */
+				$content .= sprintf( __( '"%1$s" by %2$s.' ), $title, $meta['artist'] );
+			} else {
+				$content .= sprintf( __( '"%s".' ), $title );
+			}
+
+		} else if ( ! empty( $meta['album'] ) ) {
+
+			if ( ! empty( $meta['artist'] ) ) {
+				/* translators: 1: audio album title, 2: artist name */
+				$content .= sprintf( __( '%1$s by %2$s.' ), $meta['album'], $meta['artist'] );
+			} else {
+				$content .= $meta['album'] . '.';
+			}
+
+		} else if ( ! empty( $meta['artist'] ) ) {
+
+			$content .= $meta['artist'] . '.';
+
+		}
+
+		if ( ! empty( $meta['year'] ) )
+			$content .= ' ' . sprintf( __( 'Released: %d.' ), $meta['year'] );
+
+		if ( ! empty( $meta['track_number'] ) ) {
+			$track_number = explode( '/', $meta['track_number'] );
+			if ( isset( $track_number[1] ) )
+				$content .= ' ' . sprintf( __( 'Track %1$s of %2$s.' ), number_format_i18n( $track_number[0] ), number_format_i18n( $track_number[1] ) );
+			else
+				$content .= ' ' . sprintf( __( 'Track %1$s.' ), number_format_i18n( $track_number[0] ) );
+		}
+
+		if ( ! empty( $meta['genre'] ) )
+			$content .= ' ' . sprintf( __( 'Genre: %s.' ), $meta['genre'] );
+
 	// use image exif/iptc data for title and caption defaults if possible
-	if ( $image_meta = @wp_read_image_metadata($file) ) {
+	} elseif ( $image_meta = @wp_read_image_metadata( $file ) ) {
 		if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )
 			$title = $image_meta['title'];
 		if ( trim( $image_meta['caption'] ) )
@@ -340,7 +392,6 @@ wp_enqueue_style( 'ie' );
 <script type="text/javascript">
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
-var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time(); ?>'};
 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
 isRtl = <?php echo (int) is_rtl(); ?>;
 //]]>
@@ -393,7 +444,7 @@ function media_buttons($editor_id = 'content') {
 
 	$img = '<span class="wp-media-buttons-icon"></span> ';
 
-	echo '<a href="#" class="button insert-media add_media" data-editor="' . esc_attr( $editor_id ) . '" title="' . esc_attr__( 'Add Media' ) . '">' . $img . __( 'Add Media' ) . '</a>';
+	echo '<a href="#" id="insert-media-button" class="button insert-media add_media" data-editor="' . esc_attr( $editor_id ) . '" title="' . esc_attr__( 'Add Media' ) . '">' . $img . __( 'Add Media' ) . '</a>';
 
 	// Don't use this filter. Want to add a button? Use the media_buttons action.
 	$legacy_filter = apply_filters('media_buttons_context', ''); // deprecated
@@ -445,9 +496,8 @@ function media_upload_form_handler() {
 
 	if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) {
 		$post = $_post = get_post($attachment_id, ARRAY_A);
-		$post_type_object = get_post_type_object( $post[ 'post_type' ] );
 
-		if ( !current_user_can( $post_type_object->cap->edit_post, $attachment_id ) )
+		if ( !current_user_can( 'edit_post', $attachment_id ) )
 			continue;
 
 		if ( isset($attachment['post_content']) )
@@ -467,11 +517,11 @@ function media_upload_form_handler() {
 		$post = apply_filters('attachment_fields_to_save', $post, $attachment);
 
 		if ( isset($attachment['image_alt']) ) {
-			$image_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);
-			if ( $image_alt != stripslashes($attachment['image_alt']) ) {
-				$image_alt = wp_strip_all_tags( stripslashes($attachment['image_alt']), true );
+			$image_alt = wp_unslash( $attachment['image_alt'] );
+			if ( $image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ) {
+				$image_alt = wp_strip_all_tags( $image_alt, true );
 				// update_meta expects slashed
-				update_post_meta( $attachment_id, '_wp_attachment_image_alt', addslashes($image_alt) );
+				update_post_meta( $attachment_id, '_wp_attachment_image_alt', wp_slash( $image_alt ) );
 			}
 		}
 
@@ -501,7 +551,7 @@ function media_upload_form_handler() {
 	}
 
 	if ( isset($send_id) ) {
-		$attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
+		$attachment = wp_unslash( $_POST['attachments'][$send_id] );
 
 		$html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
 		if ( !empty($attachment['url']) ) {
@@ -546,7 +596,7 @@ function wp_media_upload_handler() {
 			$src = "http://$src";
 
 		if ( isset( $_POST['media_type'] ) && 'image' != $_POST['media_type'] ) {
-			$title = esc_html( stripslashes( $_POST['title'] ) );
+			$title = esc_html( wp_unslash( $_POST['title'] ) );
 			if ( empty( $title ) )
 				$title = esc_html( basename( $src ) );
 
@@ -561,9 +611,9 @@ function wp_media_upload_handler() {
 			$html = apply_filters( $type . '_send_to_editor_url', $html, esc_url_raw( $src ), $title );
 		} else {
 			$align = '';
-			$alt = esc_attr( stripslashes( $_POST['alt'] ) );
+			$alt = esc_attr( wp_unslash( $_POST['alt'] ) );
 			if ( isset($_POST['align']) ) {
-				$align = esc_attr( stripslashes( $_POST['align'] ) );
+				$align = esc_attr( wp_unslash( $_POST['align'] ) );
 				$class = " class='align$align'";
 			}
 			if ( !empty($src) )
@@ -1108,7 +1158,7 @@ function get_media_item( $attachment_id, $args = null ) {
 	}
 
 	$display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case
-	$display_title = $show_title ? "<div class='filename new'><span class='title'>" . wp_html_excerpt( $display_title, 60 ) . "</span></div>" : '';
+	$display_title = $show_title ? "<div class='filename new'><span class='title'>" . wp_html_excerpt( $display_title, 60, '&hellip;' ) . "</span></div>" : '';
 
 	$gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) );
 	$order = '';
@@ -1127,7 +1177,7 @@ function get_media_item( $attachment_id, $args = null ) {
 
 	$media_dims = '';
 	$meta = wp_get_attachment_metadata( $post->ID );
-	if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) )
+	if ( isset( $meta['width'], $meta['height'] ) )
 		$media_dims .= "<span id='media-dims-$post->ID'>{$meta['width']}&nbsp;&times;&nbsp;{$meta['height']}</span> ";
 	$media_dims = apply_filters( 'media_meta', $media_dims, $post );
 
@@ -1452,7 +1502,7 @@ function media_upload_form( $errors = null ) {
 	global $type, $tab, $pagenow, $is_IE, $is_opera;
 
 	if ( ! _device_can_upload() ) {
-		echo '<p>' . __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.') . '</p>';
+		echo '<p>' . sprintf( __('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.'), 'http://wordpress.org/mobile/' ) . '</p>';
 		return;
 	}
 
@@ -1602,7 +1652,7 @@ function media_upload_type_form($type = 'file', $errors = null, $id = null) {
 		$form_class .= ' html-uploader';
 ?>
 
-<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
 <?php submit_button( '', 'hidden', 'save', false ); ?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
 <?php wp_nonce_field('media-form'); ?>
@@ -1667,7 +1717,7 @@ function media_upload_type_url_form($type = null, $errors = null, $id = null) {
 		$form_class .= ' html-uploader';
 ?>
 
-<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
 <?php wp_nonce_field('media-form'); ?>
 
@@ -1818,7 +1868,7 @@ jQuery(function($){
 <a href="#" id="desc"><?php _e('Descending'); ?></a> |
 <a href="#" id="clear"><?php _ex('Clear', 'verb'); ?></a>
 </div>
-<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="gallery-form">
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="gallery-form">
 <?php wp_nonce_field('media-form'); ?>
 <?php //media_upload_form( $errors ); ?>
 <table class="widefat" cellspacing="0">
@@ -2058,7 +2108,7 @@ foreach ($arc_result as $arc_row) {
 </div>
 </form>
 
-<form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="library-form">
+<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="library-form">
 
 <?php wp_nonce_field('media-form'); ?>
 <?php //media_upload_form( $errors ); ?>
@@ -2283,8 +2333,9 @@ function edit_form_image_editor( $post ) {
 	$title = esc_attr( $post->post_title );
 	$alt_text = get_post_meta( $post->ID, '_wp_attachment_image_alt', true );
 
-	$att_url = wp_get_attachment_url( $post->ID );
-
+	$att_url = wp_get_attachment_url( $post->ID ); ?>
+	<div class="wp_attachment_holder">
+	<?php
 	if ( wp_attachment_is_image( $post->ID ) ) :
 		$image_edit_button = '';
 		if ( wp_image_editor_supports( array( 'mime_type' => $post->post_mime_type ) ) ) {
@@ -2292,7 +2343,7 @@ function edit_form_image_editor( $post ) {
 			$image_edit_button = "<input type='button' id='imgedit-open-btn-$post->ID' onclick='imageEdit.open( $post->ID, \"$nonce\" )' class='button' value='" . esc_attr__( 'Edit Image' ) . "' /> <span class='spinner'></span>";
 		}
  	?>
-	<div class="wp_attachment_holder">
+
 		<div class="imgedit-response" id="imgedit-response-<?php echo $attachment_id; ?>"></div>
 
 		<div<?php if ( $open ) echo ' style="display:none"'; ?> class="wp_attachment_image" id="media-head-<?php echo $attachment_id; ?>">
@@ -2302,10 +2353,34 @@ function edit_form_image_editor( $post ) {
 		<div<?php if ( ! $open ) echo ' style="display:none"'; ?> class="image-editor" id="image-editor-<?php echo $attachment_id; ?>">
 			<?php if ( $open ) wp_image_editor( $attachment_id ); ?>
 		</div>
-	</div>
-	<?php endif; ?>
+	<?php
+	elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'audio/' ) ):
+
+		echo wp_audio_shortcode( array( 'src' => $att_url ) );
+
+	elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'video/' ) ):
+
+		$meta = wp_get_attachment_metadata( $attachment_id );
+		$w = ! empty( $meta['width'] ) ? min( $meta['width'], 600 ) : 0;
+		$h = 0;
+		if ( ! empty( $meta['height'] ) )
+			$h = $meta['height'];
+		if ( $h && $w < $meta['width'] )
+			$h = round( ( $meta['height'] * $w ) / $meta['width'] );
+
+		$attr = array( 'src' => $att_url );
+
+		if ( ! empty( $meta['width' ] ) )
+			$attr['width'] = $w;
 
-	<div class="wp_attachment_details">
+		if ( ! empty( $meta['height'] ) )
+			$attr['height'] = $h;
+
+		echo wp_video_shortcode( $attr );
+
+	endif; ?>
+	</div>
+	<div class="wp_attachment_details edit-form-section">
 		<p>
 			<label for="attachment_caption"><strong><?php _e( 'Caption' ); ?></strong></label><br />
 			<textarea class="widefat" name="excerpt" id="attachment_caption"><?php echo $post->post_excerpt; ?></textarea>
@@ -2319,7 +2394,7 @@ function edit_form_image_editor( $post ) {
 	<?php endif; ?>
 
 	<?php
-		$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
+		$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' );
 		$editor_args = array(
 			'textarea_name' => 'content',
 			'textarea_rows' => 5,
@@ -2347,11 +2422,11 @@ function edit_form_image_editor( $post ) {
 function attachment_submitbox_metadata() {
 	$post = get_post();
 
-	$filename = esc_html( basename( $post->guid ) );
+	$filename = esc_html( wp_basename( $post->guid ) );
 
 	$media_dims = '';
 	$meta = wp_get_attachment_metadata( $post->ID );
-	if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) )
+	if ( isset( $meta['width'], $meta['height'] ) )
 		$media_dims .= "<span id='media-dims-$post->ID'>{$meta['width']}&nbsp;&times;&nbsp;{$meta['height']}</span> ";
 	$media_dims = apply_filters( 'media_meta', $media_dims, $post );
 
@@ -2373,7 +2448,55 @@ function attachment_submitbox_metadata() {
 		?></strong>
 	</div>
 
-<?php if ( $media_dims ) : ?>
+<?php
+	if ( preg_match( '#^audio|video#', $post->post_mime_type ) ):
+
+		$fields = array(
+			'mime_type' => __( 'Mime-type:' ),
+			'year' => __( 'Year:' ),
+			'genre' => __( 'Genre:' ),
+			'length_formatted' => __( 'Length:' ),
+		);
+
+		foreach ( $fields as $key => $label ):
+			if ( ! empty( $meta[$key] ) ) : ?>
+		<div class="misc-pub-section">
+			<?php echo $label ?> <strong><?php echo esc_html( $meta[$key] ); ?></strong>
+		</div>
+	<?php
+			endif;
+		endforeach;
+
+		if ( ! empty( $meta['bitrate'] ) ) : ?>
+		<div class="misc-pub-section">
+			<?php _e( 'Bitrate:' ); ?> <strong><?php
+				echo round( $meta['bitrate'] / 1000 ), 'kb/s';
+
+				if ( ! empty( $meta['bitrate_mode'] ) )
+					echo ' ', strtoupper( $meta['bitrate_mode'] );
+
+			?></strong>
+		</div>
+	<?php
+		endif;
+
+		$audio_fields = array(
+			'dataformat' => __( 'Audio Format:' ),
+			'codec' => __( 'Audio Codec:' )
+		);
+
+		foreach ( $audio_fields as $key => $label ):
+			if ( ! empty( $meta['audio'][$key] ) ) : ?>
+		<div class="misc-pub-section">
+			<?php echo $label; ?> <strong><?php echo esc_html( $meta['audio'][$key] ); ?></strong>
+		</div>
+	<?php
+			endif;
+		endforeach;
+
+	endif;
+
+	if ( $media_dims ) : ?>
 	<div class="misc-pub-section">
 		<?php _e( 'Dimensions:' ); ?> <strong><?php echo $media_dims; ?></strong>
 	</div>
@@ -2395,3 +2518,142 @@ add_filter( 'media_upload_gallery', 'media_upload_gallery' );
 add_filter( 'media_upload_library', 'media_upload_library' );
 
 add_action( 'attachment_submitbox_misc_actions', 'attachment_submitbox_metadata' );
+
+/**
+ * Parse ID3v2, ID3v1, and getID3 comments to extract usable data
+ *
+ * @since 3.6.0
+ *
+ * @param array $metadata An existing array with data
+ * @param array $data Data supplied by ID3 tags
+ */
+function wp_add_id3_tag_data( &$metadata, $data ) {
+	foreach ( array( 'id3v2', 'id3v1' ) as $version ) {
+		if ( ! empty( $data[$version]['comments'] ) ) {
+			foreach ( $data[$version]['comments'] as $key => $list ) {
+				if ( ! empty( $list ) ) {
+					$metadata[$key] = reset( $list );
+					// fix bug in byte stream analysis
+					if ( 'terms_of_use' === $key && 0 === strpos( $metadata[$key], 'yright notice.' ) )
+						$metadata[$key] = 'Cop' . $metadata[$key];
+				}
+			}
+			break;
+		}
+	}
+
+	if ( ! empty( $data['id3v2']['APIC'] ) ) {
+		$image = reset( $data['id3v2']['APIC']);
+		if ( ! empty( $image['data'] ) ) {
+			$metadata['image'] = array(
+				'data' => $image['data'],
+				'mime' => $image['image_mime'],
+				'width' => $image['image_width'],
+				'height' => $image['image_height']
+			);
+		}
+	} elseif ( ! empty( $data['comments']['picture'] ) ) {
+		$image = reset( $data['comments']['picture'] );
+		if ( ! empty( $image['data'] ) ) {
+			$metadata['image'] = array(
+				'data' => $image['data'],
+				'mime' => $image['image_mime']
+			);
+		}
+	}
+}
+
+/**
+ * Retrieve metadata from a video file's ID3 tags
+ *
+ * @since 3.6.0
+ *
+ * @param string $file Path to file.
+ * @return array|boolean Returns array of metadata, if found.
+ */
+function wp_read_video_metadata( $file ) {
+	if ( ! file_exists( $file ) )
+		return false;
+
+	$metadata = array();
+
+	if ( ! class_exists( 'getID3' ) )
+		require( ABSPATH . WPINC . '/ID3/getid3.php' );
+	$id3 = new getID3();
+	$data = $id3->analyze( $file );
+
+	if ( isset( $data['video']['lossless'] ) )
+		$metadata['lossless'] = $data['video']['lossless'];
+	if ( ! empty( $data['video']['bitrate'] ) )
+		$metadata['bitrate'] = (int) $data['video']['bitrate'];
+	if ( ! empty( $data['video']['bitrate_mode'] ) )
+		$metadata['bitrate_mode'] = $data['video']['bitrate_mode'];
+	if ( ! empty( $data['filesize'] ) )
+		$metadata['filesize'] = (int) $data['filesize'];
+	if ( ! empty( $data['mime_type'] ) )
+		$metadata['mime_type'] = $data['mime_type'];
+	if ( ! empty( $data['playtime_seconds'] ) )
+		$metadata['length'] = (int) ceil( $data['playtime_seconds'] );
+	if ( ! empty( $data['playtime_string'] ) )
+		$metadata['length_formatted'] = $data['playtime_string'];
+	if ( ! empty( $data['video']['resolution_x'] ) )
+		$metadata['width'] = (int) $data['video']['resolution_x'];
+	if ( ! empty( $data['video']['resolution_y'] ) )
+		$metadata['height'] = (int) $data['video']['resolution_y'];
+	if ( ! empty( $data['fileformat'] ) )
+		$metadata['fileformat'] = $data['fileformat'];
+	if ( ! empty( $data['video']['dataformat'] ) )
+		$metadata['dataformat'] = $data['video']['dataformat'];
+	if ( ! empty( $data['video']['encoder'] ) )
+		$metadata['encoder'] = $data['video']['encoder'];
+	if ( ! empty( $data['video']['codec'] ) )
+		$metadata['codec'] = $data['video']['codec'];
+
+	if ( ! empty( $data['audio'] ) ) {
+		unset( $data['audio']['streams'] );
+		$metadata['audio'] = $data['audio'];
+	}
+
+	wp_add_id3_tag_data( $metadata, $data );
+
+	return $metadata;
+}
+
+/**
+ * Retrieve metadata from a audio file's ID3 tags
+ *
+ * @since 3.6.0
+ *
+ * @param string $file Path to file.
+ * @return array|boolean Returns array of metadata, if found.
+ */
+function wp_read_audio_metadata( $file ) {
+	if ( ! file_exists( $file ) )
+		return false;
+	$metadata = array();
+
+	if ( ! class_exists( 'getID3' ) )
+		require( ABSPATH . WPINC . '/ID3/getid3.php' );
+	$id3 = new getID3();
+	$data = $id3->analyze( $file );
+
+	if ( ! empty( $data['audio'] ) ) {
+		unset( $data['audio']['streams'] );
+		$metadata = $data['audio'];
+	}
+
+	if ( ! empty( $data['fileformat'] ) )
+		$metadata['fileformat'] = $data['fileformat'];
+	if ( ! empty( $data['filesize'] ) )
+		$metadata['filesize'] = (int) $data['filesize'];
+	if ( ! empty( $data['mime_type'] ) )
+		$metadata['mime_type'] = $data['mime_type'];
+	if ( ! empty( $data['playtime_seconds'] ) )
+		$metadata['length'] = (int) ceil( $data['playtime_seconds'] );
+	if ( ! empty( $data['playtime_string'] ) )
+		$metadata['length_formatted'] = $data['playtime_string'];
+
+	wp_add_id3_tag_data( $metadata, $data );
+
+	return $metadata;
+}
diff --git a/wp-admin/includes/menu.php b/wp-admin/includes/menu.php
index 14cadfa6f..e315c7666 100644
--- a/wp-admin/includes/menu.php
+++ b/wp-admin/includes/menu.php
@@ -156,7 +156,7 @@ function add_menu_classes($menu) {
 			continue;
 		}
 
-		if ( 0 === strpos($top[2], 'separator') ) { // if separator
+		if ( 0 === strpos($top[2], 'separator') && false !== $lastorder ) { // if separator
 			$first = true;
 			$c = $menu[$lastorder][4];
 			$menu[$lastorder][4] = add_cssclass('menu-top-last', $c);
diff --git a/wp-admin/includes/meta-boxes.php b/wp-admin/includes/meta-boxes.php
index 2b0b2864f..cefa5a96b 100644
--- a/wp-admin/includes/meta-boxes.php
+++ b/wp-admin/includes/meta-boxes.php
@@ -9,7 +9,7 @@
  *
  * @param object $post
  */
-function post_submit_meta_box($post) {
+function post_submit_meta_box($post, $args = array() ) {
 	global $action;
 
 	$post_type = $post->post_type;
@@ -171,6 +171,24 @@ if ( 0 != $post->ID ) {
 	$date = date_i18n( $datef, strtotime( current_time('mysql') ) );
 }
 
+if ( ! empty( $args['args']['revisions_count'] ) ) :
+	$revisions_to_keep = wp_revisions_to_keep( $post );
+?>
+<div class="misc-pub-section num-revisions">
+<?php
+	if ( $revisions_to_keep > 0 && $revisions_to_keep <= $args['args']['revisions_count'] ) {
+		echo '<span title="' . esc_attr( sprintf( __( 'Your site is configured to keep only the last %s revisions.' ),
+			number_format_i18n( $revisions_to_keep ) ) ) . '">';
+		printf( __( 'Revisions: %s' ), '<b>' . number_format_i18n( $args['args']['revisions_count'] ) . '+</b>' );
+		echo '</span>';
+	} else {
+		printf( __( 'Revisions: %s' ), '<b>' . number_format_i18n( $args['args']['revisions_count'] ) . '</b>' );
+	}
+?>
+	<a class="hide-if-no-js" href="<?php echo esc_url( get_edit_post_link( $args['args']['revision_id'] ) ); ?>"><?php _ex( 'Browse', 'revisions' ); ?></a>
+</div>
+<?php endif;
+
 if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
 <div class="misc-pub-section curtime">
 	<span id="timestamp">
@@ -315,9 +333,9 @@ function post_format_meta_box( $post, $box ) {
 			$post_formats[0][] = $post_format;
 	?>
 	<div id="post-formats-select">
-		<input type="radio" name="post_format" class="post-format" id="post-format-0" value="0" <?php checked( $post_format, '0' ); ?> /> <label for="post-format-0"><?php _e('Standard'); ?></label>
+		<input type="radio" name="post_format" class="post-format" id="post-format-0" value="0" <?php checked( $post_format, '0' ); ?> /> <label for="post-format-0" class="post-format-icon post-format-standard"><?php echo get_post_format_string( 'standard' ); ?></label>
 		<?php foreach ( $post_formats[0] as $format ) : ?>
-		<br /><input type="radio" name="post_format" class="post-format" id="post-format-<?php echo esc_attr( $format ); ?>" value="<?php echo esc_attr( $format ); ?>" <?php checked( $post_format, $format ); ?> /> <label for="post-format-<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></label>
+		<br /><input type="radio" name="post_format" class="post-format" id="post-format-<?php echo esc_attr( $format ); ?>" value="<?php echo esc_attr( $format ); ?>" <?php checked( $post_format, $format ); ?> /> <label for="post-format-<?php echo esc_attr( $format ); ?>" class="post-format-icon post-format-<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></label>
 		<?php endforeach; ?><br />
 	</div>
 	<?php endif; endif;
@@ -339,27 +357,27 @@ function post_tags_meta_box($post, $box) {
 	extract( wp_parse_args($args, $defaults), EXTR_SKIP );
 	$tax_name = esc_attr($taxonomy);
 	$taxonomy = get_taxonomy($taxonomy);
-	$disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : '';
+	$user_can_assign_terms = current_user_can( $taxonomy->cap->assign_terms );
 	$comma = _x( ',', 'tag delimiter' );
 ?>
 <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 echo $disabled; ?>><?php echo str_replace( ',', $comma . ' ', get_terms_to_edit( $post->ID, $tax_name ) ); // textarea_escaped by esc_attr() ?></textarea></div>
- 	<?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
+	<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>
+ 	<?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>
 		<div class="taghint"><?php echo $taxonomy->labels->add_new_item; ?></div>
 		<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="" />
 		<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" /></p>
 	</div>
-	<p class="howto"><?php echo esc_attr( $taxonomy->labels->separate_items_with_commas ); ?></p>
+	<p class="howto"><?php echo $taxonomy->labels->separate_items_with_commas; ?></p>
 	<?php endif; ?>
 	</div>
 	<div class="tagchecklist"></div>
 </div>
-<?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
+<?php if ( $user_can_assign_terms ) : ?>
 <p class="hide-if-no-js"><a href="#titlediv" class="tagcloud-link" id="link-<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->choose_from_most_used; ?></a></p>
 <?php endif; ?>
 <?php
@@ -602,8 +620,8 @@ function post_author_meta_box($post) {
  *
  * @param object $post
  */
-function post_revisions_meta_box($post) {
-	wp_list_post_revisions();
+function post_revisions_meta_box( $post ) {
+	wp_list_post_revisions( $post );
 }
 
 // -- Page related Meta Boxes
@@ -979,4 +997,4 @@ function link_advanced_meta_box($link) {
 function post_thumbnail_meta_box( $post ) {
 	$thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );
 	echo _wp_post_thumbnail_html( $thumbnail_id, $post->ID );
-}
\ No newline at end of file
+}
diff --git a/wp-admin/includes/misc.php b/wp-admin/includes/misc.php
index f09ef4528..5b609e45b 100644
--- a/wp-admin/includes/misc.php
+++ b/wp-admin/includes/misc.php
@@ -220,11 +220,10 @@ add_action( 'update_option_page_on_front', 'update_home_siteurl', 10, 2 );
  * @return string
  */
 function url_shorten( $url ) {
-	$short_url = str_replace( 'http://', '', stripslashes( $url ));
-	$short_url = str_replace( 'www.', '', $short_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 ) . '...';
+		$short_url = substr( $short_url, 0, 32 ) . '&hellip;';
 	return $short_url;
 }
 
@@ -371,7 +370,7 @@ function set_screen_options() {
 }
 
 /**
- * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file
+ * Check if rewrite rule for WordPress already exists in the IIS 7+ configuration file
  *
  * @since 2.8.0
  *
@@ -429,7 +428,7 @@ function iis7_delete_rewrite_rule($filename) {
 }
 
 /**
- * Add WordPress rewrite rule to the IIS 7 configuration file.
+ * Add WordPress rewrite rule to the IIS 7+ configuration file.
  *
  * @since 2.8.0
  *
@@ -561,3 +560,108 @@ function _ipad_meta() {
 	}
 }
 add_action('admin_head', '_ipad_meta');
+
+/**
+ * Check lock status for posts displayed on the Posts screen
+ *
+ * @since 3.6
+ */
+function wp_check_locked_posts( $response, $data, $screen_id ) {
+	$checked = array();
+
+	if ( array_key_exists( 'wp-check-locked-posts', $data ) && is_array( $data['wp-check-locked-posts'] ) ) {
+		foreach ( $data['wp-check-locked-posts'] as $key ) {
+			if ( ! $post_id = absint( substr( $key, 5 ) ) )
+				continue;
+
+			if ( ( $user_id = wp_check_post_lock( $post_id ) ) && ( $user = get_userdata( $user_id ) ) && current_user_can( 'edit_post', $post_id ) ) {
+				$send = array( 'text' => sprintf( __( '%s is currently editing' ), $user->display_name ) );
+
+				if ( ( $avatar = get_avatar( $user->ID, 18 ) ) && preg_match( "|src='([^']+)'|", $avatar, $matches ) )
+					$send['avatar_src'] = $matches[1];
+
+				$checked[$key] = $send;
+			}
+		}
+	}
+
+	if ( ! empty( $checked ) )
+		$response['wp-check-locked-posts'] = $checked;
+
+	return $response;
+}
+add_filter( 'heartbeat_received', 'wp_check_locked_posts', 10, 3 );
+
+/**
+ * Check lock status on the New/Edit Post screen and refresh the lock
+ *
+ * @since 3.6
+ */
+function wp_refresh_post_lock( $response, $data, $screen_id ) {
+	if ( array_key_exists( 'wp-refresh-post-lock', $data ) ) {
+		$received = $data['wp-refresh-post-lock'];
+		$send = array();
+
+		if ( ! $post_id = absint( $received['post_id'] ) )
+			return $response;
+
+		if ( ! current_user_can('edit_post', $post_id) )
+			return $response;
+
+		if ( ( $user_id = wp_check_post_lock( $post_id ) ) && ( $user = get_userdata( $user_id ) ) ) {
+			$error = array(
+				'text' => sprintf( __( '%s has taken over and is currently editing.' ), $user->display_name )
+			);
+
+			if ( $avatar = get_avatar( $user->ID, 64 ) ) {
+				if ( preg_match( "|src='([^']+)'|", $avatar, $matches ) )
+					$error['avatar_src'] = $matches[1];
+			}
+
+			$send['lock_error'] = $error;
+		} else {
+			if ( $new_lock = wp_set_post_lock( $post_id ) )
+				$send['new_lock'] = implode( ':', $new_lock );
+		}
+
+		$response['wp-refresh-post-lock'] = $send;
+	}
+
+	return $response;
+}
+add_filter( 'heartbeat_received', 'wp_refresh_post_lock', 10, 3 );
+
+/**
+ * Check nonce expiration on the New/Edit Post screen and refresh if needed
+ *
+ * @since 3.6
+ */
+function wp_refresh_post_nonces( $response, $data, $screen_id ) {
+	if ( array_key_exists( 'wp-refresh-post-nonces', $data ) ) {
+		$received = $data['wp-refresh-post-nonces'];
+		$response['wp-refresh-post-nonces'] = array( 'check' => 1 );
+
+		if ( ! $post_id = absint( $received['post_id'] ) )
+			return $response;
+
+		if ( ! current_user_can( 'edit_post', $post_id ) || empty( $received['post_nonce'] ) )
+			return $response;
+
+		if ( 2 === wp_verify_nonce( $received['post_nonce'], 'update-post_' . $post_id ) ) {
+			$response['wp-refresh-post-nonces'] = array(
+				'replace' => array(
+					'autosavenonce' => wp_create_nonce('autosave'),
+					'getpermalinknonce' => wp_create_nonce('getpermalink'),
+					'samplepermalinknonce' => wp_create_nonce('samplepermalink'),
+					'closedpostboxesnonce' => wp_create_nonce('closedpostboxes'),
+					'_ajax_linking_nonce' => wp_create_nonce( 'internal-linking' ),
+					'_wpnonce' => wp_create_nonce( 'update-post_' . $post_id ),
+				),
+				'heartbeatNonce' => wp_create_nonce( 'heartbeat-nonce' ),
+			);
+		}
+	}
+
+	return $response;
+}
+add_filter( 'heartbeat_received', 'wp_refresh_post_nonces', 10, 3 );
diff --git a/wp-admin/includes/ms.php b/wp-admin/includes/ms.php
index b62e1d0b2..bba4adbe2 100644
--- a/wp-admin/includes/ms.php
+++ b/wp-admin/includes/ms.php
@@ -80,7 +80,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
 		$drop = false;
 
 	if ( $drop ) {
-		$drop_tables = apply_filters( 'wpmu_drop_tables', $wpdb->tables( 'blog' ) );
+		$drop_tables = apply_filters( 'wpmu_drop_tables', $wpdb->tables( 'blog' ), $blog_id );
 
 		foreach ( (array) $drop_tables as $table ) {
 			$wpdb->query( "DROP TABLE IF EXISTS `$table`" );
@@ -135,6 +135,9 @@ function wpmu_delete_user( $id ) {
 	$id = (int) $id;
 	$user = new WP_User( $id );
 
+	if ( !$user->exists() )
+		return false;
+
 	do_action( 'wpmu_delete_user', $id );
 
 	$blogs = get_blogs_of_user( $id );
@@ -368,7 +371,7 @@ function update_user_status( $id, $pref, $value, $deprecated = null ) {
 	if ( null !== $deprecated )
 		_deprecated_argument( __FUNCTION__, '3.1' );
 
-	$wpdb->update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) );
+	$wpdb->update( $wpdb->users, array( sanitize_key( $pref ) => $value ), array( 'ID' => $id ) );
 
 	$user = new WP_User( $id );
 	clean_user_cache( $user );
@@ -525,7 +528,7 @@ function site_admin_notice() {
 	if ( !is_super_admin() )
 		return false;
 	if ( get_site_option( 'wpmu_upgrade_site' ) != $wp_db_version )
-		echo "<div class='update-nag'>" . sprintf( __( 'Thank you for Updating! Please visit the <a href="%s">Update Network</a> page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "</div>";
+		echo "<div class='update-nag'>" . sprintf( __( 'Thank you for Updating! Please visit the <a href="%s">Upgrade Network</a> page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "</div>";
 }
 add_action( 'admin_notices', 'site_admin_notice' );
 add_action( 'network_admin_notices', 'site_admin_notice' );
@@ -692,23 +695,3 @@ var tb_pathToImage = "../../wp-includes/js/thickbox/loadingAnimation.gif";
 </script>
 <?php
 }
-
-/**
- * Whether or not we have a large network.
- *
- * The default criteria for a large network is either more than 10,000 users or more than 10,000 sites.
- * Plugins can alter this criteria using the 'wp_is_large_network' filter.
- *
- * @since 3.3.0
- * @param string $using 'sites or 'users'. Default is 'sites'.
- * @return bool True if the network meets the criteria for large. False otherwise.
- */
-function wp_is_large_network( $using = 'sites' ) {
-	if ( 'users' == $using ) {
-		$count = get_user_count();
-		return apply_filters( 'wp_is_large_network', $count > 10000, 'users', $count );
-	}
-
-	$count = get_blog_count();
-	return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count );
-}
diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php
index 60644628d..7e9fe6ad6 100644
--- a/wp-admin/includes/nav-menu.php
+++ b/wp-admin/includes/nav-menu.php
@@ -14,7 +14,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 	 *
 	 * @param string $output Passed by reference.
 	 */
-	function start_lvl(&$output) {}
+	function start_lvl( &$output, $depth = 0, $args = array() ) {}
 
 	/**
 	 * @see Walker_Nav_Menu::end_lvl()
@@ -22,8 +22,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 	 *
 	 * @param string $output Passed by reference.
 	 */
-	function end_lvl(&$output) {
-	}
+	function end_lvl( &$output, $depth = 0, $args = array() ) {}
 
 	/**
 	 * @see Walker::start_el()
@@ -34,7 +33,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 	 * @param int $depth Depth of menu item. Used for padding.
 	 * @param object $args
 	 */
-	function start_el(&$output, $item, $depth, $args) {
+	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;
 
@@ -79,13 +78,17 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 			$title = sprintf( __('%s (Pending)'), $item->title );
 		}
 
-		$title = empty( $item->label ) ? $title : $item->label;
+		$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 ); ?>">
 			<dl class="menu-item-bar">
 				<dt class="menu-item-handle">
-					<span class="item-title"><?php echo esc_html( $title ); ?></span>
+					<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">
@@ -169,6 +172,17 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 					</label>
 				</p>
 
+				<p class="field-move hide-if-no-js description description-wide">
+					<label>
+						<span><?php _e( 'Move' ); ?></span>
+						<a href="#" class="menus-move-up"><?php _e( 'Up one' ); ?></a>
+						<a href="#" class="menus-move-down"><?php _e( 'Down one' ); ?></a>
+						<a href="#" class="menus-move-left"></a>
+						<a href="#" class="menus-move-right"></a>
+						<a href="#" class="menus-move-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">
@@ -182,10 +196,10 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
 								'action' => 'delete-menu-item',
 								'menu-item' => $item_id,
 							),
-							remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
+							admin_url( 'nav-menus.php' )
 						),
 						'delete-menu_item_' . $item_id
-					); ?>"><?php _e('Remove'); ?></a> <span class="meta-sep"> | </span> <a class="item-cancel submitcancel" id="cancel-<?php echo $item_id; ?>" href="<?php	echo esc_url( add_query_arg( array('edit-menu-item' => $item_id, 'cancel' => time()), remove_query_arg( $removed_args, admin_url( 'nav-menus.php' ) ) ) );
+					); ?>"><?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>
 
@@ -216,12 +230,12 @@ class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
 		}
 	}
 
-	function start_lvl( &$output, $depth ) {
+	function start_lvl( &$output, $depth = 0, $args = array() ) {
 		$indent = str_repeat( "\t", $depth );
 		$output .= "\n$indent<ul class='children'>\n";
 	}
 
-	function end_lvl( &$output, $depth ) {
+	function end_lvl( &$output, $depth = 0, $args = array() ) {
 		$indent = str_repeat( "\t", $depth );
 		$output .= "\n$indent</ul>";
 	}
@@ -235,7 +249,7 @@ class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
 	 * @param int $depth Depth of menu item. Used for padding.
 	 * @param object $args
 	 */
-	function start_el(&$output, $item, $depth, $args) {
+	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;
@@ -250,6 +264,8 @@ class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
 		if ( property_exists( $item, 'front_or_home' ) && $item->front_or_home ) {
 			$title = sprintf( _x( 'Home: %s', 'nav menu front page title' ), $item->post_title );
 			$output .= ' add-to-top';
+		} elseif ( property_exists( $item, 'label' ) ) {
+			$title = $item->label;
 		}
 		$output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
 		$output .= isset( $title ) ? esc_html( $title ) : esc_html( $item->title );
@@ -382,14 +398,12 @@ function _wp_ajax_menu_quick_search( $request = array() ) {
  **/
 function wp_nav_menu_setup() {
 	// Register meta boxes
-	if ( wp_get_nav_menus() )
-		add_meta_box( 'nav-menu-theme-locations', __( 'Theme Locations' ), 'wp_nav_menu_locations_meta_box' , 'nav-menus', 'side', 'default' );
-	add_meta_box( 'add-custom-links', __('Custom Links'), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' );
 	wp_nav_menu_post_type_meta_boxes();
+	add_meta_box( 'add-custom-links', __( 'Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' );
 	wp_nav_menu_taxonomy_meta_boxes();
 
 	// Register advanced menu items (columns)
-	add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns');
+	add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' );
 
 	// If first time editing, disable advanced items by default.
 	if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) {
@@ -411,7 +425,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( 'nav-menu-theme-locations', 'add-custom-links', 'add-page', 'add-category' );
+	$initial_meta_boxes = array( 'nav-menu-theme-locations', 'add-page', 'add-custom-links', 'add-category' );
 	$hidden_meta_boxes = array();
 
 	foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) {
@@ -445,7 +459,9 @@ function wp_nav_menu_post_type_meta_boxes() {
 		$post_type = apply_filters( 'nav_menu_meta_box_object', $post_type );
 		if ( $post_type ) {
 			$id = $post_type->name;
-			add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type );
+			// 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 );
 		}
 	}
 }
@@ -489,7 +505,7 @@ function wp_nav_menu_locations_meta_box() {
 	$menu_locations = get_nav_menu_locations();
 	$num_locations = count( array_keys($locations) );
 
-	echo '<p class="howto">' . sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n($num_locations) ) . '</p>';
+	echo '<p class="howto">' . _n( 'Select a menu to use within your theme.', 'Select the menus you will use in your theme.', $num_locations ) . '</p>';
 
 	foreach ( $locations as $location => $description ) {
 		?>
@@ -500,10 +516,7 @@ function wp_nav_menu_locations_meta_box() {
 					<option value="0"></option>
 					<?php foreach ( $menus as $menu ) : ?>
 					<option<?php selected( isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $menu->term_id ); ?>
-						value="<?php echo $menu->term_id; ?>"><?php
-						$truncated_name = wp_html_excerpt( $menu->name, 40 );
-						echo $truncated_name == $menu->name ? $menu->name : trim( $truncated_name ) . '&hellip;';
-					?></option>
+						value="<?php echo $menu->term_id; ?>"><?php echo wp_html_excerpt( $menu->name, 40, '&hellip;' ); ?></option>
 					<?php endforeach; ?>
 				</select>
 			</label>
@@ -512,12 +525,32 @@ function wp_nav_menu_locations_meta_box() {
 	}
 	?>
 	<p class="button-controls">
-		<?php submit_button( __( 'Save' ), 'primary right', 'nav-menu-locations', false, disabled( $nav_menu_selected_id, 0, false ) ); ?>
+		<?php submit_button( __( 'Save' ), 'primary right', 'nav-menu-locations', false, wp_nav_menu_disabled_check( $nav_menu_selected_id ) ); ?>
 		<span class="spinner"></span>
 	</p>
 	<?php
 }
 
+/**
+ * Check whether to disable the Menu Locations meta box submit button
+ *
+ * @since 3.6.0
+ *
+ * @uses global $one_theme_location_no_menus to determine if no menus exist
+ * @uses disabled() to output the disabled attribute in $other_attributes param in submit_button()
+ *
+ * @param int|string $nav_menu_selected_id (id, name or slug) of the currently-selected menu
+ * @return string Disabled attribute if at least one menu exists, false if not
+*/
+function wp_nav_menu_disabled_check( $nav_menu_selected_id ) {
+	global $one_theme_location_no_menus;
+
+	if ( $one_theme_location_no_menus )
+		return false;
+
+	return disabled( $nav_menu_selected_id, 0 );
+}
+
 /**
  * Displays a metabox for the custom links menu item.
  *
@@ -525,43 +558,29 @@ function wp_nav_menu_locations_meta_box() {
  */
 function wp_nav_menu_item_link_meta_box() {
 	global $_nav_menu_placeholder, $nav_menu_selected_id;
-	$_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
-
-	$current_tab = 'create';
-	if ( isset( $_REQUEST['customlink-tab'] ) && in_array( $_REQUEST['customlink-tab'], array('create', 'all') ) ) {
-		$current_tab = $_REQUEST['customlink-tab'];
-	}
 
-	$removed_args = array(
-		'action',
-		'customlink-tab',
-		'edit-menu-item',
-		'menu-item',
-		'page-tab',
-		'_wpnonce',
-	);
+	$_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
 
 	?>
 	<div class="customlinkdiv" id="customlinkdiv">
+		<input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" />
+		<p id="menu-item-url-wrap">
+			<label class="howto" for="custom-menu-item-url">
+				<span><?php _e('URL'); ?></span>
+				<input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
+			</label>
+		</p>
 
-			<input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" />
-			<p id="menu-item-url-wrap">
-				<label class="howto" for="custom-menu-item-url">
-					<span><?php _e('URL'); ?></span>
-					<input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
-				</label>
-			</p>
-
-			<p id="menu-item-name-wrap">
-				<label class="howto" for="custom-menu-item-name">
-					<span><?php _e('Label'); ?></span>
-					<input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" />
-				</label>
-			</p>
+		<p id="menu-item-name-wrap">
+			<label class="howto" for="custom-menu-item-name">
+				<span><?php _e( 'Link Text' ); ?></span>
+				<input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" />
+			</label>
+		</p>
 
 		<p class="button-controls">
 			<span class="add-to-menu">
-				<input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" />
+				<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" />
 				<span class="spinner"></span>
 			</span>
 		</p>
@@ -661,10 +680,22 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
 	?>
 	<div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv">
 		<ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs">
-			<li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent"><?php _e('Most Recent'); ?></a></li>
-			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all"><?php _e('View All'); ?></a></li>
-			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search"><?php _e('Search'); ?></a></li>
-		</ul>
+			<li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent">
+					<?php _e( 'Most Recent' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all">
+					<?php _e( 'View All' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search">
+					<?php _e( 'Search'); ?>
+				</a>
+			</li>
+		</ul><!-- .posttype-tabs -->
 
 		<div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent" class="tabs-panel <?php
 			echo ( 'most-recent' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
@@ -768,18 +799,18 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
 		<p class="button-controls">
 			<span class="list-controls">
 				<a href="<?php
-					echo esc_url(add_query_arg(
+					echo esc_url( add_query_arg(
 						array(
 							$post_type_name . '-tab' => 'all',
 							'selectall' => 1,
 						),
-						remove_query_arg($removed_args)
+						remove_query_arg( $removed_args )
 					));
 				?>#posttype-<?php echo $post_type_name; ?>" class="select-all"><?php _e('Select All'); ?></a>
 			</span>
 
 			<span class="add-to-menu">
-				<input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo $post_type_name; ?>" />
+				<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( __( 'Add to Menu' ) ); ?>" name="add-post-type-menu-item" id="<?php esc_attr_e( 'submit-posttype-' . $post_type_name ); ?>" />
 				<span class="spinner"></span>
 			</span>
 		</p>
@@ -871,10 +902,22 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
 	?>
 	<div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv">
 		<ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs">
-			<li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop"><?php _e('Most Used'); ?></a></li>
-			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all"><?php _e('View All'); ?></a></li>
-			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"><?php _e('Search'); ?></a></li>
-		</ul>
+			<li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop">
+					<?php _e( 'Most Used' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all">
+					<?php _e( 'View All' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>">
+					<?php _e( 'Search' ); ?>
+				</a>
+			</li>
+		</ul><!-- .taxonomy-tabs -->
 
 		<div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php
 			echo ( 'most-used' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
@@ -955,7 +998,7 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
 			</span>
 
 			<span class="add-to-menu">
-				<input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-taxonomy-menu-item" id="submit-taxonomy-<?php echo $taxonomy_name; ?>" />
+				<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( __( 'Add to Menu' ) ); ?>" name="add-taxonomy-menu-item" id="<?php esc_attr_e( 'submit-taxonomy-' . $taxonomy_name ); ?>" />
 				<span class="spinner"></span>
 			</span>
 		</p>
@@ -1086,7 +1129,7 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
 		$menu_items = wp_get_nav_menu_items( $menu->term_id, array('post_status' => 'any') );
 		$result = '<div id="menu-instructions" class="post-body-plain';
 		$result .= ( ! empty($menu_items) ) ? ' menu-instructions-inactive">' : '">';
-		$result .= '<p>' . __('Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu.') . '</p>';
+		$result .= '<p>' . __( 'Add menu items from the column on the left.' ) . '</p>';
 		$result .= '</div>';
 
 		if( empty($menu_items) )
@@ -1158,5 +1201,88 @@ function _wp_delete_orphaned_draft_menu_items() {
 	foreach( (array) $menu_items_to_delete as $menu_item_id )
 		wp_delete_post( $menu_item_id, true );
 }
-
 add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items');
+
+/**
+ * Saves nav menu items
+ *
+ * @since 3.6.0
+ *
+ * @uses wp_get_nav_menu_items() to retrieve the nav menu's menu items
+ * @uses wp_defer_term_counter() to enable then disable term counting
+ *
+ * @param int|string $nav_menu_selected_id (id, slug, or name ) of the currently-selected menu
+ * @param string $nav_menu_selected_title Title of the currently-selected menu
+ * @return array $messages The menu updated message
+ */
+function wp_nav_menu_update_menu_items ( $nav_menu_selected_id, $nav_menu_selected_title ) {
+	$unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array( 'orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish' ) );
+
+	$menu_items = array();
+	// Index menu items by db ID
+	foreach ( $unsorted_menu_items as $_item )
+		$menu_items[$_item->db_id] = $_item;
+
+	$post_fields = array(
+		'menu-item-db-id', 'menu-item-object-id', 'menu-item-object',
+		'menu-item-parent-id', 'menu-item-position', 'menu-item-type',
+		'menu-item-title', 'menu-item-url', 'menu-item-description',
+		'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn'
+	);
+
+	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 ) {
+
+			// Menu item title can't be blank
+			if ( ! isset( $_POST['menu-item-title'][ $_key ] ) || '' == $_POST['menu-item-title'][ $_key ] )
+				continue;
+
+			$args = array();
+			foreach ( $post_fields as $field )
+				$args[$field] = isset( $_POST[$field][$_key] ) ? $_POST[$field][$_key] : '';
+
+			$menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key ), $args );
+
+			if ( is_wp_error( $menu_item_db_id ) )
+				$messages[] = '<div id="message" class="error"><p>' . $menu_item_db_id->get_error_message() . '</p></div>';
+			elseif ( isset( $menu_items[$menu_item_db_id] ) )
+				unset( $menu_items[$menu_item_db_id] );
+		}
+	}
+
+	// Remove menu items from the menu that weren't in $_POST
+	if ( ! empty( $menu_items ) ) {
+		foreach ( array_keys( $menu_items ) as $menu_item_id ) {
+			if ( is_nav_menu_item( $menu_item_id ) ) {
+				wp_delete_post( $menu_item_id );
+			}
+		}
+	}
+
+	// Store 'auto-add' pages.
+	$auto_add = ! empty( $_POST['auto-add-pages'] );
+	$nav_menu_option = (array) get_option( 'nav_menu_options' );
+	if ( ! isset( $nav_menu_option['auto_add'] ) )
+		$nav_menu_option['auto_add'] = array();
+	if ( $auto_add ) {
+		if ( ! in_array( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) )
+			$nav_menu_option['auto_add'][] = $nav_menu_selected_id;
+	} else {
+		if ( false !== ( $key = array_search( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) )
+			unset( $nav_menu_option['auto_add'][$key] );
+	}
+	// Remove nonexistent/deleted menus
+	$nav_menu_option['auto_add'] = array_intersect( $nav_menu_option['auto_add'], wp_get_nav_menus( array( 'fields' => 'ids' ) ) );
+	update_option( 'nav_menu_options', $nav_menu_option );
+
+	wp_defer_term_counting( false );
+
+	do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
+
+	$messages[] = '<div id="message" class="updated"><p>' . sprintf( __( '<strong>%1$s</strong> has been updated.' ), $nav_menu_selected_title ) . '</p></div>';
+	unset( $menu_items, $unsorted_menu_items );
+
+	return $messages;
+}
diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php
index 63a5f711f..1c07b6856 100644
--- a/wp-admin/includes/plugin-install.php
+++ b/wp-admin/includes/plugin-install.php
@@ -81,7 +81,7 @@ function install_popular_tags( $args = array() ) {
 
 function install_dashboard() {
 	?>
-	<p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%s">this page</a>.' ), self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
+	<p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="%1$s">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%2$s">this page</a>.' ), 'http://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
 
 	<h4><?php _e('Search') ?></h4>
 	<?php install_search_form( false ); ?>
@@ -116,8 +116,8 @@ add_action('install_plugins_dashboard', 'install_dashboard');
  * @since 2.7.0
  */
 function install_search_form( $type_selector = true ) {
-	$type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : 'term';
-	$term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
+	$type = isset($_REQUEST['type']) ? wp_unslash( $_REQUEST['type'] ) : 'term';
+	$term = isset($_REQUEST['s']) ? wp_unslash( $_REQUEST['s'] ) : '';
 
 	?><form id="search-plugins" method="get" action="">
 		<input type="hidden" name="tab" value="search" />
@@ -160,7 +160,7 @@ add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
  *
  */
 function install_plugins_favorites_form() {
-	$user = ! empty( $_GET['user'] ) ? stripslashes( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
+	$user = ! empty( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
 	?>
 	<p class="install-help"><?php _e( 'If you have marked plugins as favorites on WordPress.org, you can browse them here.' ); ?></p>
 	<form method="get" action="">
@@ -229,7 +229,8 @@ function install_plugin_install_status($api, $loop = false) {
 				if ( current_user_can('install_plugins') )
 					$url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug);
 			} else {
-				$key = array_shift( $key = array_keys($installed_plugin) ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers
+				$key = array_keys( $installed_plugin );
+				$key = array_shift( $key ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers
 				if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){
 					$status = 'latest_installed';
 				} elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) {
@@ -251,7 +252,7 @@ function install_plugin_install_status($api, $loop = false) {
 		}
 	}
 	if ( isset($_GET['from']) )
-		$url .= '&amp;from=' . urlencode(stripslashes($_GET['from']));
+		$url .= '&amp;from=' . urlencode( wp_unslash( $_GET['from'] ) );
 
 	return compact('status', 'url', 'version');
 }
@@ -264,7 +265,7 @@ function install_plugin_install_status($api, $loop = false) {
 function install_plugin_information() {
 	global $tab;
 
-	$api = plugins_api('plugin_information', array('slug' => stripslashes( $_REQUEST['plugin'] ) ));
+	$api = plugins_api('plugin_information', array('slug' => wp_unslash( $_REQUEST['plugin'] ) ));
 
 	if ( is_wp_error($api) )
 		wp_die($api);
@@ -295,7 +296,7 @@ function install_plugin_information() {
 			$api->$key = wp_kses( $api->$key, $plugins_allowedtags );
 	}
 
-	$section = isset($_REQUEST['section']) ? stripslashes( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English.
+	$section = isset($_REQUEST['section']) ? wp_unslash( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English.
 	if ( empty($section) || ! isset($api->sections[ $section ]) )
 		$section = array_shift( $section_titles = array_keys((array)$api->sections) );
 
@@ -358,7 +359,7 @@ function install_plugin_information() {
 <?php endif; if ( ! empty($api->downloaded) ) : ?>
 			<li><strong><?php _e('Downloaded:') ?></strong> <?php printf(_n('%s time', '%s times', $api->downloaded), number_format_i18n($api->downloaded)) ?></li>
 <?php endif; if ( ! empty($api->slug) && empty($api->external) ) : ?>
-			<li><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $api->slug ?>/"><?php _e('WordPress.org Plugin Page &#187;') ?></a></li>
+			<li><a target="_blank" href="http://wordpress.org/plugins/<?php echo $api->slug ?>/"><?php _e('WordPress.org Plugin Page &#187;') ?></a></li>
 <?php endif; if ( ! empty($api->homepage) ) : ?>
 			<li><a target="_blank" href="<?php echo $api->homepage ?>"><?php _e('Plugin Homepage &#187;') ?></a></li>
 <?php endif; ?>
@@ -386,7 +387,7 @@ function install_plugin_information() {
 			else
 				$title = ucwords( str_replace( '_', ' ', $section_name ) );
 
-			$content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/');
+			$content = links_add_base_url($content, 'http://wordpress.org/plugins/' . $api->slug . '/');
 			$content = links_add_target($content, '_blank');
 
 			$san_section = esc_attr( $section_name );
diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php
index f305ef9bc..109e66d8b 100644
--- a/wp-admin/includes/plugin.php
+++ b/wp-admin/includes/plugin.php
@@ -728,7 +728,7 @@ function delete_plugins($plugins, $redirect = '' ) {
 
 		$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 its not the root plugin folder
+		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);
 		else
 			$deleted = $wp_filesystem->delete($plugins_dir . $plugin_file);
diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php
index f3ba56917..aecc433ce 100644
--- a/wp-admin/includes/post.php
+++ b/wp-admin/includes/post.php
@@ -28,7 +28,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
 
 	$ptype = get_post_type_object( $post_data['post_type'] );
 
-	if ( $update && ! current_user_can( $ptype->cap->edit_post, $post_data['ID'] ) ) {
+	if ( $update && ! current_user_can( 'edit_post', $post_data['ID'] ) ) {
 		if ( 'page' == $post_data['post_type'] )
 			return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) );
 		else
@@ -172,7 +172,7 @@ function edit_post( $post_data = null ) {
 	$post_data['post_mime_type'] = $post->post_mime_type;
 
 	$ptype = get_post_type_object($post_data['post_type']);
-	if ( !current_user_can( $ptype->cap->edit_post, $post_ID ) ) {
+	if ( !current_user_can( 'edit_post', $post_ID ) ) {
 		if ( 'page' == $post_data['post_type'] )
 			wp_die( __('You are not allowed to edit this page.' ));
 		else
@@ -203,11 +203,26 @@ function edit_post( $post_data = null ) {
 	}
 
 	// Post Formats
-	if ( isset( $post_data['post_format'] ) ) {
-		if ( current_theme_supports( 'post-formats', $post_data['post_format'] ) )
-			set_post_format( $post_ID, $post_data['post_format'] );
-		elseif ( '0' == $post_data['post_format'] )
-			set_post_format( $post_ID, false );
+	if ( isset( $post_data['post_format'] ) )
+		set_post_format( $post_ID, $post_data['post_format'] );
+
+	$format_meta_urls = array( 'url', 'link_url', 'quote_source_url' );
+	foreach ( $format_meta_urls as $format_meta_url ) {
+		$keyed = '_format_' . $format_meta_url;
+		if ( isset( $post_data[ $keyed ] ) )
+			update_post_meta( $post_ID, $keyed, wp_slash( esc_url_raw( wp_unslash( $post_data[ $keyed ] ) ) ) );
+	}
+
+	$format_keys = array( 'quote', 'quote_source_name', 'image', 'gallery', 'audio_embed', 'video_embed' );
+
+	foreach ( $format_keys as $key ) {
+		$keyed = '_format_' . $key;
+		if ( isset( $post_data[ $keyed ] ) ) {
+			if ( current_user_can( 'unfiltered_html' ) )
+				update_post_meta( $post_ID, $keyed, $post_data[ $keyed ] );
+			else
+				update_post_meta( $post_ID, $keyed, wp_filter_post_kses( $post_data[ $keyed ] ) );
+		}
 	}
 
 	// Meta Stuff
@@ -238,11 +253,11 @@ function edit_post( $post_data = null ) {
 	// Attachment stuff
 	if ( 'attachment' == $post_data['post_type'] ) {
 		if ( isset( $post_data[ '_wp_attachment_image_alt' ] ) ) {
-			$image_alt = get_post_meta( $post_ID, '_wp_attachment_image_alt', true );
-			if ( $image_alt != stripslashes( $post_data['_wp_attachment_image_alt'] ) ) {
-				$image_alt = wp_strip_all_tags( stripslashes( $post_data['_wp_attachment_image_alt'] ), true );
+			$image_alt = wp_unslash( $post_data['_wp_attachment_image_alt'] );
+			if ( $image_alt != get_post_meta( $post_ID, '_wp_attachment_image_alt', true ) ) {
+				$image_alt = wp_strip_all_tags( $image_alt, true );
 				// update_meta expects slashed
-				update_post_meta( $post_ID, '_wp_attachment_image_alt', addslashes( $image_alt ) );
+				update_post_meta( $post_ID, '_wp_attachment_image_alt', wp_slash( $image_alt ) );
 			}
 		}
 
@@ -355,19 +370,11 @@ function bulk_edit_posts( $post_data = null ) {
 		}
 	}
 
-	if ( isset( $post_data['post_format'] ) ) {
-		if ( '0' == $post_data['post_format'] )
-			$post_data['post_format'] = false;
-		// don't change the post format if it's not supported or not '0' (standard)
-		elseif ( ! current_theme_supports( 'post-formats', $post_data['post_format'] ) )
-			unset( $post_data['post_format'] );
-	}
-
 	$updated = $skipped = $locked = array();
 	foreach ( $post_IDs as $post_ID ) {
 		$post_type_object = get_post_type_object( get_post_type( $post_ID ) );
 
-		if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( $post_type_object->cap->edit_post, $post_ID ) ) {
+		if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( 'edit_post', $post_ID ) ) {
 			$skipped[] = $post_ID;
 			continue;
 		}
@@ -412,9 +419,6 @@ function bulk_edit_posts( $post_data = null ) {
 			else
 				unstick_post( $post_ID );
 		}
-
-		if ( isset( $post_data['post_format'] ) )
-			set_post_format( $post_ID, $post_data['post_format'] );
 	}
 
 	return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked );
@@ -433,15 +437,15 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
 
 	$post_title = '';
 	if ( !empty( $_REQUEST['post_title'] ) )
-		$post_title = esc_html( stripslashes( $_REQUEST['post_title'] ));
+		$post_title = esc_html( wp_unslash( $_REQUEST['post_title'] ));
 
 	$post_content = '';
 	if ( !empty( $_REQUEST['content'] ) )
-		$post_content = esc_html( stripslashes( $_REQUEST['content'] ));
+		$post_content = esc_html( wp_unslash( $_REQUEST['content'] ));
 
 	$post_excerpt = '';
 	if ( !empty( $_REQUEST['excerpt'] ) )
-		$post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] ));
+		$post_excerpt = esc_html( wp_unslash( $_REQUEST['excerpt'] ));
 
 	if ( $create_in_db ) {
 		$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
@@ -490,9 +494,9 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
 function post_exists($title, $content = '', $date = '') {
 	global $wpdb;
 
-	$post_title = stripslashes( sanitize_post_field( 'post_title', $title, 0, 'db' ) );
-	$post_content = stripslashes( sanitize_post_field( 'post_content', $content, 0, 'db' ) );
-	$post_date = stripslashes( sanitize_post_field( 'post_date', $date, 0, 'db' ) );
+	$post_title = wp_unslash( sanitize_post_field( 'post_title', $title, 0, 'db' ) );
+	$post_content = wp_unslash( sanitize_post_field( 'post_content', $content, 0, 'db' ) );
+	$post_date = wp_unslash( sanitize_post_field( 'post_date', $date, 0, 'db' ) );
 
 	$query = "SELECT ID FROM $wpdb->posts WHERE 1=1";
 	$args = array();
@@ -623,8 +627,8 @@ function add_meta( $post_ID ) {
 	global $wpdb;
 	$post_ID = (int) $post_ID;
 
-	$metakeyselect = isset($_POST['metakeyselect']) ? stripslashes( trim( $_POST['metakeyselect'] ) ) : '';
-	$metakeyinput = isset($_POST['metakeyinput']) ? stripslashes( trim( $_POST['metakeyinput'] ) ) : '';
+	$metakeyselect = isset($_POST['metakeyselect']) ? wp_unslash( trim( $_POST['metakeyselect'] ) ) : '';
+	$metakeyinput = isset($_POST['metakeyinput']) ? wp_unslash( trim( $_POST['metakeyinput'] ) ) : '';
 	$metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : '';
 	if ( is_string( $metavalue ) )
 		$metavalue = trim( $metavalue );
@@ -642,7 +646,7 @@ function add_meta( $post_ID ) {
 		if ( is_protected_meta( $metakey, 'post' ) || ! current_user_can( 'add_post_meta', $post_ID, $metakey ) )
 			return false;
 
-		$metakey = esc_sql( $metakey );
+		$metakey = wp_slash( $metakey );
 
 		return add_post_meta( $post_ID, $metakey, $metavalue );
 	}
@@ -722,8 +726,8 @@ function has_meta( $postid ) {
  * @return unknown
  */
 function update_meta( $meta_id, $meta_key, $meta_value ) {
-	$meta_key = stripslashes( $meta_key );
-	$meta_value = stripslashes_deep( $meta_value );
+	$meta_key = wp_unslash( $meta_key );
+	$meta_value = wp_unslash( $meta_value );
 
 	return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key );
 }
@@ -1002,9 +1006,8 @@ function get_sample_permalink($id, $title = null, $name = null) {
 	$original_date = $post->post_date;
 	$original_name = $post->post_name;
 
-	// Hack: get_permalink would return ugly permalink for
-	// drafts, so we will fake, that our post is published
-	if ( in_array($post->post_status, array('draft', 'pending')) ) {
+	// Hack: get_permalink() would return ugly permalink for drafts, so we will fake that our post is published.
+	if ( in_array( $post->post_status, array( 'draft', 'pending' ) ) ) {
 		$post->post_status = 'publish';
 		$post->post_name = sanitize_title($post->post_name ? $post->post_name : $post->post_title, $post->ID);
 	}
@@ -1165,7 +1168,7 @@ function wp_check_post_lock( $post_id ) {
 	$time = $lock[0];
 	$user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true );
 
-	$time_window = apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 );
+	$time_window = apply_filters( 'wp_check_post_lock_window', 120 );
 
 	if ( $time && $time > time() - $time_window && $user != get_current_user_id() )
 		return $user;
@@ -1195,31 +1198,108 @@ function wp_set_post_lock( $post_id ) {
 }
 
 /**
- * Outputs the notice message to say that someone else is editing this post at the moment.
+ * Outputs the HTML for the notice to say that someone else is editing or has taken over editing of this post.
  *
  * @since 2.8.5
  * @return none
  */
 function _admin_notice_post_locked() {
-	$post = get_post();
-	$lock = explode( ':', get_post_meta( $post->ID, '_edit_lock', true ) );
-	$user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true );
-	$last_user = get_userdata( $user );
-	$last_user_name = $last_user ? $last_user->display_name : __('Somebody');
+	if ( ! $post = get_post() )
+		return;
 
-	switch ($post->post_type) {
-		case 'post':
-			$message = __( 'Warning: %s is currently editing this post' );
-			break;
-		case 'page':
-			$message = __( 'Warning: %s is currently editing this page' );
-			break;
-		default:
-			$message = __( 'Warning: %s is currently editing this.' );
+	$user = null;
+	if (  $user_id = wp_check_post_lock( $post->ID ) )
+		$user = get_userdata( $user_id );
+
+	if ( $user ) {
+		if ( ! apply_filters( 'show_post_locked_dialog', true, $post, $user ) )
+			return;
+
+		$locked = true;
+	} else {
+		$locked = false;
+	}
+
+	if ( $locked && ( $sendback = wp_get_referer() ) &&
+		false === strpos( $sendback, 'post.php' ) && false === strpos( $sendback, 'post-new.php' ) ) {
+
+		$sendback_text = __('Go back');
+	} else {
+		$sendback = admin_url( 'edit.php' );
+
+		if ( 'post' != $post->post_type )
+			$sendback = add_query_arg( 'post_type', $post->post_type, $sendback );
+
+		$sendback_text = get_post_type_object( $post->post_type )->labels->all_items;
+	}
+
+	$hidden = $locked ? '' : ' hidden';
+
+	?>
+	<div id="post-lock-dialog" class="notification-dialog-wrap<?php echo $hidden; ?>">
+	<div class="notification-dialog-background"></div>
+	<div class="notification-dialog">
+	<?php
+
+	if ( $locked ) {
+		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 );
+			}
+		} else {
+			$preview_link = '';
+		}
+
+		$preview_link = apply_filters( 'preview_post_link', $preview_link );
+		$override = apply_filters( 'override_post_lock', true, $post, $user );
+		$tab_last = $override ? '' : ' wp-tab-last';
+
+		?>
+		<div class="post-locked-message">
+		<div class="post-locked-avatar"><?php echo get_avatar( $user->ID, 64 ); ?></div>
+		<p class="currently-editing wp-tab-first" tabindex="0"><?php echo esc_html( sprintf( __( 'This content is currently locked. If you take over, %s will be blocked from continuing to edit.' ), $user->display_name ) ); ?></p>
+		<?php do_action( 'post_locked_dialog', $post ); ?>
+		<p>
+		<a class="button" href="<?php echo esc_url( $sendback ); ?>"><?php echo $sendback_text; ?></a>
+		<?php if ( $preview_link ) { ?>
+		<a class="button<?php echo $tab_last; ?>" href="<?php echo esc_url( $preview_link ); ?>"><?php _e('Preview'); ?></a>
+		<?php
+		}
+
+		// Allow plugins to prevent some users overriding the post lock
+		if ( $override ) {
+			?>
+			<a class="button button-primary wp-tab-last" href="<?php echo esc_url( add_query_arg( 'get-post-lock', '1', get_edit_post_link( $post->ID, 'url' ) ) ); ?>"><?php _e('Take over'); ?></a>
+			<?php
+		}
+
+		?>
+		</p>
+		</div>
+		<?php
+	} else {
+		?>
+		<div class="post-taken-over">
+			<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="images/wpspin_light-2x.gif" width="16" height="16" /> <?php _e('Saving revision...'); ?></span>
+			<span class="locked-saved hidden"><?php _e('Your latest changes were saved as a revision.'); ?></span>
+			</p>
+			<?php do_action( 'post_lock_lost_dialog', $post ); ?>
+			<p><a class="button button-primary wp-tab-last" href="<?php echo esc_url( $sendback ); ?>"><?php echo $sendback_text; ?></a></p>
+		</div>
+		<?php
 	}
 
-	$message = sprintf( $message, esc_html( $last_user_name ) );
-	echo "<div class='error'><p>$message</p></div>";
+	?>
+	</div>
+	</div>
+	<?php
 }
 
 /**
@@ -1239,19 +1319,37 @@ function wp_create_post_autosave( $post_id ) {
 	if ( is_wp_error( $translated ) )
 		return $translated;
 
-	// Only store one autosave. If there is already an autosave, overwrite it.
-	if ( $old_autosave = wp_get_post_autosave( $post_id ) ) {
+	$post_author = get_current_user_id();
+
+	// Store one autosave per author. If there is already an autosave, overwrite it.
+	if ( $old_autosave = wp_get_post_autosave( $post_id, $post_author ) ) {
 		$new_autosave = _wp_post_revision_fields( $_POST, true );
 		$new_autosave['ID'] = $old_autosave->ID;
-		$new_autosave['post_author'] = get_current_user_id();
+		$new_autosave['post_author'] = $post_author;
+
+		// If the new autosave is the same content as the post, delete the old autosave.
+		$post = get_post( $post_id );
+		$autosave_is_different = false;
+		foreach ( array_keys( _wp_post_revision_fields() ) as $field ) {
+			if ( normalize_whitespace( $new_autosave[ $field ] ) != normalize_whitespace( $post->$field ) ) {
+				$autosave_is_different = true;
+				break;
+			}
+		}
+
+		if ( ! $autosave_is_different ) {
+			wp_delete_post_revision( $old_autosave->ID );
+			return;
+		}
+
 		return wp_update_post( $new_autosave );
 	}
 
 	// _wp_put_post_revision() expects unescaped.
-	$_POST = stripslashes_deep($_POST);
+	$post_data = wp_unslash( $_POST );
 
 	// Otherwise create the new autosave as a special post revision
-	return _wp_put_post_revision( $_POST, true );
+	return _wp_put_post_revision( $post_data, true );
 }
 
 /**
@@ -1291,14 +1389,16 @@ function post_preview() {
 	$post = get_post($post_ID);
 
 	if ( 'page' == $post->post_type ) {
-		if ( !current_user_can('edit_page', $post_ID) )
-			wp_die(__('You are not allowed to edit this page.'));
+		if ( ! current_user_can('edit_page', $post_ID) )
+			wp_die( __('You are not allowed to edit this page.') );
 	} else {
-		if ( !current_user_can('edit_post', $post_ID) )
-			wp_die(__('You are not allowed to edit this post.'));
+		if ( ! current_user_can('edit_post', $post_ID) )
+			wp_die( __('You are not allowed to edit this post.') );
 	}
 
-	if ( 'draft' == $post->post_status ) {
+	$user_id = get_current_user_id();
+	$locked = wp_check_post_lock( $post->ID );
+	if ( ! $locked && 'draft' == $post->post_status && $user_id == $post->post_author ) {
 		$id = edit_post();
 	} else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
 		$id = wp_create_post_autosave( $post->ID );
@@ -1309,12 +1409,21 @@ function post_preview() {
 	if ( is_wp_error($id) )
 		wp_die( $id->get_error_message() );
 
-	if ( $_POST['post_status'] == 'draft'  ) {
+	if ( ! $locked && $_POST['post_status'] == 'draft' && $user_id == $post->post_author ) {
 		$url = add_query_arg( 'preview', 'true', get_permalink($id) );
 	} else {
 		$nonce = wp_create_nonce('post_preview_' . $id);
-		$url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) );
+		$args = array(
+			'preview' => 'true',
+			'preview_id' => $id,
+			'preview_nonce' => $nonce,
+		);
+
+		if ( isset( $_POST['post_format'] ) )
+			$args['post_format'] = empty( $_POST['post_format'] ) ? 'standard' : sanitize_key( $_POST['post_format'] );
+
+		$url = add_query_arg( $args, get_permalink($id) );
 	}
 
-	return $url;
+	return apply_filters( 'preview_post_link', $url );
 }
diff --git a/wp-admin/includes/revision.php b/wp-admin/includes/revision.php
new file mode 100644
index 000000000..597ec1f02
--- /dev/null
+++ b/wp-admin/includes/revision.php
@@ -0,0 +1,209 @@
+<?php
+/**
+ * WordPress Administration Revisions API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Get the revision UI diff.
+ *
+ * @since 3.6.0
+ *
+ * @param object $post The post object.
+ * @param int $compare_from The revision id to compare from.
+ * @param int $compare_to The revision id to come to.
+ *
+ * @return array|bool Associative array of a post's revisioned fields and their diffs.
+ * 	Or, false on failure.
+ */
+function wp_get_revision_ui_diff( $post, $compare_from, $compare_to ) {
+	if ( ! $post = get_post( $post ) )
+		return false;
+
+	if ( $compare_from ) {
+		if ( ! $compare_from = get_post( $compare_from ) )
+			return false;
+	} else {
+		// If we're dealing with the first revision...
+		$compare_from = false;
+	}
+
+	if ( ! $compare_to = get_post( $compare_to ) )
+		return false;
+
+	// If comparing revisions, make sure we're dealing with the right post parent.
+	// The parent post may be a 'revision' when revisions are disabled and we're looking at autosaves.
+	if ( $compare_from && $compare_from->post_parent !== $post->ID && $compare_from->ID !== $post->ID )
+		return false;
+	if ( $compare_to->post_parent !== $post->ID && $compare_to->ID !== $post->ID )
+		return false;
+
+	if ( $compare_from && strtotime( $compare_from->post_date_gmt ) > strtotime( $compare_to->post_date_gmt ) ) {
+		$temp = $compare_from;
+		$compare_from = $compare_to;
+		$compare_to = $temp;
+	}
+
+	// Add default title if title field is empty
+	if ( $compare_from && empty( $compare_from->post_title ) )
+		$compare_from->post_title = __( '(no title)' );
+	if ( empty( $compare_to->post_title ) )
+		$compare_to->post_title = __( '(no title)' );
+
+	$return = array();
+
+	foreach ( _wp_post_revision_fields() as $field => $name ) {
+		$content_from = $compare_from ? apply_filters( "_wp_post_revision_field_$field", $compare_from->$field, $field, $compare_from, 'from' ) : '';
+		$content_to = apply_filters( "_wp_post_revision_field_$field", $compare_to->$field, $field, $compare_to, 'to' );
+
+		$diff = wp_text_diff( $content_from, $content_to, array( 'show_split_view' => true ) );
+
+		if ( ! $diff && 'post_title' === $field ) {
+			// It's a better user experience to still show the Title, even if it didn't change.
+			// No, you didn't see this.
+			$diff = '<table class="diff"><colgroup><col class="content diffsplit left"><col class="content diffsplit middle"><col class="content diffsplit right"></colgroup><tbody><tr>';
+			$diff .= '<td>' . esc_html( $compare_from->post_title ) . '</td><td></td><td>' . esc_html( $compare_to->post_title ) . '</td>';
+			$diff .= '</tr></tbody>';
+			$diff .= '</table>';
+		}
+
+		if ( $diff ) {
+			$return[] = array(
+				'id' => $field,
+				'name' => $name,
+				'diff' => $diff,
+			);
+		}
+	}
+	return $return;
+}
+
+/**
+ * Prepare revisions for JavaScript.
+ *
+ * @since 3.6.0
+ *
+ * @param object $post The post object.
+ * @param int $selected_revision_id The selected revision id.
+ * @param int $from (optional) The revision id to compare from.
+ *
+ * @return array An associative array of revision data and related settings.
+ */
+function wp_prepare_revisions_for_js( $post, $selected_revision_id, $from = null ) {
+	$post = get_post( $post );
+	$revisions = $authors = array();
+	$now_gmt = time();
+
+	$revisions = wp_get_post_revisions( $post->ID, array( 'order' => 'ASC', 'check_enabled' => false ) );
+	// If revisions are disabled, we only want autosaves and the current post.
+	if ( ! wp_revisions_enabled( $post ) ) {
+		foreach ( $revisions as $revision_id => $revision ) {
+			if ( ! wp_is_post_autosave( $revision ) )
+				unset( $revisions[ $revision_id ] );
+		}
+		$revisions = array( $post->ID => $post ) + $revisions;
+	}
+
+	$show_avatars = get_option( 'show_avatars' );
+
+	cache_users( wp_list_pluck( $revisions, 'post_author' ) );
+
+	$can_restore = current_user_can( 'edit_post', $post->ID );
+
+	foreach ( $revisions as $revision ) {
+		$modified = strtotime( $revision->post_modified );
+		$modified_gmt = strtotime( $revision->post_modified_gmt );
+		if ( $can_restore ) {
+			$restore_link = str_replace( '&amp;', '&', wp_nonce_url(
+				add_query_arg(
+					array( 'revision' => $revision->ID,
+						'action' => 'restore' ),
+						admin_url( 'revision.php' )
+				),
+				"restore-post_{$revision->ID}"
+			) );
+		}
+
+		if ( ! isset( $authors[ $revision->post_author ] ) ) {
+			$authors[ $revision->post_author ] = array(
+				'id' => (int) $revision->post_author,
+				'avatar' => $show_avatars ? get_avatar( $revision->post_author, 32 ) : '',
+				'name' => get_the_author_meta( 'display_name', $revision->post_author ),
+			);
+		}
+
+		$autosave = (bool) wp_is_post_autosave( $revision );
+		$current = ! $autosave && $revision->post_modified_gmt === $post->post_modified_gmt;
+		if ( $current && ! empty( $current_id ) ) {
+			// If multiple revisions have the same post_modified_gmt, highest ID is current.
+			if ( $current_id < $revision->ID ) {
+				$revisions[ $current_id ]['current'] = false;
+				$current_id = $revision->ID;
+			} else {
+				$current = false;
+			}
+		} elseif ( $current ) {
+			$current_id = $revision->ID;
+		}
+
+		$revisions[ $revision->ID ] = array(
+			'id'         => $revision->ID,
+			'title'      => get_the_title( $post->ID ),
+			'author'     => $authors[ $revision->post_author ],
+			'date'       => date_i18n( __( 'M j, Y @ G:i' ), $modified ),
+			'dateShort'  => date_i18n( _x( 'j M @ G:i', 'revision date short format' ), $modified ),
+			'timeAgo'    => sprintf( __( '%s ago' ), human_time_diff( $modified_gmt, $now_gmt ) ),
+			'autosave'   => $autosave,
+			'current'    => $current,
+			'restoreUrl' => $can_restore ? $restore_link : false,
+		);
+	}
+
+	// If a post has been saved since the last revision (no revisioned fields were changed)
+	// we may not have a "current" revision. Mark the latest revision as "current".
+	if ( empty( $current_id ) ) {
+		if ( $revisions[ $revision->ID ]['autosave'] ) {
+			$revision = end( $revisions );
+			while ( $revision['autosave'] ) {
+				$revision = prev( $revisions );
+			}
+			$current_id = $revision['id'];
+		} else {
+			$current_id = $revision->ID;
+		}
+		$revisions[ $current_id ]['current'] = true;
+	}
+
+	// Now, grab the initial diff
+	$compare_two_mode = is_numeric( $from );
+	if ( ! $compare_two_mode ) {
+		$found = array_search( $selected_revision_id, array_keys( $revisions ) );
+		if ( $found ) {
+			$from = array_keys( array_slice( $revisions, $found - 1, 1, true ) );
+			$from = reset( $from );
+		} else {
+			$from = 0;
+		}
+	}
+
+	$from = absint( $from );
+
+	$diffs = array( array(
+		'id' => $from . ':' . $selected_revision_id,
+		'fields' => wp_get_revision_ui_diff( $post->ID, $from, $selected_revision_id ),
+	));
+
+	return array(
+		'postId'           => $post->ID,
+		'nonce'            => wp_create_nonce( 'revisions-ajax-nonce' ),
+		'revisionData'     => array_values( $revisions ),
+		'to'               => $selected_revision_id,
+		'from'             => $from,
+		'diffData'         => $diffs,
+		'baseUrl'          => parse_url( admin_url( 'revision.php' ), PHP_URL_PATH ),
+		'compareTwoMode'   => absint( $compare_two_mode ), // Apparently booleans are not allowed
+		'revisionIds'      => array_keys( $revisions ),
+	);
+}
diff --git a/wp-admin/includes/schema.php b/wp-admin/includes/schema.php
index f042fdd40..162651a41 100644
--- a/wp-admin/includes/schema.php
+++ b/wp-admin/includes/schema.php
@@ -494,7 +494,8 @@ function populate_options() {
 	// Set autoload to no for these options
 	$fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys', 'uninstall_plugins' );
 
-	$existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
+	$keys = "'" . implode( "', '", array_keys( $options ) ) . "'";
+	$existing_options = $wpdb->get_col( "SELECT option_name FROM $wpdb->options WHERE option_name in ( $keys )" );
 
 	$insert = '';
 	foreach ( $options as $option => $value ) {
@@ -505,13 +506,11 @@ function populate_options() {
 		else
 			$autoload = 'yes';
 
-		$option = $wpdb->escape($option);
 		if ( is_array($value) )
 			$value = serialize($value);
-		$value = $wpdb->escape($value);
 		if ( !empty($insert) )
 			$insert .= ', ';
-		$insert .= "('$option', '$value', '$autoload')";
+		$insert .= $wpdb->prepare( "(%s, %s, %s)", $option, $value, $autoload );
 	}
 
 	if ( !empty($insert) )
@@ -588,7 +587,7 @@ function populate_roles_160() {
 	add_role('subscriber', 'Subscriber');
 
 	// Add caps for Administrator role
-	$role =& get_role('administrator');
+	$role = get_role('administrator');
 	$role->add_cap('switch_themes');
 	$role->add_cap('edit_themes');
 	$role->add_cap('activate_plugins');
@@ -621,7 +620,7 @@ function populate_roles_160() {
 	$role->add_cap('level_0');
 
 	// Add caps for Editor role
-	$role =& get_role('editor');
+	$role = get_role('editor');
 	$role->add_cap('moderate_comments');
 	$role->add_cap('manage_categories');
 	$role->add_cap('manage_links');
@@ -643,7 +642,7 @@ function populate_roles_160() {
 	$role->add_cap('level_0');
 
 	// Add caps for Author role
-	$role =& get_role('author');
+	$role = get_role('author');
 	$role->add_cap('upload_files');
 	$role->add_cap('edit_posts');
 	$role->add_cap('edit_published_posts');
@@ -654,14 +653,14 @@ function populate_roles_160() {
 	$role->add_cap('level_0');
 
 	// Add caps for Contributor role
-	$role =& get_role('contributor');
+	$role = get_role('contributor');
 	$role->add_cap('edit_posts');
 	$role->add_cap('read');
 	$role->add_cap('level_1');
 	$role->add_cap('level_0');
 
 	// Add caps for Subscriber role
-	$role =& get_role('subscriber');
+	$role = get_role('subscriber');
 	$role->add_cap('read');
 	$role->add_cap('level_0');
 }
@@ -674,7 +673,7 @@ function populate_roles_160() {
 function populate_roles_210() {
 	$roles = array('administrator', 'editor');
 	foreach ($roles as $role) {
-		$role =& get_role($role);
+		$role = get_role($role);
 		if ( empty($role) )
 			continue;
 
@@ -695,19 +694,19 @@ function populate_roles_210() {
 		$role->add_cap('read_private_pages');
 	}
 
-	$role =& get_role('administrator');
+	$role = get_role('administrator');
 	if ( ! empty($role) ) {
 		$role->add_cap('delete_users');
 		$role->add_cap('create_users');
 	}
 
-	$role =& get_role('author');
+	$role = get_role('author');
 	if ( ! empty($role) ) {
 		$role->add_cap('delete_posts');
 		$role->add_cap('delete_published_posts');
 	}
 
-	$role =& get_role('contributor');
+	$role = get_role('contributor');
 	if ( ! empty($role) ) {
 		$role->add_cap('delete_posts');
 	}
@@ -719,7 +718,7 @@ function populate_roles_210() {
  * @since 2.3.0
  */
 function populate_roles_230() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'unfiltered_upload' );
@@ -732,7 +731,7 @@ function populate_roles_230() {
  * @since 2.5.0
  */
 function populate_roles_250() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'edit_dashboard' );
@@ -745,7 +744,7 @@ function populate_roles_250() {
  * @since 2.6.0
  */
 function populate_roles_260() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'update_plugins' );
@@ -759,7 +758,7 @@ function populate_roles_260() {
  * @since 2.7.0
  */
 function populate_roles_270() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'install_plugins' );
@@ -773,7 +772,7 @@ function populate_roles_270() {
  * @since 2.8.0
  */
 function populate_roles_280() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'install_themes' );
@@ -786,7 +785,7 @@ function populate_roles_280() {
  * @since 3.0.0
  */
 function populate_roles_300() {
-	$role =& get_role( 'administrator' );
+	$role = get_role( 'administrator' );
 
 	if ( !empty( $role ) ) {
 		$role->add_cap( 'update_core' );
@@ -921,13 +920,11 @@ We hope you enjoy your new site. Thanks!
 
 	$insert = '';
 	foreach ( $sitemeta as $meta_key => $meta_value ) {
-		$meta_key = $wpdb->escape( $meta_key );
 		if ( is_array( $meta_value ) )
 			$meta_value = serialize( $meta_value );
-		$meta_value = $wpdb->escape( $meta_value );
 		if ( !empty( $insert ) )
 			$insert .= ', ';
-		$insert .= "( $network_id, '$meta_key', '$meta_value')";
+		$insert .= $wpdb->prepare( "( %d, %s, %s)", $network_id, $meta_key, $meta_value );
 	}
 	$wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert );
 
diff --git a/wp-admin/includes/screen.php b/wp-admin/includes/screen.php
index 4a409e8c6..2ab5161bf 100644
--- a/wp-admin/includes/screen.php
+++ b/wp-admin/includes/screen.php
@@ -142,6 +142,7 @@ function screen_icon( $screen = '' ) {
  *
  * @since 3.2.0
  *
+ * @global $post_ID
  * @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object)
  * 	which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID.
  * @return string HTML for the screen icon.
@@ -319,20 +320,20 @@ final class WP_Screen {
 
 	/**
 	 * The help tab data associated with the screen, if any.
- 	 *
- 	 * @since 3.3.0
- 	 * @var array
- 	 * @access private
- 	 */
+	 *
+	 * @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 = '';
 
 	/**
@@ -376,16 +377,16 @@ final class WP_Screen {
 	 */
 	private $_screen_settings;
 
- 	/**
+	/**
 	 * Fetches a screen object.
- 	 *
- 	 * @since 3.3.0
+	 *
+	 * @since 3.3.0
 	 * @access public
- 	 *
+	 *
 	 * @param string $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 ( is_a( $hook_name, 'WP_Screen' ) )
@@ -427,13 +428,13 @@ final class WP_Screen {
 			if ( 'edit-comments' != $id && 'edit-tags' != $id && 'edit-' == substr( $id, 0, 5 ) ) {
 				$maybe = substr( $id, 5 );
 				if ( taxonomy_exists( $maybe ) ) {
- 					$id = 'edit-tags';
+					$id = 'edit-tags';
 					$taxonomy = $maybe;
 				} elseif ( post_type_exists( $maybe ) ) {
 					$id = 'edit';
 					$post_type = $maybe;
 				}
- 			}
+			}
 
 			if ( ! $in_admin )
 				$in_admin = 'site';
@@ -480,7 +481,7 @@ final class WP_Screen {
 						$post_type = 'post';
 					break;
 			}
- 		}
+		}
 
 		switch ( $base ) {
 			case 'post' :
@@ -513,7 +514,7 @@ final class WP_Screen {
 		} elseif ( 'user' == $in_admin ) {
 			$id   .= '-user';
 			$base .= '-user';
- 		}
+		}
 
 		if ( isset( self::$_registry[ $id ] ) ) {
 			$screen = self::$_registry[ $id ];
@@ -535,7 +536,7 @@ final class WP_Screen {
 		self::$_registry[ $id ] = $screen;
 
 		return $screen;
- 	}
+	}
 
 	/**
 	 * Makes the screen object the current screen.
@@ -898,14 +899,17 @@ final class WP_Screen {
 
 		$show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
 
-		$this->_screen_settings = apply_filters( 'screen_settings', '', $this );
-
 		switch ( $this->id ) {
 			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;
+			default:
+				$this->_screen_settings = '';
+				break;
 		}
 
+		$this->_screen_settings = apply_filters( 'screen_settings', $this->_screen_settings, $this );
+
 		if ( $this->_screen_settings || $this->_options )
 			$show_screen = true;
 
@@ -923,6 +927,7 @@ final class WP_Screen {
 
 		$columns = get_column_headers( $this );
 		$hidden  = get_hidden_columns( $this );
+		$post    = get_post();
 
 		?>
 		<div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="<?php esc_attr_e('Screen Options Tab'); ?>">
diff --git a/wp-admin/includes/taxonomy.php b/wp-admin/includes/taxonomy.php
index 7423cf921..fdc6d64d5 100644
--- a/wp-admin/includes/taxonomy.php
+++ b/wp-admin/includes/taxonomy.php
@@ -158,7 +158,7 @@ function wp_update_category($catarr) {
 	$category = get_category($cat_ID, ARRAY_A);
 
 	// Escape data pulled from DB.
-	$category = add_magic_quotes($category);
+	$category = wp_slash($category);
 
 	// Merge old and new fields with new fields overwriting old ones.
 	$catarr = array_merge($category, $catarr);
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php
index 788a4bd55..d8d82a0c9 100644
--- a/wp-admin/includes/template.php
+++ b/wp-admin/includes/template.php
@@ -34,7 +34,7 @@ class Walker_Category_Checklist extends Walker {
 		$output .= "$indent</ul>\n";
 	}
 
-	function start_el( &$output, $category, $depth, $args, $id = 0 ) {
+	function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
 		extract($args);
 		if ( empty($taxonomy) )
 			$taxonomy = 'category';
@@ -176,10 +176,6 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
 	$terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) );
 
 	$tax = get_taxonomy($taxonomy);
-	if ( ! current_user_can($tax->cap->assign_terms) )
-		$disabled = 'disabled="disabled"';
-	else
-		$disabled = '';
 
 	$popular_ids = array();
 	foreach ( (array) $terms as $term ) {
@@ -192,7 +188,7 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
 
 		<li id="<?php echo $id; ?>" class="popular-category">
 			<label class="selectit">
-			<input id="in-<?php echo $id; ?>" type="checkbox" <?php echo $checked; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
+			<input id="in-<?php echo $id; ?>" type="checkbox" <?php echo $checked; ?> value="<?php echo (int) $term->term_id; ?>" <?php disabled( ! current_user_can( $tax->cap->assign_terms ) ); ?> />
 				<?php echo esc_html( apply_filters( 'the_category', $term->name ) ); ?>
 			</label>
 		</li>
@@ -244,7 +240,7 @@ function wp_link_category_checklist( $link_id = 0 ) {
  */
 function get_inline_data($post) {
 	$post_type_object = get_post_type_object($post->post_type);
-	if ( ! current_user_can($post_type_object->cap->edit_post, $post->ID) )
+	if ( ! current_user_can( 'edit_post', $post->ID ) )
 		return;
 
 	$title = esc_textarea( trim( $post->post_title ) );
@@ -349,7 +345,7 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
 
 	<div id="replycontainer">
 	<?php
-	$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
+	$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>
@@ -539,6 +535,8 @@ function meta_form() {
 <?php
 
 	foreach ( $keys as $key ) {
+		if ( is_protected_meta( $key, 'post' ) )
+			continue;
 		echo "\n<option value='" . esc_attr($key) . "'>" . esc_html($key) . "</option>";
 	}
 ?>
@@ -621,8 +619,8 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
 	$minute = '<input type="text" ' . ( $multi ? '' : 'id="mn" ' ) . 'name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';
 
 	echo '<div class="timestamp-wrap">';
-	/* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */
-	printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute);
+	/* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */
+	printf( __( '%1$s %2$s, %3$s @ %4$s : %5$s' ), $month, $day, $year, $hour, $minute );
 
 	echo '</div><input type="hidden" id="ss" name="ss" value="' . $ss . '" />';
 
@@ -680,7 +678,7 @@ function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
 	if ( $items ) {
 		foreach ( $items as $item ) {
 			// A page cannot be its own parent.
-			if ( $post->ID && $item->ID == $post->ID )
+			if ( $post && $post->ID && $item->ID == $post->ID )
 				continue;
 
 			$pad = str_repeat( '&nbsp;', $level * 3 );
@@ -780,14 +778,14 @@ function wp_dropdown_roles( $selected = false ) {
  */
 function wp_import_upload_form( $action ) {
 	$bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() );
-	$size = wp_convert_bytes_to_hr( $bytes );
+	$size = size_format( $bytes );
 	$upload_dir = wp_upload_dir();
 	if ( ! empty( $upload_dir['error'] ) ) :
 		?><div class="error"><p><?php _e('Before you can upload your import file, you will need to fix the following error:'); ?></p>
 		<p><strong><?php echo $upload_dir['error']; ?></strong></p></div><?php
 	else :
 ?>
-<form enctype="multipart/form-data" id="import-upload-form" method="post" class="wp-upload-form" action="<?php echo esc_attr(wp_nonce_url($action, 'import-upload')); ?>">
+<form enctype="multipart/form-data" id="import-upload-form" method="post" class="wp-upload-form" action="<?php echo esc_url( wp_nonce_url( $action, 'import-upload' ) ); ?>">
 <p>
 <label for="upload"><?php _e( 'Choose a file from your computer:' ); ?></label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
 <input type="file" id="upload" name="import" size="25" />
@@ -811,6 +809,7 @@ function wp_import_upload_form( $action ) {
  * @param string|object $screen Optional. The screen on which to show the box (post, page, link). Defaults to current screen.
  * @param string $context Optional. The context within the page where the boxes should show ('normal', 'advanced').
  * @param string $priority Optional. The priority within the context where the boxes should show ('high', 'low').
+ * @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).
  */
 function add_meta_box( $id, $title, $callback, $screen = null, $context = 'advanced', $priority = 'default', $callback_args = null ) {
 	global $wp_meta_boxes;
@@ -917,7 +916,6 @@ function do_meta_boxes( $screen, $context, $object ) {
 					if ( false == $box || ! $box['title'] )
 						continue;
 					$i++;
-					$style = '';
 					$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'] )
@@ -968,6 +966,79 @@ function remove_meta_box($id, $screen, $context) {
 		$wp_meta_boxes[$page][$context][$priority][$id] = false;
 }
 
+/**
+ * Meta Box Accordion Template Function
+ *
+ * Largely made up of abstracted code from {@link do_meta_boxes()}, this
+ * function serves to build meta boxes as list items for display as
+ * a collapsible accordion.
+ *
+ * @since 3.6.0
+ *
+ * @uses global $wp_meta_boxes Used to retrieve registered meta boxes.
+ *
+ * @param string|object $screen The screen identifier.
+ * @param string $context The meta box context.
+ * @param mixed $object gets passed to the section callback function as first parameter.
+ * @return int number of meta boxes as accordion sections.
+ */
+function do_accordion_sections( $screen, $context, $object ) {
+	global $wp_meta_boxes;
+
+	wp_enqueue_script( 'accordion' );
+
+	if ( empty( $screen ) )
+		$screen = get_current_screen();
+	elseif ( is_string( $screen ) )
+		$screen = convert_to_screen( $screen );
+
+	$page = $screen->id;
+
+	$hidden = get_hidden_meta_boxes( $screen );
+	?>
+	<div id="side-sortables" class="accordion-container">
+		<ul class="outer-border">
+	<?php
+	$i = 0;
+	$first_open = false;
+	do {
+		if ( ! isset( $wp_meta_boxes ) || ! isset( $wp_meta_boxes[$page] ) || ! isset( $wp_meta_boxes[$page][$context] ) )
+			break;
+
+		foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
+			if ( isset( $wp_meta_boxes[$page][$context][$priority] ) ) {
+				foreach ( $wp_meta_boxes[$page][$context][$priority] as $box ) {
+					if ( false == $box || ! $box['title'] )
+						continue;
+					$i++;
+					$hidden_class = in_array( $box['id'], $hidden ) ? 'hide-if-js' : '';
+
+					$open_class = '';
+					if ( ! $first_open && empty( $hidden_class ) ) {
+						$first_open = true;
+						$open_class = 'open';
+					}
+					?>
+					<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" title="<?php echo esc_attr( $box['title'] ); ?>"><?php echo esc_html( $box['title'] ); ?></h3>
+						<div class="accordion-section-content <?php postbox_classes( $box['id'], $page ); ?>">
+							<div class="inside">
+								<?php call_user_func( $box['callback'], $object, $box ); ?>
+							</div><!-- .inside -->
+						</div><!-- .accordion-section-content -->
+					</li><!-- .accordion-section -->
+					<?php
+				}
+			}
+		}
+	} while(0);
+	?>
+		</ul><!-- .outer-border -->
+	</div><!-- .accordion-container -->
+	<?php
+	return $i;
+}
+
 /**
  * Add a new section to a settings page.
  *
@@ -1334,7 +1405,7 @@ function _draft_or_post_title( $post = 0 ) {
  *
  */
 function _admin_search_query() {
-	echo isset($_REQUEST['s']) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : '';
+	echo isset($_REQUEST['s']) ? esc_attr( wp_unslash( $_REQUEST['s'] ) ) : '';
 }
 
 /**
@@ -1363,12 +1434,7 @@ wp_enqueue_style( 'colors' );
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
 function tb_close(){var win=window.dialogArguments||opener||parent||top;win.tb_remove();}
-var userSettings = {
-		'url': '<?php echo SITECOOKIEPATH; ?>',
-		'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
-		'time':'<?php echo time() ?>'
-	},
-	ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
+var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
 	pagenow = '<?php echo $current_screen->id; ?>',
 	typenow = '<?php echo $current_screen->post_type; ?>',
 	adminpage = '<?php echo $admin_body_class; ?>',
@@ -1440,7 +1506,7 @@ function _post_states($post) {
 	if ( is_sticky($post->ID) )
 		$post_states['sticky'] = __('Sticky');
 
-	$post_states = apply_filters( 'display_post_states', $post_states );
+	$post_states = apply_filters( 'display_post_states', $post_states, $post );
 
 	if ( ! empty($post_states) ) {
 		$state_count = count($post_states);
@@ -1453,8 +1519,6 @@ function _post_states($post) {
 		}
 	}
 
-	if ( get_post_format( $post->ID ) )
-		echo ' - <span class="post-state-format">' . get_post_format_string( get_post_format( $post->ID ) ) . '</span>';
 }
 
 function _media_states( $post ) {
@@ -1670,7 +1734,8 @@ final class WP_Internal_Pointers {
 		$registered_pointers = array(
 			'index.php'    => 'wp330_toolbar',
 			'post-new.php' => 'wp350_media',
-			'post.php'     => 'wp350_media',
+			'post.php'     => array( 'wp350_media', 'wp360_revisions' ),
+			'edit.php'     => 'wp360_locks',
 			'themes.php'   => array( 'wp330_saving_widgets', 'wp340_customize_current_theme_link' ),
 			'appearance_page_custom-header' => 'wp340_choose_image_from_library',
 			'appearance_page_custom-background' => 'wp340_choose_image_from_library',
@@ -1836,13 +1901,36 @@ final class WP_Internal_Pointers {
 		) );
 	}
 
+	public static function pointer_wp360_revisions() {
+		$content  = '<h3>' . __( 'Compare Revisions' ) . '</h3>';
+		$content .= '<p>' . __( 'View, compare, and restore other versions of this content on the improved revisions screen.' ) . '</p>';
+
+		self::print_js( 'wp360_revisions', '.misc-pub-section.num-revisions', array(
+			'content' => $content,
+			'position' => array( 'edge' => is_rtl() ? 'left' : 'right', 'align' => 'center', 'my' => is_rtl() ? 'left' : 'right-14px' ),
+		) );
+	}
+
+	public static function pointer_wp360_locks() {
+		$content  = '<h3>' . __( 'Edit Lock' ) . '</h3>';
+		$content .= '<p>' . __( 'Someone else is editing this. No need to refresh; the lock will disappear when they&#8217;re done.' ) . '</p>';
+
+		if ( ! is_multi_author() )
+			return;
+
+		self::print_js( 'wp360_locks', 'tr.wp-locked .locked-indicator', array(
+			'content' => $content,
+			'position' => array( 'edge' => 'left', 'align' => 'left' ),
+		) );
+	}
+
 	/**
 	 * Prevents new users from seeing existing 'new feature' pointers.
 	 *
 	 * @since 3.3.0
 	 */
 	public static function dismiss_pointers_for_new_users( $user_id ) {
-		add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media' );
+		add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media,wp360_revisions,wp360_locks' );
 	}
 }
 
@@ -1865,3 +1953,24 @@ function convert_to_screen( $hook_name ) {
 
 	return WP_Screen::get( $hook_name );
 }
+
+/**
+ * Output the HTML for restoring the post data from DOM storage
+ *
+ * @since 3.6
+ * @access private
+ */
+function _local_storage_notice() {
+	?>
+	<div id="local-storage-notice" class="hidden">
+	<p class="local-restore">
+		<?php _e('The backup of this post in your browser is different from the version below.'); ?>
+		<a class="restore-backup" href="#"><?php _e('Restore the backup.'); ?></a>
+	</p>
+	<p class="undo-restore hidden">
+		<?php _e('Post restored successfully.'); ?>
+		<a class="undo-restore-backup" href="#"><?php _e('Undo.'); ?></a>
+	</p>
+	</div>
+	<?php
+}
diff --git a/wp-admin/includes/theme-install.php b/wp-admin/includes/theme-install.php
index 5c135aa10..63be1d7e0 100644
--- a/wp-admin/includes/theme-install.php
+++ b/wp-admin/includes/theme-install.php
@@ -28,18 +28,20 @@ $theme_field_defaults = array( 'description' => true, 'sections' => false, 'test
  *
  * @return array
  */
-function install_themes_feature_list( ) {
+function install_themes_feature_list() {
+	_deprecated_function( __FUNCTION__, '3.1', 'get_theme_feature_list()' );
+
 	if ( !$cache = get_transient( 'wporg_theme_feature_list' ) )
-		set_transient( 'wporg_theme_feature_list', array( ), 10800);
+		set_transient( 'wporg_theme_feature_list', array(), 3 * HOUR_IN_SECONDS );
 
 	if ( $cache )
 		return $cache;
 
-	$feature_list = themes_api( 'feature_list', array( ) );
+	$feature_list = themes_api( 'feature_list', array() );
 	if ( is_wp_error( $feature_list ) )
-		return $features;
+		return array();
 
-	set_transient( 'wporg_theme_feature_list', $feature_list, 10800 );
+	set_transient( 'wporg_theme_feature_list', $feature_list, 3 * HOUR_IN_SECONDS );
 
 	return $feature_list;
 }
@@ -50,8 +52,8 @@ function install_themes_feature_list( ) {
  * @since 2.8.0
  */
 function install_theme_search_form( $type_selector = true ) {
-	$type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
-	$term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
+	$type = isset( $_REQUEST['type'] ) ? wp_unslash( $_REQUEST['type'] ) : 'term';
+	$term = isset( $_REQUEST['s'] ) ? wp_unslash( $_REQUEST['s'] ) : '';
 	if ( ! $type_selector )
 		echo '<p class="install-help">' . __( 'Search for themes by keyword.' ) . '</p>';
 	?>
@@ -100,7 +102,7 @@ function install_themes_dashboard() {
 <form method="get" action="">
 	<input type="hidden" name="tab" value="search" />
 	<?php
-	$feature_list = get_theme_feature_list( );
+	$feature_list = get_theme_feature_list();
 	echo '<div class="feature-filter">';
 
 	foreach ( (array) $feature_list as $feature_name => $features ) {
@@ -153,7 +155,7 @@ add_action('install_themes_upload', 'install_themes_upload', 10, 1);
 function display_theme( $theme ) {
 	_deprecated_function( __FUNCTION__, '3.4' );
 	global $wp_list_table;
-	return $wp_list_table->single_row( $theme );
+	$wp_list_table->single_row( $theme );
 }
 
 /**
@@ -179,7 +181,7 @@ add_action('install_themes_updated', 'display_themes');
 function install_theme_information() {
 	global $tab, $themes_allowedtags, $wp_list_table;
 
-	$theme = themes_api( 'theme_information', array( 'slug' => stripslashes( $_REQUEST['theme'] ) ) );
+	$theme = themes_api( 'theme_information', array( 'slug' => wp_unslash( $_REQUEST['theme'] ) ) );
 
 	if ( is_wp_error( $theme ) )
 		wp_die( $theme );
diff --git a/wp-admin/includes/theme.php b/wp-admin/includes/theme.php
index 1e26c0bac..315f02138 100644
--- a/wp-admin/includes/theme.php
+++ b/wp-admin/includes/theme.php
@@ -37,7 +37,7 @@ function delete_theme($stylesheet, $redirect = '') {
 	}
 
 	if ( ! WP_Filesystem($credentials) ) {
-		request_filesystem_credentials($url, '', true); // Failed to connect, Error and request again
+		request_filesystem_credentials($redirect, '', true); // Failed to connect, Error and request again
 		$data = ob_get_contents();
 		ob_end_clean();
 		if ( ! empty($data) ) {
@@ -216,10 +216,10 @@ function get_theme_feature_list( $api = true ) {
 		return $features;
 
 	if ( !$feature_list = get_site_transient( 'wporg_theme_feature_list' ) )
-		set_site_transient( 'wporg_theme_feature_list', array( ), 10800);
+		set_site_transient( 'wporg_theme_feature_list', array(), 10800);
 
 	if ( !$feature_list ) {
-		$feature_list = themes_api( 'feature_list', array( ) );
+		$feature_list = themes_api( 'feature_list', array() );
 		if ( is_wp_error( $feature_list ) )
 			return $features;
 	}
diff --git a/wp-admin/includes/update-core.php b/wp-admin/includes/update-core.php
index daf773499..85eb84062 100644
--- a/wp-admin/includes/update-core.php
+++ b/wp-admin/includes/update-core.php
@@ -535,9 +535,25 @@ $_old_files = array(
 'wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js',
 'wp-includes/js/jquery/ui/jquery.effects.transfer.min.js',
 'wp-includes/js/jquery/ui/jquery.effects.fold.min.js',
+'wp-admin/images/screenshots/captions-1.png',
+'wp-admin/images/screenshots/captions-2.png',
+'wp-admin/images/screenshots/flex-header-1.png',
+'wp-admin/images/screenshots/flex-header-2.png',
+'wp-admin/images/screenshots/flex-header-3.png',
+'wp-admin/images/screenshots/flex-header-media-library.png',
+'wp-admin/images/screenshots/theme-customizer.png',
+'wp-admin/images/screenshots/twitter-embed-1.png',
+'wp-admin/images/screenshots/twitter-embed-2.png',
+'wp-admin/js/utils.js',
 'wp-admin/options-privacy.php',
+'wp-app.php',
+'wp-includes/class-wp-atom-server.php',
+'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css',
 // 3.5.2
 'wp-includes/js/swfupload/swfupload-all.js',
+// 3.6
+'wp-admin/js/revisions-js.php',
+'wp-admin/images/screenshots',
 );
 
 /**
@@ -560,10 +576,11 @@ $_old_files = array(
 global $_new_bundled_files;
 
 $_new_bundled_files = array(
-'plugins/akismet/' => '2.0',
-'themes/twentyten/' => '3.0',
-'themes/twentyeleven/' => '3.2',
-'themes/twentytwelve/' => '3.5',
+	'plugins/akismet/'       => '2.0',
+	'themes/twentyten/'      => '3.0',
+	'themes/twentyeleven/'   => '3.2',
+	'themes/twentytwelve/'   => '3.5',
+	'themes/twentythirteen/' => '3.6',
 );
 
 /**
@@ -698,9 +715,7 @@ function update_core($from, $to) {
 	// 3.5 -> 3.5+ - an empty twentytwelve directory was created upon upgrade to 3.5 for some users, preventing installation of Twenty Twelve.
 	if ( '3.5' == $old_wp_version ) {
 		if ( is_dir( WP_CONTENT_DIR . '/themes/twentytwelve' ) && ! file_exists( WP_CONTENT_DIR . '/themes/twentytwelve/style.css' )  ) {
-			// Bumping the introduced version to 3.5.1 for the affected users causes Twenty Twelve to be installed for the first time
-			if ( $wp_filesystem->delete( $wp_filesystem->wp_themes_dir() . 'twentytwelve/' ) )
-				$_new_bundled_files[ 'themes/twentytwelve/' ] = '3.5.1';
+			$wp_filesystem->delete( $wp_filesystem->wp_themes_dir() . 'twentytwelve/' );
 		}
 	}
 
diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php
index d22922ed7..0d17d8fce 100644
--- a/wp-admin/includes/upgrade.php
+++ b/wp-admin/includes/upgrade.php
@@ -132,7 +132,7 @@ function wp_install_defaults($user_id) {
 		$first_post = get_site_option( 'first_post' );
 
 		if ( empty($first_post) )
-			$first_post = stripslashes( __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!' ) );
+			$first_post = __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!' );
 
 		$first_post = str_replace( "SITE_URL", esc_url( network_home_url() ), $first_post );
 		$first_post = str_replace( "SITE_NAME", $current_site->site_name, $first_post );
@@ -218,7 +218,7 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
 	update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
 	update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) );
 	update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) );
-	update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'array_version' => 3 ) );
+	update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array (), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array (),'array_version' => 3 ) );
 
 	if ( ! is_multisite() )
 		update_user_meta( $user_id, 'show_welcome_panel', 1 );
@@ -433,7 +433,7 @@ function upgrade_100() {
 	foreach ($categories as $category) {
 		if ('' == $category->category_nicename) {
 			$newtitle = sanitize_title($category->cat_name);
-			$wpdb>update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) );
+			$wpdb->update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) );
 		}
 	}
 
@@ -636,23 +636,23 @@ function upgrade_160() {
 	$users = $wpdb->get_results("SELECT * FROM $wpdb->users");
 	foreach ( $users as $user ) :
 		if ( !empty( $user->user_firstname ) )
-			update_user_meta( $user->ID, 'first_name', $wpdb->escape($user->user_firstname) );
+			update_user_meta( $user->ID, 'first_name', wp_slash($user->user_firstname) );
 		if ( !empty( $user->user_lastname ) )
-			update_user_meta( $user->ID, 'last_name', $wpdb->escape($user->user_lastname) );
+			update_user_meta( $user->ID, 'last_name', wp_slash($user->user_lastname) );
 		if ( !empty( $user->user_nickname ) )
-			update_user_meta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) );
+			update_user_meta( $user->ID, 'nickname', wp_slash($user->user_nickname) );
 		if ( !empty( $user->user_level ) )
 			update_user_meta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level );
 		if ( !empty( $user->user_icq ) )
-			update_user_meta( $user->ID, 'icq', $wpdb->escape($user->user_icq) );
+			update_user_meta( $user->ID, 'icq', wp_slash($user->user_icq) );
 		if ( !empty( $user->user_aim ) )
-			update_user_meta( $user->ID, 'aim', $wpdb->escape($user->user_aim) );
+			update_user_meta( $user->ID, 'aim', wp_slash($user->user_aim) );
 		if ( !empty( $user->user_msn ) )
-			update_user_meta( $user->ID, 'msn', $wpdb->escape($user->user_msn) );
+			update_user_meta( $user->ID, 'msn', wp_slash($user->user_msn) );
 		if ( !empty( $user->user_yim ) )
-			update_user_meta( $user->ID, 'yim', $wpdb->escape($user->user_icq) );
+			update_user_meta( $user->ID, 'yim', wp_slash($user->user_icq) );
 		if ( !empty( $user->user_description ) )
-			update_user_meta( $user->ID, 'description', $wpdb->escape($user->user_description) );
+			update_user_meta( $user->ID, 'description', wp_slash($user->user_description) );
 
 		if ( isset( $user->user_idmode ) ):
 			$idmode = $user->user_idmode;
@@ -854,7 +854,7 @@ function upgrade_230() {
 		foreach ( $link_cats as $category) {
 			$cat_id = (int) $category->cat_id;
 			$term_id = 0;
-			$name = $wpdb->escape($category->cat_name);
+			$name = wp_slash($category->cat_name);
 			$slug = sanitize_title($name);
 			$term_group = 0;
 
@@ -1279,7 +1279,7 @@ function upgrade_network() {
 		update_site_option( 'ms_files_rewriting', '1' );
 
 	// 3.5.2
-	if ( $wp_current_db_version < 22442 ) {
+	if ( $wp_current_db_version < 24448 ) {
 		$illegal_names = get_site_option( 'illegal_names' );
 		if ( is_array( $illegal_names ) && count( $illegal_names ) === 1 ) {
 			$illegal_name = reset( $illegal_names );
@@ -1427,11 +1427,7 @@ function __get_option($setting) {
 	if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting || 'tag_base' == $setting )
 		$option = untrailingslashit( $option );
 
-	@ $kellogs = unserialize( $option );
-	if ( $kellogs !== false )
-		return $kellogs;
-	else
-		return $option;
+	return maybe_unserialize( $option );
 }
 
 /**
@@ -1576,7 +1572,7 @@ function dbDelta( $queries = '', $execute = true ) {
 
 				// Get the default value from the array
 					//echo "{$cfields[strtolower($tablefield->Field)]}<br>";
-				if (preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
+				if (preg_match("| DEFAULT '(.*?)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
 					$default_value = $matches[1];
 					if ($tablefield->Default != $default_value) {
 						// Add a query to change the column's default value
@@ -1652,7 +1648,7 @@ function dbDelta( $queries = '', $execute = true ) {
 		foreach ( (array) $indices as $index ) {
 			// Push a query line into $cqueries that adds the index to that table
 			$cqueries[] = "ALTER TABLE {$table} ADD $index";
-			$for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index;
+			$for_update[] = 'Added index ' . $table . ' ' . $index;
 		}
 
 		// Remove the original table creation query from processing
diff --git a/wp-admin/includes/user.php b/wp-admin/includes/user.php
index 1d60aa57e..9e9d94494 100644
--- a/wp-admin/includes/user.php
+++ b/wp-admin/includes/user.php
@@ -34,7 +34,7 @@ function edit_user( $user_id = 0 ) {
 		$update = true;
 		$user->ID = (int) $user_id;
 		$userdata = get_userdata( $user_id );
-		$user->user_login = $wpdb->escape( $userdata->user_login );
+		$user->user_login = wp_slash( $userdata->user_login );
 	} else {
 		$update = false;
 	}
@@ -43,9 +43,9 @@ function edit_user( $user_id = 0 ) {
 		$user->user_login = sanitize_user($_POST['user_login'], true);
 
 	$pass1 = $pass2 = '';
-	if ( isset( $_POST['pass1'] ))
+	if ( isset( $_POST['pass1'] ) )
 		$pass1 = $_POST['pass1'];
-	if ( isset( $_POST['pass2'] ))
+	if ( isset( $_POST['pass2'] ) )
 		$pass2 = $_POST['pass2'];
 
 	if ( isset( $_POST['role'] ) && current_user_can( 'edit_users' ) ) {
@@ -106,10 +106,10 @@ function edit_user( $user_id = 0 ) {
 
 	/* checking that username has been typed */
 	if ( $user->user_login == '' )
-		$errors->add( 'user_login', __( '<strong>ERROR</strong>: Please enter a username.' ));
+		$errors->add( 'user_login', __( '<strong>ERROR</strong>: Please enter a username.' ) );
 
 	/* checking the password has been typed twice */
-	do_action_ref_array( 'check_passwords', array ( $user->user_login, & $pass1, & $pass2 ));
+	do_action_ref_array( 'check_passwords', array( $user->user_login, &$pass1, &$pass2 ) );
 
 	if ( $update ) {
 		if ( empty($pass1) && !empty($pass2) )
@@ -124,7 +124,7 @@ function edit_user( $user_id = 0 ) {
 	}
 
 	/* Check for "\" in password */
-	if ( false !== strpos( stripslashes($pass1), "\\" ) )
+	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 */
@@ -150,7 +150,7 @@ function edit_user( $user_id = 0 ) {
 	}
 
 	// Allow plugins to return their own errors.
-	do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) );
+	do_action_ref_array( 'user_profile_update_errors', array( &$errors, $update, &$user ) );
 
 	if ( $errors->get_error_codes() )
 		return $errors;
@@ -159,7 +159,7 @@ 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, isset($_POST['send_password']) ? $pass1 : '' );
+		wp_new_user_notification( $user_id, isset( $_POST['send_password'] ) ? wp_unslash( $pass1 ) : '' );
 	}
 	return $user_id;
 }
@@ -240,6 +240,9 @@ function wp_delete_user( $id, $reassign = 'novalue' ) {
 	$id = (int) $id;
 	$user = new WP_User( $id );
 
+	if ( !$user->exists() )
+		return false;
+
 	// allow for transaction statement
 	do_action('delete_user', $id);
 
@@ -344,7 +347,7 @@ function default_password_nag_edit_user($user_ID, $old_data) {
 	$new_data = get_userdata($user_ID);
 
 	if ( $new_data->user_pass != $old_data->user_pass ) { //Remove the nag if the password has been changed.
-		delete_user_setting('default_password_nag', $user_ID);
+		delete_user_setting('default_password_nag');
 		update_user_option($user_ID, 'default_password_nag', false, true);
 	}
 }
diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php
index e0c58a727..dae95509a 100644
--- a/wp-admin/includes/widgets.php
+++ b/wp-admin/includes/widgets.php
@@ -58,7 +58,7 @@ function _sort_name_callback( $a, $b ) {
 
 /**
  * Show the widgets and their settings for a sidebar.
- * Used in the the admin widget config screen.
+ * Used in the admin widget config screen.
  *
  * @since 2.5.0
  *
diff --git a/wp-admin/index.php b/wp-admin/index.php
index dd429e7fa..b476267cb 100644
--- a/wp-admin/index.php
+++ b/wp-admin/index.php
@@ -2,8 +2,6 @@
 /**
  * Dashboard Administration Screen
  *
- * @internal This file should be parseable by PHP4.
- *
  * @package WordPress
  * @subpackage Administration
  */
diff --git a/wp-admin/install.php b/wp-admin/install.php
index 2ff4f172c..71d59a9c4 100644
--- a/wp-admin/install.php
+++ b/wp-admin/install.php
@@ -63,7 +63,7 @@ function display_header() {
 	?>
 </head>
 <body class="wp-core-ui<?php if ( is_rtl() ) echo ' rtl'; ?>">
-<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
+<h1 id="logo"><a href="<?php echo esc_url( __( 'http://wordpress.org/' ) ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php
 } // end display_header()
@@ -84,10 +84,10 @@ function display_setup_form( $error = null ) {
 	if ( ! empty( $_POST ) )
 		$blog_public = isset( $_POST['blog_public'] );
 
-	$weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : '';
-	$user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin';
-	$admin_password = isset($_POST['admin_password']) ? trim( stripslashes( $_POST['admin_password'] ) ) : '';
-	$admin_email  = isset( $_POST['admin_email']  ) ? trim( stripslashes( $_POST['admin_email'] ) ) : '';
+	$weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) : '';
+	$user_name = isset($_POST['user_name']) ? trim( wp_unslash( $_POST['user_name'] ) ) : 'admin';
+	$admin_password = isset($_POST['admin_password']) ? trim( wp_unslash( $_POST['admin_password'] ) ) : '';
+	$admin_email  = isset( $_POST['admin_email']  ) ? trim( wp_unslash( $_POST['admin_email'] ) ) : '';
 
 	if ( ! is_null( $error ) ) {
 ?>
@@ -100,7 +100,7 @@ function display_setup_form( $error = null ) {
 			<td><input name="weblog_title" type="text" id="weblog_title" size="25" value="<?php echo esc_attr( $weblog_title ); ?>" /></td>
 		</tr>
 		<tr>
-			<th scope="row"><label for="user_name"><?php _e('Username'); ?></label></th>
+			<th scope="row"><label for="user_login"><?php _e('Username'); ?></label></th>
 			<td>
 			<?php
 			if ( $user_table ) {
@@ -189,11 +189,11 @@ switch($step) {
 
 		display_header();
 		// Fill in the data we gathered
-		$weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : '';
-		$user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin';
-		$admin_password = isset($_POST['admin_password']) ? $_POST['admin_password'] : '';
-		$admin_password_check = isset($_POST['admin_password2']) ? $_POST['admin_password2'] : '';
-		$admin_email  = isset( $_POST['admin_email']  ) ?trim( stripslashes( $_POST['admin_email'] ) ) : '';
+		$weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) : '';
+		$user_name = isset($_POST['user_name']) ? trim( wp_unslash( $_POST['user_name'] ) ) : 'admin';
+		$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;
 		// check e-mail address
 		$error = false;
diff --git a/wp-admin/js/accordion.js b/wp-admin/js/accordion.js
new file mode 100644
index 000000000..7bc99ccca
--- /dev/null
+++ b/wp-admin/js/accordion.js
@@ -0,0 +1,55 @@
+( function( $ ){
+
+	$( document ).ready( function () {
+
+		// Expand/Collapse on click
+		$( '.accordion-container' ).on( 'click keydown', '.accordion-section-title', function( e ) {
+			if ( e.type === 'keydown' && 13 !== e.which ) // "return" key
+					return;
+			e.preventDefault(); // Keep this AFTER the key filter above
+
+			accordionSwitch( $( this ) );
+		});
+
+		// Re-initialize accordion when screen options are toggled
+		$( '.hide-postbox-tog' ).click( function () {
+			accordionInit();
+		});
+
+	});
+
+	var accordionOptions = $( '.accordion-container li.accordion-section' ),
+		sectionContent   = $( '.accordion-section-content' );
+
+	function accordionInit () {
+		// Rounded corners
+		accordionOptions.removeClass( 'top bottom' );
+		accordionOptions.filter( ':visible' ).first().addClass( 'top' );
+		accordionOptions.filter( ':visible' ).last().addClass( 'bottom' ).find( sectionContent ).addClass( 'bottom' );
+	}
+
+	function accordionSwitch ( el ) {
+		var section = el.closest( '.accordion-section' ),
+			siblings = section.closest( '.accordion-container' ).find( '.open' ),
+			content = section.find( sectionContent );
+
+		if ( section.hasClass( 'cannot-expand' ) )
+			return;
+
+		if ( section.hasClass( 'open' ) ) {
+			section.toggleClass( 'open' );
+			content.toggle( true ).slideToggle( 150 );
+		} else {
+			siblings.removeClass( 'open' );
+			siblings.find( sectionContent ).show().slideUp( 150 );
+			content.toggle( false ).slideToggle( 150 );
+			section.toggleClass( 'open' );
+		}
+
+		accordionInit();
+	}
+
+	// Initialize the accordion (currently just corner fixes)
+	accordionInit();
+
+})(jQuery);
diff --git a/wp-admin/js/accordion.min.js b/wp-admin/js/accordion.min.js
new file mode 100644
index 000000000..9a9355a29
--- /dev/null
+++ b/wp-admin/js/accordion.min.js
@@ -0,0 +1 @@
+(function(e){e(document).ready(function(){e(".accordion-container").on("click keydown",".accordion-section-title",function(f){if(f.type==="keydown"&&13!==f.which){return}f.preventDefault();a(e(this))});e(".hide-postbox-tog").click(function(){d()})});var b=e(".accordion-container li.accordion-section"),c=e(".accordion-section-content");function d(){b.removeClass("top bottom");b.filter(":visible").first().addClass("top");b.filter(":visible").last().addClass("bottom").find(c).addClass("bottom")}function a(f){var h=f.closest(".accordion-section"),i=h.closest(".accordion-container").find(".open"),g=h.find(c);if(h.hasClass("cannot-expand")){return}if(h.hasClass("open")){h.toggleClass("open");g.toggle(true).slideToggle(150)}else{i.removeClass("open");i.find(c).show().slideUp(150);g.toggle(false).slideToggle(150);h.toggleClass("open")}d()}d()})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/categories.js b/wp-admin/js/categories.js
index cc58eb4a3..e69de29bb 100644
--- a/wp-admin/js/categories.js
+++ b/wp-admin/js/categories.js
@@ -1,34 +0,0 @@
-jQuery(document).ready(function($) {
-	var options = false, addAfter, delBefore, delAfter;
-	if ( document.forms['addcat'].category_parent )
-		options = document.forms['addcat'].category_parent.options;
-
-	addAfter = function( r, settings ) {
-		var name, id;
-
-		name = $("<span>" + $('name', r).text() + "</span>").text();
-		id = $('cat', r).attr('id');
-		options[options.length] = new Option(name, id);
-	}
-
-	delAfter = function( r, settings ) {
-		var id = $('cat', r).attr('id'), o;
-		for ( o = 0; o < options.length; o++ )
-			if ( id == options[o].value )
-				options[o] = null;
-	}
-
-	delBefore = function(s) {
-		if ( 'undefined' != showNotice )
-			return showNotice.warn() ? s : false;
-
-		return s;
-	}
-
-	if ( options )
-		$('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } );
-	else
-		$('#the-list').wpList({ delBefore: delBefore });
-
-	$('.delete a[class^="delete"]').live('click', function(){return false;});
-});
diff --git a/wp-admin/js/categories.min.js b/wp-admin/js/categories.min.js
index 45c2358a4..e69de29bb 100644
--- a/wp-admin/js/categories.min.js
+++ b/wp-admin/js/categories.min.js
@@ -1 +0,0 @@
-jQuery(document).ready(function(d){var b=false,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}e=function(h,g){var f,i;f=d("<span>"+d("name",h).text()+"</span>").text();i=d("cat",h).attr("id");b[b.length]=new Option(f,i)};a=function(g,f){var i=d("cat",g).attr("id"),h;for(h=0;h<b.length;h++){if(i==b[h].value){b[h]=null}}};c=function(f){if("undefined"!=showNotice){return showNotice.warn()?f:false}return f};if(b){d("#the-list").wpList({addAfter:e,delBefore:c,delAfter:a})}else{d("#the-list").wpList({delBefore:c})}d('.delete a[class^="delete"]').live("click",function(){return false})});
\ No newline at end of file
diff --git a/wp-admin/js/color-picker.js b/wp-admin/js/color-picker.js
index 393f2ff9c..d56475478 100644
--- a/wp-admin/js/color-picker.js
+++ b/wp-admin/js/color-picker.js
@@ -16,11 +16,12 @@
 			palettes: true
 		},
 		_create: function() {
-			// bail early for IE < 8
-			if ( $.browser.msie && parseInt( $.browser.version, 10 ) < 8 )
+			// bail early for unsupported Iris.
+			if ( ! $.support.iris )
 				return;
 			var self = this;
 			var el = self.element;
+
 			$.extend( self.options, el.data() );
 
 			self.initialValue = el.val();
diff --git a/wp-admin/js/color-picker.min.js b/wp-admin/js/color-picker.min.js
index 75b6ede35..178ab3782 100644
--- a/wp-admin/js/color-picker.min.js
+++ b/wp-admin/js/color-picker.min.js
@@ -1 +1 @@
-(function(f,e){var a='<a tabindex="0" class="wp-color-result" />',c='<div class="wp-picker-holder" />',b='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';var d={options:{defaultColor:false,change:false,clear:false,hide:true,palettes:true},_create:function(){if(f.browser.msie&&parseInt(f.browser.version,10)<8){return}var h=this;var i=h.element;f.extend(h.options,i.data());h.initialValue=i.val();i.addClass("wp-color-picker").hide().wrap(b);h.wrap=i.parent();h.toggler=f(a).insertBefore(i).css({backgroundColor:h.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current);h.pickerContainer=f(c).insertAfter(i);h.button=f(g);if(h.options.defaultColor){h.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString)}else{h.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear)}i.wrap('<span class="wp-picker-input-wrap" />').after(h.button);i.iris({target:h.pickerContainer,hide:true,width:255,mode:"hsv",palettes:h.options.palettes,change:function(j,k){h.toggler.css({backgroundColor:k.color.toString()});if(f.isFunction(h.options.change)){h.options.change.call(this,j,k)}}});i.val(h.initialValue);h._addListeners();if(!h.options.hide){h.toggler.click()}},_addListeners:function(){var h=this;h.toggler.click(function(i){i.stopPropagation();h.element.toggle().iris("toggle");h.button.toggleClass("hidden");h.toggler.toggleClass("wp-picker-open");if(h.toggler.hasClass("wp-picker-open")){f("body").on("click",{wrap:h.wrap,toggler:h.toggler},h._bodyListener)}else{f("body").off("click",h._bodyListener)}});h.element.change(function(j){var i=f(this),k=i.val();if(k===""||k==="#"){h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}});h.toggler.on("keyup",function(i){if(i.keyCode===13||i.keyCode===32){i.preventDefault();h.toggler.trigger("click").next().focus()}});h.button.click(function(j){var i=f(this);if(i.hasClass("wp-picker-clear")){h.element.val("");h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}else{if(i.hasClass("wp-picker-default")){h.element.val(h.options.defaultColor).change()}}})},_bodyListener:function(h){if(!h.data.wrap.find(h.target).length){h.data.toggler.click()}},color:function(h){if(h===e){return this.element.iris("option","color")}this.element.iris("option","color",h)},defaultColor:function(h){if(h===e){return this.options.defaultColor}this.options.defaultColor=h}};f.widget("wp.wpColorPicker",d)}(jQuery));
\ No newline at end of file
+(function(f,e){var a='<a tabindex="0" class="wp-color-result" />',c='<div class="wp-picker-holder" />',b='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';var d={options:{defaultColor:false,change:false,clear:false,hide:true,palettes:true},_create:function(){if(!f.support.iris){return}var h=this;var i=h.element;f.extend(h.options,i.data());h.initialValue=i.val();i.addClass("wp-color-picker").hide().wrap(b);h.wrap=i.parent();h.toggler=f(a).insertBefore(i).css({backgroundColor:h.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current);h.pickerContainer=f(c).insertAfter(i);h.button=f(g);if(h.options.defaultColor){h.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString)}else{h.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear)}i.wrap('<span class="wp-picker-input-wrap" />').after(h.button);i.iris({target:h.pickerContainer,hide:true,width:255,mode:"hsv",palettes:h.options.palettes,change:function(j,k){h.toggler.css({backgroundColor:k.color.toString()});if(f.isFunction(h.options.change)){h.options.change.call(this,j,k)}}});i.val(h.initialValue);h._addListeners();if(!h.options.hide){h.toggler.click()}},_addListeners:function(){var h=this;h.toggler.click(function(i){i.stopPropagation();h.element.toggle().iris("toggle");h.button.toggleClass("hidden");h.toggler.toggleClass("wp-picker-open");if(h.toggler.hasClass("wp-picker-open")){f("body").on("click",{wrap:h.wrap,toggler:h.toggler},h._bodyListener)}else{f("body").off("click",h._bodyListener)}});h.element.change(function(j){var i=f(this),k=i.val();if(k===""||k==="#"){h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}});h.toggler.on("keyup",function(i){if(i.keyCode===13||i.keyCode===32){i.preventDefault();h.toggler.trigger("click").next().focus()}});h.button.click(function(j){var i=f(this);if(i.hasClass("wp-picker-clear")){h.element.val("");h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}else{if(i.hasClass("wp-picker-default")){h.element.val(h.options.defaultColor).change()}}})},_bodyListener:function(h){if(!h.data.wrap.find(h.target).length){h.data.toggler.click()}},color:function(h){if(h===e){return this.element.iris("option","color")}this.element.iris("option","color",h)},defaultColor:function(h){if(h===e){return this.options.defaultColor}this.options.defaultColor=h}};f.widget("wp.wpColorPicker",d)}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/common.js b/wp-admin/js/common.js
index 0f6b84d08..b1327f997 100644
--- a/wp-admin/js/common.js
+++ b/wp-admin/js/common.js
@@ -169,16 +169,22 @@ $(document).ready( function() {
 	});
 
 	$('#collapse-menu').on('click.collapse-menu', function(e){
-		var body = $(document.body);
+		var body = $( document.body ), respWidth;
 
 		// reset any compensation for submenus near the bottom of the screen
 		$('#adminmenu div.wp-submenu').css('margin-top', '');
 
-		if ( $(window).width() < 900 ) {
+		// WebKit excludes the width of the vertical scrollbar when applying the CSS "@media screen and (max-width: ...)"
+		// and matches $(window).width().
+		// Firefox and IE > 8 include the scrollbar width, so after the jQuery normalization
+		// $(window).width() is 884px but window.innerWidth is 900px.
+		// (using window.innerWidth also excludes IE < 9)
+		respWidth = navigator.userAgent.indexOf('AppleWebKit/') > -1 ? $(window).width() : window.innerWidth;
+
+		if ( respWidth && respWidth < 900 ) {
 			if ( body.hasClass('auto-fold') ) {
-				body.removeClass('auto-fold');
+				body.removeClass('auto-fold').removeClass('folded');
 				setUserSetting('unfold', 1);
-				body.removeClass('folded');
 				deleteUserSetting('mfold');
 			} else {
 				body.addClass('auto-fold');
@@ -307,7 +313,7 @@ $(document).ready( function() {
 		$(this).closest( 'table' ).children( 'tbody' ).filter(':visible')
 		.children().children('.check-column').find(':checkbox')
 		.prop('checked', function() {
-			if ( $(this).closest('tr').is(':hidden') )
+			if ( $(this).is(':hidden') )
 				return false;
 			if ( toggle )
 				return $(this).prop( 'checked' );
diff --git a/wp-admin/js/common.min.js b/wp-admin/js/common.min.js
index df6ada9da..0575552c0 100644
--- a/wp-admin/js/common.min.js
+++ b/wp-admin/js/common.min.js
@@ -1 +1 @@
-var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){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 d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}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).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}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 b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".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",true)})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",false);a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,d,f,j,h,c=a("#adminmenu"),b,e=a("input.current-page"),g=e.val();c.on("click.wp-submenu-head",".wp-submenu-head",function(k){a(k.target).parent().siblings("a").get(0).click()});a("#collapse-menu").on("click.collapse-menu",function(l){var k=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top","");if(a(window).width()<900){if(k.hasClass("auto-fold")){k.removeClass("auto-fold");setUserSetting("unfold",1);k.removeClass("folded");deleteUserSetting("mfold")}else{k.addClass("auto-fold");deleteUserSetting("unfold")}}else{if(k.hasClass("folded")){k.removeClass("folded");deleteUserSetting("mfold")}else{k.addClass("folded");setUserSetting("mfold","f")}}});if("ontouchstart" in window||/IEMobile\/[1-9]/.test(navigator.userAgent)){b=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";a(document.body).on(b+".wp-mobile-hover",function(k){if(!a(k.target).closest("#adminmenu").length){c.find("li.wp-has-submenu.opensub").removeClass("opensub")}});c.find("a.wp-has-submenu").on(b+".wp-mobile-hover",function(m){var l=a(this),k=l.parent();if(!k.hasClass("opensub")&&(!k.hasClass("wp-menu-open")||k.width()<40)){m.preventDefault();c.find("li.opensub").removeClass("opensub");k.addClass("opensub")}})}c.find("li.wp-has-submenu").hoverIntent({over:function(s){var u,q,k,r,l=a(this).find(".wp-submenu"),v,n,p,t=parseInt(l.css("top"),10);if(isNaN(t)||t>-5){return}v=a(this).offset().top;n=a(window).scrollTop();p=v-n-30;u=v+l.height()+1;q=a("#wpwrap").height();k=60+u-q;r=a(window).height()+n-15;if(r<(u-k)){k=u-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}c.find("li.menu-top").removeClass("opensub");a(this).addClass("opensub")},out:function(){a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90});c.on("focus.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").removeClass("opensub")});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(l){if("undefined"==l.shiftKey){return true}if(l.shiftKey){if(!i){return true}d=a(i).closest("form").find(":checkbox");f=d.index(i);j=d.index(this);h=a(this).prop("checked");if(0<f&&0<j&&f!=j){d.slice(f,j).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return h}return false})}}i=this;var k=a(this).closest("tbody").find(":checkbox").filter(":visible").not(":checked");a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return(0==k.length)});return true});a("thead, tfoot").find(".check-column :checkbox").click(function(m){var n=a(this).prop("checked"),l="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,k=m.shiftKey||l;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).closest("tr").is(":hidden")){return false}if(k){return a(this).prop("checked")}else{if(n){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(k){return false}else{if(n){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(p){var m=p.target,r,l,q,k,o;if(p.keyCode==27){a(m).data("tab-out",true);return}if(p.keyCode!=9||p.ctrlKey||p.altKey||p.shiftKey){return}if(a(m).data("tab-out")){a(m).data("tab-out",false);return}r=m.selectionStart;l=m.selectionEnd;q=m.value;try{this.lastKey=9}catch(n){}if(document.selection){m.focus();o=document.selection.createRange();o.text="\t"}else{if(r>=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(e.length){e.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&e.val()==g){e.val("1")}})}a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(k){if(k.target.scrollIntoView){k.target.scrollIntoView(false)}});(function(){var l,k,m=a("form.wp-upload-form");if(!m.length){return}l=m.find('input[type="submit"]');k=m.find('input[type="file"]');function n(){l.prop("disabled",""===k.map(function(){return a(this).val()}).get().join(""))}n();k.on("change",n)})()});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
+var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){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 d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}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).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}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 b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".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",true)})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",false);a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,d,f,j,h,c=a("#adminmenu"),b,e=a("input.current-page"),g=e.val();c.on("click.wp-submenu-head",".wp-submenu-head",function(k){a(k.target).parent().siblings("a").get(0).click()});a("#collapse-menu").on("click.collapse-menu",function(m){var k=a(document.body),l;a("#adminmenu div.wp-submenu").css("margin-top","");l=navigator.userAgent.indexOf("AppleWebKit/")>-1?a(window).width():window.innerWidth;if(l&&l<900){if(k.hasClass("auto-fold")){k.removeClass("auto-fold").removeClass("folded");setUserSetting("unfold",1);deleteUserSetting("mfold")}else{k.addClass("auto-fold");deleteUserSetting("unfold")}}else{if(k.hasClass("folded")){k.removeClass("folded");deleteUserSetting("mfold")}else{k.addClass("folded");setUserSetting("mfold","f")}}});if("ontouchstart" in window||/IEMobile\/[1-9]/.test(navigator.userAgent)){b=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";a(document.body).on(b+".wp-mobile-hover",function(k){if(!a(k.target).closest("#adminmenu").length){c.find("li.wp-has-submenu.opensub").removeClass("opensub")}});c.find("a.wp-has-submenu").on(b+".wp-mobile-hover",function(m){var l=a(this),k=l.parent();if(!k.hasClass("opensub")&&(!k.hasClass("wp-menu-open")||k.width()<40)){m.preventDefault();c.find("li.opensub").removeClass("opensub");k.addClass("opensub")}})}c.find("li.wp-has-submenu").hoverIntent({over:function(s){var u,q,k,r,l=a(this).find(".wp-submenu"),v,n,p,t=parseInt(l.css("top"),10);if(isNaN(t)||t>-5){return}v=a(this).offset().top;n=a(window).scrollTop();p=v-n-30;u=v+l.height()+1;q=a("#wpwrap").height();k=60+u-q;r=a(window).height()+n-15;if(r<(u-k)){k=u-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}c.find("li.menu-top").removeClass("opensub");a(this).addClass("opensub")},out:function(){a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90});c.on("focus.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(k){a(k.target).closest("li.menu-top").removeClass("opensub")});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(l){if("undefined"==l.shiftKey){return true}if(l.shiftKey){if(!i){return true}d=a(i).closest("form").find(":checkbox");f=d.index(i);j=d.index(this);h=a(this).prop("checked");if(0<f&&0<j&&f!=j){d.slice(f,j).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return h}return false})}}i=this;var k=a(this).closest("tbody").find(":checkbox").filter(":visible").not(":checked");a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return(0==k.length)});return true});a("thead, tfoot").find(".check-column :checkbox").click(function(m){var n=a(this).prop("checked"),l="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,k=m.shiftKey||l;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).is(":hidden")){return false}if(k){return a(this).prop("checked")}else{if(n){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(k){return false}else{if(n){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(p){var m=p.target,r,l,q,k,o;if(p.keyCode==27){a(m).data("tab-out",true);return}if(p.keyCode!=9||p.ctrlKey||p.altKey||p.shiftKey){return}if(a(m).data("tab-out")){a(m).data("tab-out",false);return}r=m.selectionStart;l=m.selectionEnd;q=m.value;try{this.lastKey=9}catch(n){}if(document.selection){m.focus();o=document.selection.createRange();o.text="\t"}else{if(r>=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(e.length){e.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&e.val()==g){e.val("1")}})}a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(k){if(k.target.scrollIntoView){k.target.scrollIntoView(false)}});(function(){var l,k,m=a("form.wp-upload-form");if(!m.length){return}l=m.find('input[type="submit"]');k=m.find('input[type="file"]');function n(){l.prop("disabled",""===k.map(function(){return a(this).val()}).get().join(""))}n();k.on("change",n)})()});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/custom-fields.js b/wp-admin/js/custom-fields.js
index 9eab21455..e69de29bb 100644
--- a/wp-admin/js/custom-fields.js
+++ b/wp-admin/js/custom-fields.js
@@ -1,34 +0,0 @@
-jQuery(document).ready( function($) {
-	var before, addBefore, addAfter, delBefore;
-
-	before = function() {
-		var nonce = $('#newmeta [name="_ajax_nonce"]').val(), postId = $('#post_ID').val();
-		if ( !nonce || !postId ) { return false; }
-		return [nonce,postId];
-	}
-
-	addBefore = function( s ) {
-		var b = before();
-		if ( !b ) { return false; }
-		s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1];
-		return s;
-	};
-
-	addAfter = function( r, s ) {
-		var postId = $('postid', r).text(), h;
-		if ( !postId ) { return; }
-		$('#post_ID').attr( 'name', 'post_ID' ).val( postId );
-		h = $('#hiddenaction');
-		if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); }
-	};
-
-	delBefore = function( s ) {
-		var b = before(); if ( !b ) return false;
-		s.data._ajax_nonce = b[0]; s.data.post_id = b[1];
-		return s;
-	}
-
-	$('#the-list')
-		.wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } )
-		.find('.updatemeta, .deletemeta').attr( 'type', 'button' );
-} );
diff --git a/wp-admin/js/custom-fields.min.js b/wp-admin/js/custom-fields.min.js
index dbe2f4816..e69de29bb 100644
--- a/wp-admin/js/custom-fields.min.js
+++ b/wp-admin/js/custom-fields.min.js
@@ -1 +0,0 @@
-jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d('#newmeta [name="_ajax_nonce"]').val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")});
\ No newline at end of file
diff --git a/wp-admin/js/customize-controls.js b/wp-admin/js/customize-controls.js
index 96f776744..01fffbac1 100644
--- a/wp-admin/js/customize-controls.js
+++ b/wp-admin/js/customize-controls.js
@@ -846,26 +846,6 @@
 			api.state = state;
 		}());
 
-		// Temporary accordion code.
-		$('.customize-section-title').bind('click keydown', function( event ) {
-
-			if ( event.type === 'keydown' &&  13 !== event.which ) // enter
-					return;
-
-			var clicked = $( this ).parents( '.customize-section' );
-
-			if ( clicked.hasClass('cannot-expand') )
-				return;
-
-			// Scroll up if on #customize-section-title_tagline
-			if ('customize-section-title_tagline' === clicked.attr('id'))
-				$('.wp-full-overlay-sidebar-content').scrollTop(0);
-
-			$( '.customize-section' ).not( clicked ).removeClass( 'open' );
-			clicked.toggleClass( 'open' );
-			event.preventDefault();
-		});
-
 		// Button bindings.
 		$('#save').click( function( event ) {
 			previewer.save();
@@ -886,6 +866,11 @@
 			event.preventDefault();
 		});
 
+		$('.upload-dropzone a.upload').keydown( function( event ) {
+			if ( 13 === event.which ) // enter
+				this.click();
+		});
+
 		$('.collapse-sidebar').on( 'click keydown', function( event ) {
 			if ( event.type === 'keydown' &&  13 !== event.which ) // enter
 				return;
diff --git a/wp-admin/js/customize-controls.min.js b/wp-admin/js/customize-controls.min.js
index b3543ee00..82050c464 100644
--- a/wp-admin/js/customize-controls.min.js
+++ b/wp-admin/js/customize-controls.min.js
@@ -1 +1 @@
-(function(a,c){var b=wp.customize;b.Setting=b.Value.extend({initialize:function(g,f,d){var e;b.Value.prototype.initialize.call(this,f,d);this.id=g;this.transport=this.transport||"refresh";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()])}}});b.Control=b.Class.extend({initialize:function(i,e){var g=this,d,h,f;this.params={};c.extend(this,e||{});this.id=i;this.selector="#customize-control-"+i.replace("]","").replace("[","-");this.container=c(this.selector);f=c.map(this.params.settings,function(j){return j});b.apply(b,f.concat(function(){var j;g.settings={};for(j in g.params.settings){g.settings[j]=b(g.params.settings[j])}g.setting=g.settings["default"]||null;g.ready()}));g.elements=[];d=this.container.find("[data-customize-setting-link]");h={};d.each(function(){var k=c(this),j;if(k.is(":radio")){j=k.prop("name");if(h[j]){return}h[j]=true;k=d.filter('[name="'+j+'"]')}b(k.data("customizeSettingLink"),function(m){var l=new b.Element(k);g.elements.push(l);l.sync(m);l.set(m())})})},ready:function(){},dropdownInit:function(){var f=this,e=this.container.find(".dropdown-status"),g=this.params,h=function(i){if(typeof i==="string"&&g.statuses&&g.statuses[i]){e.html(g.statuses[i]).show()}else{e.hide()}};var d=false;this.container.on("click keydown",".dropdown",function(i){if(i.type==="keydown"&&13!==i.which){return}i.preventDefault();if(!d){f.container.toggleClass("open")}if(f.container.hasClass("open")){f.container.parent().parent().find("li.library-selected").focus()}d=true;setTimeout(function(){d=false},400)});this.setting.bind(h);h(this.setting())}});b.ColorControl=b.Control.extend({ready:function(){var e=this,d=this.container.find(".color-picker-hex");d.val(e.setting()).wpColorPicker({change:function(g,f){e.setting.set(d.wpColorPicker("color"))},clear:function(){e.setting.set(false)}})}});b.UploadControl=b.Control.extend({ready:function(){var d=this;this.params.removed=this.params.removed||"";this.success=c.proxy(this.success,this);this.uploader=c.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success,plupload:{},params:{}},this.uploader||{});if(d.params.extensions){d.uploader.plupload.filters=[{title:b.l10n.allowedFiles,extensions:d.params.extensions}]}if(d.params.context){d.uploader.params["post_data[context]"]=this.params.context}if(b.settings.theme.stylesheet){d.uploader.params["post_data[theme]"]=b.settings.theme.stylesheet}this.uploader=new wp.Uploader(this.uploader);this.remover=this.container.find(".remove");this.remover.on("click keydown",function(e){if(e.type==="keydown"&&13!==e.which){return}d.setting.set(d.params.removed);e.preventDefault()});this.removerVisibility=c.proxy(this.removerVisibility,this);this.setting.bind(this.removerVisibility);this.removerVisibility(this.setting.get())},success:function(d){this.setting.set(d.get("url"))},removerVisibility:function(d){this.remover.toggle(d!=this.params.removed)}});b.ImageControl=b.UploadControl.extend({ready:function(){var e=this,d;this.uploader={init:function(f){var h,g;if(this.supports.dragdrop){return}h=e.container.find(".upload-fallback");g=h.children().detach();this.browser.detach().empty().append(g);h.append(this.browser).show()}};b.UploadControl.prototype.ready.call(this);this.thumbnail=this.container.find(".preview-thumbnail img");this.thumbnailSrc=c.proxy(this.thumbnailSrc,this);this.setting.bind(this.thumbnailSrc);this.library=this.container.find(".library");this.tabs={};d=this.library.find(".library-content");this.library.children("ul").children("li").each(function(){var g=c(this),h=g.data("customizeTab"),f=d.filter('[data-customize-tab="'+h+'"]');e.tabs[h]={both:g.add(f),link:g,panel:f}});this.library.children("ul").on("click keydown","li",function(g){if(g.type==="keydown"&&13!==g.which){return}var h=c(this).data("customizeTab"),f=e.tabs[h];g.preventDefault();if(f.link.hasClass("library-selected")){return}e.selected.both.removeClass("library-selected");e.selected=f;e.selected.both.addClass("library-selected")});this.library.on("click keydown","a",function(f){if(f.type==="keydown"&&13!==f.which){return}var g=c(this).data("customizeImageValue");if(g){e.setting.set(g);f.preventDefault()}});if(this.tabs.uploaded){this.tabs.uploaded.target=this.library.find(".uploaded-target");if(!this.tabs.uploaded.panel.find(".thumbnail").length){this.tabs.uploaded.both.addClass("hidden")}}d.each(function(){var f=e.tabs[c(this).data("customizeTab")];if(!f.link.hasClass("hidden")){e.selected=f;f.both.addClass("library-selected");return false}});this.dropdownInit()},success:function(d){b.UploadControl.prototype.success.call(this,d);if(this.tabs.uploaded&&this.tabs.uploaded.target.length){this.tabs.uploaded.both.removeClass("hidden");d.element=c('<a href="#" class="thumbnail"></a>').data("customizeImageValue",d.get("url")).append('<img src="'+d.get("url")+'" />').appendTo(this.tabs.uploaded.target)}},thumbnailSrc:function(d){if(/^(https?:)?\/\//.test(d)){this.thumbnail.prop("src",d).show()}else{this.thumbnail.hide()}}});b.defaultConstructor=b.Setting;b.control=new b.Values({defaultConstructor:b.Control});b.PreviewFrame=b.Messenger.extend({sensitivity:2000,initialize:function(g,f){var e=c.Deferred(),d=this;e.promise(this);this.container=g.container;this.signature=g.signature;c.extend(g,{channel:b.PreviewFrame.uuid()});b.Messenger.prototype.initialize.call(this,g,f);this.add("previewUrl",g.previewUrl);this.query=c.extend(g.query||{},{customize_messenger_channel:this.channel()});this.run(e)},run:function(e){var d=this,f=false,g=false;if(this._ready){this.unbind("ready",this._ready)}this._ready=function(){g=true;if(f){e.resolveWith(d)}};this.bind("ready",this._ready);this.request=c.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:true}});this.request.fail(function(){e.rejectWith(d,["request failure"])});this.request.done(function(j){var i=d.request.getResponseHeader("Location"),h=d.signature,k;if(i&&i!=d.previewUrl()){e.rejectWith(d,["redirect",i]);return}if("0"===j){d.login(e);return}if("-1"===j){e.rejectWith(d,["cheatin"]);return}k=j.lastIndexOf(h);if(-1===k||k<j.lastIndexOf("</html>")){e.rejectWith(d,["unsigned"]);return}j=j.slice(0,k)+j.slice(k+h.length);d.iframe=c("<iframe />").appendTo(d.container);d.iframe.one("load",function(){f=true;if(g){e.resolveWith(d)}else{setTimeout(function(){e.rejectWith(d,["ready timeout"])},d.sensitivity)}});d.targetWindow(d.iframe[0].contentWindow);d.targetWindow().document.open();d.targetWindow().document.write(j);d.targetWindow().document.close()})},login:function(e){var d=this,f;f=function(){e.rejectWith(d,["logged out"])};if(this.triedLogin){return f()}c.get(b.settings.url.ajax,{action:"logged-in"}).fail(f).done(function(g){var h;if("1"!==g){f()}h=c('<iframe src="'+d.previewUrl()+'" />').hide();h.appendTo(d.container);h.load(function(){d.triedLogin=true;h.remove();d.run(e)})})},destroy:function(){b.Messenger.prototype.destroy.call(this);this.request.abort();if(this.iframe){this.iframe.remove()}delete this.request;delete this.iframe;delete this.targetWindow}});(function(){var d=0;b.PreviewFrame.uuid=function(){return"preview-"+d++}}());b.Previewer=b.Messenger.extend({refreshBuffer:250,initialize:function(h,f){var d=this,g=/^https?/,e;c.extend(this,f||{});this.refresh=(function(i){var j=i.refresh,l=function(){k=null;j.call(i)},k;return function(){if(typeof k!=="number"){if(i.loading){i.abort()}else{return l()}}clearTimeout(k);k=setTimeout(l,i.refreshBuffer)}})(this);this.container=b.ensure(h.container);this.allowedUrls=h.allowedUrls;this.signature=h.signature;h.url=window.location.href;b.Messenger.prototype.initialize.call(this,h);this.add("scheme",this.origin()).link(this.origin).setter(function(j){var i=j.match(g);return i?i[0]:""});this.add("previewUrl",h.previewUrl).setter(function(j){var i;if(/\/wp-admin(\/|$)/.test(j.replace(/[#?].*$/,""))){return null}c.each([j.replace(g,d.scheme()),j],function(l,k){c.each(d.allowedUrls,function(m,n){if(0===k.indexOf(n)){i=k;return false}});if(i){return false}});return i?i:null});this.previewUrl.bind(this.refresh);this.scroll=0;this.bind("scroll",function(i){this.scroll=i});this.bind("url",this.previewUrl)},query:function(){},abort:function(){if(this.loading){this.loading.destroy();delete this.loading}},refresh:function(){var d=this;this.abort();this.loading=new b.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature});this.loading.done(function(){this.bind("synced",function(){if(d.preview){d.preview.destroy()}d.preview=this;delete d.loading;d.targetWindow(this.targetWindow());d.channel(this.channel());d.send("active")});this.send("sync",{scroll:d.scroll,settings:b.get()})});this.loading.fail(function(f,e){if("redirect"===f&&e){d.previewUrl(e)}if("logged out"===f){if(d.preview){d.preview.destroy();delete d.preview}d.login().done(d.refresh)}if("cheatin"===f){d.cheatin()}})},login:function(){var g=this,d,f,e;if(this._login){return this._login}d=c.Deferred();this._login=d.promise();f=new b.Messenger({channel:"login",url:b.settings.url.login});e=c('<iframe src="'+b.settings.url.login+'" />').appendTo(this.container);f.targetWindow(e[0].contentWindow);f.bind("login",function(){e.remove();f.destroy();delete g._login;d.resolve()});return this._login},cheatin:function(){c(document.body).empty().addClass("cheatin").append("<p>"+b.l10n.cheatin+"</p>")}});b.controlConstructor={color:b.ColorControl,upload:b.UploadControl,image:b.ImageControl};c(function(){b.settings=window._wpCustomizeSettings;b.l10n=window._wpCustomizeControlsL10n;if(!b.settings){return}if(!c.support.postMessage||(!c.support.cors&&b.settings.isCrossDomain)){return window.location=b.settings.url.fallback}var d=c(document.body),f=d.children(".wp-full-overlay"),h,i,g;c("#customize-controls").on("keydown",function(j){if(c(j.target).is("textarea")){return}if(13===j.which){j.preventDefault()}});i=new b.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:b.settings.url.preview,allowedUrls:b.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:b.settings.nonce,query:function(){return{wp_customize:"on",theme:b.settings.theme.stylesheet,customized:JSON.stringify(b.get()),nonce:this.nonce.preview}},save:function(){var j=this,l=c.extend(this.query(),{action:"customize_save",nonce:this.nonce.save}),k=c.post(b.settings.url.ajax,l);b.trigger("save",k);d.addClass("saving");k.always(function(){d.removeClass("saving")});k.done(function(m){if("0"===m){j.preview.iframe.hide();j.login().done(function(){j.save();j.preview.iframe.show()});return}if("-1"===m){j.cheatin();return}b.trigger("saved")})}});i.bind("nonce",function(j){c.extend(this.nonce,j)});c.each(b.settings.settings,function(k,j){b.create(k,k,j.value,{transport:j.transport,previewer:i})});c.each(b.settings.controls,function(m,k){var j=b.controlConstructor[k.type]||b.Control,l;l=b.control.add(m,new j(m,{params:k,previewer:i}))});if(i.previewUrl()){i.refresh()}else{i.previewUrl(b.settings.url.home)}(function(){var l=new b.Values(),k=l.create("saved"),j=l.create("activated");l.bind("change",function(){var n=c("#save"),m=c(".back");if(!j()){n.val(b.l10n.activate).prop("disabled",false);m.text(b.l10n.cancel)}else{if(k()){n.val(b.l10n.saved).prop("disabled",true);m.text(b.l10n.close)}else{n.val(b.l10n.save).prop("disabled",false);m.text(b.l10n.cancel)}}});k(true);j(b.settings.theme.active);b.bind("change",function(){l("saved").set(false)});b.bind("saved",function(){l("saved").set(true);l("activated").set(true)});j.bind(function(m){if(m){b.trigger("activated")}});b.state=l}());c(".customize-section-title").bind("click keydown",function(k){if(k.type==="keydown"&&13!==k.which){return}var j=c(this).parents(".customize-section");if(j.hasClass("cannot-expand")){return}if("customize-section-title_tagline"===j.attr("id")){c(".wp-full-overlay-sidebar-content").scrollTop(0)}c(".customize-section").not(j).removeClass("open");j.toggleClass("open");k.preventDefault()});c("#save").click(function(j){i.save();j.preventDefault()}).keydown(function(j){if(9===j.which){return}if(13===j.which){i.save()}j.preventDefault()});c(".back").keydown(function(j){if(9===j.which){return}if(13===j.which){g.send("close")}j.preventDefault()});c(".collapse-sidebar").on("click keydown",function(j){if(j.type==="keydown"&&13!==j.which){return}f.toggleClass("collapsed").toggleClass("expanded");j.preventDefault()});g=new b.Messenger({url:b.settings.url.parent,channel:"loader"});g.bind("back",function(){c(".back").on("click.back",function(j){j.preventDefault();g.send("close")})});b.bind("saved",function(){g.send("saved")});b.bind("activated",function(){if(g.targetWindow()){g.send("activated",b.settings.url.activated)}else{if(b.settings.url.activated){window.location=b.settings.url.activated}}});g.send("ready");c.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(j){return !!j}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(j){return"page"===j}},header_textcolor:{controls:["header_textcolor"],callback:function(j){return"blank"!==j}}},function(j,k){b(j,function(l){c.each(k.controls,function(m,n){b.control(n,function(p){var o=function(q){p.container.toggle(k.callback(q))};o(l.get());l.bind(o)})})})});b.control("display_header_text",function(k){var j="";k.elements[0].unsync(b("header_textcolor"));k.element=new b.Element(k.container.find("input"));k.element.set("blank"!==k.setting());k.element.bind(function(l){if(!l){j=b("header_textcolor").get()}k.setting.set(l?j:"blank")});k.setting.bind(function(l){k.element.set("blank"!==l)})});b.control("header_image",function(j){j.setting.bind(function(k){if(k===j.params.removed){j.settings.data.set(false)}});j.library.on("click","a",function(k){j.settings.data.set(c(this).data("customizeHeaderImageData"))});j.uploader.success=function(l){var k;b.ImageControl.prototype.success.call(j,l);k={attachment_id:l.get("id"),url:l.get("url"),thumbnail_url:l.get("url"),height:l.get("height"),width:l.get("width")};l.element.data("customizeHeaderImageData",k);j.settings.data.set(k)}});b.trigger("ready");var e=c(".back");e.focus();setTimeout(function(){e.focus()},200)})})(wp,jQuery);
\ No newline at end of file
+(function(a,c){var b=wp.customize;b.Setting=b.Value.extend({initialize:function(g,f,d){var e;b.Value.prototype.initialize.call(this,f,d);this.id=g;this.transport=this.transport||"refresh";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()])}}});b.Control=b.Class.extend({initialize:function(i,e){var g=this,d,h,f;this.params={};c.extend(this,e||{});this.id=i;this.selector="#customize-control-"+i.replace("]","").replace("[","-");this.container=c(this.selector);f=c.map(this.params.settings,function(j){return j});b.apply(b,f.concat(function(){var j;g.settings={};for(j in g.params.settings){g.settings[j]=b(g.params.settings[j])}g.setting=g.settings["default"]||null;g.ready()}));g.elements=[];d=this.container.find("[data-customize-setting-link]");h={};d.each(function(){var k=c(this),j;if(k.is(":radio")){j=k.prop("name");if(h[j]){return}h[j]=true;k=d.filter('[name="'+j+'"]')}b(k.data("customizeSettingLink"),function(m){var l=new b.Element(k);g.elements.push(l);l.sync(m);l.set(m())})})},ready:function(){},dropdownInit:function(){var f=this,e=this.container.find(".dropdown-status"),g=this.params,h=function(i){if(typeof i==="string"&&g.statuses&&g.statuses[i]){e.html(g.statuses[i]).show()}else{e.hide()}};var d=false;this.container.on("click keydown",".dropdown",function(i){if(i.type==="keydown"&&13!==i.which){return}i.preventDefault();if(!d){f.container.toggleClass("open")}if(f.container.hasClass("open")){f.container.parent().parent().find("li.library-selected").focus()}d=true;setTimeout(function(){d=false},400)});this.setting.bind(h);h(this.setting())}});b.ColorControl=b.Control.extend({ready:function(){var e=this,d=this.container.find(".color-picker-hex");d.val(e.setting()).wpColorPicker({change:function(g,f){e.setting.set(d.wpColorPicker("color"))},clear:function(){e.setting.set(false)}})}});b.UploadControl=b.Control.extend({ready:function(){var d=this;this.params.removed=this.params.removed||"";this.success=c.proxy(this.success,this);this.uploader=c.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success,plupload:{},params:{}},this.uploader||{});if(d.params.extensions){d.uploader.plupload.filters=[{title:b.l10n.allowedFiles,extensions:d.params.extensions}]}if(d.params.context){d.uploader.params["post_data[context]"]=this.params.context}if(b.settings.theme.stylesheet){d.uploader.params["post_data[theme]"]=b.settings.theme.stylesheet}this.uploader=new wp.Uploader(this.uploader);this.remover=this.container.find(".remove");this.remover.on("click keydown",function(e){if(e.type==="keydown"&&13!==e.which){return}d.setting.set(d.params.removed);e.preventDefault()});this.removerVisibility=c.proxy(this.removerVisibility,this);this.setting.bind(this.removerVisibility);this.removerVisibility(this.setting.get())},success:function(d){this.setting.set(d.get("url"))},removerVisibility:function(d){this.remover.toggle(d!=this.params.removed)}});b.ImageControl=b.UploadControl.extend({ready:function(){var e=this,d;this.uploader={init:function(f){var h,g;if(this.supports.dragdrop){return}h=e.container.find(".upload-fallback");g=h.children().detach();this.browser.detach().empty().append(g);h.append(this.browser).show()}};b.UploadControl.prototype.ready.call(this);this.thumbnail=this.container.find(".preview-thumbnail img");this.thumbnailSrc=c.proxy(this.thumbnailSrc,this);this.setting.bind(this.thumbnailSrc);this.library=this.container.find(".library");this.tabs={};d=this.library.find(".library-content");this.library.children("ul").children("li").each(function(){var g=c(this),h=g.data("customizeTab"),f=d.filter('[data-customize-tab="'+h+'"]');e.tabs[h]={both:g.add(f),link:g,panel:f}});this.library.children("ul").on("click keydown","li",function(g){if(g.type==="keydown"&&13!==g.which){return}var h=c(this).data("customizeTab"),f=e.tabs[h];g.preventDefault();if(f.link.hasClass("library-selected")){return}e.selected.both.removeClass("library-selected");e.selected=f;e.selected.both.addClass("library-selected")});this.library.on("click keydown","a",function(f){if(f.type==="keydown"&&13!==f.which){return}var g=c(this).data("customizeImageValue");if(g){e.setting.set(g);f.preventDefault()}});if(this.tabs.uploaded){this.tabs.uploaded.target=this.library.find(".uploaded-target");if(!this.tabs.uploaded.panel.find(".thumbnail").length){this.tabs.uploaded.both.addClass("hidden")}}d.each(function(){var f=e.tabs[c(this).data("customizeTab")];if(!f.link.hasClass("hidden")){e.selected=f;f.both.addClass("library-selected");return false}});this.dropdownInit()},success:function(d){b.UploadControl.prototype.success.call(this,d);if(this.tabs.uploaded&&this.tabs.uploaded.target.length){this.tabs.uploaded.both.removeClass("hidden");d.element=c('<a href="#" class="thumbnail"></a>').data("customizeImageValue",d.get("url")).append('<img src="'+d.get("url")+'" />').appendTo(this.tabs.uploaded.target)}},thumbnailSrc:function(d){if(/^(https?:)?\/\//.test(d)){this.thumbnail.prop("src",d).show()}else{this.thumbnail.hide()}}});b.defaultConstructor=b.Setting;b.control=new b.Values({defaultConstructor:b.Control});b.PreviewFrame=b.Messenger.extend({sensitivity:2000,initialize:function(g,f){var e=c.Deferred(),d=this;e.promise(this);this.container=g.container;this.signature=g.signature;c.extend(g,{channel:b.PreviewFrame.uuid()});b.Messenger.prototype.initialize.call(this,g,f);this.add("previewUrl",g.previewUrl);this.query=c.extend(g.query||{},{customize_messenger_channel:this.channel()});this.run(e)},run:function(e){var d=this,f=false,g=false;if(this._ready){this.unbind("ready",this._ready)}this._ready=function(){g=true;if(f){e.resolveWith(d)}};this.bind("ready",this._ready);this.request=c.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:true}});this.request.fail(function(){e.rejectWith(d,["request failure"])});this.request.done(function(j){var i=d.request.getResponseHeader("Location"),h=d.signature,k;if(i&&i!=d.previewUrl()){e.rejectWith(d,["redirect",i]);return}if("0"===j){d.login(e);return}if("-1"===j){e.rejectWith(d,["cheatin"]);return}k=j.lastIndexOf(h);if(-1===k||k<j.lastIndexOf("</html>")){e.rejectWith(d,["unsigned"]);return}j=j.slice(0,k)+j.slice(k+h.length);d.iframe=c("<iframe />").appendTo(d.container);d.iframe.one("load",function(){f=true;if(g){e.resolveWith(d)}else{setTimeout(function(){e.rejectWith(d,["ready timeout"])},d.sensitivity)}});d.targetWindow(d.iframe[0].contentWindow);d.targetWindow().document.open();d.targetWindow().document.write(j);d.targetWindow().document.close()})},login:function(e){var d=this,f;f=function(){e.rejectWith(d,["logged out"])};if(this.triedLogin){return f()}c.get(b.settings.url.ajax,{action:"logged-in"}).fail(f).done(function(g){var h;if("1"!==g){f()}h=c('<iframe src="'+d.previewUrl()+'" />').hide();h.appendTo(d.container);h.load(function(){d.triedLogin=true;h.remove();d.run(e)})})},destroy:function(){b.Messenger.prototype.destroy.call(this);this.request.abort();if(this.iframe){this.iframe.remove()}delete this.request;delete this.iframe;delete this.targetWindow}});(function(){var d=0;b.PreviewFrame.uuid=function(){return"preview-"+d++}}());b.Previewer=b.Messenger.extend({refreshBuffer:250,initialize:function(h,f){var d=this,g=/^https?/,e;c.extend(this,f||{});this.refresh=(function(i){var j=i.refresh,l=function(){k=null;j.call(i)},k;return function(){if(typeof k!=="number"){if(i.loading){i.abort()}else{return l()}}clearTimeout(k);k=setTimeout(l,i.refreshBuffer)}})(this);this.container=b.ensure(h.container);this.allowedUrls=h.allowedUrls;this.signature=h.signature;h.url=window.location.href;b.Messenger.prototype.initialize.call(this,h);this.add("scheme",this.origin()).link(this.origin).setter(function(j){var i=j.match(g);return i?i[0]:""});this.add("previewUrl",h.previewUrl).setter(function(j){var i;if(/\/wp-admin(\/|$)/.test(j.replace(/[#?].*$/,""))){return null}c.each([j.replace(g,d.scheme()),j],function(l,k){c.each(d.allowedUrls,function(m,n){if(0===k.indexOf(n)){i=k;return false}});if(i){return false}});return i?i:null});this.previewUrl.bind(this.refresh);this.scroll=0;this.bind("scroll",function(i){this.scroll=i});this.bind("url",this.previewUrl)},query:function(){},abort:function(){if(this.loading){this.loading.destroy();delete this.loading}},refresh:function(){var d=this;this.abort();this.loading=new b.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature});this.loading.done(function(){this.bind("synced",function(){if(d.preview){d.preview.destroy()}d.preview=this;delete d.loading;d.targetWindow(this.targetWindow());d.channel(this.channel());d.send("active")});this.send("sync",{scroll:d.scroll,settings:b.get()})});this.loading.fail(function(f,e){if("redirect"===f&&e){d.previewUrl(e)}if("logged out"===f){if(d.preview){d.preview.destroy();delete d.preview}d.login().done(d.refresh)}if("cheatin"===f){d.cheatin()}})},login:function(){var g=this,d,f,e;if(this._login){return this._login}d=c.Deferred();this._login=d.promise();f=new b.Messenger({channel:"login",url:b.settings.url.login});e=c('<iframe src="'+b.settings.url.login+'" />').appendTo(this.container);f.targetWindow(e[0].contentWindow);f.bind("login",function(){e.remove();f.destroy();delete g._login;d.resolve()});return this._login},cheatin:function(){c(document.body).empty().addClass("cheatin").append("<p>"+b.l10n.cheatin+"</p>")}});b.controlConstructor={color:b.ColorControl,upload:b.UploadControl,image:b.ImageControl};c(function(){b.settings=window._wpCustomizeSettings;b.l10n=window._wpCustomizeControlsL10n;if(!b.settings){return}if(!c.support.postMessage||(!c.support.cors&&b.settings.isCrossDomain)){return window.location=b.settings.url.fallback}var d=c(document.body),f=d.children(".wp-full-overlay"),h,i,g;c("#customize-controls").on("keydown",function(j){if(c(j.target).is("textarea")){return}if(13===j.which){j.preventDefault()}});i=new b.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:b.settings.url.preview,allowedUrls:b.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:b.settings.nonce,query:function(){return{wp_customize:"on",theme:b.settings.theme.stylesheet,customized:JSON.stringify(b.get()),nonce:this.nonce.preview}},save:function(){var j=this,l=c.extend(this.query(),{action:"customize_save",nonce:this.nonce.save}),k=c.post(b.settings.url.ajax,l);b.trigger("save",k);d.addClass("saving");k.always(function(){d.removeClass("saving")});k.done(function(m){if("0"===m){j.preview.iframe.hide();j.login().done(function(){j.save();j.preview.iframe.show()});return}if("-1"===m){j.cheatin();return}b.trigger("saved")})}});i.bind("nonce",function(j){c.extend(this.nonce,j)});c.each(b.settings.settings,function(k,j){b.create(k,k,j.value,{transport:j.transport,previewer:i})});c.each(b.settings.controls,function(m,k){var j=b.controlConstructor[k.type]||b.Control,l;l=b.control.add(m,new j(m,{params:k,previewer:i}))});if(i.previewUrl()){i.refresh()}else{i.previewUrl(b.settings.url.home)}(function(){var l=new b.Values(),k=l.create("saved"),j=l.create("activated");l.bind("change",function(){var n=c("#save"),m=c(".back");if(!j()){n.val(b.l10n.activate).prop("disabled",false);m.text(b.l10n.cancel)}else{if(k()){n.val(b.l10n.saved).prop("disabled",true);m.text(b.l10n.close)}else{n.val(b.l10n.save).prop("disabled",false);m.text(b.l10n.cancel)}}});k(true);j(b.settings.theme.active);b.bind("change",function(){l("saved").set(false)});b.bind("saved",function(){l("saved").set(true);l("activated").set(true)});j.bind(function(m){if(m){b.trigger("activated")}});b.state=l}());c("#save").click(function(j){i.save();j.preventDefault()}).keydown(function(j){if(9===j.which){return}if(13===j.which){i.save()}j.preventDefault()});c(".back").keydown(function(j){if(9===j.which){return}if(13===j.which){g.send("close")}j.preventDefault()});c(".upload-dropzone a.upload").keydown(function(j){if(13===j.which){this.click()}});c(".collapse-sidebar").on("click keydown",function(j){if(j.type==="keydown"&&13!==j.which){return}f.toggleClass("collapsed").toggleClass("expanded");j.preventDefault()});g=new b.Messenger({url:b.settings.url.parent,channel:"loader"});g.bind("back",function(){c(".back").on("click.back",function(j){j.preventDefault();g.send("close")})});b.bind("saved",function(){g.send("saved")});b.bind("activated",function(){if(g.targetWindow()){g.send("activated",b.settings.url.activated)}else{if(b.settings.url.activated){window.location=b.settings.url.activated}}});g.send("ready");c.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(j){return !!j}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(j){return"page"===j}},header_textcolor:{controls:["header_textcolor"],callback:function(j){return"blank"!==j}}},function(j,k){b(j,function(l){c.each(k.controls,function(m,n){b.control(n,function(p){var o=function(q){p.container.toggle(k.callback(q))};o(l.get());l.bind(o)})})})});b.control("display_header_text",function(k){var j="";k.elements[0].unsync(b("header_textcolor"));k.element=new b.Element(k.container.find("input"));k.element.set("blank"!==k.setting());k.element.bind(function(l){if(!l){j=b("header_textcolor").get()}k.setting.set(l?j:"blank")});k.setting.bind(function(l){k.element.set("blank"!==l)})});b.control("header_image",function(j){j.setting.bind(function(k){if(k===j.params.removed){j.settings.data.set(false)}});j.library.on("click","a",function(k){j.settings.data.set(c(this).data("customizeHeaderImageData"))});j.uploader.success=function(l){var k;b.ImageControl.prototype.success.call(j,l);k={attachment_id:l.get("id"),url:l.get("url"),thumbnail_url:l.get("url"),height:l.get("height"),width:l.get("width")};l.element.data("customizeHeaderImageData",k);j.settings.data.set(k)}});b.trigger("ready");var e=c(".back");e.focus();setTimeout(function(){e.focus()},200)})})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/editor.js b/wp-admin/js/editor.js
index 675ffd94b..e54e836cc 100644
--- a/wp-admin/js/editor.js
+++ b/wp-admin/js/editor.js
@@ -49,8 +49,15 @@ var switchEditors = {
 			if ( ed && ed.isHidden() )
 				return false;
 
-			if ( ed )
+			if ( ed ) {
 				ed.hide();
+			} else {
+				// The TinyMCE instance doesn't exist, run the content through "pre_wpautop()" and show the textarea
+				if ( tinyMCEPreInit.mceInit[id] && tinyMCEPreInit.mceInit[id].wpautop )
+					txtarea_el.value = t.pre_wpautop( txtarea_el.value );
+
+				dom.setStyles(txtarea_el, {'display': '', 'visibility': ''});
+			}
 
 			dom.removeClass(wrap_id, 'tmce-active');
 			dom.addClass(wrap_id, 'html-active');
@@ -138,7 +145,7 @@ var switchEditors = {
 
 	_wp_Autop : function(pee) {
 		var preserve_linebreaks = false, preserve_br = false,
-			blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary';
+			blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary';
 
 		if ( pee.indexOf('<object') != -1 ) {
 			pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
diff --git a/wp-admin/js/editor.min.js b/wp-admin/js/editor.min.js
index 70cca04b3..4a7e79937 100644
--- a/wp-admin/js/editor.min.js
+++ b/wp-admin/js/editor.min.js
@@ -1 +1 @@
-var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){b.hide()}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(c){var d,b,e=false,a=false;if(c.indexOf("<pre")!=-1||c.indexOf("<script")!=-1){e=true;c=c.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(f){f=f.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-temp-lb>");return f.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-temp-lb>")})}if(c.indexOf("[caption")!=-1){a=true;c=c.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(f){return f.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})}d="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";c=c.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n");c=c.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)>","g"),"\n<$1>");c=c.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");c=c.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");c=c.replace(/\s*<p>/gi,"");c=c.replace(/\s*<\/p>\s*/gi,"\n\n");c=c.replace(/\n[\s\u00a0]+\n/g,"\n\n");c=c.replace(/\s*<br ?\/?>\s*/gi,"\n");c=c.replace(/\s*<div/g,"\n<div");c=c.replace(/<\/div>\s*/g,"</div>\n");c=c.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");c=c.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";c=c.replace(new RegExp("\\s*<((?:"+b+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");c=c.replace(new RegExp("\\s*</("+b+")>\\s*","g"),"</$1>\n");c=c.replace(/<li([^>]*)>/g,"\t<li$1>");if(c.indexOf("<hr")!=-1){c=c.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(c.indexOf("<object")!=-1){c=c.replace(/<object[\s\S]+?<\/object>/g,function(f){return f.replace(/[\r\n]+/g,"")})}c=c.replace(/<\/p#>/g,"</p>\n");c=c.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");c=c.replace(/^\s+/,"");c=c.replace(/[\s\u00a0]+$/,"");if(e){c=c.replace(/<wp-temp-lb>/g,"\n")}if(a){c=c.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return c},_wp_Autop:function(a){var c=false,b=false,d="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(e){return e.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(e){return e.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){c=true;a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(e){return e.replace(/(\r\n|\n)/g,"<wp-temp-lb>")})}if(a.indexOf("[caption")!=-1){b=true;a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(e){e=e.replace(/<br([^>]*)>/g,"<wp-temp-br$1>");e=e.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(f){return f.replace(/[\r\n\t]+/," ")});return e.replace(/\s*\n\s*/g,"<wp-temp-br />")})}a=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(/\r\n|\r/g,"\n");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(/\s*\n/gi,"<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(f,e,g){if(g.match(/<p( [^>]*)?>/)){return f}return e+"<p>"+g+"</p>"});if(c){a=a.replace(/<wp-temp-lb>/g,"\n")}if(b){a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
+var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){b.hide()}else{if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.pre_wpautop(d.value)}e.setStyles(d,{display:"",visibility:""})}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(c){var d,b,e=false,a=false;if(c.indexOf("<pre")!=-1||c.indexOf("<script")!=-1){e=true;c=c.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(f){f=f.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-temp-lb>");return f.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-temp-lb>")})}if(c.indexOf("[caption")!=-1){a=true;c=c.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(f){return f.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})}d="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";c=c.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n");c=c.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)>","g"),"\n<$1>");c=c.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");c=c.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");c=c.replace(/\s*<p>/gi,"");c=c.replace(/\s*<\/p>\s*/gi,"\n\n");c=c.replace(/\n[\s\u00a0]+\n/g,"\n\n");c=c.replace(/\s*<br ?\/?>\s*/gi,"\n");c=c.replace(/\s*<div/g,"\n<div");c=c.replace(/<\/div>\s*/g,"</div>\n");c=c.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");c=c.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";c=c.replace(new RegExp("\\s*<((?:"+b+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");c=c.replace(new RegExp("\\s*</("+b+")>\\s*","g"),"</$1>\n");c=c.replace(/<li([^>]*)>/g,"\t<li$1>");if(c.indexOf("<hr")!=-1){c=c.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(c.indexOf("<object")!=-1){c=c.replace(/<object[\s\S]+?<\/object>/g,function(f){return f.replace(/[\r\n]+/g,"")})}c=c.replace(/<\/p#>/g,"</p>\n");c=c.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");c=c.replace(/^\s+/,"");c=c.replace(/[\s\u00a0]+$/,"");if(e){c=c.replace(/<wp-temp-lb>/g,"\n")}if(a){c=c.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return c},_wp_Autop:function(a){var c=false,b=false,d="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(e){return e.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(e){return e.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){c=true;a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(e){return e.replace(/(\r\n|\n)/g,"<wp-temp-lb>")})}if(a.indexOf("[caption")!=-1){b=true;a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(e){e=e.replace(/<br([^>]*)>/g,"<wp-temp-br$1>");e=e.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(f){return f.replace(/[\r\n\t]+/," ")});return e.replace(/\s*\n\s*/g,"<wp-temp-br />")})}a=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(/\r\n|\r/g,"\n");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(/\s*\n/gi,"<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(f,e,g){if(g.match(/<p( [^>]*)?>/)){return f}return e+"<p>"+g+"</p>"});if(c){a=a.replace(/<wp-temp-lb>/g,"\n")}if(b){a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
diff --git a/wp-admin/js/inline-edit-post.js b/wp-admin/js/inline-edit-post.js
index 9abf478ad..8076c31e0 100644
--- a/wp-admin/js/inline-edit-post.js
+++ b/wp-admin/js/inline-edit-post.js
@@ -42,7 +42,7 @@ inlineEditPost = {
 		});
 
 		// add events
-		$('a.editinline').live('click', function(){
+		$('#the-list').on('click', 'a.editinline', function(){
 			inlineEditPost.edit(this);
 			return false;
 		});
@@ -53,15 +53,6 @@ inlineEditPost = {
 			$('#inline-edit label.inline-edit-tags').clone()
 		);
 
-		// hiearchical taxonomies expandable?
-		$('span.catshow').click(function(){
-			$(this).hide().next().show().parent().next().addClass("cat-hover");
-		});
-
-		$('span.cathide').click(function(){
-			$(this).hide().prev().show().parent().next().removeClass("cat-hover");
-		});
-
 		$('select[name="_status"] option[value="future"]', bulkRow).remove();
 
 		$('#doaction, #doaction2').click(function(e){
@@ -299,5 +290,42 @@ inlineEditPost = {
 	}
 };
 
-$(document).ready(function(){inlineEditPost.init();});
-})(jQuery);
+$( document ).ready( function(){ inlineEditPost.init(); } );
+
+// Show/hide locks on posts
+$( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
+	var locked = data['wp-check-locked-posts'] || {};
+
+	$('#the-list tr').each( function(i, el) {
+		var key = el.id, row = $(el), lock_data, avatar;
+
+		if ( locked.hasOwnProperty( key ) ) {
+			if ( ! row.hasClass('wp-locked') ) {
+				lock_data = locked[key];
+				row.find('.column-title .locked-text').text( lock_data.text );
+				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, '&') );
+					row.find('.column-title .locked-avatar').empty().append( avatar );
+				}
+				row.addClass('wp-locked');
+			}
+		} else if ( row.hasClass('wp-locked') ) {
+			// Make room for the CSS animation
+			row.removeClass('wp-locked').delay(1000).find('.locked-info span').empty();
+		}
+	});
+}).on( 'heartbeat-send.wp-check-locked-posts', function( e, data ) {
+	var check = [];
+
+	$('#the-list tr').each( function(i, el) {
+		if ( el.id )
+			check.push( el.id );
+	});
+
+	if ( check.length )
+		data['wp-check-locked-posts'] = check;
+});
+
+}(jQuery));
diff --git a/wp-admin/js/inline-edit-post.min.js b/wp-admin/js/inline-edit-post.min.js
index 6f1cc3f6e..6bdb41454 100644
--- a/wp-admin/js/inline-edit-post.min.js
+++ b/wp-admin/js/inline-edit-post.min.js
@@ -1 +1 @@
-(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").html()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("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:true,multipleSep:inlineEditL10n.comma+" "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"];if(n.type=="page"){j.push("post_parent","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var q=a(this).text(),r=a(this).attr("id").replace("_"+c,""),p=a("textarea.tax_input_"+r,e),f=inlineEditL10n.comma;if(q){if(","!==f){q=q.replace(/,/g,f)}p.val(q)}p.suggest(ajaxurl+"?action=ajax-tag-search&tax="+r,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(f){a("table.widefat .spinner").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
\ No newline at end of file
+(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("#the-list").on("click","a.editinline",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").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"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").html()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("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:true,multipleSep:inlineEditL10n.comma+" "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"];if(n.type=="page"){j.push("post_parent","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var q=a(this).text(),r=a(this).attr("id").replace("_"+c,""),p=a("textarea.tax_input_"+r,e),f=inlineEditL10n.comma;if(q){if(","!==f){q=q.replace(/,/g,f)}p.val(q)}p.suggest(ajaxurl+"?action=ajax-tag-search&tax="+r,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(f){a("table.widefat .spinner").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()});a(document).on("heartbeat-tick.wp-check-locked-posts",function(d,c){var b=c["wp-check-locked-posts"]||{};a("#the-list tr").each(function(g,h){var f=h.id,k=a(h),j,e;if(b.hasOwnProperty(f)){if(!k.hasClass("wp-locked")){j=b[f];k.find(".column-title .locked-text").text(j.text);k.find(".check-column checkbox").prop("checked",false);if(j.avatar_src){e=a('<img class="avatar avatar-18 photo" width="18" height="18" />').attr("src",j.avatar_src.replace(/&amp;/g,"&"));k.find(".column-title .locked-avatar").empty().append(e)}k.addClass("wp-locked")}}else{if(k.hasClass("wp-locked")){k.removeClass("wp-locked").delay(1000).find(".locked-info span").empty()}}})}).on("heartbeat-send.wp-check-locked-posts",function(d,c){var b=[];a("#the-list tr").each(function(e,f){if(f.id){b.push(f.id)}});if(b.length){c["wp-check-locked-posts"]=b}})}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/inline-edit-tax.js b/wp-admin/js/inline-edit-tax.js
index 76adab4f6..6d5293ac3 100644
--- a/wp-admin/js/inline-edit-tax.js
+++ b/wp-admin/js/inline-edit-tax.js
@@ -8,7 +8,7 @@ inlineEditTax = {
 		t.type = $('#the-list').attr('data-wp-lists').substr(5);
 		t.what = '#'+t.type+'-';
 
-		$('.editinline').live('click', function(){
+		$('#the-list').on('click', 'a.editinline', function(){
 			inlineEditTax.edit(this);
 			return false;
 		});
diff --git a/wp-admin/js/inline-edit-tax.min.js b/wp-admin/js/inline-edit-tax.min.js
index 649abdbe9..f7a9e4c93 100644
--- a/wp-admin/js/inline-edit-tax.min.js
+++ b/wp-admin/js/inline-edit-tax.min.js
@@ -1 +1 @@
-(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(".editinline").live("click",function(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});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(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(g){var h,f;a("table.widefat .spinner").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
+(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(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});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(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .spinner").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(g){var h,f;a("table.widefat .spinner").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .spinner").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/iris.min.js b/wp-admin/js/iris.min.js
index a8043b5d0..9e7d7eace 100644
--- a/wp-admin/js/iris.min.js
+++ b/wp-admin/js/iris.min.js
@@ -1,4 +1,4 @@
-/*! Iris - v0.9.14 - 2012-11-20
+/*! Iris Color Picker - v1.0.3 - 2013-02-15
 * https://github.com/Automattic/Iris
-* Copyright (c) 2012 Matt Wiebe; Licensed GPL */
-(function(e,t){function u(){if(r)i="filter";else{var t=e('<div id="iris-gradtest" />'),n="linear-gradient(top,#fff,#000)";e.each(s,function(e,r){t.css("backgroundImage",r+n);if(t.css("backgroundImage").match("gradient"))return i=e,!1}),e.browser.webkit&&i===!1&&(t.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),t.css("backgroundImage").match("gradient")&&(i="webkit")),t.remove()}}function a(t,n){return t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1),i==="webkit"?l(t,n):s[i]+"linear-gradient("+t+", "+n.join(", ")+")"}function f(t,n){t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1);var r=t==="top"?0:1,i=e(this),s=n.length-1,o=parseInt(e.browser.version,10)>=8?"-ms-filter":"filter";o="filter";var u=r===1?"left":"top",a=r===1?"right":"bottom",f=r===1?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+f+":100%;"+u+":%start%;"+a+":%end%;"+o+':%filter%;" data-color:"%color%"></div>',h="";i.css("position")==="static"&&i.css({position:"relative"}),n=c(n),e.each(n,function(e,t){if(e===s)return!1;var i=n[e+1];if(t.stop===i.stop)return;var o=100-parseFloat(i.stop)+"%";t.octoHex=(new Color(t.color)).toIEOctoHex(),i.octoHex=(new Color(i.color)).toIEOctoHex();var u="progid:DXImageTransform.Microsoft.Gradient(GradientType="+r+", StartColorStr='"+t.octoHex+"', EndColorStr='"+i.octoHex+"')";h+=l.replace("%start%",t.stop).replace("%end%",o).replace("%filter%",u)}),i.find(".iris-ie-gradient-shim").remove(),e(h).prependTo(i)}function l(t,n){var r=[];return t=t==="top"?"0% 0%,0% 100%,":"0% 100%,100% 100%,",n=c(n),e.each(n,function(e,t){r.push("color-stop("+parseFloat(t.stop)/100+", "+t.color+")")}),"-webkit-gradient(linear,"+t+r.join(",")+")"}function c(t){var n=[],r=[],i=[],s=t.length-1;return e.each(t,function(e,t){var i=t,s=!1,o=t.match(/1?[0-9]{1,2}%$/);o&&(i=t.replace(/\s?1?[0-9]{1,2}%$/,""),s=o.shift()),n.push(i),r.push(s)}),r[0]===!1&&(r[0]="0%"),r[s]===!1&&(r[s]="100%"),r=h(r),e.each(r,function(e){i[e]={color:n[e],stop:r[e]}}),i}function h(t){var n=0,r=t.length-1,i=0,s=!1,o,u,a,f;if(t.length<=2||e.inArray(!1,t)<0)return t;while(i<t.length-1)!s&&t[i]===!1?(n=i-1,s=!0):s&&t[i]!==!1&&(r=i,i=t.length),i++;u=r-n,f=parseInt(t[n].replace("%"),10),o=(parseFloat(t[r].replace("%"))-f)/u,i=n+1,a=1;while(i<r)t[i]=f+a*o+"%",a++,i++;return h(t)}var n='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',r=!!(e.browser.msie&&parseInt(e.browser.version,10)<10),i=!1,s=["-moz-","-webkit-","-o-","-ms-"],o='.iris-picker{display:block;position:relative}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,0.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:none;border:3px solid #fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}';if(r&&parseInt(e.browser.version,10)<=7)return e.fn.iris=e.noop;e.fn.gradient=function(t){var n=arguments;return this.each(function(){r?f.apply(this,n):e(this).css("backgroundImage",a.apply(this,n))})},e.fn.raninbowGradient=function(t,n){t=t||"top";var r=e.extend({},{s:100,l:50},n),i="hsl(%h%,"+r.s+"%,"+r.l+"%)",s=0,o=[];while(s<=360)o.push(i.replace("%h%",s)),s+=30;return this.each(function(){e(this).gradient(t,o)})};var p={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_scale:{h:360,s:100,l:100,v:100},_create:function(){var t=this,r=t.element,s=t.options.color||r.val(),o;i===!1&&u(),r.is("input")?(t.options.target?t.picker=e(n).appendTo(t.options.target):t.picker=e(n).insertAfter(r),t._addInputListeners(r)):(r.append(n),t.picker=r.find(".iris-picker"));if(e.browser.mozilla)t.picker.addClass("iris-mozilla");else if(e.browser.msie){var a=parseInt(e.browser.version,10);a===9?t.picker.addClass("iris-ie-9"):a<=8&&t.picker.addClass("iris-ie-lt9")}t.options.palettes&&t._addPalettes(),t.color=(new Color(s)).setHSpace(t.options.mode),t.options.color=t.color.toString(),t.controls={square:t.picker.find(".iris-square"),squareDrag:t.picker.find(".iris-square-value"),horiz:t.picker.find(".iris-square-horiz"),vert:t.picker.find(".iris-square-vert"),strip:t.picker.find(".iris-strip"),stripSlider:t.picker.find(".iris-strip .iris-slider-offset")},t.options.mode==="hsv"&&t.options.controls.vert==="l"&&(t.options.controls={horiz:"h",vert:"v",strip:"s"}),t.hue=t.color.h(),t.options.hide&&t.picker.hide(),t.options.border&&t.picker.addClass("iris-border"),t._initControls(),t.active="external",t._dimensions(),t._change()},_addPalettes:function(){var t=e("<div class='iris-palette-container' />"),n=e("<a class='iris-palette' tabindex='0' />"),r=e.isArray(this.options.palettes)?this.options.palettes:this._palettes;e.each(r,function(e,r){n.clone().data("color",r).css("backgroundColor",r).appendTo(t).height(10).width(10)}),this.picker.append(t)},_paint:function(){var e=this;e._paintDimension("top","strip"),e._paintDimension("top","vert"),e._paintDimension("left","horiz")},_paintDimension:function(e,t){var n=this,r=n.color,i=n.options.mode,s=n._getHSpaceColor(),o=n.controls[t],u=n.options.controls,a;if(t===n.active||n.active==="square"&&t!=="strip")return;switch(u[t]){case"h":if(i==="hsv"){s=r.clone();switch(t){case"horiz":s[u.vert](100);break;case"vert":s[u.horiz](100);break;case"strip":s.setHSpace("hsl")}a=s.toHsl()}else t==="strip"?a={s:s.s,l:s.l}:a={s:100,l:s.l};o.raninbowGradient(e,a);break;case"s":i==="hsv"?t==="vert"?a=[r.clone().a(0).s(0).toCSS("rgba"),r.clone().a(1).s(0).toCSS("rgba")]:t==="strip"?a=[r.clone().s(100).toCSS("hsl"),r.clone().s(0).toCSS("hsl")]:t==="horiz"&&(a=["#fff","hsl("+s.h+",100%,50%)"]):t==="vert"&&n.options.controls.horiz==="h"?a=["hsla(0, 0%, "+s.l+"%, 0)","hsla(0, 0%, "+s.l+"%, 1)"]:a=["hsl("+s.h+",0%,50%)","hsl("+s.h+",100%,50%)"],o.gradient(e,a);break;case"l":t==="strip"?a=["hsl("+s.h+",100%,100%)","hsl("+s.h+", "+s.s+"%,50%)","hsl("+s.h+",100%,0%)"]:a=["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],o.gradient(e,a);break;case"v":t==="strip"?a=[r.clone().v(100).toCSS(),r.clone().v(0).toCSS()]:a=["rgba(0,0,0,0)","#000"],o.gradient(e,a);break;default:}},_getHSpaceColor:function(){return this.options.mode==="hsv"?this.color.toHsv():this.color.toHsl()},_dimensions:function(t){var n=this,r=n.options,i=n.picker.find(".iris-picker-inner"),s=n.controls,o=s.square,u=n.picker.find(".iris-strip"),a="77.5%",f="12%",l=20,c=r.border?r.width-l:r.width,h,p=e.isArray(r.palettes)?r.palettes.length:n._palettes.length,d,v,m;t&&(o.css("width",""),u.css("width",""),n.picker.removeAttr("style")),a=c*(parseFloat(a)/100),f=c*(parseFloat(f)/100),h=r.border?a+l:a,o.width(a).height(a),u.height(a).width(f),n.picker.css({width:r.width,height:h});if(!r.palettes)return;d=a*2/100,m=a-(p-1)*d,v=m/p,n.picker.find(".iris-palette").each(function(t,n){var r=t===0?0:d;e(this).css({width:v,height:v,marginLeft:r})}),n.picker.css("paddingBottom",v+d),u.height(v+d+a)},_addInputListeners:function(e){var t=this,n=100,r=function(n){var r=new Color(e.val()),i=e.val().replace(/^#/,"");e.removeClass("iris-error"),r.error?i!==""&&e.addClass("iris-error"):r.toString()!==t.color.toString()&&(n.type!=="keyup"||!i.match(/^[0-9a-fA-F]{3}$/))&&t._setOption("color",r.toString())};e.on("change",r).on("keyup",t._debounce(r,n))},_initControls:function(){var t=this,n=t.controls,r=n.square,i=t.options.controls,s=t._scale[i.strip];n.stripSlider.slider({orientation:"vertical",max:s,slide:function(e,n){t.active="strip",i.strip==="h"&&(n.value=s-n.value),t.color[i.strip](n.value),t._change.apply(t,arguments)}}),n.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(e,n){t._squareDrag(e,n)},start:function(){r.addClass("iris-dragging"),e(this).addClass("ui-state-focus")},stop:function(){r.removeClass("iris-dragging"),e(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(n){n.preventDefault();var r="ui-state-focus";n.type==="mousedown"?(t.picker.find("."+r).removeClass(r).blur(),e(this).addClass(r).focus()):e(this).removeClass(r)}).on("keydown",function(e){var r=n.square,i=n.squareDrag,s=i.position(),o=t.options.width/100;e.altKey&&(o*=10);switch(e.keyCode){case 37:s.left-=o;break;case 38:s.top-=o;break;case 39:s.left+=o;break;case 40:s.top+=o;break;default:return!0}s.left=Math.max(0,Math.min(s.left,r.width())),s.top=Math.max(0,Math.min(s.top,r.height())),i.css(s),t._squareDrag(e,{position:s}),e.preventDefault()}),r.mousedown(function(n){if(n.which!==1)return;if(!e(n.target).is("div"))return;var r=t.controls.square.offset(),i={top:n.pageY-r.top,left:n.pageX-r.left};n.preventDefault(),t._squareDrag(n,{position:i}),n.target=t.controls.squareDrag.get(0),t.controls.squareDrag.css(i).trigger(n)}),t.options.palettes&&t.picker.find(".iris-palette-container").on("click",".iris-palette",function(n){t.color.fromCSS(e(this).data("color")),t.active="external",t._change()}).on("keydown",".iris-palette",function(t){if(t.keyCode!==13&&t.keyCode!==32)return!0;t.stopPropagation(),e(this).click()})},_squareDrag:function(e,t){var n=this,r=n.options.controls,i=n._squareDimensions(),s=Math.round((i.h-t.position.top)/i.h*n._scale[r.vert]),o=n._scale[r.horiz]-Math.round((i.w-t.position.left)/i.w*n._scale[r.horiz]);n.color[r.horiz](o)[r.vert](s),n.active="square",n._change.apply(n,arguments)},_setOption:function(e,t){var n=this.options[e];if(e==="color"){t=""+t;var r=t.replace(/^#/,""),i=(new Color(t)).setHSpace(this.options.mode);i.error||(this.color=i,this.options.color=this.options[e]=this.color.toString(),this.active="external",this._change())}},_squareDimensions:function(e){var n=this.controls.square,r,i;return e!==t&&n.data("dimensions")?n.data("dimensions"):(i=this.controls.squareDrag,r={w:n.width(),h:n.height()},n.data("dimensions",r),r)},_isNonHueControl:function(e,t){return e==="square"&&this.options.controls.strip==="h"?!0:t==="external"||t==="h"&&e==="strip"?!1:!0},_change:function(t,n){var r=this,i=r.controls,s=r._getHSpaceColor(),o=r.color.toString(),u=["square","strip"],a=r.options.controls,f=a[r.active]||"external",l=r.hue;r.active==="strip"?u=[]:r.active!=="external"&&u.pop(),e.each(u,function(e,t){var n;if(t!==r.active)switch(t){case"strip":n=a.strip==="h"?r._scale[a.strip]-s[a.strip]:s[a.strip],i.stripSlider.slider("value",n);break;case"square":var o=r._squareDimensions(),u={left:s[a.horiz]/r._scale[a.horiz]*o.w,top:o.h-s[a.vert]/r._scale[a.vert]*o.h};r.controls.squareDrag.css(u)}}),s.h!==l&&r._isNonHueControl(r.active,f)&&r.color.h(l),r.hue=r.color.h(),r.options.color=r.color.toString(),r._inited&&r._trigger("change",{type:r.active},{color:r.color}),r.element.is(":input")&&!r.color.error&&(r.element.removeClass("iris-error"),r.element.val()!==r.color.toString()&&r.element.val(r.color.toString())),r._paint(),r._inited=!0,r.active=!1},_debounce:function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()}};e.widget("a8c.iris",p),e('<style id="iris-css">'+o+"</style>").appendTo("head")})(jQuery),function(e,t){var n=function(e,t){return this instanceof n?this._init(e,t):new n(e,t)};n.fn=n.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(e){var n="noop";switch(typeof e){case"object":return e.a!==t&&this.a(e.a),n=e.r!==t?"fromRgb":e.l!==t?"fromHsl":e.v!==t?"fromHsv":n,this[n](e);case"string":return this.fromCSS(e);case"number":return this.fromInt(parseInt(e,10))}return this},_error:function(){return this.error=!0,this},clone:function(){var e=new n(this.toInt()),t=["_alpha","_hSpace","_hsl","_hsv","error"];for(var r=t.length-1;r>=0;r--)e[t[r]]=this[t[r]];return e},setHSpace:function(e){return this._hSpace=e==="hsv"?e:"hsl",this},noop:function(){return this},fromCSS:function(e){var t,n,r=/^(rgb|hs(l|v))a?\(/;this.error=!1,e=e.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,"");if(e.match(r)&&e.match(/\)$/)){n=e.replace(/(\s|%)/g,"").replace(r,"").replace(/,?\);?$/,"").split(",");if(n.length<3)return this._error();if(n.length===4){this.a(parseFloat(n.pop()));if(this.error)return this}for(var i=n.length-1;i>=0;i--){n[i]=parseInt(n[i],10);if(isNaN(n[i]))return this._error()}return e.match(/^rgb/)?this.fromRgb({r:n[0],g:n[1],b:n[2]}):e.match(/^hsv/)?this.fromHsv({h:n[0],s:n[1],v:n[2]}):this.fromHsl({h:n[0],s:n[1],l:n[2]})}return this.fromHex(e)},fromRgb:function(e,n){return typeof e!="object"||e.r===t||e.g===t||e.b===t?this._error():(this.error=!1,this.fromInt(parseInt((e.r<<16)+(e.g<<8)+e.b,10),n))},fromHex:function(e){return e=e.replace(/^#/,"").replace(/^0x/,""),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),this.error=!/^[0-9A-F]{6}$/i.test(e),this.fromInt(parseInt(e,16))},fromHsl:function(e){var n,r,i,s,o,u,a,f;return typeof e!="object"||e.h===t||e.s===t||e.l===t?this._error():(this._hsl=e,this._hSpace="hsl",u=e.h/360,a=e.s/100,f=e.l/100,a===0?n=r=i=f:(s=f<.5?f*(1+a):f+a-f*a,o=2*f-s,n=this.hue2rgb(o,s,u+1/3),r=this.hue2rgb(o,s,u),i=this.hue2rgb(o,s,u-1/3)),this.fromRgb({r:n*255,g:r*255,b:i*255},!0))},fromHsv:function(e){var n,r,i,s,o,u,a,f,l,c,h;if(typeof e!="object"||e.h===t||e.s===t||e.v===t)return this._error();this._hsv=e,this._hSpace="hsv",n=e.h/360,r=e.s/100,i=e.v/100,a=Math.floor(n*6),f=n*6-a,l=i*(1-r),c=i*(1-f*r),h=i*(1-(1-f)*r);switch(a%6){case 0:s=i,o=h,u=l;break;case 1:s=c,o=i,u=l;break;case 2:s=l,o=i,u=h;break;case 3:s=l,o=c,u=i;break;case 4:s=h,o=l,u=i;break;case 5:s=i,o=l,u=c}return this.fromRgb({r:s*255,g:o*255,b:u*255},!0)},fromInt:function(e,n){return this._color=parseInt(e,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),n===t&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},toString:function(){var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;t>=0;t--)e="0"+e;return"#"+e},toCSS:function(e,t){e=e||"hex",t=parseFloat(t||this._alpha);switch(e){case"rgb":case"rgba":var n=this.toRgb();return t<1?"rgba( "+n.r+", "+n.g+", "+n.b+", "+t+" )":"rgb( "+n.r+", "+n.g+", "+n.b+" )";case"hsl":case"hsla":var r=this.toHsl();return t<1?"hsla( "+r.h+", "+r.s+"%, "+r.l+"%, "+t+" )":"hsl( "+r.h+", "+r.s+"%, "+r.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=(i+s)/2;if(i===s)o=u=0;else{var f=i-s;u=a>.5?f/(2-i-s):f/(i+s);switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsl.h!==o&&(o=this._hsl.h),u=Math.round(u*100),u===0&&this._hsl.s&&(u=this._hsl.s),{h:o,s:u,l:Math.round(a*100)}},toHsv:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=i,f=i-s;u=i===0?0:f/i;if(i===s)o=u=0;else{switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsv.h!==o&&(o=this._hsv.h),u=Math.round(u*100),u===0&&this._hsv.s&&(u=this._hsv.s),{h:o,s:u,v:Math.round(a*100)}},toInt:function(){return this._color},toIEOctoHex:function(){var e=this.toString(),t=parseInt(255*this._alpha,10).toString(16);return t.length===1&&(t="0"+t),"#"+t+e.replace(/^#/,"")},toLuminosity:function(){var e=this.toRgb();return.2126*Math.pow(e.r/255,2.2)+.7152*Math.pow(e.g/255,2.2)+.0722*Math.pow(e.b/255,2.2)},getDistanceLuminosityFrom:function(e){if(e instanceof n){var t=this.toLuminosity(),r=e.toLuminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)}throw"getDistanceLuminosityFrom requires a Color object"},getMaxContrastColor:function(){var e=this.toLuminosity(),t=e>=.5?"000000":"ffffff";return new n(t)},getGrayscaleContrastingColor:function(e){if(!e)return this.getMaxContrastColor();var t=e<5?5:e,n=this.getMaxContrastColor();e=n.getDistanceLuminosityFrom(this);if(e<=t)return n;var r=0===n.toInt()?1:-1;while(e>t)n=n.incrementLightness(r),e=n.getDistanceLuminosityFrom(this);return n},getReadableContrastingColor:function(e,r){if(!e instanceof n)return this;var i=r===t?5:r,s=e.getDistanceLuminosityFrom(this),o=e.getMaxContrastColor(),u=o.getDistanceLuminosityFrom(e);if(u<=i)return o;if(s>=i)return this;var a=0===o.toInt()?-1:1;while(s<i){this.incrementLightness(a),s=this.getDistanceLuminosityFrom(e);if(this._color===0||this._color===16777215)break}return this},a:function(e){if(e===t)return this._alpha;var n=parseFloat(e);return isNaN(n)?this._error():(this._alpha=n,this)},darken:function(e){return e=e||5,this.l(-e,!0)},lighten:function(e){return e=e||5,this.l(e,!0)},saturate:function(e){return e=e||15,this.s(e,!0)},desaturate:function(e){return e=e||15,this.s(-e,!0)},toGrayscale:function(){return this.setHSpace("hsl").s(0)},getComplement:function(){return this.h(180,!0)},getSplitComplement:function(e){e=e||1;var t=180+e*30;return this.h(t,!0)},getAnalog:function(e){e=e||1;var t=e*30;return this.h(t,!0)},getTetrad:function(e){e=e||1;var t=e*60;return this.h(t,!0)},getTriad:function(e){e=e||1;var t=e*120;return this.h(t,!0)},_partial:function(e){var n=r[e];return function(r,i){var s=this._spaceFunc("to",n.space);return r===t?s[e]:(i===!0&&(r=s[e]+r),n.mod&&(r%=n.mod),n.range&&(r=r<n.range[0]?n.range[0]:r>n.range[1]?n.range[1]:r),s[e]=r,this._spaceFunc("from",n.space,s))}},_spaceFunc:function(e,t,n){var r=t||this._hSpace,i=e+r.charAt(0).toUpperCase()+r.substr(1);return this[i](n)}};var r={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var i in r)r.hasOwnProperty(i)&&(n.fn[i]=n.fn._partial(i));e.Color=n}(typeof exports=="object"&&exports||this);
\ No newline at end of file
+* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
+(function(e,t){function c(){var t,n;r?i="filter":(t=e('<div id="iris-gradtest" />'),n="linear-gradient(top,#fff,#000)",e.each(s,function(e,r){t.css("backgroundImage",r+n);if(t.css("backgroundImage").match("gradient"))return i=e,!1}),i===!1&&(t.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),t.css("backgroundImage").match("gradient")&&(i="webkit")),t.remove())}function h(t,n){return t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1),i==="webkit"?d(t,n):s[i]+"linear-gradient("+t+", "+n.join(", ")+")"}function p(t,n){var r,i,s,o,u,a,f,l,c;t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1),r=t==="top"?0:1,i=e(this),s=n.length-1,o="filter",u=r===1?"left":"top",a=r===1?"right":"bottom",f=r===1?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+f+":100%;"+u+":%start%;"+a+":%end%;"+o+':%filter%;" data-color:"%color%"></div>',c="",i.css("position")==="static"&&i.css({position:"relative"}),n=v(n),e.each(n,function(e,t){var i,o,u;if(e===s)return!1;i=n[e+1];if(t.stop===i.stop)return;o=100-parseFloat(i.stop)+"%",t.octoHex=(new Color(t.color)).toIEOctoHex(),i.octoHex=(new Color(i.color)).toIEOctoHex(),u="progid:DXImageTransform.Microsoft.Gradient(GradientType="+r+", StartColorStr='"+t.octoHex+"', EndColorStr='"+i.octoHex+"')",c+=l.replace("%start%",t.stop).replace("%end%",o).replace("%filter%",u)}),i.find(".iris-ie-gradient-shim").remove(),e(c).prependTo(i)}function d(t,n){var r=[];return t=t==="top"?"0% 0%,0% 100%,":"0% 100%,100% 100%,",n=v(n),e.each(n,function(e,t){r.push("color-stop("+parseFloat(t.stop)/100+", "+t.color+")")}),"-webkit-gradient(linear,"+t+r.join(",")+")"}function v(t){var n=[],r=[],i=[],s=t.length-1;return e.each(t,function(e,t){var i=t,s=!1,o=t.match(/1?[0-9]{1,2}%$/);o&&(i=t.replace(/\s?1?[0-9]{1,2}%$/,""),s=o.shift()),n.push(i),r.push(s)}),r[0]===!1&&(r[0]="0%"),r[s]===!1&&(r[s]="100%"),r=m(r),e.each(r,function(e){i[e]={color:n[e],stop:r[e]}}),i}function m(t){var n=0,r=t.length-1,i=0,s=!1,o,u,a,f;if(t.length<=2||e.inArray(!1,t)<0)return t;while(i<t.length-1)!s&&t[i]===!1?(n=i-1,s=!0):s&&t[i]!==!1&&(r=i,i=t.length),i++;u=r-n,f=parseInt(t[n].replace("%"),10),o=(parseFloat(t[r].replace("%"))-f)/u,i=n+1,a=1;while(i<r)t[i]=f+a*o+"%",a++,i++;return m(t)}var n,r,i,s,o,u,a,f,l;n='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',a=navigator.userAgent.toLowerCase(),f=navigator.appName==="Microsoft Internet Explorer",l=f?parseFloat(a.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,r=f&&l<10,i=!1,s=["-moz-","-webkit-","-o-","-ms-"],o='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input + .iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,0.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:none;border:3px solid #fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}';if(r&&l<=7){e.fn.iris=e.noop,e.support.iris=!1;return}e.support.iris=!0,e.fn.gradient=function(t){var n=arguments;return this.each(function(){r?p.apply(this,n):e(this).css("backgroundImage",h.apply(this,n))})},e.fn.raninbowGradient=function(t,n){var r,i,s,o;t=t||"top",r=e.extend({},{s:100,l:50},n),i="hsl(%h%,"+r.s+"%,"+r.l+"%)",s=0,o=[];while(s<=360)o.push(i.replace("%h%",s)),s+=30;return this.each(function(){e(this).gradient(t,o)})},u={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var t=this,r=t.element,s=t.options.color||r.val(),o;i===!1&&c(),r.is("input")?(t.options.target?t.picker=e(n).appendTo(t.options.target):t.picker=e(n).insertAfter(r),t._addInputListeners(r)):(r.append(n),t.picker=r.find(".iris-picker")),f?l===9?t.picker.addClass("iris-ie-9"):l<=8&&t.picker.addClass("iris-ie-lt9"):a.indexOf("compatible")<0&&a.indexOf("khtml")<0&&a.match(/mozilla/)&&t.picker.addClass("iris-mozilla"),t.options.palettes&&t._addPalettes(),t._color=(new Color(s)).setHSpace(t.options.mode),t.options.color=t._color.toString(),t.controls={square:t.picker.find(".iris-square"),squareDrag:t.picker.find(".iris-square-value"),horiz:t.picker.find(".iris-square-horiz"),vert:t.picker.find(".iris-square-vert"),strip:t.picker.find(".iris-strip"),stripSlider:t.picker.find(".iris-strip .iris-slider-offset")},t.options.mode==="hsv"&&t._has("l",t.options.controls)?t.options.controls=t._defaultHSVControls:t.options.mode==="hsl"&&t._has("v",t.options.controls)&&(t.options.controls=t._defaultHSLControls),t.hue=t._color.h(),t.options.hide&&t.picker.hide(),t.options.border&&t.picker.addClass("iris-border"),t._initControls(),t.active="external",t._dimensions(),t._change()},_has:function(t,n){var r=!1;return e.each(n,function(e,n){if(t===n)return r=!0,!1}),r},_addPalettes:function(){var t=e("<div class='iris-palette-container' />"),n=e("<a class='iris-palette' tabindex='0' />"),r=e.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(t=this.picker.find(".iris-palette-container").detach().html("")),e.each(r,function(e,r){n.clone().data("color",r).css("backgroundColor",r).appendTo(t).height(10).width(10)}),this.picker.append(t)},_paint:function(){var e=this;e._paintDimension("top","strip"),e._paintDimension("top","vert"),e._paintDimension("left","horiz")},_paintDimension:function(e,t){var n=this,r=n._color,i=n.options.mode,s=n._getHSpaceColor(),o=n.controls[t],u=n.options.controls,a;if(t===n.active||n.active==="square"&&t!=="strip")return;switch(u[t]){case"h":if(i==="hsv"){s=r.clone();switch(t){case"horiz":s[u.vert](100);break;case"vert":s[u.horiz](100);break;case"strip":s.setHSpace("hsl")}a=s.toHsl()}else t==="strip"?a={s:s.s,l:s.l}:a={s:100,l:s.l};o.raninbowGradient(e,a);break;case"s":i==="hsv"?t==="vert"?a=[r.clone().a(0).s(0).toCSS("rgba"),r.clone().a(1).s(0).toCSS("rgba")]:t==="strip"?a=[r.clone().s(100).toCSS("hsl"),r.clone().s(0).toCSS("hsl")]:t==="horiz"&&(a=["#fff","hsl("+s.h+",100%,50%)"]):t==="vert"&&n.options.controls.horiz==="h"?a=["hsla(0, 0%, "+s.l+"%, 0)","hsla(0, 0%, "+s.l+"%, 1)"]:a=["hsl("+s.h+",0%,50%)","hsl("+s.h+",100%,50%)"],o.gradient(e,a);break;case"l":t==="strip"?a=["hsl("+s.h+",100%,100%)","hsl("+s.h+", "+s.s+"%,50%)","hsl("+s.h+",100%,0%)"]:a=["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],o.gradient(e,a);break;case"v":t==="strip"?a=[r.clone().v(100).toCSS(),r.clone().v(0).toCSS()]:a=["rgba(0,0,0,0)","#000"],o.gradient(e,a);break;default:}},_getHSpaceColor:function(){return this.options.mode==="hsv"?this._color.toHsv():this._color.toHsl()},_dimensions:function(t){var n=this,r=n.options,i=n.picker.find(".iris-picker-inner"),s=n.controls,o=s.square,u=n.picker.find(".iris-strip"),a="77.5%",f="12%",l=20,c=r.border?r.width-l:r.width,h,p=e.isArray(r.palettes)?r.palettes.length:n._palettes.length,d,v,m;t&&(o.css("width",""),u.css("width",""),n.picker.css({width:"",height:""})),a=c*(parseFloat(a)/100),f=c*(parseFloat(f)/100),h=r.border?a+l:a,o.width(a).height(a),u.height(a).width(f),n.picker.css({width:r.width,height:h});if(!r.palettes)return;d=a*2/100,m=a-(p-1)*d,v=m/p,n.picker.find(".iris-palette").each(function(t,n){var r=t===0?0:d;e(this).css({width:v,height:v,marginLeft:r})}),n.picker.css("paddingBottom",v+d),u.height(v+d+a)},_addInputListeners:function(e){var t=this,n=100,r=function(n){var r=new Color(e.val()),i=e.val().replace(/^#/,"");e.removeClass("iris-error"),r.error?i!==""&&e.addClass("iris-error"):r.toString()!==t._color.toString()&&(n.type!=="keyup"||!i.match(/^[0-9a-fA-F]{3}$/))&&t._setOption("color",r.toString())};e.on("change",r).on("keyup",t._debounce(r,n)),t.options.hide&&e.one("focus",function(){t.show()})},_initControls:function(){var t=this,n=t.controls,r=n.square,i=t.options.controls,s=t._scale[i.strip];n.stripSlider.slider({orientation:"vertical",max:s,slide:function(e,n){t.active="strip",i.strip==="h"&&(n.value=s-n.value),t._color[i.strip](n.value),t._change.apply(t,arguments)}}),n.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(e,n){t._squareDrag(e,n)},start:function(){r.addClass("iris-dragging"),e(this).addClass("ui-state-focus")},stop:function(){r.removeClass("iris-dragging"),e(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(n){var r="ui-state-focus";n.preventDefault(),n.type==="mousedown"?(t.picker.find("."+r).removeClass(r).blur(),e(this).addClass(r).focus()):e(this).removeClass(r)}).on("keydown",function(e){var r=n.square,i=n.squareDrag,s=i.position(),o=t.options.width/100;e.altKey&&(o*=10);switch(e.keyCode){case 37:s.left-=o;break;case 38:s.top-=o;break;case 39:s.left+=o;break;case 40:s.top+=o;break;default:return!0}s.left=Math.max(0,Math.min(s.left,r.width())),s.top=Math.max(0,Math.min(s.top,r.height())),i.css(s),t._squareDrag(e,{position:s}),e.preventDefault()}),r.mousedown(function(n){var r,i;if(n.which!==1)return;if(!e(n.target).is("div"))return;r=t.controls.square.offset(),i={top:n.pageY-r.top,left:n.pageX-r.left},n.preventDefault(),t._squareDrag(n,{position:i}),n.target=t.controls.squareDrag.get(0),t.controls.squareDrag.css(i).trigger(n)}),t.options.palettes&&t._paletteListeners()},_paletteListeners:function(){var t=this;t.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(n){t._color.fromCSS(e(this).data("color")),t.active="external",t._change()}).on("keydown.palette",".iris-palette",function(t){if(t.keyCode!==13&&t.keyCode!==32)return!0;t.stopPropagation(),e(this).click()})},_squareDrag:function(e,t){var n=this,r=n.options.controls,i=n._squareDimensions(),s=Math.round((i.h-t.position.top)/i.h*n._scale[r.vert]),o=n._scale[r.horiz]-Math.round((i.w-t.position.left)/i.w*n._scale[r.horiz]);n._color[r.horiz](o)[r.vert](s),n.active="square",n._change.apply(n,arguments)},_setOption:function(t,n){var r=this,i=r.options[t],s=!1,o,u,a;r.options[t]=n;switch(t){case"color":n=""+n,o=n.replace(/^#/,""),u=(new Color(n)).setHSpace(r.options.mode),u.error?r.options[t]=i:(r._color=u,r.options.color=r.options[t]=r._color.toString(),r.active="external",r._change());break;case"palettes":s=!0,n?r._addPalettes():r.picker.find(".iris-palette-container").remove(),i||r._paletteListeners();break;case"width":s=!0;break;case"border":s=!0,a=n?"addClass":"removeClass",r.picker[a]("iris-border");break;case"mode":case"controls":if(i===n)return;return a=r.element,i=r.options,i.hide=!r.picker.is(":visible"),r.destroy(),r.picker.remove(),e(r.element).iris(i)}s&&r._dimensions(!0)},_squareDimensions:function(e){var n=this.controls.square,r,i;return e!==t&&n.data("dimensions")?n.data("dimensions"):(i=this.controls.squareDrag,r={w:n.width(),h:n.height()},n.data("dimensions",r),r)},_isNonHueControl:function(e,t){return e==="square"&&this.options.controls.strip==="h"?!0:t==="external"||t==="h"&&e==="strip"?!1:!0},_change:function(t,n){var r=this,i=r.controls,s=r._getHSpaceColor(),o=r._color.toString(),u=["square","strip"],a=r.options.controls,f=a[r.active]||"external",l=r.hue;r.active==="strip"?u=[]:r.active!=="external"&&u.pop(),e.each(u,function(e,t){var n,o,u;if(t!==r.active)switch(t){case"strip":n=a.strip==="h"?r._scale[a.strip]-s[a.strip]:s[a.strip],i.stripSlider.slider("value",n);break;case"square":o=r._squareDimensions(),u={left:s[a.horiz]/r._scale[a.horiz]*o.w,top:o.h-s[a.vert]/r._scale[a.vert]*o.h},r.controls.squareDrag.css(u)}}),s.h!==l&&r._isNonHueControl(r.active,f)&&r._color.h(l),r.hue=r._color.h(),r.options.color=r._color.toString(),r._inited&&r._trigger("change",{type:r.active},{color:r._color}),r.element.is(":input")&&!r._color.error&&(r.element.removeClass("iris-error"),r.element.val()!==r._color.toString()&&r.element.val(r._color.toString())),r._paint(),r._inited=!0,r.active=!1},_debounce:function(e,t,n){var r,i;return function(){var s=this,o=arguments,u,a;return u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r,clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(e){if(e===!0)return this._color.clone();if(e===t)return this._color.toString();this.option("color",e)}},e.widget("a8c.iris",u),e('<style id="iris-css">'+o+"</style>").appendTo("head")})(jQuery),function(e,t){var n=function(e,t){return this instanceof n?this._init(e,t):new n(e,t)};n.fn=n.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(e){var n="noop";switch(typeof e){case"object":return e.a!==t&&this.a(e.a),n=e.r!==t?"fromRgb":e.l!==t?"fromHsl":e.v!==t?"fromHsv":n,this[n](e);case"string":return this.fromCSS(e);case"number":return this.fromInt(parseInt(e,10))}return this},_error:function(){return this.error=!0,this},clone:function(){var e=new n(this.toInt()),t=["_alpha","_hSpace","_hsl","_hsv","error"];for(var r=t.length-1;r>=0;r--)e[t[r]]=this[t[r]];return e},setHSpace:function(e){return this._hSpace=e==="hsv"?e:"hsl",this},noop:function(){return this},fromCSS:function(e){var t,n,r=/^(rgb|hs(l|v))a?\(/;this.error=!1,e=e.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,"");if(e.match(r)&&e.match(/\)$/)){n=e.replace(/(\s|%)/g,"").replace(r,"").replace(/,?\);?$/,"").split(",");if(n.length<3)return this._error();if(n.length===4){this.a(parseFloat(n.pop()));if(this.error)return this}for(var i=n.length-1;i>=0;i--){n[i]=parseInt(n[i],10);if(isNaN(n[i]))return this._error()}return e.match(/^rgb/)?this.fromRgb({r:n[0],g:n[1],b:n[2]}):e.match(/^hsv/)?this.fromHsv({h:n[0],s:n[1],v:n[2]}):this.fromHsl({h:n[0],s:n[1],l:n[2]})}return this.fromHex(e)},fromRgb:function(e,n){return typeof e!="object"||e.r===t||e.g===t||e.b===t?this._error():(this.error=!1,this.fromInt(parseInt((e.r<<16)+(e.g<<8)+e.b,10),n))},fromHex:function(e){return e=e.replace(/^#/,"").replace(/^0x/,""),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),this.error=!/^[0-9A-F]{6}$/i.test(e),this.fromInt(parseInt(e,16))},fromHsl:function(e){var n,r,i,s,o,u,a,f;return typeof e!="object"||e.h===t||e.s===t||e.l===t?this._error():(this._hsl=e,this._hSpace="hsl",u=e.h/360,a=e.s/100,f=e.l/100,a===0?n=r=i=f:(s=f<.5?f*(1+a):f+a-f*a,o=2*f-s,n=this.hue2rgb(o,s,u+1/3),r=this.hue2rgb(o,s,u),i=this.hue2rgb(o,s,u-1/3)),this.fromRgb({r:n*255,g:r*255,b:i*255},!0))},fromHsv:function(e){var n,r,i,s,o,u,a,f,l,c,h;if(typeof e!="object"||e.h===t||e.s===t||e.v===t)return this._error();this._hsv=e,this._hSpace="hsv",n=e.h/360,r=e.s/100,i=e.v/100,a=Math.floor(n*6),f=n*6-a,l=i*(1-r),c=i*(1-f*r),h=i*(1-(1-f)*r);switch(a%6){case 0:s=i,o=h,u=l;break;case 1:s=c,o=i,u=l;break;case 2:s=l,o=i,u=h;break;case 3:s=l,o=c,u=i;break;case 4:s=h,o=l,u=i;break;case 5:s=i,o=l,u=c}return this.fromRgb({r:s*255,g:o*255,b:u*255},!0)},fromInt:function(e,n){return this._color=parseInt(e,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),n===t&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},toString:function(){var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;t>=0;t--)e="0"+e;return"#"+e},toCSS:function(e,t){e=e||"hex",t=parseFloat(t||this._alpha);switch(e){case"rgb":case"rgba":var n=this.toRgb();return t<1?"rgba( "+n.r+", "+n.g+", "+n.b+", "+t+" )":"rgb( "+n.r+", "+n.g+", "+n.b+" )";case"hsl":case"hsla":var r=this.toHsl();return t<1?"hsla( "+r.h+", "+r.s+"%, "+r.l+"%, "+t+" )":"hsl( "+r.h+", "+r.s+"%, "+r.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=(i+s)/2;if(i===s)o=u=0;else{var f=i-s;u=a>.5?f/(2-i-s):f/(i+s);switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsl.h!==o&&(o=this._hsl.h),u=Math.round(u*100),u===0&&this._hsl.s&&(u=this._hsl.s),{h:o,s:u,l:Math.round(a*100)}},toHsv:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=i,f=i-s;u=i===0?0:f/i;if(i===s)o=u=0;else{switch(i){case t:o=(n-r)/f+(n<r?6:0);break;case n:o=(r-t)/f+2;break;case r:o=(t-n)/f+4}o/=6}return o=Math.round(o*360),o===0&&this._hsv.h!==o&&(o=this._hsv.h),u=Math.round(u*100),u===0&&this._hsv.s&&(u=this._hsv.s),{h:o,s:u,v:Math.round(a*100)}},toInt:function(){return this._color},toIEOctoHex:function(){var e=this.toString(),t=parseInt(255*this._alpha,10).toString(16);return t.length===1&&(t="0"+t),"#"+t+e.replace(/^#/,"")},toLuminosity:function(){var e=this.toRgb();return.2126*Math.pow(e.r/255,2.2)+.7152*Math.pow(e.g/255,2.2)+.0722*Math.pow(e.b/255,2.2)},getDistanceLuminosityFrom:function(e){if(e instanceof n){var t=this.toLuminosity(),r=e.toLuminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)}throw"getDistanceLuminosityFrom requires a Color object"},getMaxContrastColor:function(){var e=this.toLuminosity(),t=e>=.5?"000000":"ffffff";return new n(t)},getGrayscaleContrastingColor:function(e){if(!e)return this.getMaxContrastColor();var t=e<5?5:e,n=this.getMaxContrastColor();e=n.getDistanceLuminosityFrom(this);if(e<=t)return n;var r=0===n.toInt()?1:-1;while(e>t)n=n.incrementLightness(r),e=n.getDistanceLuminosityFrom(this);return n},getReadableContrastingColor:function(e,r){if(!e instanceof n)return this;var i=r===t?5:r,s=e.getDistanceLuminosityFrom(this),o=e.getMaxContrastColor(),u=o.getDistanceLuminosityFrom(e);if(u<=i)return o;if(s>=i)return this;var a=0===o.toInt()?-1:1;while(s<i){this.incrementLightness(a),s=this.getDistanceLuminosityFrom(e);if(this._color===0||this._color===16777215)break}return this},a:function(e){if(e===t)return this._alpha;var n=parseFloat(e);return isNaN(n)?this._error():(this._alpha=n,this)},darken:function(e){return e=e||5,this.l(-e,!0)},lighten:function(e){return e=e||5,this.l(e,!0)},saturate:function(e){return e=e||15,this.s(e,!0)},desaturate:function(e){return e=e||15,this.s(-e,!0)},toGrayscale:function(){return this.setHSpace("hsl").s(0)},getComplement:function(){return this.h(180,!0)},getSplitComplement:function(e){e=e||1;var t=180+e*30;return this.h(t,!0)},getAnalog:function(e){e=e||1;var t=e*30;return this.h(t,!0)},getTetrad:function(e){e=e||1;var t=e*60;return this.h(t,!0)},getTriad:function(e){e=e||1;var t=e*120;return this.h(t,!0)},_partial:function(e){var n=r[e];return function(r,i){var s=this._spaceFunc("to",n.space);return r===t?s[e]:(i===!0&&(r=s[e]+r),n.mod&&(r%=n.mod),n.range&&(r=r<n.range[0]?n.range[0]:r>n.range[1]?n.range[1]:r),s[e]=r,this._spaceFunc("from",n.space,s))}},_spaceFunc:function(e,t,n){var r=t||this._hSpace,i=e+r.charAt(0).toUpperCase()+r.substr(1);return this[i](n)}};var r={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var i in r)r.hasOwnProperty(i)&&(n.fn[i]=n.fn._partial(i));e.Color=n}(typeof exports=="object"&&exports||this);
\ No newline at end of file
diff --git a/wp-admin/js/link.js b/wp-admin/js/link.js
index f8b4583d4..bf5e67ede 100644
--- a/wp-admin/js/link.js
+++ b/wp-admin/js/link.js
@@ -29,7 +29,7 @@ jQuery(document).ready( function($) {
 			return;
 		noSyncChecks = true;
 		var th = $(this), c = th.is(':checked'), id = th.val().toString();
-		$('#in-link-category-' + id + ', #in-popular-category-' + id).prop( 'checked', c );
+		$('#in-link-category-' + id + ', #in-popular-link_category-' + id).prop( 'checked', c );
 		noSyncChecks = false;
 	};
 
diff --git a/wp-admin/js/link.min.js b/wp-admin/js/link.min.js
index 3f5433a4c..5ab75a6a7 100644
--- a/wp-admin/js/link.min.js
+++ b/wp-admin/js/link.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#link-category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-category-"+g).prop("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('<option value="'+parseInt(l,10)+'"></option>').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();c("#newcategory").focus();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()});
\ No newline at end of file
+jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#link-category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-link_category-"+g).prop("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('<option value="'+parseInt(l,10)+'"></option>').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();c("#newcategory").focus();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()});
\ No newline at end of file
diff --git a/wp-admin/js/nav-menu.js b/wp-admin/js/nav-menu.js
index 20f0fc3be..4c6efec3d 100644
--- a/wp-admin/js/nav-menu.js
+++ b/wp-admin/js/nav-menu.js
@@ -42,12 +42,17 @@ var wpNavMenu;
 
 			this.attachUnsavedChangesListener();
 
-			if( api.menuList.length ) // If no menu, we're in the + tab.
+			if ( api.menuList.length )
 				this.initSortables();
 
-			this.initToggles();
+			if ( menus.oneThemeLocationNoMenus )
+				$( '#posttype-page' ).addSelectedToMenu( api.addMenuItemToBottom );
+
+			this.initManageLocations();
 
-			this.initTabManager();
+			this.initAccessibility();
+
+			this.initToggles();
 		},
 
 		jQueryExtensions : function() {
@@ -84,19 +89,55 @@ var wpNavMenu;
 					});
 					return result;
 				},
+				shiftHorizontally : function( dir ) {
+					return this.each(function(){
+						var t = $(this),
+							depth = t.menuItemDepth(),
+							newDepth = depth + dir;
+
+						// Change .menu-item-depth-n class
+						t.moveHorizontally( newDepth, depth );
+					});
+				},
+				moveHorizontally : function( newDepth, depth ) {
+					return this.each(function(){
+						var t = $(this),
+							children = t.childMenuItems(),
+							diff = newDepth - depth,
+							subItemText = t.find('.is-submenu');
+
+						// Change .menu-item-depth-n class
+						t.updateDepthClass( newDepth, depth ).updateParentMenuItemDBId();
+
+						// If it has children, move those too
+						if ( children ) {
+							children.each(function( index ) {
+								var t = $(this),
+									thisDepth = t.menuItemDepth(),
+									newDepth = thisDepth + diff;
+								t.updateDepthClass(newDepth, thisDepth).updateParentMenuItemDBId();
+							});
+						}
+
+						// Show "Sub item" helper text
+						if (0 === newDepth)
+							subItemText.hide();
+						else
+							subItemText.show();
+					});
+				},
 				updateParentMenuItemDBId : function() {
 					return this.each(function(){
 						var item = $(this),
-							input = item.find('.menu-item-data-parent-id'),
-							depth = item.menuItemDepth(),
-							parent = item.prev();
+							input = item.find( '.menu-item-data-parent-id' ),
+							depth = parseInt( item.menuItemDepth() ),
+							parentDepth = depth - 1,
+							parent = item.prevAll( '.menu-item-depth-' + parentDepth ).first();
 
-						if( depth == 0 ) { // Item is on the top level, has no parent
+						if ( 0 == depth ) { // Item is on the top level, has no parent
 							input.val(0);
 						} else { // Find the parent item, and retrieve its object id.
-							while( ! parent[0] || ! parent[0].className || -1 == parent[0].className.indexOf('menu-item') || ( parent.menuItemDepth() != depth - 1 ) )
-								parent = parent.prev();
-							input.val( parent.find('.menu-item-data-db-id').val() );
+							input.val( parent.find( '.menu-item-data-db-id' ).val() );
 						}
 					});
 				},
@@ -120,7 +161,7 @@ var wpNavMenu;
 
 					return this.each(function() {
 						var t = $(this), menuItems = {},
-							checkboxes = t.find('.tabs-panel-active .categorychecklist li input:checked'),
+							checkboxes = ( menus.oneThemeLocationNoMenus && 0 == t.find('.tabs-panel-active .categorychecklist li input:checked').length ) ? t.find('#page-all li input[type="checkbox"]') : t.find('.tabs-panel-active .categorychecklist li input:checked'),
 							re = new RegExp('menu-item\\[(\[^\\]\]*)');
 
 						processMethod = processMethod || api.addMenuItemToBottom;
@@ -223,6 +264,261 @@ var wpNavMenu;
 			});
 		},
 
+		countMenuItems : function( depth ) {
+			return $( '.menu-item-depth-' + depth ).length;
+		},
+
+		moveMenuItem : function( $this, dir ) {
+
+			var menuItems = $('#menu-to-edit li');
+				menuItemsCount = menuItems.length,
+				thisItem = $this.parents( 'li.menu-item' ),
+				thisItemChildren = thisItem.childMenuItems(),
+				thisItemData = thisItem.getItemData(),
+				thisItemDepth = parseInt( thisItem.menuItemDepth() ),
+				thisItemPosition = parseInt( thisItem.index() ),
+				nextItem = thisItem.next(),
+				nextItemChildren = nextItem.childMenuItems(),
+				nextItemDepth = parseInt( nextItem.menuItemDepth() ) + 1,
+				prevItem = thisItem.prev(),
+				prevItemDepth = parseInt( prevItem.menuItemDepth() ),
+				prevItemId = prevItem.getItemData()['menu-item-db-id'];
+
+			switch ( dir ) {
+			case 'up':
+				var newItemPosition = thisItemPosition - 1;
+
+				// Already at top
+				if ( 0 === thisItemPosition )
+					break;
+
+				// If a sub item is moved to top, shift it to 0 depth
+				if ( 0 === newItemPosition && 0 !== thisItemDepth )
+					thisItem.moveHorizontally( 0, thisItemDepth );
+
+				// If prev item is sub item, shift to match depth
+				if ( 0 !== prevItemDepth )
+					thisItem.moveHorizontally( prevItemDepth, thisItemDepth );
+
+				// Does this item have sub items?
+				if ( thisItemChildren ) {
+					var items = thisItem.add( thisItemChildren );
+					// Move the entire block
+					items.detach().insertBefore( menuItems.eq( newItemPosition ) ).updateParentMenuItemDBId();
+				} else {
+					thisItem.detach().insertBefore( menuItems.eq( newItemPosition ) ).updateParentMenuItemDBId();
+				}
+				break;
+			case 'down':
+				// Does this item have sub items?
+				if ( thisItemChildren ) {
+					var items = thisItem.add( thisItemChildren ),
+						nextItem = menuItems.eq( items.length + thisItemPosition ),
+						nextItemChildren = 0 !== nextItem.childMenuItems().length;
+
+					if ( nextItemChildren ) {
+						var newDepth = parseInt( nextItem.menuItemDepth() ) + 1;
+						thisItem.moveHorizontally( newDepth, thisItemDepth );
+					}
+
+					// Have we reached the bottom?
+					if ( menuItemsCount === thisItemPosition + items.length )
+						break;
+
+					items.detach().insertAfter( menuItems.eq( thisItemPosition + items.length ) ).updateParentMenuItemDBId();
+				} else {
+					// If next item has sub items, shift depth
+					if ( 0 !== nextItemChildren.length )
+						thisItem.moveHorizontally( nextItemDepth, thisItemDepth );
+
+					// Have we reached the bottom
+					if ( menuItemsCount === thisItemPosition + 1 )
+						break;
+					thisItem.detach().insertAfter( menuItems.eq( thisItemPosition + 1 ) ).updateParentMenuItemDBId();
+				}
+				break;
+			case 'top':
+				// Already at top
+				if ( 0 === thisItemPosition )
+					break;
+				// Does this item have sub items?
+				if ( thisItemChildren ) {
+					var items = thisItem.add( thisItemChildren );
+					// Move the entire block
+					items.detach().insertBefore( menuItems.eq( 0 ) ).updateParentMenuItemDBId();
+				} else {
+					thisItem.detach().insertBefore( menuItems.eq( 0 ) ).updateParentMenuItemDBId();
+				}
+				break;
+			case 'left':
+				// As far left as possible
+				if ( 0 === thisItemDepth )
+					break;
+				thisItem.shiftHorizontally( -1 );
+				break;
+			case 'right':
+				// Can't be sub item at top
+				if ( 0 === thisItemPosition )
+					break;
+				// Already sub item of prevItem
+				if ( thisItemData['menu-item-parent-id'] === prevItemId )
+					break;
+				thisItem.shiftHorizontally( 1 );
+				break;
+			}
+			$this.focus();
+			api.registerChange();
+			api.refreshKeyboardAccessibility();
+			api.refreshAdvancedAccessibility();
+		},
+
+		initAccessibility : function() {
+			api.refreshKeyboardAccessibility();
+			api.refreshAdvancedAccessibility();
+
+			// Events
+			$( '.menus-move-up' ).on( 'click', function ( e ) {
+				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'up' );
+				e.preventDefault();
+			});
+			$( '.menus-move-down' ).on( 'click', function ( e ) {
+				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'down' );
+				e.preventDefault();
+			});
+			$( '.menus-move-top' ).on( 'click', function ( e ) {
+				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'top' );
+				e.preventDefault();
+			});
+			$( '.menus-move-left' ).on( 'click', function ( e ) {
+				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'left' );
+				e.preventDefault();
+			});
+			$( '.menus-move-right' ).on( 'click', function ( e ) {
+				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'right' );
+				e.preventDefault();
+			});
+		},
+
+		refreshAdvancedAccessibility : function() {
+
+			// Hide all links by default
+			$( '.menu-item-settings .field-move a' ).hide();
+
+			$( '.item-edit' ).each( function() {
+				var $this = $(this),
+					movement = [],
+					availableMovement = '',
+					menuItem = $this.parents( 'li.menu-item' ).first(),
+					depth = menuItem.menuItemDepth(),
+					isPrimaryMenuItem = ( 0 === depth ),
+					itemName = $this.parents( '.menu-item-handle' ).find( '.menu-item-title' ).text(),
+					position = parseInt( menuItem.index() ),
+					prevItemDepth = ( isPrimaryMenuItem ) ? depth : parseInt( depth - 1 ),
+					prevItemNameLeft = menuItem.prevAll('.menu-item-depth-' + prevItemDepth).first().find( '.menu-item-title' ).text(),
+					prevItemNameRight = menuItem.prevAll('.menu-item-depth-' + depth).first().find( '.menu-item-title' ).text(),
+					totalMenuItems = $('#menu-to-edit li').length,
+					hasSameDepthSibling = menuItem.nextAll( '.menu-item-depth-' + depth ).length;
+
+				// Where can they move this menu item?
+				if ( 0 !== position ) {
+					var thisLink = menuItem.find( '.menus-move-up' );
+					thisLink.prop( 'title', menus.moveUp ).show();
+				}
+
+				if ( 0 !== position && isPrimaryMenuItem ) {
+					var thisLink = menuItem.find( '.menus-move-top' );
+					thisLink.prop( 'title', menus.moveToTop ).show();
+				}
+
+				if ( position + 1 !== totalMenuItems && 0 !== position ) {
+					var thisLink = menuItem.find( '.menus-move-down' );
+					thisLink.prop( 'title', menus.moveDown ).show();
+				}
+
+				if ( 0 === position && 0 !== hasSameDepthSibling ) {
+					var thisLink = menuItem.find( '.menus-move-down' );
+					thisLink.prop( 'title', menus.moveDown ).show();
+				}
+
+				if ( ! isPrimaryMenuItem ) {
+					var thisLink = menuItem.find( '.menus-move-left' ),
+						thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
+					thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).html( thisLinkText ).show();
+				}
+
+				if ( 0 !== position ) {
+					if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
+						var thisLink = menuItem.find( '.menus-move-right' ),
+							thisLinkText = menus.under.replace( '%s', prevItemNameRight );
+						thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).html( thisLinkText ).show();
+					}
+				}
+
+				if ( isPrimaryMenuItem ) {
+					var primaryItems = $( '.menu-item-depth-0' ),
+						itemPosition = primaryItems.index( menuItem ) + 1,
+						totalMenuItems = primaryItems.length,
+
+						// String together help text for primary menu items
+						title = menus.menuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$d', totalMenuItems );
+				} else {
+					var parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1 ) ).first(),
+						parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
+						parentItemName = parentItem.find( '.menu-item-title' ).text(),
+						subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
+						itemPosition = $( subItems.parents('.menu-item').get().reverse() ).index( menuItem ) + 1;
+
+						// String together help text for sub menu items
+						title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$s', parentItemName );
+				}
+
+				$this.prop('title', title).html( title );
+			});
+		},
+
+		refreshKeyboardAccessibility : function() {
+			$( '.item-edit' ).off( 'focus' ).on( 'focus', function(){
+				$(this).off( 'keydown' ).on( 'keydown', function(e){
+
+					var $this = $(this);
+
+					// Bail if it's not an arrow key
+					if ( 37 != e.which && 38 != e.which && 39 != e.which && 40 != e.which )
+						return;
+
+					// Avoid multiple keydown events
+					$this.off('keydown');
+
+					// Bail if there is only one menu item
+					if ( 1 === $('#menu-to-edit li').length )
+						return;
+
+					// If RTL, swap left/right arrows
+					var arrows = { '38' : 'up', '40' : 'down', '37' : 'left', '39' : 'right' };
+					if ( $('body').hasClass('rtl') )
+						arrows = { '38' : 'up', '40' : 'down', '39' : 'left', '37' : 'right' };
+
+					switch ( arrows[e.which] ) {
+					case 'up':
+						api.moveMenuItem( $this, 'up' );
+						break;
+					case 'down':
+						api.moveMenuItem( $this, 'down' );
+						break;
+					case 'left':
+						api.moveMenuItem( $this, 'left' );
+						break;
+					case 'right':
+						api.moveMenuItem( $this, 'right' );
+						break;
+					}
+					// Put focus back on same menu item
+					$( '#edit-' + thisItemData['menu-item-db-id'] ).focus();
+					return false;
+				});
+			});
+		},
+
 		initToggles : function() {
 			// init postboxes
 			postboxes.add_postbox_toggles('nav-menus');
@@ -237,6 +533,16 @@ var wpNavMenu;
 			}
 			// hide fields
 			api.menuList.hideAdvancedMenuItemFields();
+
+			$('.hide-postbox-tog').click(function () {
+				var hidden = $( '.accordion-container li.accordion-section' ).filter(':hidden').map(function() { return this.id; }).get().join(',');
+				$.post(ajaxurl, {
+					action: 'closed-postboxes',
+					hidden: hidden,
+					closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
+					page: 'nav-menus'
+				});
+			});
 		},
 
 		initSortables : function() {
@@ -246,6 +552,9 @@ var wpNavMenu;
 				body = $('body'), maxChildDepth,
 				menuMaxDepth = initialMenuMaxDepth();
 
+			if( 0 != $( '#menu-to-edit li' ).length )
+				$( '.drag-instructions' ).show();
+
 			// Use the right edge if RTL.
 			menuEdge += api.isRTL ? api.menuList.width() : 0;
 
@@ -308,6 +617,13 @@ var wpNavMenu;
 					// Return child elements to the list
 					children = transport.children().insertAfter(ui.item);
 
+					// Add "sub menu" description
+					var subMenuTitle = ui.item.find( '.item-title .is-submenu' );
+					if ( 0 < currentDepth )
+						subMenuTitle.show();
+					else
+						subMenuTitle.hide();
+
 					// Update depth classes
 					if( depthChange != 0 ) {
 						ui.item.updateDepthClass( currentDepth );
@@ -328,8 +644,8 @@ var wpNavMenu;
 						ui.item[0].style.right = 0;
 					}
 
-					// The width of the tab bar might have changed. Just in case.
-					api.refreshMenuTabs( true );
+					api.refreshKeyboardAccessibility();
+					api.refreshAdvancedAccessibility();
 				},
 				change: function(e, ui) {
 					// Make sure the placeholder is inside the menu.
@@ -410,6 +726,19 @@ var wpNavMenu;
 			}
 		},
 
+		initManageLocations : function () {
+			$('#menu-locations-wrap form').submit(function(){
+				window.onbeforeunload = null;
+			});
+			$('.menu-location-menus select').on('change', function () {
+				var editLink = $(this).closest('tr').find('.locations-edit-menu-link');
+				if ($(this).find('option:selected').data('orig'))
+					editLink.show();
+				else
+					editLink.hide();
+			});
+		},
+
 		attachMenuEditListeners : function() {
 			var that = this;
 			$('#update-nav-menu').bind('click', function(e) {
@@ -461,6 +790,8 @@ var wpNavMenu;
 				if( '' == $t.val() )
 					$t.addClass( name ).val( $t.data(name) );
 			});
+
+			$( '.blank-slate .input-with-default-title' ).focus();
 		},
 
 		attachThemeLocationsListeners : function() {
@@ -572,8 +903,11 @@ var wpNavMenu;
 			$.post( ajaxurl, params, function(menuMarkup) {
 				var ins = $('#menu-instructions');
 				processMethod(menuMarkup, params);
-				if( ! ins.hasClass('menu-instructions-inactive') && ins.siblings().length )
-					ins.addClass('menu-instructions-inactive');
+				// Make it stand out a bit more visually, by adding a fadeIn
+				$( 'li.pending' ).hide().fadeIn('slow');
+				$( '.drag-instructions' ).show();
+				if( ! ins.hasClass( 'menu-instructions-inactive' ) && ins.siblings().length )
+					ins.addClass( 'menu-instructions-inactive' );
 				callback();
 			});
 		},
@@ -586,25 +920,29 @@ var wpNavMenu;
 		 */
 		addMenuItemToBottom : function( menuMarkup, req ) {
 			$(menuMarkup).hideAdvancedMenuItemFields().appendTo( api.targetList );
+			api.refreshKeyboardAccessibility();
+			api.refreshAdvancedAccessibility();
 		},
 
 		addMenuItemToTop : function( menuMarkup, req ) {
 			$(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList );
+			api.refreshKeyboardAccessibility();
+			api.refreshAdvancedAccessibility();
 		},
 
 		attachUnsavedChangesListener : function() {
-			$('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){
+			$('#menu-management input, #menu-management select, #menu-management, #menu-management textarea, .menu-location-menus select').change(function(){
 				api.registerChange();
 			});
 
-			if ( 0 != $('#menu-to-edit').length ) {
+			if ( 0 != $('#menu-to-edit').length || 0 != $('.menu-location-menus select').length ) {
 				window.onbeforeunload = function(){
 					if ( api.menusChanged )
 						return navMenuL10n.saveAlert;
 				};
 			} else {
 				// Make the post boxes read-only, as they can't be used yet
-				$('#menu-settings-column').find('input,select').prop('disabled', true).end().find('a').attr('href', '#').unbind('click');
+				$( '#menu-settings-column' ).find( 'input,select' ).end().find( 'a' ).attr( 'href', '#' ).unbind( 'click' );
 			}
 		},
 
@@ -618,13 +956,10 @@ var wpNavMenu;
 					target = $(e.target);
 
 				if ( target.hasClass('nav-tab-link') ) {
-					panelId = /#(.*)$/.exec(e.target.href);
-					if ( panelId && panelId[1] )
-						panelId = panelId[1]
-					else
-						return false;
 
-					wrapper = target.parents('.inside').first();
+					panelId = target.data( 'type' );
+
+					wrapper = target.parents('.accordion-section-content').first();
 
 					// upon changing tabs, we want to uncheck all checkboxes
 					$('input', wrapper).removeAttr('checked');
@@ -638,7 +973,7 @@ var wpNavMenu;
 					// select the search bar
 					$('.quick-search', wrapper).focus();
 
-					return false;
+					e.preventDefault();
 				} else if ( target.hasClass('select-all') ) {
 					selectAreaMatch = /#(.*)$/.exec(e.target.href);
 					if ( selectAreaMatch && selectAreaMatch[1] ) {
@@ -688,139 +1023,6 @@ var wpNavMenu;
 			});
 		},
 
-		initTabManager : function() {
-			var fixed = $('.nav-tabs-wrapper'),
-				fluid = fixed.children('.nav-tabs'),
-				active = fluid.children('.nav-tab-active'),
-				tabs = fluid.children('.nav-tab'),
-				tabsWidth = 0,
-				fixedRight, fixedLeft,
-				arrowLeft, arrowRight, resizeTimer, css = {},
-				marginFluid = api.isRTL ? 'margin-right' : 'margin-left',
-				marginFixed = api.isRTL ? 'margin-left' : 'margin-right',
-				msPerPx = 2;
-
-			/**
-			 * Refreshes the menu tabs.
-			 * Will show and hide arrows where necessary.
-			 * Scrolls to the active tab by default.
-			 *
-			 * @param savePosition {boolean} Optional. Prevents scrolling so
-			 * 		  that the current position is maintained. Default false.
-			 **/
-			api.refreshMenuTabs = function( savePosition ) {
-				var fixedWidth = fixed.width(),
-					margin = 0, css = {};
-				fixedLeft = fixed.offset().left;
-				fixedRight = fixedLeft + fixedWidth;
-
-				if( !savePosition )
-					active.makeTabVisible();
-
-				// Prevent space from building up next to the last tab if there's more to show
-				if( tabs.last().isTabVisible() ) {
-					margin = fixed.width() - tabsWidth;
-					margin = margin > 0 ? 0 : margin;
-					css[marginFluid] = margin + 'px';
-					fluid.animate( css, 100, "linear" );
-				}
-
-				// Show the arrows only when necessary
-				if( fixedWidth > tabsWidth )
-					arrowLeft.add( arrowRight ).hide();
-				else
-					arrowLeft.add( arrowRight ).show();
-			}
-
-			$.fn.extend({
-				makeTabVisible : function() {
-					var t = this.eq(0), left, right, css = {}, shift = 0;
-
-					if( ! t.length ) return this;
-
-					left = t.offset().left;
-					right = left + t.outerWidth();
-
-					if( right > fixedRight )
-						shift = fixedRight - right;
-					else if ( left < fixedLeft )
-						shift = fixedLeft - left;
-
-					if( ! shift ) return this;
-
-					css[marginFluid] = "+=" + api.negateIfRTL * shift + 'px';
-					fluid.animate( css, Math.abs( shift ) * msPerPx, "linear" );
-					return this;
-				},
-				isTabVisible : function() {
-					var t = this.eq(0),
-						left = t.offset().left,
-						right = left + t.outerWidth();
-					return ( right <= fixedRight && left >= fixedLeft ) ? true : false;
-				}
-			});
-
-			// Find the width of all tabs
-			tabs.each(function(){
-				tabsWidth += $(this).outerWidth(true);
-			});
-
-			// Set up fixed margin for overflow, unset padding
-			css['padding'] = 0;
-			css[marginFixed] = (-1 * tabsWidth) + 'px';
-			fluid.css( css );
-
-			// Build tab navigation
-			arrowLeft = $('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');
-			arrowRight = $('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');
-			// Attach to the document
-			fixed.wrap('<div class="nav-tabs-nav"/>').parent().prepend( arrowLeft ).append( arrowRight );
-
-			// Set the menu tabs
-			api.refreshMenuTabs();
-			// Make sure the tabs reset on resize
-			$(window).resize(function() {
-				if( resizeTimer ) clearTimeout(resizeTimer);
-				resizeTimer = setTimeout( api.refreshMenuTabs, 200);
-			});
-
-			// Build arrow functions
-			$.each([{
-					arrow : arrowLeft,
-					next : "next",
-					last : "first",
-					operator : "+="
-				},{
-					arrow : arrowRight,
-					next : "prev",
-					last : "last",
-					operator : "-="
-				}], function(){
-				var that = this;
-				this.arrow.mousedown(function(){
-					var marginFluidVal = Math.abs( parseInt( fluid.css(marginFluid) ) ),
-						shift = marginFluidVal,
-						css = {};
-
-					if( "-=" == that.operator )
-						shift = Math.abs( tabsWidth - fixed.width() ) - marginFluidVal;
-
-					if( ! shift ) return;
-
-					css[marginFluid] = that.operator + shift + 'px';
-					fluid.animate( css, shift * msPerPx, "linear" );
-				}).mouseup(function(){
-					var tab, next;
-					fluid.stop(true);
-					tab = tabs[that.last]();
-					while( (next = tab[that.next]()) && next.length && ! next.isTabVisible() ) {
-						tab = next;
-					}
-					tab.makeTabVisible();
-				});
-			});
-		},
-
 		eventOnClickEditLink : function(clickedEl) {
 			var settings, item,
 			matchedSection = /#(.*)$/.exec(clickedEl.href);
@@ -846,8 +1048,10 @@ var wpNavMenu;
 		},
 
 		eventOnClickCancelLink : function(clickedEl) {
-			var settings = $(clickedEl).closest('.menu-item-settings');
-			settings.setItemData( settings.data('menu-item-data') );
+			var settings = $( clickedEl ).closest( '.menu-item-settings' ),
+				thisMenuItem = $( clickedEl ).closest( '.menu-item' );
+			thisMenuItem.removeClass('menu-item-edit-active').addClass('menu-item-edit-inactive');
+			settings.setItemData( settings.data('menu-item-data') ).hide();
 			return false;
 		},
 
@@ -944,9 +1148,11 @@ var wpNavMenu;
 				}, 350, function() {
 					var ins = $('#menu-instructions');
 					el.remove();
-					children.shiftDepthClass(-1).updateParentMenuItemDBId();
-					if( ! ins.siblings().length )
-						ins.removeClass('menu-instructions-inactive');
+					children.shiftDepthClass( -1 ).updateParentMenuItemDBId();
+					if( 0 == $( '#menu-to-edit li' ).length ) {
+						$( '.drag-instructions' ).hide();
+						ins.removeClass( 'menu-instructions-inactive' );
+					}
 				});
 		},
 
diff --git a/wp-admin/js/nav-menu.min.js b/wp-admin/js/nav-menu.min.js
index 1f936036c..e385728fa 100644
--- a/wp-admin/js/nav-menu.min.js
+++ b/wp-admin/js/nav-menu.min.js
@@ -1 +1 @@
-var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,isRTL:!!("undefined"!=typeof isRtl&&isRtl),negateIfRTL:("undefined"!=typeof isRtl&&isRtl)?-1:1,init:function(){a.menuList=b("#menu-to-edit");a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}this.initToggles();this.initTabManager()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=a.isRTL?this.eq(0).css("margin-right"):this.eq(0).css("margin-left");return a.pxToDepth(c&&-1!=c.indexOf("px")?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass("menu-item-depth-"+c).addClass("menu-item-depth-"+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass("menu-item-depth-"+e).addClass("menu-item-depth-"+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&&e.menuItemDepth()>f){c=c.add(e);e=e.next()}});return c},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(".menu-item-data-parent-id"),f=e.menuItemDepth(),d=e.prev();if(f==0){c.val(0)}else{while(!d[0]||!d[0].className||-1==d[0].className.indexOf("menu-item")||(d.menuItemDepth()!=f-1)){d=d.prev()}c.val(d.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(".hide-column-tog").not(":checked").each(function(){c.find(".field-"+b(this).val()).addClass("hidden-field")})})},addSelectedToMenu:function(c){if(0==b("#menu-to-edit").length){return false}return this.each(function(){var e=b(this),d={},g=e.find(".tabs-panel-active .categorychecklist li input:checked"),f=new RegExp("menu-item\\[([^\\]]*)");c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find(".spinner").show();b(g).each(function(){var i=b(this),h=f.exec(i.attr("name")),j="undefined"==typeof h[1]?0:parseInt(h[1],10);if(this.className&&-1!=this.className.indexOf("add-to-top")){c=a.addMenuItemToTop}d[j]=i.closest("li").getItemData("add-menu-item",j)});a.addItemToMenu(d,c,function(){g.removeAttr("checked");e.find(".spinner").hide()})})},getItemData:function(f,g){f=f||"menu-item";var d={},e,c=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"];if(!g&&f=="menu-item"){g=this.find(".menu-item-data-db-id").val()}if(!g){return d}this.find("input").each(function(){var h;e=c.length;while(e--){if(f=="menu-item"){h=c[e]+"["+g+"]"}else{if(f=="add-menu-item"){h="menu-item["+g+"]["+c[e]+"]"}}if(this.name&&h==this.name){d[c[e]]=this.value}}});return d},setItemData:function(c,d,e){d=d||"menu-item";if(!e&&d=="menu-item"){e=b(".menu-item-data-db-id",this).val()}if(!e){return this}this.find("input").each(function(){var f=b(this),g;b.each(c,function(h,i){if(d=="menu-item"){g=h+"["+e+"]"}else{if(d=="add-menu-item"){g="menu-item["+e+"]["+h+"]"}}if(g==f.attr("name")){f.val(i)}})});return this}})},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(c){b(".field-"+c).removeClass("hidden-field")};columns.unchecked=function(c){b(".field-"+c).addClass("hidden-field")};a.menuList.hideAdvancedMenuItemFields()},initSortables:function(){var p=0,e,t,d,l,o,f,c,i,s,m=a.menuList.offset().left,h=b("body"),q,n=r();m+=a.isRTL?a.menuList.width():0;a.menuList.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(A,z){var u,x,w,v,y;if(a.isRTL){z.item[0].style.right="auto"}s=z.item.children(".menu-item-transport");e=z.item.menuItemDepth();j(z,e);w=(z.item.next()[0]==z.placeholder[0])?z.item.next():z.item;v=w.childMenuItems();s.append(v);u=s.outerHeight();u+=(u>0)?(z.placeholder.css("margin-top").slice(0,-2)*1):0;u+=z.helper.outerHeight();i=u;u-=2;z.placeholder.height(u);q=e;v.each(function(){var B=b(this).menuItemDepth();q=(B>q)?B:q});x=z.helper.find(".menu-item-handle").outerWidth();x+=a.depthToPx(q-e);x-=2;z.placeholder.width(x);y=z.placeholder.next();y.css("margin-top",i+"px");z.placeholder.detach();b(this).sortable("refresh");z.item.after(z.placeholder);y.css("margin-top",0);k(z)},stop:function(x,w){var v,u=p-e;v=s.children().insertAfter(w.item);if(u!=0){w.item.updateDepthClass(p);v.shiftDepthClass(u);g(u)}a.registerChange();w.item.updateParentMenuItemDBId();w.item[0].style.top=0;if(a.isRTL){w.item[0].style.left="auto";w.item[0].style.right=0}a.refreshMenuTabs(true)},change:function(v,u){if(!u.placeholder.parent().hasClass("menu")){(l.length)?l.after(u.placeholder):a.menuList.prepend(u.placeholder)}k(u)},sort:function(w,v){var y=v.helper.offset(),u=a.isRTL?y.left+v.helper.width():y.left,x=a.negateIfRTL*a.pxToDepth(u-m);if(x>d||y.top<f){x=d}else{if(x<t){x=t}}if(x!=p){j(v,x)}if(c&&y.top+i>c){o.after(v.placeholder);k(v);b(this).sortable("refreshPositions")}}});function k(u){var v;l=u.placeholder.prev();o=u.placeholder.next();if(l[0]==u.item[0]){l=l.prev()}if(o[0]==u.item[0]){o=o.next()}f=(l.length)?l.offset().top+l.height():0;c=(o.length)?o.offset().top+o.height()/3:0;t=(o.length)?o.menuItemDepth():0;if(l.length){d=((v=l.menuItemDepth()+1)>a.options.globalMaxDepth)?a.options.globalMaxDepth:v}else{d=0}}function j(u,v){u.placeholder.updateDepthClass(v,p);p=v}function r(){if(!h[0].className){return 0}var u=h[0].className.match(/menu-max-depth-(\d+)/);return u&&u[1]?parseInt(u[1]):0}function g(u){var v,w=n;if(u===0){return}else{if(u>0){v=q+u;if(v>n){w=v}}else{if(u<0&&q==n){while(!b(".menu-item-depth-"+w,a.menuList).length&&w>0){w--}}}}h.removeClass("menu-max-depth-"+n).addClass("menu-max-depth-"+w);n=w}},attachMenuEditListeners:function(){var c=this;b("#update-nav-menu").bind("click",function(d){if(d.target&&d.target.className){if(-1!=d.target.className.indexOf("item-edit")){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf("menu-save")){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf("menu-delete")){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-delete")){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-cancel")){return c.eventOnClickCancelLink(d.target)}}}}}}});b('#add-custom-links input[type="text"]').keypress(function(d){if(d.keyCode===13){d.preventDefault();b("#submit-customlinkdiv").click()}})},setupInputWithDefaultTitle:function(){var c="input-with-default-title";b("."+c).each(function(){var f=b(this),e=f.attr("title"),d=f.val();f.data(c,e);if(""==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val("").removeClass(c)}}).blur(function(){var d=b(this);if(""==d.val()){d.addClass(c).val(d.data(c))}})},attachThemeLocationsListeners:function(){var d=b("#nav-menu-theme-locations"),c={};c.action="menu-locations-save";c["menu-settings-column-nonce"]=b("#menu-settings-column-nonce").val();d.find('input[type="submit"]').click(function(){d.find("select").each(function(){c[this.name]=b(this).val()});d.find(".spinner").show();b.post(ajaxurl,c,function(e){d.find(".spinner").hide()});return false})},attachQuickSearchListeners:function(){var c;b(".quick-search").keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr("autocomplete","off")},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length<e){return}c=d.parents(".tabs-panel");g={action:"menu-quick-search","response-format":"markup",menu:b("#menu").val(),"menu-settings-column-nonce":b("#menu-settings-column-nonce").val(),q:f,type:d.attr("name")};b(".spinner",c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b("#custom-menu-item-url").val(),d=b("#custom-menu-item-name").val();c=c||a.addMenuItemToBottom;if(""==e||"http://"==e){return false}b(".customlinkdiv .spinner").show();this.addLinkToMenu(e,d,c,function(){b(".customlinkdiv .spinner").hide();b("#custom-menu-item-name").val("").blur();b("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":e,"menu-item-title":d}},c,f)},addItemToMenu:function(e,c,g){var f=b("#menu").val(),d=b("#menu-settings-column-nonce").val();c=c||function(){};g=g||function(){};params={action:"add-menu-item",menu:f,"menu-settings-column-nonce":d,"menu-item":e};b.post(ajaxurl,params,function(h){var i=b("#menu-instructions");c(h,params);if(!i.hasClass("menu-instructions-inactive")&&i.siblings().length){i.addClass("menu-instructions-inactive")}g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList)},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList)},attachUnsavedChangesListener:function(){b("#menu-management input, #menu-management select, #menu-management, #menu-management textarea").change(function(){a.registerChange()});if(0!=b("#menu-to-edit").length){window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}}}else{b("#menu-settings-column").find("input,select").prop("disabled",true).end().find("a").attr("href","#").unbind("click")}},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b("#menu-settings-column").bind("click",function(h){var f,d,i,c,g=b(h.target);if(g.hasClass("nav-tab-link")){d=/#(.*)$/.exec(h.target.href);if(d&&d[1]){d=d[1]}else{return false}i=g.parents(".inside").first();b("input",i).removeAttr("checked");b(".tabs-panel-active",i).removeClass("tabs-panel-active").addClass("tabs-panel-inactive");b("#"+d,i).removeClass("tabs-panel-inactive").addClass("tabs-panel-active");b(".tabs",i).removeClass("tabs");g.parent().addClass("tabs");b(".quick-search",i).focus();return false}else{if(g.hasClass("select-all")){f=/#(.*)$/.exec(h.target.href);if(f&&f[1]){c=b("#"+f[1]+" .tabs-panel-active .menu-item-title input");if(c.length===c.filter(":checked").length){c.removeAttr("checked")}else{c.prop("checked",true)}return false}}else{if(g.hasClass("submit-add-to-menu")){a.registerChange();if(h.target.id&&"submit-customlinkdiv"==h.target.id){a.addCustomLink(a.addMenuItemToBottom)}else{if(h.target.id&&-1!=h.target.id.indexOf("submit-")){b("#"+h.target.id.replace(/submit-/,"")).addSelectedToMenu(a.addMenuItemToBottom)}}return false}else{if(g.hasClass("page-numbers")){b.post(ajaxurl,h.target.href.replace(/.*\?/,"").replace(/action=([^&]*)/,"")+"&action=menu-get-metabox",function(m){if(-1==m.indexOf("replace-id")){return}var l=b.parseJSON(m),e=document.getElementById(l["replace-id"]),k=document.createElement("div"),j=document.createElement("div");if(!l.markup||!e){return}j.innerHTML=l.markup?l.markup:"";e.parentNode.insertBefore(k,e);k.parentNode.removeChild(e);k.parentNode.insertBefore(j,k);k.parentNode.removeChild(k)});return false}}}}})},initTabManager:function(){var h=b(".nav-tabs-wrapper"),j=h.children(".nav-tabs"),g=j.children(".nav-tab-active"),m=j.children(".nav-tab"),e=0,o,f,l,d,k,i={},c=a.isRTL?"margin-right":"margin-left",p=a.isRTL?"margin-left":"margin-right",n=2;a.refreshMenuTabs=function(q){var t=h.width(),s=0,r={};f=h.offset().left;o=f+t;if(!q){g.makeTabVisible()}if(m.last().isTabVisible()){s=h.width()-e;s=s>0?0:s;r[c]=s+"px";j.animate(r,100,"linear")}if(t>e){l.add(d).hide()}else{l.add(d).show()}};b.fn.extend({makeTabVisible:function(){var u=this.eq(0),v,s,r={},q=0;if(!u.length){return this}v=u.offset().left;s=v+u.outerWidth();if(s>o){q=o-s}else{if(v<f){q=f-v}}if(!q){return this}r[c]="+="+a.negateIfRTL*q+"px";j.animate(r,Math.abs(q)*n,"linear");return this},isTabVisible:function(){var r=this.eq(0),s=r.offset().left,q=s+r.outerWidth();return(q<=o&&s>=f)?true:false}});m.each(function(){e+=b(this).outerWidth(true)});i.padding=0;i[p]=(-1*e)+"px";j.css(i);l=b('<div class="nav-tabs-arrow nav-tabs-arrow-left"><a>&laquo;</a></div>');d=b('<div class="nav-tabs-arrow nav-tabs-arrow-right"><a>&raquo;</a></div>');h.wrap('<div class="nav-tabs-nav"/>').parent().prepend(l).append(d);a.refreshMenuTabs();b(window).resize(function(){if(k){clearTimeout(k)}k=setTimeout(a.refreshMenuTabs,200)});b.each([{arrow:l,next:"next",last:"first",operator:"+="},{arrow:d,next:"prev",last:"last",operator:"-="}],function(){var q=this;this.arrow.mousedown(function(){var t=Math.abs(parseInt(j.css(c))),r=t,s={};if("-="==q.operator){r=Math.abs(e-h.width())-t}if(!r){return}s[c]=q.operator+r+"px";j.animate(s,r*n,"linear")}).mouseup(function(){var s,r;j.stop(true);s=m[q.last]();while((r=s[q.next]())&&r.length&&!r.isTabVisible()){s=r}s.makeTabVisible()})})},eventOnClickEditLink:function(d){var c,e,f=/#(.*)$/.exec(d.href);if(f&&f[1]){c=b("#"+f[1]);e=c.parent();if(0!=e.length){if(e.hasClass("menu-item-edit-inactive")){if(!c.data("menu-item-data")){c.data("menu-item-data",c.getItemData())}c.slideDown("fast");e.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{c.slideUp("fast");e.removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCancelLink:function(d){var c=b(d).closest(".menu-item-settings");c.setItemData(c.data("menu-item-data"));return false},eventOnClickMenuSave:function(e){var f="",c=b("#menu-name"),d=c.val();if(!d||d==c.attr("title")||!d.replace(/\s+/,"")){c.parent().addClass("form-invalid");return false}b("#nav-menu-theme-locations select").each(function(){f+='<input type="hidden" name="'+this.name+'" value="'+b(this).val()+'" />'});b("#update-nav-menu").append(f);a.menuList.find(".menu-item-data-position").val(function(g){return g+1});window.onbeforeunload=null;return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){window.onbeforeunload=null;return true}return false},eventOnClickMenuItemDelete:function(c){var d=parseInt(c.id.replace("delete-",""),10);a.removeMenuItem(b("#menu-item-"+d));a.registerChange();return false},processQuickSearchQueryResponse:function(g,k,c){var e,i,f={},d=document.getElementById("nav-menu-meta"),j=new RegExp("menu-item\\[([^\\]]*)","g"),h=b("<div>").html(g).find("li"),l;if(!h.length){b(".categorychecklist",c).html("<li><p>"+navMenuL10n.noResultsFound+"</p></li>");b(".spinner",c).hide();return}h.each(function(){l=b(this);e=j.exec(l.html());if(e&&e[1]){i=e[1];while(d.elements["menu-item["+i+"][menu-item-type]"]||f[i]){i--}f[i]=true;if(i!=e[1]){l.html(l.html().replace(new RegExp("menu-item\\["+e[1]+"\\]","g"),"menu-item["+i+"]"))}}});b(".categorychecklist",c).html(h);b(".spinner",c).hide()},removeMenuItem:function(d){var c=d.childMenuItems();d.addClass("deleting").animate({opacity:0,height:0},350,function(){var e=b("#menu-instructions");d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId();if(!e.siblings().length){e.removeClass("menu-instructions-inactive")}})},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
\ No newline at end of file
+var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,isRTL:!!("undefined"!=typeof isRtl&&isRtl),negateIfRTL:("undefined"!=typeof isRtl&&isRtl)?-1:1,init:function(){a.menuList=b("#menu-to-edit");a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}if(menus.oneThemeLocationNoMenus){b("#posttype-page").addSelectedToMenu(a.addMenuItemToBottom)}this.initManageLocations();this.initAccessibility();this.initToggles()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=a.isRTL?this.eq(0).css("margin-right"):this.eq(0).css("margin-left");return a.pxToDepth(c&&-1!=c.indexOf("px")?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass("menu-item-depth-"+c).addClass("menu-item-depth-"+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass("menu-item-depth-"+e).addClass("menu-item-depth-"+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&&e.menuItemDepth()>f){c=c.add(e);e=e.next()}});return c},shiftHorizontally:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth(),f=e+c;d.moveHorizontally(f,e)})},moveHorizontally:function(d,c){return this.each(function(){var f=b(this),e=f.childMenuItems(),h=d-c,g=f.find(".is-submenu");f.updateDepthClass(d,c).updateParentMenuItemDBId();if(e){e.each(function(j){var k=b(this),i=k.menuItemDepth(),l=i+h;k.updateDepthClass(l,i).updateParentMenuItemDBId()})}if(0===d){g.hide()}else{g.show()}})},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(".menu-item-data-parent-id"),g=parseInt(e.menuItemDepth()),f=g-1,d=e.prevAll(".menu-item-depth-"+f).first();if(0==g){c.val(0)}else{c.val(d.find(".menu-item-data-db-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(".hide-column-tog").not(":checked").each(function(){c.find(".field-"+b(this).val()).addClass("hidden-field")})})},addSelectedToMenu:function(c){if(0==b("#menu-to-edit").length){return false}return this.each(function(){var e=b(this),d={},g=(menus.oneThemeLocationNoMenus&&0==e.find(".tabs-panel-active .categorychecklist li input:checked").length)?e.find('#page-all li input[type="checkbox"]'):e.find(".tabs-panel-active .categorychecklist li input:checked"),f=new RegExp("menu-item\\[([^\\]]*)");c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find(".spinner").show();b(g).each(function(){var i=b(this),h=f.exec(i.attr("name")),j="undefined"==typeof h[1]?0:parseInt(h[1],10);if(this.className&&-1!=this.className.indexOf("add-to-top")){c=a.addMenuItemToTop}d[j]=i.closest("li").getItemData("add-menu-item",j)});a.addItemToMenu(d,c,function(){g.removeAttr("checked");e.find(".spinner").hide()})})},getItemData:function(f,g){f=f||"menu-item";var d={},e,c=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"];if(!g&&f=="menu-item"){g=this.find(".menu-item-data-db-id").val()}if(!g){return d}this.find("input").each(function(){var h;e=c.length;while(e--){if(f=="menu-item"){h=c[e]+"["+g+"]"}else{if(f=="add-menu-item"){h="menu-item["+g+"]["+c[e]+"]"}}if(this.name&&h==this.name){d[c[e]]=this.value}}});return d},setItemData:function(c,d,e){d=d||"menu-item";if(!e&&d=="menu-item"){e=b(".menu-item-data-db-id",this).val()}if(!e){return this}this.find("input").each(function(){var f=b(this),g;b.each(c,function(h,i){if(d=="menu-item"){g=h+"["+e+"]"}else{if(d=="add-menu-item"){g="menu-item["+e+"]["+h+"]"}}if(g==f.attr("name")){f.val(i)}})});return this}})},countMenuItems:function(c){return b(".menu-item-depth-"+c).length},moveMenuItem:function(i,e){var f=b("#menu-to-edit li");menuItemsCount=f.length,thisItem=i.parents("li.menu-item"),thisItemChildren=thisItem.childMenuItems(),thisItemData=thisItem.getItemData(),thisItemDepth=parseInt(thisItem.menuItemDepth()),thisItemPosition=parseInt(thisItem.index()),c=thisItem.next(),g=c.childMenuItems(),nextItemDepth=parseInt(c.menuItemDepth())+1,prevItem=thisItem.prev(),prevItemDepth=parseInt(prevItem.menuItemDepth()),prevItemId=prevItem.getItemData()["menu-item-db-id"];switch(e){case"up":var h=thisItemPosition-1;if(0===thisItemPosition){break}if(0===h&&0!==thisItemDepth){thisItem.moveHorizontally(0,thisItemDepth)}if(0!==prevItemDepth){thisItem.moveHorizontally(prevItemDepth,thisItemDepth)}if(thisItemChildren){var d=thisItem.add(thisItemChildren);d.detach().insertBefore(f.eq(h)).updateParentMenuItemDBId()}else{thisItem.detach().insertBefore(f.eq(h)).updateParentMenuItemDBId()}break;case"down":if(thisItemChildren){var d=thisItem.add(thisItemChildren),c=f.eq(d.length+thisItemPosition),g=0!==c.childMenuItems().length;if(g){var j=parseInt(c.menuItemDepth())+1;thisItem.moveHorizontally(j,thisItemDepth)}if(menuItemsCount===thisItemPosition+d.length){break}d.detach().insertAfter(f.eq(thisItemPosition+d.length)).updateParentMenuItemDBId()}else{if(0!==g.length){thisItem.moveHorizontally(nextItemDepth,thisItemDepth)}if(menuItemsCount===thisItemPosition+1){break}thisItem.detach().insertAfter(f.eq(thisItemPosition+1)).updateParentMenuItemDBId()}break;case"top":if(0===thisItemPosition){break}if(thisItemChildren){var d=thisItem.add(thisItemChildren);d.detach().insertBefore(f.eq(0)).updateParentMenuItemDBId()}else{thisItem.detach().insertBefore(f.eq(0)).updateParentMenuItemDBId()}break;case"left":if(0===thisItemDepth){break}thisItem.shiftHorizontally(-1);break;case"right":if(0===thisItemPosition){break}if(thisItemData["menu-item-parent-id"]===prevItemId){break}thisItem.shiftHorizontally(1);break}i.focus();a.registerChange();a.refreshKeyboardAccessibility();a.refreshAdvancedAccessibility()},initAccessibility:function(){a.refreshKeyboardAccessibility();a.refreshAdvancedAccessibility();b(".menus-move-up").on("click",function(c){a.moveMenuItem(b(this).parents("li.menu-item").find("a.item-edit"),"up");c.preventDefault()});b(".menus-move-down").on("click",function(c){a.moveMenuItem(b(this).parents("li.menu-item").find("a.item-edit"),"down");c.preventDefault()});b(".menus-move-top").on("click",function(c){a.moveMenuItem(b(this).parents("li.menu-item").find("a.item-edit"),"top");c.preventDefault()});b(".menus-move-left").on("click",function(c){a.moveMenuItem(b(this).parents("li.menu-item").find("a.item-edit"),"left");c.preventDefault()});b(".menus-move-right").on("click",function(c){a.moveMenuItem(b(this).parents("li.menu-item").find("a.item-edit"),"right");c.preventDefault()})},refreshAdvancedAccessibility:function(){b(".menu-item-settings .field-move a").hide();b(".item-edit").each(function(){var j=b(this),p=[],v="",h=j.parents("li.menu-item").first(),u=h.menuItemDepth(),m=(0===u),s=j.parents(".menu-item-handle").find(".menu-item-title").text(),t=parseInt(h.index()),i=(m)?u:parseInt(u-1),d=h.prevAll(".menu-item-depth-"+i).first().find(".menu-item-title").text(),l=h.prevAll(".menu-item-depth-"+u).first().find(".menu-item-title").text(),k=b("#menu-to-edit li").length,q=h.nextAll(".menu-item-depth-"+u).length;if(0!==t){var f=h.find(".menus-move-up");f.prop("title",menus.moveUp).show()}if(0!==t&&m){var f=h.find(".menus-move-top");f.prop("title",menus.moveToTop).show()}if(t+1!==k&&0!==t){var f=h.find(".menus-move-down");f.prop("title",menus.moveDown).show()}if(0===t&&0!==q){var f=h.find(".menus-move-down");f.prop("title",menus.moveDown).show()}if(!m){var f=h.find(".menus-move-left"),e=menus.outFrom.replace("%s",d);f.prop("title",menus.moveOutFrom.replace("%s",d)).html(e).show()}if(0!==t){if(h.find(".menu-item-data-parent-id").val()!==h.prev().find(".menu-item-data-db-id").val()){var f=h.find(".menus-move-right"),e=menus.under.replace("%s",l);f.prop("title",menus.moveUnder.replace("%s",l)).html(e).show()}}if(m){var r=b(".menu-item-depth-0"),x=r.index(h)+1,k=r.length,w=menus.menuFocus.replace("%1$s",s).replace("%2$d",x).replace("%3$d",k)}else{var o=h.prevAll(".menu-item-depth-"+parseInt(u-1)).first(),c=o.find(".menu-item-data-db-id").val(),n=o.find(".menu-item-title").text(),g=b('.menu-item .menu-item-data-parent-id[value="'+c+'"]'),x=b(g.parents(".menu-item").get().reverse()).index(h)+1;w=menus.subMenuFocus.replace("%1$s",s).replace("%2$d",x).replace("%3$s",n)}j.prop("title",w).html(w)})},refreshKeyboardAccessibility:function(){b(".item-edit").off("focus").on("focus",function(){b(this).off("keydown").on("keydown",function(f){var d=b(this);if(37!=f.which&&38!=f.which&&39!=f.which&&40!=f.which){return}d.off("keydown");if(1===b("#menu-to-edit li").length){return}var c={"38":"up","40":"down","37":"left","39":"right"};if(b("body").hasClass("rtl")){c={"38":"up","40":"down","39":"left","37":"right"}}switch(c[f.which]){case"up":a.moveMenuItem(d,"up");break;case"down":a.moveMenuItem(d,"down");break;case"left":a.moveMenuItem(d,"left");break;case"right":a.moveMenuItem(d,"right");break}b("#edit-"+thisItemData["menu-item-db-id"]).focus();return false})})},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(c){b(".field-"+c).removeClass("hidden-field")};columns.unchecked=function(c){b(".field-"+c).addClass("hidden-field")};a.menuList.hideAdvancedMenuItemFields();b(".hide-postbox-tog").click(function(){var c=b(".accordion-container li.accordion-section").filter(":hidden").map(function(){return this.id}).get().join(",");b.post(ajaxurl,{action:"closed-postboxes",hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:"nav-menus"})})},initSortables:function(){var p=0,e,t,d,l,o,f,c,i,s,m=a.menuList.offset().left,h=b("body"),q,n=r();if(0!=b("#menu-to-edit li").length){b(".drag-instructions").show()}m+=a.isRTL?a.menuList.width():0;a.menuList.sortable({handle:".menu-item-handle",placeholder:"sortable-placeholder",start:function(A,z){var u,x,w,v,y;if(a.isRTL){z.item[0].style.right="auto"}s=z.item.children(".menu-item-transport");e=z.item.menuItemDepth();j(z,e);w=(z.item.next()[0]==z.placeholder[0])?z.item.next():z.item;v=w.childMenuItems();s.append(v);u=s.outerHeight();u+=(u>0)?(z.placeholder.css("margin-top").slice(0,-2)*1):0;u+=z.helper.outerHeight();i=u;u-=2;z.placeholder.height(u);q=e;v.each(function(){var B=b(this).menuItemDepth();q=(B>q)?B:q});x=z.helper.find(".menu-item-handle").outerWidth();x+=a.depthToPx(q-e);x-=2;z.placeholder.width(x);y=z.placeholder.next();y.css("margin-top",i+"px");z.placeholder.detach();b(this).sortable("refresh");z.item.after(z.placeholder);y.css("margin-top",0);k(z)},stop:function(y,w){var v,u=p-e;v=s.children().insertAfter(w.item);var x=w.item.find(".item-title .is-submenu");if(0<p){x.show()}else{x.hide()}if(u!=0){w.item.updateDepthClass(p);v.shiftDepthClass(u);g(u)}a.registerChange();w.item.updateParentMenuItemDBId();w.item[0].style.top=0;if(a.isRTL){w.item[0].style.left="auto";w.item[0].style.right=0}a.refreshKeyboardAccessibility();a.refreshAdvancedAccessibility()},change:function(v,u){if(!u.placeholder.parent().hasClass("menu")){(l.length)?l.after(u.placeholder):a.menuList.prepend(u.placeholder)}k(u)},sort:function(w,v){var y=v.helper.offset(),u=a.isRTL?y.left+v.helper.width():y.left,x=a.negateIfRTL*a.pxToDepth(u-m);if(x>d||y.top<f){x=d}else{if(x<t){x=t}}if(x!=p){j(v,x)}if(c&&y.top+i>c){o.after(v.placeholder);k(v);b(this).sortable("refreshPositions")}}});function k(u){var v;l=u.placeholder.prev();o=u.placeholder.next();if(l[0]==u.item[0]){l=l.prev()}if(o[0]==u.item[0]){o=o.next()}f=(l.length)?l.offset().top+l.height():0;c=(o.length)?o.offset().top+o.height()/3:0;t=(o.length)?o.menuItemDepth():0;if(l.length){d=((v=l.menuItemDepth()+1)>a.options.globalMaxDepth)?a.options.globalMaxDepth:v}else{d=0}}function j(u,v){u.placeholder.updateDepthClass(v,p);p=v}function r(){if(!h[0].className){return 0}var u=h[0].className.match(/menu-max-depth-(\d+)/);return u&&u[1]?parseInt(u[1]):0}function g(u){var v,w=n;if(u===0){return}else{if(u>0){v=q+u;if(v>n){w=v}}else{if(u<0&&q==n){while(!b(".menu-item-depth-"+w,a.menuList).length&&w>0){w--}}}}h.removeClass("menu-max-depth-"+n).addClass("menu-max-depth-"+w);n=w}},initManageLocations:function(){b("#menu-locations-wrap form").submit(function(){window.onbeforeunload=null});b(".menu-location-menus select").on("change",function(){var c=b(this).closest("tr").find(".locations-edit-menu-link");if(b(this).find("option:selected").data("orig")){c.show()}else{c.hide()}})},attachMenuEditListeners:function(){var c=this;b("#update-nav-menu").bind("click",function(d){if(d.target&&d.target.className){if(-1!=d.target.className.indexOf("item-edit")){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf("menu-save")){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf("menu-delete")){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-delete")){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf("item-cancel")){return c.eventOnClickCancelLink(d.target)}}}}}}});b('#add-custom-links input[type="text"]').keypress(function(d){if(d.keyCode===13){d.preventDefault();b("#submit-customlinkdiv").click()}})},setupInputWithDefaultTitle:function(){var c="input-with-default-title";b("."+c).each(function(){var f=b(this),e=f.attr("title"),d=f.val();f.data(c,e);if(""==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val("").removeClass(c)}}).blur(function(){var d=b(this);if(""==d.val()){d.addClass(c).val(d.data(c))}});b(".blank-slate .input-with-default-title").focus()},attachThemeLocationsListeners:function(){var d=b("#nav-menu-theme-locations"),c={};c.action="menu-locations-save";c["menu-settings-column-nonce"]=b("#menu-settings-column-nonce").val();d.find('input[type="submit"]').click(function(){d.find("select").each(function(){c[this.name]=b(this).val()});d.find(".spinner").show();b.post(ajaxurl,c,function(e){d.find(".spinner").hide()});return false})},attachQuickSearchListeners:function(){var c;b(".quick-search").keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr("autocomplete","off")},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length<e){return}c=d.parents(".tabs-panel");g={action:"menu-quick-search","response-format":"markup",menu:b("#menu").val(),"menu-settings-column-nonce":b("#menu-settings-column-nonce").val(),q:f,type:d.attr("name")};b(".spinner",c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b("#custom-menu-item-url").val(),d=b("#custom-menu-item-name").val();c=c||a.addMenuItemToBottom;if(""==e||"http://"==e){return false}b(".customlinkdiv .spinner").show();this.addLinkToMenu(e,d,c,function(){b(".customlinkdiv .spinner").hide();b("#custom-menu-item-name").val("").blur();b("#custom-menu-item-url").val("http://")})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({"-1":{"menu-item-type":"custom","menu-item-url":e,"menu-item-title":d}},c,f)},addItemToMenu:function(e,c,g){var f=b("#menu").val(),d=b("#menu-settings-column-nonce").val();c=c||function(){};g=g||function(){};params={action:"add-menu-item",menu:f,"menu-settings-column-nonce":d,"menu-item":e};b.post(ajaxurl,params,function(h){var i=b("#menu-instructions");c(h,params);b("li.pending").hide().fadeIn("slow");b(".drag-instructions").show();if(!i.hasClass("menu-instructions-inactive")&&i.siblings().length){i.addClass("menu-instructions-inactive")}g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList);a.refreshKeyboardAccessibility();a.refreshAdvancedAccessibility()},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList);a.refreshKeyboardAccessibility();a.refreshAdvancedAccessibility()},attachUnsavedChangesListener:function(){b("#menu-management input, #menu-management select, #menu-management, #menu-management textarea, .menu-location-menus select").change(function(){a.registerChange()});if(0!=b("#menu-to-edit").length||0!=b(".menu-location-menus select").length){window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}}}else{b("#menu-settings-column").find("input,select").end().find("a").attr("href","#").unbind("click")}},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b("#menu-settings-column").bind("click",function(h){var f,d,i,c,g=b(h.target);if(g.hasClass("nav-tab-link")){d=g.data("type");i=g.parents(".accordion-section-content").first();b("input",i).removeAttr("checked");b(".tabs-panel-active",i).removeClass("tabs-panel-active").addClass("tabs-panel-inactive");b("#"+d,i).removeClass("tabs-panel-inactive").addClass("tabs-panel-active");b(".tabs",i).removeClass("tabs");g.parent().addClass("tabs");b(".quick-search",i).focus();h.preventDefault()}else{if(g.hasClass("select-all")){f=/#(.*)$/.exec(h.target.href);if(f&&f[1]){c=b("#"+f[1]+" .tabs-panel-active .menu-item-title input");if(c.length===c.filter(":checked").length){c.removeAttr("checked")}else{c.prop("checked",true)}return false}}else{if(g.hasClass("submit-add-to-menu")){a.registerChange();if(h.target.id&&"submit-customlinkdiv"==h.target.id){a.addCustomLink(a.addMenuItemToBottom)}else{if(h.target.id&&-1!=h.target.id.indexOf("submit-")){b("#"+h.target.id.replace(/submit-/,"")).addSelectedToMenu(a.addMenuItemToBottom)}}return false}else{if(g.hasClass("page-numbers")){b.post(ajaxurl,h.target.href.replace(/.*\?/,"").replace(/action=([^&]*)/,"")+"&action=menu-get-metabox",function(m){if(-1==m.indexOf("replace-id")){return}var l=b.parseJSON(m),e=document.getElementById(l["replace-id"]),k=document.createElement("div"),j=document.createElement("div");if(!l.markup||!e){return}j.innerHTML=l.markup?l.markup:"";e.parentNode.insertBefore(k,e);k.parentNode.removeChild(e);k.parentNode.insertBefore(j,k);k.parentNode.removeChild(k)});return false}}}}})},eventOnClickEditLink:function(d){var c,e,f=/#(.*)$/.exec(d.href);if(f&&f[1]){c=b("#"+f[1]);e=c.parent();if(0!=e.length){if(e.hasClass("menu-item-edit-inactive")){if(!c.data("menu-item-data")){c.data("menu-item-data",c.getItemData())}c.slideDown("fast");e.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{c.slideUp("fast");e.removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCancelLink:function(e){var d=b(e).closest(".menu-item-settings"),c=b(e).closest(".menu-item");c.removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive");d.setItemData(d.data("menu-item-data")).hide();return false},eventOnClickMenuSave:function(e){var f="",c=b("#menu-name"),d=c.val();if(!d||d==c.attr("title")||!d.replace(/\s+/,"")){c.parent().addClass("form-invalid");return false}b("#nav-menu-theme-locations select").each(function(){f+='<input type="hidden" name="'+this.name+'" value="'+b(this).val()+'" />'});b("#update-nav-menu").append(f);a.menuList.find(".menu-item-data-position").val(function(g){return g+1});window.onbeforeunload=null;return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){window.onbeforeunload=null;return true}return false},eventOnClickMenuItemDelete:function(c){var d=parseInt(c.id.replace("delete-",""),10);a.removeMenuItem(b("#menu-item-"+d));a.registerChange();return false},processQuickSearchQueryResponse:function(g,k,c){var e,i,f={},d=document.getElementById("nav-menu-meta"),j=new RegExp("menu-item\\[([^\\]]*)","g"),h=b("<div>").html(g).find("li"),l;if(!h.length){b(".categorychecklist",c).html("<li><p>"+navMenuL10n.noResultsFound+"</p></li>");b(".spinner",c).hide();return}h.each(function(){l=b(this);e=j.exec(l.html());if(e&&e[1]){i=e[1];while(d.elements["menu-item["+i+"][menu-item-type]"]||f[i]){i--}f[i]=true;if(i!=e[1]){l.html(l.html().replace(new RegExp("menu-item\\["+e[1]+"\\]","g"),"menu-item["+i+"]"))}}});b(".categorychecklist",c).html(h);b(".spinner",c).hide()},removeMenuItem:function(d){var c=d.childMenuItems();d.addClass("deleting").animate({opacity:0,height:0},350,function(){var e=b("#menu-instructions");d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId();if(0==b("#menu-to-edit li").length){b(".drag-instructions").hide();e.removeClass("menu-instructions-inactive")}})},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/plugin-install.js b/wp-admin/js/plugin-install.js
index f32574abd..26e9982e2 100644
--- a/wp-admin/js/plugin-install.js
+++ b/wp-admin/js/plugin-install.js
@@ -27,7 +27,7 @@ jQuery(document).ready(function($) {
 
 	$(window).resize(function(){ tb_position(); });
 
-	 $('#dashboard_plugins a.thickbox, .plugins a.thickbox').click( function() {
+	$('#dashboard_plugins, .plugins').on( 'click', 'a.thickbox', function() {
 		tb_click.call(this);
 
 		$('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
diff --git a/wp-admin/js/plugin-install.min.js b/wp-admin/js/plugin-install.min.js
index 4d73265c8..4c461e5c9 100644
--- a/wp-admin/js/plugin-install.min.js
+++ b/wp-admin/js/plugin-install.min.js
@@ -1 +1 @@
-var tb_position;jQuery(document).ready(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a("#dashboard_plugins a.thickbox, .plugins a.thickbox").click(function(){tb_click.call(this);a("#TB_title").css({"background-color":"#222",color:"#cfcfcf"});a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).attr("title"));return false});a("#plugin-information #sidemenu a").click(function(){var b=a(this).attr("name");a("#plugin-information-header a.current").removeClass("current");a(this).addClass("current");a("#section-holder div.section").hide();a("#section-"+b).show();return false});a("a.install-now").click(function(){return confirm(plugininstallL10n.ays)})});
\ No newline at end of file
+var tb_position;jQuery(document).ready(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a("#dashboard_plugins, .plugins").on("click","a.thickbox",function(){tb_click.call(this);a("#TB_title").css({"background-color":"#222",color:"#cfcfcf"});a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).attr("title"));return false});a("#plugin-information #sidemenu a").click(function(){var b=a(this).attr("name");a("#plugin-information-header a.current").removeClass("current");a(this).addClass("current");a("#section-holder div.section").hide();a("#section-"+b).show();return false});a("a.install-now").click(function(){return confirm(plugininstallL10n.ays)})});
\ No newline at end of file
diff --git a/wp-admin/js/post.js b/wp-admin/js/post.js
index 98b7942ab..7b7d4c394 100644
--- a/wp-admin/js/post.js
+++ b/wp-admin/js/post.js
@@ -251,13 +251,126 @@ WPRemoveThumbnail = function(nonce){
 	);
 };
 
-})(jQuery);
+$(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
+	var lock = $('#active_post_lock').val(),
+		post_id = $('#post_ID').val(),
+		send = {};
+
+	if ( ! post_id || ! $('#post-lock-dialog').length )
+		return;
+
+	send['post_id'] = post_id;
+
+	if ( lock )
+		send['lock'] = lock;
+
+	data['wp-refresh-post-lock'] = send;
+});
+
+// Post locks: update the lock string or show the dialog if somebody has taken over editing
+$(document).on( 'heartbeat-tick.refresh-lock', function( e, data ) {
+	var received, wrap, avatar;
+
+	if ( data['wp-refresh-post-lock'] ) {
+		received = data['wp-refresh-post-lock'];
+
+		if ( received.lock_error ) {
+			// show "editing taken over" message
+			wrap = $('#post-lock-dialog');
+
+			if ( wrap.length && ! wrap.is(':visible') ) {
+				if ( typeof autosave == 'function' ) {
+					$(document).on('autosave-disable-buttons.post-lock', function() {
+						wrap.addClass('saving');
+					}).on('autosave-enable-buttons.post-lock', function() {
+						wrap.removeClass('saving').addClass('saved');
+						window.onbeforeunload = null;
+					});
+
+					// Save the latest changes and disable
+					if ( ! autosave() )
+						window.onbeforeunload = null;
+
+					autosave = function(){};
+				}
+
+				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, '&') );
+					wrap.find('div.post-locked-avatar').empty().append( avatar );
+				}
+
+				wrap.show().find('.currently-editing').text( received.lock_error.text );
+				wrap.find('.wp-tab-first').focus();
+			}
+		} else if ( received.new_lock ) {
+			$('#active_post_lock').val( received.new_lock );
+		}
+	}
+});
+
+}(jQuery));
+
+(function($) {
+	var check, timeout;
+
+	function schedule() {
+		check = false;
+		window.clearTimeout( timeout );
+		timeout = window.setTimeout( function(){ check = true; }, 300000 );
+	}
+
+	$(document).on( 'heartbeat-send.wp-refresh-nonces', function( e, data ) {
+		var nonce, post_id;
+
+		if ( check ) {
+			if ( ( post_id = $('#post_ID').val() ) && ( nonce = $('#_wpnonce').val() ) ) {
+				data['wp-refresh-post-nonces'] = {
+					post_id: post_id,
+					post_nonce: nonce
+				};
+			}
+		}
+	}).on( 'heartbeat-tick.wp-refresh-nonces', function( e, data ) {
+		var nonces = data['wp-refresh-post-nonces'];
+
+		if ( nonces ) {
+			schedule();
+
+			if ( nonces.replace ) {
+				$.each( nonces.replace, function( selector, value ) {
+					$( '#' + selector ).val( value );
+				});
+			}
+
+			if ( nonces.heartbeatNonce )
+				window.heartbeatSettings.nonce = nonces.heartbeatNonce;
+		}
+	}).ready( function() {
+		schedule();
+	});
+}(jQuery));
 
 jQuery(document).ready( function($) {
 	var stamp, visibility, sticky = '', last = 0, co = $('#content');
 
 	postboxes.add_postbox_toggles(pagenow);
 
+	// Post locks: contain focus inside the dialog. If the dialog is shown, focus the first item.
+	$('#post-lock-dialog .notification-dialog').on( 'keydown', function(e) {
+		if ( e.which != 9 )
+			return;
+
+		var target = $(e.target);
+
+		if ( target.hasClass('wp-tab-first') && e.shiftKey ) {
+			$(this).find('.wp-tab-last').focus();
+			e.preventDefault();
+		} else if ( target.hasClass('wp-tab-last') && ! e.shiftKey ) {
+			$(this).find('.wp-tab-first').focus();
+			e.preventDefault();
+		}
+	}).filter(':visible').find('.wp-tab-first').focus();
+
 	// multi-taxonomies
 	if ( $('#tagsdiv-post_tag').length ) {
 		tagBox.init();
@@ -272,7 +385,7 @@ jQuery(document).ready( function($) {
 
 	// categories
 	$('.categorydiv').each( function(){
-		var this_id = $(this).attr('id'), noSyncChecks = false, syncChecks, catAddAfter, taxonomyParts, taxonomy, settingName;
+		var this_id = $(this).attr('id'), catAddBefore, catAddAfter, taxonomyParts, taxonomy, settingName;
 
 		taxonomyParts = this_id.split('-');
 		taxonomyParts.shift();
@@ -302,21 +415,12 @@ jQuery(document).ready( function($) {
 
 		$('#new' + taxonomy).keypress( function(event){
 			if( 13 === event.keyCode ) {
-				 event.preventDefault();
-				 $('#' + taxonomy + '-add-submit').click();
+				event.preventDefault();
+				$('#' + taxonomy + '-add-submit').click();
 			}
 		});
 		$('#' + taxonomy + '-add-submit').click( function(){ $('#new' + taxonomy).focus(); });
 
-		syncChecks = function() {
-			if ( noSyncChecks )
-				return;
-			noSyncChecks = true;
-			var th = jQuery(this), c = th.is(':checked'), id = th.val().toString();
-			$('#in-' + taxonomy + '-' + id + ', #in-' + taxonomy + '-category-' + id).prop( 'checked', c );
-			noSyncChecks = false;
-		};
-
 		catAddBefore = function( s ) {
 			if ( !$('#new'+taxonomy).val() )
 				return false;
@@ -349,7 +453,7 @@ jQuery(document).ready( function($) {
 			return false;
 		});
 
-		$('#' + taxonomy + 'checklist li.popular-category input[type="checkbox"], #' + taxonomy + 'checklist-pop input[type="checkbox"]').live( 'click', function(){
+		$('#' + taxonomy + 'checklist, #' + taxonomy + 'checklist-pop').on( 'click', 'li.popular-category > label input[type="checkbox"]', function() {
 			var t = $(this), c = t.is(':checked'), id = t.val();
 			if ( id && t.parents('#taxonomy-'+taxonomy).length )
 				$('#in-' + taxonomy + '-' + id + ', #in-popular-' + taxonomy + '-' + id).prop( 'checked', c );
@@ -423,11 +527,12 @@ jQuery(document).ready( function($) {
 			} else {
 				$('#timestamp').html(
 					publishOn + ' <b>' +
-					$('option[value="' + $('#mm').val() + '"]', '#mm').text() + ' ' +
-					jj + ', ' +
-					aa + ' @ ' +
-					hh + ':' +
-					mn + '</b> '
+					postL10n.dateFormat.replace( '%1$s', $('option[value="' + $('#mm').val() + '"]', '#mm').text() )
+						.replace( '%2$s', jj )
+						.replace( '%3$s', aa )
+						.replace( '%4$s', hh )
+						.replace( '%5$s', mn )
+					+ '</b> '
 				);
 			}
 
@@ -478,7 +583,7 @@ jQuery(document).ready( function($) {
 		$('.cancel-post-visibility', '#post-visibility-select').click(function () {
 			$('#post-visibility-select').slideUp('fast');
 			$('#visibility-radio-' + $('#hidden-post-visibility').val()).prop('checked', true);
-			$('#post_password').val($('#hidden_post_password').val());
+			$('#post_password').val($('#hidden-post-password').val());
 			$('#sticky').prop('checked', $('#hidden-post-sticky').prop('checked'));
 			$('#post-visibility-display').html(visibility);
 			$('.edit-visibility', '#visibility').show();
@@ -593,7 +698,13 @@ jQuery(document).ready( function($) {
 					new_title: $('#title').val(),
 					samplepermalinknonce: $('#samplepermalinknonce').val()
 				}, function(data) {
-					$('#edit-slug-box').html(data);
+					var box = $('#edit-slug-box');
+					box.html(data);
+					if (box.hasClass('hidden')) {
+						box.fadeIn('fast', function () {
+							box.removeClass('hidden');
+						});
+					}
 					b.html(revert_b);
 					real_slug.val(new_slug);
 					makeSlugeditClickable();
@@ -616,7 +727,7 @@ 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){
+			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 ) {
@@ -627,6 +738,7 @@ jQuery(document).ready( function($) {
 					b.children('.cancel').click();
 					return false;
 				}
+			}).keyup(function(e) {
 				real_slug.val(this.value);
 			}).focus();
 		}
@@ -790,5 +902,20 @@ jQuery(document).ready( function($) {
 				});
 			});
 		});
+
+		// When changing post formats, change the editor body class
+		$('#post-formats-select input.post-format').on( 'change.set-editor-class', function( event ) {
+			var editor, body, format = this.id;
+
+			if ( format && $( this ).prop('checked') ) {
+				editor = tinymce.get( 'content' );
+
+				if ( editor ) {
+					body = editor.getBody();
+					body.className = body.className.replace( /\bpost-format-[^ ]+/, '' );
+					editor.dom.addClass( body, format == 'post-format-0' ? 'post-format-standard' : format );
+				}
+			}
+		});
 	}
 });
diff --git a/wp-admin/js/post.min.js b/wp-admin/js/post.min.js
index 2fa2b0ca4..921278a19 100644
--- a/wp-admin/js/post.min.js
+++ b/wp-admin/js/post.min.js
@@ -1 +1 @@
-var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}(function(a){tagBox={clean:function(c){var b=postL10n.comma;if(","!==b){c=c.replace(new RegExp(b,"g"),",")}c=c.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");if(","!==b){c=c.replace(/,/g,b)}return c},parseTags:function(f){var i=f.id,c=i.split("-check-num-")[1],e=a(f).closest(".tagsdiv"),h=e.find(".the-tags"),b=postL10n.comma,d=h.val().split(b),g=[];delete d[c];a.each(d,function(j,k){k=a.trim(k);if(k){g.push(k)}});h.val(this.clean(g.join(b)));this.quickClicks(e);return false},quickClicks:function(d){var g=a(".the-tags",d),e=a(".tagchecklist",d),f=a(d).attr("id"),b,c;if(!g.length){return}c=g.prop("disabled");b=g.val().split(postL10n.comma);e.empty();a.each(b,function(i,k){var j,h;k=a.trim(k);if(!k){return}j=a("<span />").text(k);if(!c){h=a('<a id="'+f+"-check-num-"+i+'" class="ntdelbutton">X</a>');h.click(function(){tagBox.parseTags(this)});j.prepend("&nbsp;").prepend(h)}e.append(j)})},flushTags:function(g,c,h){c=c||false;var d=a(".the-tags",g),j=a("input.newtag",g),b=postL10n.comma,e,i;i=c?a(c).text():j.val();tagsval=d.val();e=tagsval?tagsval+b+i:i;e=this.clean(e);e=array_unique_noempty(e.split(b)).join(b);d.val(e);this.quickClicks(g);if(!c){j.val("")}if("undefined"==typeof(h)){j.focus()}return false},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){tagBox.flushTags(a(this).closest(".inside").children(".tagsdiv"),this);return false});a("#"+c).after(e)})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)});a("input.tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))});a("div.taghint",c).click(function(){a(this).css("visibility","hidden").parent().siblings(".newtag").focus()});a("input.newtag",c).blur(function(){if(this.value==""){a(this).parent().siblings(".taghint").css("visibility","")}}).focus(function(){a(this).parent().siblings(".taghint").css("visibility","hidden")}).keyup(function(d){if(13==d.which){tagBox.flushTags(a(this).closest(".tagsdiv"));return false}}).keypress(function(d){if(13==d.which){d.preventDefault();return false}}).each(function(){var d=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+d,{delay:500,minchars:2,multiple:true,multipleSep:postL10n.comma+" "})});a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1)})});a("a.tagcloud-link").click(function(){tagBox.get(a(this).attr("id"));a(this).unbind().click(function(){a(this).siblings(".the-tagcloud").toggle();return false});return false})}};commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv .spinner").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:b,number:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv .spinner").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").show().children("a").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")});return false}};WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)};WPSetThumbnailID=function(c){var b=a('input[value="_thumbnail_id"]',"#list-table");if(b.size()>0){a("#meta\\["+b.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(c)}};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(c){if(c=="0"){alert(setPostThumbnailL10n.error)}else{WPSetThumbnailHTML(c)}})}})(jQuery);jQuery(document).ready(function(f){var b,a,g="",e=0,h=f("#content");postboxes.add_postbox_toggles(pagenow);if(f("#tagsdiv-post_tag").length){tagBox.init()}else{f("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false}})}f(".categorydiv").each(function(){var n=f(this).attr("id"),j=false,m,o,l,i,k;l=n.split("-");l.shift();i=l.join("-");k=i+"_tab";if(i=="category"){k="cats"}f("a","#"+i+"-tabs").click(function(){var p=f(this).attr("href");f(this).parent().addClass("tabs").siblings("li").removeClass("tabs");f("#"+i+"-tabs").siblings(".tabs-panel").hide();f(p).show();if("#"+i+"-all"==p){deleteUserSetting(k)}else{setUserSetting(k,"pop")}return false});if(getUserSetting(k)){f('a[href="#'+i+'-pop"]',"#"+i+"-tabs").click()}f("#new"+i).one("focus",function(){f(this).val("").removeClass("form-input-tip")});f("#new"+i).keypress(function(p){if(13===p.keyCode){p.preventDefault();f("#"+i+"-add-submit").click()}});f("#"+i+"-add-submit").click(function(){f("#new"+i).focus()});m=function(){if(j){return}j=true;var p=jQuery(this),r=p.is(":checked"),q=p.val().toString();f("#in-"+i+"-"+q+", #in-"+i+"-category-"+q).prop("checked",r);j=false};catAddBefore=function(p){if(!f("#new"+i).val()){return false}p.data+="&"+f(":checked","#"+i+"checklist").serialize();f("#"+i+"-add-submit").prop("disabled",true);return p};o=function(u,t){var q,p=f("#new"+i+"_parent");f("#"+i+"-add-submit").prop("disabled",false);if("undefined"!=t.parsed.responses[0]&&(q=t.parsed.responses[0].supplemental.newcat_parent)){p.before(q);p.remove()}};f("#"+i+"checklist").wpList({alt:"",response:i+"-ajax-response",addBefore:catAddBefore,addAfter:o});f("#"+i+"-add-toggle").click(function(){f("#"+i+"-adder").toggleClass("wp-hidden-children");f('a[href="#'+i+'-all"]',"#"+i+"-tabs").click();f("#new"+i).focus();return false});f("#"+i+'checklist li.popular-category input[type="checkbox"], #'+i+'checklist-pop input[type="checkbox"]').live("click",function(){var p=f(this),r=p.is(":checked"),q=p.val();if(q&&p.parents("#taxonomy-"+i).length){f("#in-"+i+"-"+q+", #in-popular-"+i+"-"+q).prop("checked",r)}})});if(f("#postcustom").length){f("#the-list").wpList({addAfter:function(i,j){f("table#list-table").show()},addBefore:function(i){i.data+="&post_id="+f("#post_ID").val();return i}})}if(f("#submitdiv").length){b=f("#timestamp").html();a=f("#post-visibility-display").html();function d(){var i=f("#post-visibility-select");if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false);f("#sticky-span").hide()}else{f("#sticky-span").show()}if(f("input:radio:checked",i).val()!="password"){f("#password-span").hide()}else{f("#password-span").show()}}function c(){if(!f("#timestampdiv").length){return true}var p,q,j,s,r=f("#post_status"),k=f('option[value="publish"]',r),i=f("#aa").val(),n=f("#mm").val(),o=f("#jj").val(),m=f("#hh").val(),l=f("#mn").val();p=new Date(i,n-1,o,m,l);q=new Date(f("#hidden_aa").val(),f("#hidden_mm").val()-1,f("#hidden_jj").val(),f("#hidden_hh").val(),f("#hidden_mn").val());j=new Date(f("#cur_aa").val(),f("#cur_mm").val()-1,f("#cur_jj").val(),f("#cur_hh").val(),f("#cur_mn").val());if(p.getFullYear()!=i||(1+p.getMonth())!=n||p.getDate()!=o||p.getMinutes()!=l){f(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{f(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}if(p>j&&f("#original_post_status").val()!="future"){s=postL10n.publishOnFuture;f("#publish").val(postL10n.schedule)}else{if(p<=j&&f("#original_post_status").val()!="publish"){s=postL10n.publishOn;f("#publish").val(postL10n.publish)}else{s=postL10n.publishOnPast;f("#publish").val(postL10n.update)}}if(q.toUTCString()==p.toUTCString()){f("#timestamp").html(b)}else{f("#timestamp").html(s+" <b>"+f('option[value="'+f("#mm").val()+'"]',"#mm").text()+" "+o+", "+i+" @ "+m+":"+l+"</b> ")}if(f("input:radio:checked","#post-visibility-select").val()=="private"){f("#publish").val(postL10n.update);if(k.length==0){r.append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}else{k.html(postL10n.privatelyPublished)}f('option[value="publish"]',r).prop("selected",true);f(".edit-post-status","#misc-publishing-actions").hide()}else{if(f("#original_post_status").val()=="future"||f("#original_post_status").val()=="draft"){if(k.length){k.remove();r.val(f("#hidden_post_status").val())}}else{k.html(postL10n.published)}if(r.is(":hidden")){f(".edit-post-status","#misc-publishing-actions").show()}}f("#post-status-display").html(f("option:selected",r).text());if(f("option:selected",r).val()=="private"||f("option:selected",r).val()=="publish"){f("#save-post").hide()}else{f("#save-post").show();if(f("option:selected",r).val()=="pending"){f("#save-post").show().val(postL10n.savePending)}else{f("#save-post").show().val(postL10n.saveDraft)}}return true}f(".edit-visibility","#visibility").click(function(){if(f("#post-visibility-select").is(":hidden")){d();f("#post-visibility-select").slideDown("fast");f(this).hide()}return false});f(".cancel-post-visibility","#post-visibility-select").click(function(){f("#post-visibility-select").slideUp("fast");f("#visibility-radio-"+f("#hidden-post-visibility").val()).prop("checked",true);f("#post_password").val(f("#hidden_post_password").val());f("#sticky").prop("checked",f("#hidden-post-sticky").prop("checked"));f("#post-visibility-display").html(a);f(".edit-visibility","#visibility").show();c();return false});f(".save-post-visibility","#post-visibility-select").click(function(){var i=f("#post-visibility-select");i.slideUp("fast");f(".edit-visibility","#visibility").show();c();if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false)}if(true==f("#sticky").prop("checked")){g="Sticky"}else{g=""}f("#post-visibility-display").html(postL10n[f("input:radio:checked",i).val()+g]);return false});f("input:radio","#post-visibility-select").change(function(){d()});f("#timestampdiv").siblings("a.edit-timestamp").click(function(){if(f("#timestampdiv").is(":hidden")){f("#timestampdiv").slideDown("fast");f("#mm").focus();f(this).hide()}return false});f(".cancel-timestamp","#timestampdiv").click(function(){f("#timestampdiv").slideUp("fast");f("#mm").val(f("#hidden_mm").val());f("#jj").val(f("#hidden_jj").val());f("#aa").val(f("#hidden_aa").val());f("#hh").val(f("#hidden_hh").val());f("#mn").val(f("#hidden_mn").val());f("#timestampdiv").siblings("a.edit-timestamp").show();c();return false});f(".save-timestamp","#timestampdiv").click(function(){if(c()){f("#timestampdiv").slideUp("fast");f("#timestampdiv").siblings("a.edit-timestamp").show()}return false});f("#post").on("submit",function(i){if(!c()){i.preventDefault();f("#timestampdiv").show();f("#publishing-action .spinner").hide();f("#publish").prop("disabled",false).removeClass("button-primary-disabled");return false}});f("#post-status-select").siblings("a.edit-post-status").click(function(){if(f("#post-status-select").is(":hidden")){f("#post-status-select").slideDown("fast");f(this).hide()}return false});f(".save-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post-status-select").siblings("a.edit-post-status").show();c();return false});f(".cancel-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post_status").val(f("#hidden_post_status").val());f("#post-status-select").siblings("a.edit-post-status").show();c();return false})}if(f("#edit-slug-box").length){editPermalink=function(j){var k,n=0,m=f("#editable-post-name"),o=m.html(),r=f("#post_name"),s=r.val(),p=f("#edit-slug-buttons"),q=p.html(),l=f("#editable-post-name-full").html();f("#view-post-btn").hide();p.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");p.children(".save").click(function(){var i=m.children("input").val();if(i==f("#editable-post-name-full").text()){return f(".cancel","#edit-slug-buttons").click()}f.post(ajaxurl,{action:"sample-permalink",post_id:j,new_slug:i,new_title:f("#title").val(),samplepermalinknonce:f("#samplepermalinknonce").val()},function(t){f("#edit-slug-box").html(t);p.html(q);r.val(i);makeSlugeditClickable();f("#view-post-btn").show()});return false});f(".cancel","#edit-slug-buttons").click(function(){f("#view-post-btn").show();m.html(o);p.html(q);r.val(s);return false});for(k=0;k<l.length;++k){if("%"==l.charAt(k)){n++}}slug_value=(n>l.length/4)?"":l;m.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(t){var i=t.keyCode||0;if(13==i){p.children(".save").click();return false}if(27==i){p.children(".cancel").click();return false}r.val(this.value)}).focus()};makeSlugeditClickable=function(){f("#editable-post-name").click(function(){f("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()}if(typeof(wpWordCount)!="undefined"){f(document).triggerHandler("wpcountwords",[h.val()]);h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==e){return true}if(13==i||8==e||46==e){f(document).triggerHandler("wpcountwords",[h.val()])}e=i;return true})}wptitlehint=function(k){k=k||"title";var i=f("#"+k),j=f("#"+k+"-prompt-text");if(i.val()==""){j.removeClass("screen-reader-text")}j.click(function(){f(this).addClass("screen-reader-text");i.focus()});i.blur(function(){if(this.value==""){j.removeClass("screen-reader-text")}}).focus(function(){j.addClass("screen-reader-text")}).keydown(function(l){j.addClass("screen-reader-text");f(this).unbind(l)})};wptitlehint();(function(){var i=f("textarea#content"),l=null,j;if(!i.length||"ontouchstart" in window){return}function k(n){i.height(Math.max(50,l+n.pageY)+"px");return false}function m(o){var n;i.focus();f(document).unbind("mousemove",k).unbind("mouseup",m);n=parseInt(i.css("height"),10);if(n&&n>50&&n<5000){setUserSetting("ed_size",n)}}i.css("resize","none");j=f('<div id="content-resize-handle"><br></div>');f("#wp-content-wrap").append(j);j.on("mousedown",function(n){l=i.height()-n.pageY;i.blur();f(document).mousemove(k).mouseup(m);return false})})();if(typeof(tinymce)!="undefined"){tinymce.onAddEditor.add(function(i,j){if(j.id!="content"||tinymce.isIOS5){return}function k(){var l,m=document.getElementById("content_ifr"),o=m?parseInt(m.style.height,10):0,n=f("#content_tbl tr.mceFirst").height();if(!o||!n){return false}l=o+n+21;l-=33;return l}j.onLoadContent.add(function(m,q){var r,n=document.getElementById("content"),l=n?parseInt(n.style.height,10):0,p=f("#content_tbl tr.mceFirst").height()||33;if(!l||l<50||l>5000){l=360}if(getUserSetting("ed_size")>5000){setUserSetting("ed_size",360)}r=(l-p)+12;if(r>50&&r<5000){f("#content_tbl").css("height","");f("#content_ifr").css("height",r+"px")}});j.onSaveContent.add(function(m,n){var l=k();if(!l||l<50||l>5000){return}f("textarea#content").css("height",l+"px")});j.onPostRender.add(function(){f("#content_resize").on("mousedown.wp-mce-resize",function(l){f(document).on("mouseup.wp-mce-resize",function(n){var m;f(document).off("mouseup.wp-mce-resize");m=k();if(m&&m>50&&m<5000){setUserSetting("ed_size",m)}})})})})}});
\ No newline at end of file
+var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}(function(a){tagBox={clean:function(c){var b=postL10n.comma;if(","!==b){c=c.replace(new RegExp(b,"g"),",")}c=c.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");if(","!==b){c=c.replace(/,/g,b)}return c},parseTags:function(f){var i=f.id,c=i.split("-check-num-")[1],e=a(f).closest(".tagsdiv"),h=e.find(".the-tags"),b=postL10n.comma,d=h.val().split(b),g=[];delete d[c];a.each(d,function(j,k){k=a.trim(k);if(k){g.push(k)}});h.val(this.clean(g.join(b)));this.quickClicks(e);return false},quickClicks:function(d){var g=a(".the-tags",d),e=a(".tagchecklist",d),f=a(d).attr("id"),b,c;if(!g.length){return}c=g.prop("disabled");b=g.val().split(postL10n.comma);e.empty();a.each(b,function(i,k){var j,h;k=a.trim(k);if(!k){return}j=a("<span />").text(k);if(!c){h=a('<a id="'+f+"-check-num-"+i+'" class="ntdelbutton">X</a>');h.click(function(){tagBox.parseTags(this)});j.prepend("&nbsp;").prepend(h)}e.append(j)})},flushTags:function(g,c,h){c=c||false;var d=a(".the-tags",g),j=a("input.newtag",g),b=postL10n.comma,e,i;i=c?a(c).text():j.val();tagsval=d.val();e=tagsval?tagsval+b+i:i;e=this.clean(e);e=array_unique_noempty(e.split(b)).join(b);d.val(e);this.quickClicks(g);if(!c){j.val("")}if("undefined"==typeof(h)){j.focus()}return false},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){tagBox.flushTags(a(this).closest(".inside").children(".tagsdiv"),this);return false});a("#"+c).after(e)})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)});a("input.tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))});a("div.taghint",c).click(function(){a(this).css("visibility","hidden").parent().siblings(".newtag").focus()});a("input.newtag",c).blur(function(){if(this.value==""){a(this).parent().siblings(".taghint").css("visibility","")}}).focus(function(){a(this).parent().siblings(".taghint").css("visibility","hidden")}).keyup(function(d){if(13==d.which){tagBox.flushTags(a(this).closest(".tagsdiv"));return false}}).keypress(function(d){if(13==d.which){d.preventDefault();return false}}).each(function(){var d=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+d,{delay:500,minchars:2,multiple:true,multipleSep:postL10n.comma+" "})});a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1)})});a("a.tagcloud-link").click(function(){tagBox.get(a(this).attr("id"));a(this).unbind().click(function(){a(this).siblings(".the-tagcloud").toggle();return false});return false})}};commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv .spinner").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:b,number:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv .spinner").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").show().children("a").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")});return false}};WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)};WPSetThumbnailID=function(c){var b=a('input[value="_thumbnail_id"]',"#list-table");if(b.size()>0){a("#meta\\["+b.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(c)}};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(c){if(c=="0"){alert(setPostThumbnailL10n.error)}else{WPSetThumbnailHTML(c)}})};a(document).on("heartbeat-send.refresh-lock",function(g,d){var c=a("#active_post_lock").val(),b=a("#post_ID").val(),f={};if(!b||!a("#post-lock-dialog").length){return}f.post_id=b;if(c){f.lock=c}d["wp-refresh-post-lock"]=f});a(document).on("heartbeat-tick.refresh-lock",function(f,d){var g,c,b;if(d["wp-refresh-post-lock"]){g=d["wp-refresh-post-lock"];if(g.lock_error){c=a("#post-lock-dialog");if(c.length&&!c.is(":visible")){if(typeof autosave=="function"){a(document).on("autosave-disable-buttons.post-lock",function(){c.addClass("saving")}).on("autosave-enable-buttons.post-lock",function(){c.removeClass("saving").addClass("saved");window.onbeforeunload=null});if(!autosave()){window.onbeforeunload=null}autosave=function(){}}if(g.lock_error.avatar_src){b=a('<img class="avatar avatar-64 photo" width="64" height="64" />').attr("src",g.lock_error.avatar_src.replace(/&amp;/g,"&"));c.find("div.post-locked-avatar").empty().append(b)}c.show().find(".currently-editing").text(g.lock_error.text);c.find(".wp-tab-first").focus()}}else{if(g.new_lock){a("#active_post_lock").val(g.new_lock)}}}})}(jQuery));(function(c){var a,b;function d(){a=false;window.clearTimeout(b);b=window.setTimeout(function(){a=true},300000)}c(document).on("heartbeat-send.wp-refresh-nonces",function(i,h){var g,f;if(a){if((f=c("#post_ID").val())&&(g=c("#_wpnonce").val())){h["wp-refresh-post-nonces"]={post_id:f,post_nonce:g}}}}).on("heartbeat-tick.wp-refresh-nonces",function(h,g){var f=g["wp-refresh-post-nonces"];if(f){d();if(f.replace){c.each(f.replace,function(e,i){c("#"+e).val(i)})}if(f.heartbeatNonce){window.heartbeatSettings.nonce=f.heartbeatNonce}}}).ready(function(){d()})}(jQuery));jQuery(document).ready(function(f){var b,a,g="",e=0,h=f("#content");postboxes.add_postbox_toggles(pagenow);f("#post-lock-dialog .notification-dialog").on("keydown",function(j){if(j.which!=9){return}var i=f(j.target);if(i.hasClass("wp-tab-first")&&j.shiftKey){f(this).find(".wp-tab-last").focus();j.preventDefault()}else{if(i.hasClass("wp-tab-last")&&!j.shiftKey){f(this).find(".wp-tab-first").focus();j.preventDefault()}}}).filter(":visible").find(".wp-tab-first").focus();if(f("#tagsdiv-post_tag").length){tagBox.init()}else{f("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false}})}f(".categorydiv").each(function(){var m=f(this).attr("id"),l,n,k,i,j;k=m.split("-");k.shift();i=k.join("-");j=i+"_tab";if(i=="category"){j="cats"}f("a","#"+i+"-tabs").click(function(){var o=f(this).attr("href");f(this).parent().addClass("tabs").siblings("li").removeClass("tabs");f("#"+i+"-tabs").siblings(".tabs-panel").hide();f(o).show();if("#"+i+"-all"==o){deleteUserSetting(j)}else{setUserSetting(j,"pop")}return false});if(getUserSetting(j)){f('a[href="#'+i+'-pop"]',"#"+i+"-tabs").click()}f("#new"+i).one("focus",function(){f(this).val("").removeClass("form-input-tip")});f("#new"+i).keypress(function(o){if(13===o.keyCode){o.preventDefault();f("#"+i+"-add-submit").click()}});f("#"+i+"-add-submit").click(function(){f("#new"+i).focus()});l=function(o){if(!f("#new"+i).val()){return false}o.data+="&"+f(":checked","#"+i+"checklist").serialize();f("#"+i+"-add-submit").prop("disabled",true);return o};n=function(t,q){var p,o=f("#new"+i+"_parent");f("#"+i+"-add-submit").prop("disabled",false);if("undefined"!=q.parsed.responses[0]&&(p=q.parsed.responses[0].supplemental.newcat_parent)){o.before(p);o.remove()}};f("#"+i+"checklist").wpList({alt:"",response:i+"-ajax-response",addBefore:l,addAfter:n});f("#"+i+"-add-toggle").click(function(){f("#"+i+"-adder").toggleClass("wp-hidden-children");f('a[href="#'+i+'-all"]',"#"+i+"-tabs").click();f("#new"+i).focus();return false});f("#"+i+"checklist, #"+i+"checklist-pop").on("click",'li.popular-category > label input[type="checkbox"]',function(){var o=f(this),q=o.is(":checked"),p=o.val();if(p&&o.parents("#taxonomy-"+i).length){f("#in-"+i+"-"+p+", #in-popular-"+i+"-"+p).prop("checked",q)}})});if(f("#postcustom").length){f("#the-list").wpList({addAfter:function(i,j){f("table#list-table").show()},addBefore:function(i){i.data+="&post_id="+f("#post_ID").val();return i}})}if(f("#submitdiv").length){b=f("#timestamp").html();a=f("#post-visibility-display").html();function d(){var i=f("#post-visibility-select");if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false);f("#sticky-span").hide()}else{f("#sticky-span").show()}if(f("input:radio:checked",i).val()!="password"){f("#password-span").hide()}else{f("#password-span").show()}}function c(){if(!f("#timestampdiv").length){return true}var p,q,j,s,r=f("#post_status"),k=f('option[value="publish"]',r),i=f("#aa").val(),n=f("#mm").val(),o=f("#jj").val(),m=f("#hh").val(),l=f("#mn").val();p=new Date(i,n-1,o,m,l);q=new Date(f("#hidden_aa").val(),f("#hidden_mm").val()-1,f("#hidden_jj").val(),f("#hidden_hh").val(),f("#hidden_mn").val());j=new Date(f("#cur_aa").val(),f("#cur_mm").val()-1,f("#cur_jj").val(),f("#cur_hh").val(),f("#cur_mn").val());if(p.getFullYear()!=i||(1+p.getMonth())!=n||p.getDate()!=o||p.getMinutes()!=l){f(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{f(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}if(p>j&&f("#original_post_status").val()!="future"){s=postL10n.publishOnFuture;f("#publish").val(postL10n.schedule)}else{if(p<=j&&f("#original_post_status").val()!="publish"){s=postL10n.publishOn;f("#publish").val(postL10n.publish)}else{s=postL10n.publishOnPast;f("#publish").val(postL10n.update)}}if(q.toUTCString()==p.toUTCString()){f("#timestamp").html(b)}else{f("#timestamp").html(s+" <b>"+postL10n.dateFormat.replace("%1$s",f('option[value="'+f("#mm").val()+'"]',"#mm").text()).replace("%2$s",o).replace("%3$s",i).replace("%4$s",m).replace("%5$s",l)+"</b> ")}if(f("input:radio:checked","#post-visibility-select").val()=="private"){f("#publish").val(postL10n.update);if(k.length==0){r.append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}else{k.html(postL10n.privatelyPublished)}f('option[value="publish"]',r).prop("selected",true);f(".edit-post-status","#misc-publishing-actions").hide()}else{if(f("#original_post_status").val()=="future"||f("#original_post_status").val()=="draft"){if(k.length){k.remove();r.val(f("#hidden_post_status").val())}}else{k.html(postL10n.published)}if(r.is(":hidden")){f(".edit-post-status","#misc-publishing-actions").show()}}f("#post-status-display").html(f("option:selected",r).text());if(f("option:selected",r).val()=="private"||f("option:selected",r).val()=="publish"){f("#save-post").hide()}else{f("#save-post").show();if(f("option:selected",r).val()=="pending"){f("#save-post").show().val(postL10n.savePending)}else{f("#save-post").show().val(postL10n.saveDraft)}}return true}f(".edit-visibility","#visibility").click(function(){if(f("#post-visibility-select").is(":hidden")){d();f("#post-visibility-select").slideDown("fast");f(this).hide()}return false});f(".cancel-post-visibility","#post-visibility-select").click(function(){f("#post-visibility-select").slideUp("fast");f("#visibility-radio-"+f("#hidden-post-visibility").val()).prop("checked",true);f("#post_password").val(f("#hidden-post-password").val());f("#sticky").prop("checked",f("#hidden-post-sticky").prop("checked"));f("#post-visibility-display").html(a);f(".edit-visibility","#visibility").show();c();return false});f(".save-post-visibility","#post-visibility-select").click(function(){var i=f("#post-visibility-select");i.slideUp("fast");f(".edit-visibility","#visibility").show();c();if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false)}if(true==f("#sticky").prop("checked")){g="Sticky"}else{g=""}f("#post-visibility-display").html(postL10n[f("input:radio:checked",i).val()+g]);return false});f("input:radio","#post-visibility-select").change(function(){d()});f("#timestampdiv").siblings("a.edit-timestamp").click(function(){if(f("#timestampdiv").is(":hidden")){f("#timestampdiv").slideDown("fast");f("#mm").focus();f(this).hide()}return false});f(".cancel-timestamp","#timestampdiv").click(function(){f("#timestampdiv").slideUp("fast");f("#mm").val(f("#hidden_mm").val());f("#jj").val(f("#hidden_jj").val());f("#aa").val(f("#hidden_aa").val());f("#hh").val(f("#hidden_hh").val());f("#mn").val(f("#hidden_mn").val());f("#timestampdiv").siblings("a.edit-timestamp").show();c();return false});f(".save-timestamp","#timestampdiv").click(function(){if(c()){f("#timestampdiv").slideUp("fast");f("#timestampdiv").siblings("a.edit-timestamp").show()}return false});f("#post").on("submit",function(i){if(!c()){i.preventDefault();f("#timestampdiv").show();f("#publishing-action .spinner").hide();f("#publish").prop("disabled",false).removeClass("button-primary-disabled");return false}});f("#post-status-select").siblings("a.edit-post-status").click(function(){if(f("#post-status-select").is(":hidden")){f("#post-status-select").slideDown("fast");f(this).hide()}return false});f(".save-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post-status-select").siblings("a.edit-post-status").show();c();return false});f(".cancel-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post_status").val(f("#hidden_post_status").val());f("#post-status-select").siblings("a.edit-post-status").show();c();return false})}if(f("#edit-slug-box").length){editPermalink=function(j){var k,n=0,m=f("#editable-post-name"),o=m.html(),r=f("#post_name"),s=r.val(),p=f("#edit-slug-buttons"),q=p.html(),l=f("#editable-post-name-full").html();f("#view-post-btn").hide();p.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");p.children(".save").click(function(){var i=m.children("input").val();if(i==f("#editable-post-name-full").text()){return f(".cancel","#edit-slug-buttons").click()}f.post(ajaxurl,{action:"sample-permalink",post_id:j,new_slug:i,new_title:f("#title").val(),samplepermalinknonce:f("#samplepermalinknonce").val()},function(u){var t=f("#edit-slug-box");t.html(u);if(t.hasClass("hidden")){t.fadeIn("fast",function(){t.removeClass("hidden")})}p.html(q);r.val(i);makeSlugeditClickable();f("#view-post-btn").show()});return false});f(".cancel","#edit-slug-buttons").click(function(){f("#view-post-btn").show();m.html(o);p.html(q);r.val(s);return false});for(k=0;k<l.length;++k){if("%"==l.charAt(k)){n++}}slug_value=(n>l.length/4)?"":l;m.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(t){var i=t.keyCode||0;if(13==i){p.children(".save").click();return false}if(27==i){p.children(".cancel").click();return false}}).keyup(function(i){r.val(this.value)}).focus()};makeSlugeditClickable=function(){f("#editable-post-name").click(function(){f("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()}if(typeof(wpWordCount)!="undefined"){f(document).triggerHandler("wpcountwords",[h.val()]);h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==e){return true}if(13==i||8==e||46==e){f(document).triggerHandler("wpcountwords",[h.val()])}e=i;return true})}wptitlehint=function(k){k=k||"title";var i=f("#"+k),j=f("#"+k+"-prompt-text");if(i.val()==""){j.removeClass("screen-reader-text")}j.click(function(){f(this).addClass("screen-reader-text");i.focus()});i.blur(function(){if(this.value==""){j.removeClass("screen-reader-text")}}).focus(function(){j.addClass("screen-reader-text")}).keydown(function(l){j.addClass("screen-reader-text");f(this).unbind(l)})};wptitlehint();(function(){var i=f("textarea#content"),l=null,j;if(!i.length||"ontouchstart" in window){return}function k(n){i.height(Math.max(50,l+n.pageY)+"px");return false}function m(o){var n;i.focus();f(document).unbind("mousemove",k).unbind("mouseup",m);n=parseInt(i.css("height"),10);if(n&&n>50&&n<5000){setUserSetting("ed_size",n)}}i.css("resize","none");j=f('<div id="content-resize-handle"><br></div>');f("#wp-content-wrap").append(j);j.on("mousedown",function(n){l=i.height()-n.pageY;i.blur();f(document).mousemove(k).mouseup(m);return false})})();if(typeof(tinymce)!="undefined"){tinymce.onAddEditor.add(function(i,j){if(j.id!="content"||tinymce.isIOS5){return}function k(){var l,m=document.getElementById("content_ifr"),o=m?parseInt(m.style.height,10):0,n=f("#content_tbl tr.mceFirst").height();if(!o||!n){return false}l=o+n+21;l-=33;return l}j.onLoadContent.add(function(m,q){var r,n=document.getElementById("content"),l=n?parseInt(n.style.height,10):0,p=f("#content_tbl tr.mceFirst").height()||33;if(!l||l<50||l>5000){l=360}if(getUserSetting("ed_size")>5000){setUserSetting("ed_size",360)}r=(l-p)+12;if(r>50&&r<5000){f("#content_tbl").css("height","");f("#content_ifr").css("height",r+"px")}});j.onSaveContent.add(function(m,n){var l=k();if(!l||l<50||l>5000){return}f("textarea#content").css("height",l+"px")});j.onPostRender.add(function(){f("#content_resize").on("mousedown.wp-mce-resize",function(l){f(document).on("mouseup.wp-mce-resize",function(n){var m;f(document).off("mouseup.wp-mce-resize");m=k();if(m&&m>50&&m<5000){setUserSetting("ed_size",m)}})})})});f("#post-formats-select input.post-format").on("change.set-editor-class",function(k){var j,i,l=this.id;if(l&&f(this).prop("checked")){j=tinymce.get("content");if(j){i=j.getBody();i.className=i.className.replace(/\bpost-format-[^ ]+/,"");j.dom.addClass(i,l=="post-format-0"?"post-format-standard":l)}}})}});
\ No newline at end of file
diff --git a/wp-admin/js/revisions.js b/wp-admin/js/revisions.js
new file mode 100644
index 000000000..6a8499f88
--- /dev/null
+++ b/wp-admin/js/revisions.js
@@ -0,0 +1,1080 @@
+window.wp = window.wp || {};
+
+(function($) {
+	var revisions;
+
+	revisions = wp.revisions = { model: {}, view: {}, controller: {} };
+
+	// Link settings.
+	revisions.settings = _.isUndefined( _wpRevisionsSettings ) ? {} : _wpRevisionsSettings;
+
+	// For debugging
+	revisions.debug = false;
+
+	revisions.log = function() {
+		if ( window.console && revisions.debug )
+			console.log.apply( console, arguments );
+	};
+
+	// Handy functions to help with positioning
+	$.fn.allOffsets = function() {
+		var offset = this.offset() || {top: 0, left: 0}, win = $(window);
+		return _.extend( offset, {
+			right:  win.width()  - offset.left - this.outerWidth(),
+			bottom: win.height() - offset.top  - this.outerHeight()
+		});
+	};
+
+	$.fn.allPositions = function() {
+		var position = this.position() || {top: 0, left: 0}, parent = this.parent();
+		return _.extend( position, {
+			right:  parent.outerWidth()  - position.left - this.outerWidth(),
+			bottom: parent.outerHeight() - position.top  - this.outerHeight()
+		});
+	};
+
+	// wp_localize_script transforms top-level numbers into strings. Undo that.
+	if ( revisions.settings.to )
+		revisions.settings.to = parseInt( revisions.settings.to, 10 );
+	if ( revisions.settings.from )
+		revisions.settings.from = parseInt( revisions.settings.from, 10 );
+
+	// wp_localize_script does not allow for top-level booleans. Fix that.
+	if ( revisions.settings.compareTwoMode )
+		revisions.settings.compareTwoMode = revisions.settings.compareTwoMode === '1';
+
+	/**
+	 * ========================================================================
+	 * MODELS
+	 * ========================================================================
+	 */
+	revisions.model.Slider = Backbone.Model.extend({
+		defaults: {
+			value: null,
+			values: null,
+			min: 0,
+			max: 1,
+			step: 1,
+			range: false,
+			compareTwoMode: false
+		},
+
+		initialize: function( options ) {
+			this.frame = options.frame;
+			this.revisions = options.revisions;
+
+			// Listen for changes to the revisions or mode from outside
+			this.listenTo( this.frame, 'update:revisions', this.receiveRevisions );
+			this.listenTo( this.frame, 'change:compareTwoMode', this.updateMode );
+
+			// Listen for internal changes
+			this.listenTo( this, 'change:from', this.handleLocalChanges );
+			this.listenTo( this, 'change:to', this.handleLocalChanges );
+			this.listenTo( this, 'change:compareTwoMode', this.updateSliderSettings );
+			this.listenTo( this, 'update:revisions', this.updateSliderSettings );
+
+			// Listen for changes to the hovered revision
+			this.listenTo( this, 'change:hoveredRevision', this.hoverRevision );
+
+			this.set({
+				max:   this.revisions.length - 1,
+				compareTwoMode: this.frame.get('compareTwoMode'),
+				from: this.frame.get('from'),
+				to: this.frame.get('to')
+			});
+			this.updateSliderSettings();
+		},
+
+		getSliderValue: function( a, b ) {
+			return isRtl ? this.revisions.length - this.revisions.indexOf( this.get(a) ) - 1 : this.revisions.indexOf( this.get(b) );
+		},
+
+		updateSliderSettings: function() {
+			if ( this.get('compareTwoMode') ) {
+				this.set({
+					values: [
+						this.getSliderValue( 'to', 'from' ),
+						this.getSliderValue( 'from', 'to' )
+					],
+					value: null,
+					range: true // ensures handles cannot cross
+				});
+			} else {
+				this.set({
+					value: this.getSliderValue( 'to', 'to' ),
+					values: null,
+					range: false
+				});
+			}
+			this.trigger( 'update:slider' );
+		},
+
+		// Called when a revision is hovered
+		hoverRevision: function( model, value ) {
+			this.trigger( 'hovered:revision', value );
+		},
+
+		// Called when `compareTwoMode` changes
+		updateMode: function( model, value ) {
+			this.set({ compareTwoMode: value });
+		},
+
+		// Called when `from` or `to` changes in the local model
+		handleLocalChanges: function() {
+			this.frame.set({
+				from: this.get('from'),
+				to: this.get('to')
+			});
+		},
+
+		// Receives revisions changes from outside the model
+		receiveRevisions: function( from, to ) {
+			// Bail if nothing changed
+			if ( this.get('from') === from && this.get('to') === to )
+				return;
+
+			this.set({ from: from, to: to }, { silent: true });
+			this.trigger( 'update:revisions', from, to );
+		}
+
+	});
+
+	revisions.model.Tooltip = Backbone.Model.extend({
+		defaults: {
+			revision: null,
+			offset: {},
+			hovering: false, // Whether the mouse is hovering
+			scrubbing: false // Whether the mouse is scrubbing
+		},
+
+		initialize: function( options ) {
+			this.frame = options.frame;
+			this.revisions = options.revisions;
+			this.slider = options.slider;
+
+			this.listenTo( this.slider, 'hovered:revision', this.updateRevision );
+			this.listenTo( this.slider, 'change:hovering', this.setHovering );
+			this.listenTo( this.slider, 'change:scrubbing', this.setScrubbing );
+		},
+
+
+		updateRevision: function( revision ) {
+			this.set({ revision: revision });
+		},
+
+		setHovering: function( model, value ) {
+			this.set({ hovering: value });
+		},
+
+		setScrubbing: function( model, value ) {
+			this.set({ scrubbing: value });
+		}
+	});
+
+	revisions.model.Revision = Backbone.Model.extend({});
+
+	revisions.model.Revisions = Backbone.Collection.extend({
+		model: revisions.model.Revision,
+
+		initialize: function() {
+			_.bindAll( this, 'next', 'prev' );
+		},
+
+		next: function( revision ) {
+			var index = this.indexOf( revision );
+
+			if ( index !== -1 && index !== this.length - 1 )
+				return this.at( index + 1 );
+		},
+
+		prev: function( revision ) {
+			var index = this.indexOf( revision );
+
+			if ( index !== -1 && index !== 0 )
+				return this.at( index - 1 );
+		}
+	});
+
+	revisions.model.Field = Backbone.Model.extend({});
+
+	revisions.model.Fields = Backbone.Collection.extend({
+		model: revisions.model.Field
+	});
+
+	revisions.model.Diff = Backbone.Model.extend({
+		initialize: function( attributes, options ) {
+			var fields = this.get('fields');
+			this.unset('fields');
+
+			this.fields = new revisions.model.Fields( fields );
+		}
+	});
+
+	revisions.model.Diffs = Backbone.Collection.extend({
+		initialize: function( models, options ) {
+			_.bindAll( this, 'getClosestUnloaded' );
+			this.loadAll = _.once( this._loadAll );
+			this.revisions = options.revisions;
+			this.requests  = {};
+		},
+
+		model: revisions.model.Diff,
+
+		ensure: function( id, context ) {
+			var diff     = this.get( id );
+			var request  = this.requests[ id ];
+			var deferred = $.Deferred();
+			var ids      = {};
+			var from     = id.split(':')[0];
+			var to       = id.split(':')[1];
+			ids[id] = true;
+
+			wp.revisions.log( 'ensure', id );
+
+			this.trigger( 'ensure', ids, from, to, deferred.promise() );
+
+			if ( diff ) {
+				deferred.resolveWith( context, [ diff ] );
+			} else {
+				this.trigger( 'ensure:load', ids, from, to, deferred.promise() );
+				_.each( ids, _.bind( function( id ) {
+					// Remove anything that has an ongoing request
+					if ( this.requests[ id ] )
+						delete ids[ id ];
+					// Remove anything we already have
+					if ( this.get( id ) )
+						delete ids[ id ];
+				}, this ) );
+				if ( ! request ) {
+					// Always include the ID that started this ensure
+					ids[ id ] = true;
+					request   = this.load( _.keys( ids ) );
+				}
+
+				request.done( _.bind( function() {
+					deferred.resolveWith( context, [ this.get( id ) ] );
+				}, this ) ).fail( _.bind( function() {
+					deferred.reject();
+				}) );
+			}
+
+			return deferred.promise();
+		},
+
+		// Returns an array of proximal diffs
+		getClosestUnloaded: function( ids, centerId ) {
+			var self = this;
+			return _.chain([0].concat( ids )).initial().zip( ids ).sortBy( function( pair ) {
+				return Math.abs( centerId - pair[1] );
+			}).map( function( pair ) {
+				return pair.join(':');
+			}).filter( function( diffId ) {
+				return _.isUndefined( self.get( diffId ) ) && ! self.requests[ diffId ];
+			}).value();
+		},
+
+		_loadAll: function( allRevisionIds, centerId, num ) {
+			var self = this, deferred = $.Deferred();
+			diffs = _.first( this.getClosestUnloaded( allRevisionIds, centerId ), num );
+			if ( _.size( diffs ) > 0 ) {
+				this.load( diffs ).done( function() {
+					self._loadAll( allRevisionIds, centerId, num ).done( function() {
+						deferred.resolve();
+					});
+				}).fail( function() {
+					if ( 1 === num ) { // Already tried 1. This just isn't working. Give up.
+						deferred.reject();
+					} else { // Request fewer diffs this time
+						self._loadAll( allRevisionIds, centerId, Math.ceil( num / 2 ) ).done( function() {
+							deferred.resolve();
+						});
+					}
+				});
+			} else {
+				deferred.resolve();
+			}
+			return deferred;
+		},
+
+		load: function( comparisons ) {
+			wp.revisions.log( 'load', comparisons );
+			// Our collection should only ever grow, never shrink, so remove: false
+			return this.fetch({ data: { compare: comparisons }, remove: false }).done( function(){
+				wp.revisions.log( 'load:complete', comparisons );
+			});
+		},
+
+		sync: function( method, model, options ) {
+			if ( 'read' === method ) {
+				options = options || {};
+				options.context = this;
+				options.data = _.extend( options.data || {}, {
+					action: 'get-revision-diffs',
+					post_id: revisions.settings.postId
+				});
+
+				var deferred = wp.ajax.send( options );
+				var requests = this.requests;
+
+				// Record that we're requesting each diff.
+				if ( options.data.compare ) {
+					_.each( options.data.compare, function( id ) {
+						requests[ id ] = deferred;
+					});
+				}
+
+				// When the request completes, clear the stored request.
+				deferred.always( function() {
+					if ( options.data.compare ) {
+						_.each( options.data.compare, function( id ) {
+							delete requests[ id ];
+						});
+					}
+				});
+
+				return deferred;
+
+			// Otherwise, fall back to `Backbone.sync()`.
+			} else {
+				return Backbone.Model.prototype.sync.apply( this, arguments );
+			}
+		}
+	});
+
+
+	revisions.model.FrameState = Backbone.Model.extend({
+		defaults: {
+			loading: false,
+			error: false,
+			compareTwoMode: false
+		},
+
+		initialize: function( attributes, options ) {
+			var properties = {};
+
+			_.bindAll( this, 'receiveDiff' );
+			this._debouncedEnsureDiff = _.debounce( this._ensureDiff, 200 );
+
+			this.revisions = options.revisions;
+			this.diffs = new revisions.model.Diffs( [], { revisions: this.revisions });
+
+			// Set the initial diffs collection provided through the settings
+			this.diffs.set( revisions.settings.diffData );
+
+			// Set up internal listeners
+			this.listenTo( this, 'change:from', this.changeRevisionHandler );
+			this.listenTo( this, 'change:to', this.changeRevisionHandler );
+			this.listenTo( this, 'change:compareTwoMode', this.changeMode );
+			this.listenTo( this, 'update:revisions', this.updatedRevisions );
+			this.listenTo( this.diffs, 'ensure:load', this.updateLoadingStatus );
+			this.listenTo( this, 'update:diff', this.updateLoadingStatus );
+
+			// Set the initial revisions, baseUrl, and mode as provided through settings
+			properties.to = this.revisions.get( revisions.settings.to );
+			properties.from = this.revisions.get( revisions.settings.from );
+			properties.compareTwoMode = revisions.settings.compareTwoMode;
+			properties.baseUrl = revisions.settings.baseUrl;
+			this.set( properties );
+
+			// Start the router if browser supports History API
+			if ( window.history && window.history.pushState ) {
+				this.router = new revisions.Router({ model: this });
+				Backbone.history.start({ pushState: true });
+			}
+		},
+
+		updateLoadingStatus: function() {
+			this.set( 'error', false );
+			this.set( 'loading', ! this.diff() );
+		},
+
+		changeMode: function( model, value ) {
+			// If we were on the first revision before switching, we have to bump them over one
+			if ( value && 0 === this.revisions.indexOf( this.get('to') ) ) {
+				this.set({
+					from: this.revisions.at(0),
+					to: this.revisions.at(1)
+				});
+			}
+		},
+
+		updatedRevisions: function( from, to ) {
+			if ( this.get( 'compareTwoMode' ) ) {
+				// TODO: compare-two loading strategy
+			} else {
+				this.diffs.loadAll( this.revisions.pluck('id'), to.id, 40 );
+			}
+		},
+
+		// Fetch the currently loaded diff.
+		diff: function() {
+			return this.diffs.get( this._diffId );
+		},
+
+		// So long as `from` and `to` are changed at the same time, the diff
+		// will only be updated once. This is because Backbone updates all of
+		// the changed attributes in `set`, and then fires the `change` events.
+		updateDiff: function( options ) {
+			var from, to, diffId, diff;
+
+			options = options || {};
+			from = this.get('from');
+			to = this.get('to');
+			diffId = ( from ? from.id : 0 ) + ':' + to.id;
+
+			// Check if we're actually changing the diff id.
+			if ( this._diffId === diffId )
+				return $.Deferred().reject().promise();
+
+			this._diffId = diffId;
+			this.trigger( 'update:revisions', from, to );
+
+			diff = this.diffs.get( diffId );
+
+			// If we already have the diff, then immediately trigger the update.
+			if ( diff ) {
+				this.receiveDiff( diff );
+				return $.Deferred().resolve().promise();
+			// Otherwise, fetch the diff.
+			} else {
+				if ( options.immediate ) {
+					return this._ensureDiff();
+				} else {
+					this._debouncedEnsureDiff();
+					return $.Deferred().reject().promise();
+				}
+			}
+		},
+
+		// A simple wrapper around `updateDiff` to prevent the change event's
+		// parameters from being passed through.
+		changeRevisionHandler: function( model, value, options ) {
+			this.updateDiff();
+		},
+
+		receiveDiff: function( diff ) {
+			// Did we actually get a diff?
+			if ( _.isUndefined( diff ) || _.isUndefined( diff.id ) ) {
+				this.set({
+					loading: false,
+					error: true
+				});
+			} else if ( this._diffId === diff.id ) { // Make sure the current diff didn't change
+				this.trigger( 'update:diff', diff );
+			}
+		},
+
+		_ensureDiff: function() {
+			return this.diffs.ensure( this._diffId, this ).always( this.receiveDiff );
+		}
+	});
+
+
+	/**
+	 * ========================================================================
+	 * VIEWS
+	 * ========================================================================
+	 */
+
+	// The frame view. This contains the entire page.
+	revisions.view.Frame = wp.Backbone.View.extend({
+		className: 'revisions',
+		template: wp.template('revisions-frame'),
+
+		initialize: function() {
+			this.listenTo( this.model, 'update:diff', this.renderDiff );
+			this.listenTo( this.model, 'change:compareTwoMode', this.updateCompareTwoMode );
+			this.listenTo( this.model, 'change:loading', this.updateLoadingStatus );
+			this.listenTo( this.model, 'change:error', this.updateErrorStatus );
+
+			this.views.set( '.revisions-control-frame', new revisions.view.Controls({
+				model: this.model
+			}) );
+		},
+
+		render: function() {
+			wp.Backbone.View.prototype.render.apply( this, arguments );
+
+			$('html').css( 'overflow-y', 'scroll' );
+			$('#wpbody-content .wrap').append( this.el );
+			this.updateCompareTwoMode();
+			this.renderDiff( this.model.diff() );
+			this.views.ready();
+
+			return this;
+		},
+
+		renderDiff: function( diff ) {
+			this.views.set( '.revisions-diff-frame', new revisions.view.Diff({
+				model: diff
+			}) );
+		},
+
+		updateLoadingStatus: function() {
+			this.$el.toggleClass( 'loading', this.model.get('loading') );
+		},
+
+		updateErrorStatus: function() {
+			this.$el.toggleClass( 'diff-error', this.model.get('error') );
+		},
+
+		updateCompareTwoMode: function() {
+			this.$el.toggleClass( 'comparing-two-revisions', this.model.get('compareTwoMode') );
+		}
+	});
+
+	// The control view.
+	// This contains the revision slider, previous/next buttons, the meta info and the compare checkbox.
+	revisions.view.Controls = wp.Backbone.View.extend({
+		className: 'revisions-controls',
+
+		initialize: function() {
+			_.bindAll( this, 'setWidth' );
+
+			// Add the button view
+			this.views.add( new revisions.view.Buttons({
+				model: this.model
+			}) );
+
+			// Add the checkbox view
+			this.views.add( new revisions.view.Checkbox({
+				model: this.model
+			}) );
+
+			// Prep the slider model
+			var slider = new revisions.model.Slider({
+				frame: this.model,
+				revisions: this.model.revisions
+			});
+
+			// Prep the tooltip model
+			var tooltip = new revisions.model.Tooltip({
+				frame: this.model,
+				revisions: this.model.revisions,
+				slider: slider
+			});
+
+			// Add the tooltip view
+			this.views.add( new revisions.view.Tooltip({
+				model: tooltip
+			}) );
+
+			// Add the tickmarks view
+			this.views.add( new revisions.view.Tickmarks({
+				model: tooltip
+			}) );
+
+			// Add the slider view
+			this.views.add( new revisions.view.Slider({
+				model: slider
+			}) );
+
+			// Add the Metabox view
+			this.views.add( new revisions.view.Metabox({
+				model: this.model
+			}) );
+		},
+
+		ready: function() {
+			this.top = this.$el.offset().top;
+			this.window = $(window);
+			this.window.on( 'scroll.wp.revisions', {controls: this}, function(e) {
+				var controls = e.data.controls;
+				var container = controls.$el.parent();
+				var scrolled = controls.window.scrollTop();
+				var frame = controls.views.parent;
+
+				if ( scrolled >= controls.top ) {
+					if ( ! frame.$el.hasClass('pinned') ) {
+						controls.setWidth();
+						container.css('height', container.height() + 'px' );
+						controls.window.on('resize.wp.revisions.pinning click.wp.revisions.pinning', {controls: controls}, function(e) {
+							e.data.controls.setWidth();
+						});
+					}
+					frame.$el.addClass('pinned');
+				} else if ( frame.$el.hasClass('pinned') ) {
+					controls.window.off('.wp.revisions.pinning');
+					controls.$el.css('width', 'auto');
+					frame.$el.removeClass('pinned');
+					container.css('height', 'auto');
+					controls.top = controls.$el.offset().top;
+				} else {
+					controls.top = controls.$el.offset().top;
+				}
+			});
+		},
+
+		setWidth: function() {
+			this.$el.css('width', this.$el.parent().width() + 'px');
+		}
+	});
+
+	// The tickmarks view
+	revisions.view.Tickmarks = wp.Backbone.View.extend({
+		className: 'revisions-tickmarks',
+		direction: isRtl ? 'right' : 'left',
+
+		initialize: function() {
+			this.listenTo( this.model, 'change:revision', this.reportTickPosition );
+		},
+
+		reportTickPosition: function( model, revision ) {
+			var offset, thisOffset, parentOffset, tick, index = this.model.revisions.indexOf( revision );
+			thisOffset = this.$el.allOffsets();
+			parentOffset = this.$el.parent().allOffsets();
+			if ( index === this.model.revisions.length - 1 ) {
+				// Last one
+				offset = {
+					rightPlusWidth: thisOffset.left - parentOffset.left + 1,
+					leftPlusWidth: thisOffset.right - parentOffset.right + 1
+				};
+			} else {
+				// Normal tick
+				tick = this.$('div:nth-of-type(' + (index + 1) + ')');
+				offset = tick.allPositions();
+				_.extend( offset, {
+					left: offset.left + thisOffset.left - parentOffset.left,
+					right: offset.right + thisOffset.right - parentOffset.right
+				});
+				_.extend( offset, {
+					leftPlusWidth: offset.left + tick.outerWidth(),
+					rightPlusWidth: offset.right + tick.outerWidth()
+				});
+			}
+			this.model.set({ offset: offset });
+		},
+
+		ready: function() {
+			var tickCount, tickWidth;
+			tickCount = this.model.revisions.length - 1;
+			tickWidth = 1 / tickCount;
+			this.$el.css('width', ( this.model.revisions.length * 50 ) + 'px');
+
+			_(tickCount).times( function( index ){
+				this.$el.append( '<div style="' + this.direction + ': ' + ( 100 * tickWidth * index ) + '%"></div>' );
+			}, this );
+		}
+	});
+
+	// The metabox view
+	revisions.view.Metabox = wp.Backbone.View.extend({
+		className: 'revisions-meta',
+
+		initialize: function() {
+			// Add the 'from' view
+			this.views.add( new revisions.view.MetaFrom({
+				model: this.model,
+				className: 'diff-meta diff-meta-from'
+			}) );
+
+			// Add the 'to' view
+			this.views.add( new revisions.view.MetaTo({
+				model: this.model
+			}) );
+		}
+	});
+
+	// The revision meta view (to be extended)
+	revisions.view.Meta = wp.Backbone.View.extend({
+		template: wp.template('revisions-meta'),
+
+		events: {
+			'click .restore-revision': 'restoreRevision'
+		},
+
+		initialize: function() {
+			this.listenTo( this.model, 'update:revisions', this.render );
+		},
+
+		prepare: function() {
+			return _.extend( this.model.toJSON()[this.type] || {}, {
+				type: this.type
+			});
+		},
+
+		restoreRevision: function() {
+			document.location = this.model.get('to').attributes.restoreUrl;
+		}
+	});
+
+	// The revision meta 'from' view
+	revisions.view.MetaFrom = revisions.view.Meta.extend({
+		className: 'diff-meta diff-meta-from',
+		type: 'from'
+	});
+
+	// The revision meta 'to' view
+	revisions.view.MetaTo = revisions.view.Meta.extend({
+		className: 'diff-meta diff-meta-to',
+		type: 'to'
+	});
+
+	// The checkbox view.
+	revisions.view.Checkbox = wp.Backbone.View.extend({
+		className: 'revisions-checkbox',
+		template: wp.template('revisions-checkbox'),
+
+		events: {
+			'click .compare-two-revisions': 'compareTwoToggle'
+		},
+
+		initialize: function() {
+			this.listenTo( this.model, 'change:compareTwoMode', this.updateCompareTwoMode );
+		},
+
+		ready: function() {
+			if ( this.model.revisions.length < 3 )
+				$('.revision-toggle-compare-mode').hide();
+		},
+
+		updateCompareTwoMode: function() {
+			this.$('.compare-two-revisions').prop( 'checked', this.model.get('compareTwoMode') );
+		},
+
+		// Toggle the compare two mode feature when the compare two checkbox is checked.
+		compareTwoToggle: function( event ) {
+			// Activate compare two mode?
+			this.model.set({ compareTwoMode: $('.compare-two-revisions').prop('checked') });
+		}
+	});
+
+	// The tooltip view.
+	// Encapsulates the tooltip.
+	revisions.view.Tooltip = wp.Backbone.View.extend({
+		className: 'revisions-tooltip',
+		template: wp.template('revisions-meta'),
+
+		initialize: function( options ) {
+			this.listenTo( this.model, 'change:offset', this.render );
+			this.listenTo( this.model, 'change:hovering', this.toggleVisibility );
+			this.listenTo( this.model, 'change:scrubbing', this.toggleVisibility );
+		},
+
+		prepare: function() {
+			if ( _.isNull( this.model.get('revision') ) )
+				return;
+			else
+				return _.extend( { type: 'tooltip' }, {
+					attributes: this.model.get('revision').toJSON()
+				});
+		},
+
+		render: function() {
+			var direction, directionVal, flipped, css = {}, position = this.model.revisions.indexOf( this.model.get('revision') ) + 1;
+			flipped = ( position / this.model.revisions.length ) > 0.5;
+			if ( isRtl ) {
+				direction = flipped ? 'left' : 'right';
+				directionVal = flipped ? 'leftPlusWidth' : direction;
+			} else {
+				direction = flipped ? 'right' : 'left';
+				directionVal = flipped ? 'rightPlusWidth' : direction;
+			}
+			otherDirection = 'right' === direction ? 'left': 'right';
+			wp.Backbone.View.prototype.render.apply( this, arguments );
+			css[direction] = this.model.get('offset')[directionVal] + 'px';
+			css[otherDirection] = '';
+			this.$el.toggleClass( 'flipped', flipped ).css( css );
+		},
+
+		visible: function() {
+			return this.model.get( 'scrubbing' ) || this.model.get( 'hovering' );
+		},
+
+		toggleVisibility: function( options ) {
+			if ( this.visible() )
+				this.$el.stop().show().fadeTo( 100 - this.el.style.opacity * 100, 1 );
+			else
+				this.$el.stop().fadeTo( this.el.style.opacity * 300, 0, function(){ $(this).hide(); } );
+			return;
+		}
+	});
+
+	// The buttons view.
+	// Encapsulates all of the configuration for the previous/next buttons.
+	revisions.view.Buttons = wp.Backbone.View.extend({
+		className: 'revisions-buttons',
+		template: wp.template('revisions-buttons'),
+
+		events: {
+			'click .revisions-next .button': 'nextRevision',
+			'click .revisions-previous .button': 'previousRevision'
+		},
+
+		initialize: function() {
+			this.listenTo( this.model, 'update:revisions', this.disabledButtonCheck );
+		},
+
+		ready: function() {
+			this.disabledButtonCheck();
+		},
+
+		// Go to a specific model index
+		gotoModel: function( toIndex ) {
+			var attributes = {
+				to: this.model.revisions.at( toIndex )
+			};
+			// If we're at the first revision, unset 'from'.
+			if ( toIndex )
+				attributes.from = this.model.revisions.at( toIndex - 1 );
+			else
+				this.model.unset('from', { silent: true });
+
+			this.model.set( attributes );
+		},
+
+		// Go to the 'next' revision
+		nextRevision: function() {
+			var toIndex = this.model.revisions.indexOf( this.model.get('to') ) + 1;
+			this.gotoModel( toIndex );
+		},
+
+		// Go to the 'previous' revision
+		previousRevision: function() {
+			var toIndex = this.model.revisions.indexOf( this.model.get('to') ) - 1;
+			this.gotoModel( toIndex );
+		},
+
+		// Check to see if the Previous or Next buttons need to be disabled or enabled.
+		disabledButtonCheck: function() {
+			var maxVal = this.model.revisions.length - 1,
+				minVal = 0,
+				next = $('.revisions-next .button'),
+				previous = $('.revisions-previous .button'),
+				val = this.model.revisions.indexOf( this.model.get('to') );
+
+			// Disable "Next" button if you're on the last node.
+			next.prop( 'disabled', ( maxVal === val ) );
+
+			// Disable "Previous" button if you're on the first node.
+			previous.prop( 'disabled', ( minVal === val ) );
+		}
+	});
+
+
+	// The slider view.
+	revisions.view.Slider = wp.Backbone.View.extend({
+		className: 'wp-slider',
+		direction: isRtl ? 'right' : 'left',
+
+		events: {
+			'mousemove' : 'mouseMove'
+		},
+
+		initialize: function() {
+			_.bindAll( this, 'start', 'slide', 'stop', 'mouseMove', 'mouseEnter', 'mouseLeave' );
+			this.listenTo( this.model, 'update:slider', this.applySliderSettings );
+		},
+
+		ready: function() {
+			this.$el.css('width', ( this.model.revisions.length * 50 ) + 'px');
+			this.$el.slider( _.extend( this.model.toJSON(), {
+				start: this.start,
+				slide: this.slide,
+				stop:  this.stop
+			}) );
+
+			this.$el.hoverIntent({
+				over: this.mouseEnter,
+				out: this.mouseLeave,
+				timeout: 800
+			});
+
+			this.applySliderSettings();
+		},
+
+		mouseMove: function( e ) {
+			var zoneCount = this.model.revisions.length - 1, // One fewer zone than models
+				sliderFrom = this.$el.allOffsets()[this.direction], // "From" edge of slider
+				sliderWidth = this.$el.width(), // Width of slider
+				tickWidth = sliderWidth / zoneCount, // Calculated width of zone
+				actualX = isRtl? $(window).width() - e.pageX : e.pageX; // Flipped for RTL - sliderFrom;
+			actualX = actualX - sliderFrom; // Offset of mouse position in slider
+			var currentModelIndex = Math.floor( ( actualX + ( tickWidth / 2 )  ) / tickWidth ); // Calculate the model index
+
+			// Ensure sane value for currentModelIndex.
+			if ( currentModelIndex < 0 )
+				currentModelIndex = 0;
+			else if ( currentModelIndex >= this.model.revisions.length )
+				currentModelIndex = this.model.revisions.length - 1;
+
+			// Update the tooltip mode
+			this.model.set({ hoveredRevision: this.model.revisions.at( currentModelIndex ) });
+		},
+
+		mouseLeave: function() {
+			this.model.set({ hovering: false });
+		},
+
+		mouseEnter: function() {
+			this.model.set({ hovering: true });
+		},
+
+		applySliderSettings: function() {
+			this.$el.slider( _.pick( this.model.toJSON(), 'value', 'values', 'range' ) );
+			var handles = this.$('a.ui-slider-handle');
+
+			if ( this.model.get('compareTwoMode') ) {
+				// in RTL mode the 'left handle' is the second in the slider, 'right' is first
+				handles.first()
+					.toggleClass( 'to-handle', !! isRtl )
+					.toggleClass( 'from-handle', ! isRtl );
+				handles.last()
+					.toggleClass( 'from-handle', !! isRtl )
+					.toggleClass( 'to-handle', ! isRtl );
+			} else {
+				handles.removeClass('from-handle to-handle');
+			}
+		},
+
+		start: function( event, ui ) {
+			this.model.set({ scrubbing: true });
+
+			// Track the mouse position to enable smooth dragging,
+			// overrides default jQuery UI step behavior.
+			$( window ).on( 'mousemove.wp.revisions', { view: this }, function( e ) {
+				var view              = e.data.view,
+				    leftDragBoundary  = view.$el.offset().left,
+				    sliderOffset      = leftDragBoundary,
+				    sliderRightEdge   = leftDragBoundary + view.$el.width(),
+				    rightDragBoundary = sliderRightEdge,
+				    leftDragReset     = '0',
+				    rightDragReset    = '100%',
+				    handle            = $( ui.handle );
+
+				// In two handle mode, ensure handles can't be dragged past each other.
+				// Adjust left/right boundaries and reset points.
+				if ( view.model.get('compareTwoMode') ) {
+					var handles = handle.parent().find('.ui-slider-handle');
+					if ( handle.is( handles.first() ) ) { // We're the left handle
+						rightDragBoundary = handles.last().offset().left;
+						rightDragReset    = rightDragBoundary - sliderOffset;
+					} else { // We're the right handle
+						leftDragBoundary = handles.first().offset().left + handles.first().width();
+						leftDragReset    = leftDragBoundary - sliderOffset;
+					}
+				}
+
+				// Follow mouse movements, as long as handle remains inside slider.
+				if ( e.pageX < leftDragBoundary ) {
+					handle.css( 'left', leftDragReset ); // Mouse to left of slider.
+				} else if ( e.pageX > rightDragBoundary ) {
+					handle.css( 'left', rightDragReset ); // Mouse to right of slider.
+				} else {
+					handle.css( 'left', e.pageX - sliderOffset ); // Mouse in slider.
+				}
+			} );
+		},
+
+		getPosition: function( position ) {
+			return isRtl ? this.model.revisions.length - position - 1: position;
+		},
+
+		// Responds to slide events
+		slide: function( event, ui ) {
+			var attributes, movedRevision;
+			// Compare two revisions mode
+			if ( this.model.get('compareTwoMode') ) {
+				// Prevent sliders from occupying same spot
+				if ( ui.values[1] === ui.values[0] )
+					return false;
+				if ( isRtl )
+					ui.values.reverse();
+				attributes = {
+					from: this.model.revisions.at( this.getPosition( ui.values[0] ) ),
+					to: this.model.revisions.at( this.getPosition( ui.values[1] ) )
+				};
+			} else {
+				attributes = {
+					to: this.model.revisions.at( this.getPosition( ui.value ) )
+				};
+				// If we're at the first revision, unset 'from'.
+				if ( this.getPosition( ui.value ) > 0 )
+					attributes.from = this.model.revisions.at( this.getPosition( ui.value ) - 1 );
+				else
+					attributes.from = undefined;
+			}
+			movedRevision = this.model.revisions.at( this.getPosition( ui.value ) );
+
+			// If we are scrubbing, a scrub to a revision is considered a hover
+			if ( this.model.get('scrubbing') )
+				attributes.hoveredRevision = movedRevision;
+
+			this.model.set( attributes );
+		},
+
+		stop: function( event, ui ) {
+			$( window ).off('mousemove.wp.revisions');
+			this.model.updateSliderSettings(); // To snap us back to a tick mark
+			this.model.set({ scrubbing: false });
+		}
+	});
+
+	// The diff view.
+	// This is the view for the current active diff.
+	revisions.view.Diff = wp.Backbone.View.extend({
+		className: 'revisions-diff',
+		template: wp.template('revisions-diff'),
+
+		// Generate the options to be passed to the template.
+		prepare: function() {
+			return _.extend({ fields: this.model.fields.toJSON() }, this.options );
+		}
+	});
+
+	// The revisions router
+	// takes URLs with #hash fragments and routes them
+	revisions.Router = Backbone.Router.extend({
+		initialize: function( options ) {
+			this.model = options.model;
+			this.routes = _.object([
+				[ this.baseUrl( '?from=:from&to=:to' ), 'handleRoute' ],
+				[ this.baseUrl( '?from=:from&to=:to' ), 'handleRoute' ]
+			]);
+			// Maintain state and history when navigating
+			this.listenTo( this.model, 'update:diff', _.debounce( this.updateUrl, 250 ) );
+			this.listenTo( this.model, 'change:compareTwoMode', this.updateUrl );
+		},
+
+		baseUrl: function( url ) {
+			return this.model.get('baseUrl') + url;
+		},
+
+		updateUrl: function() {
+			var from = this.model.has('from') ? this.model.get('from').id : 0;
+			var to = this.model.get('to').id;
+			if ( this.model.get('compareTwoMode' ) )
+				this.navigate( this.baseUrl( '?from=' + from + '&to=' + to ) );
+			else
+				this.navigate( this.baseUrl( '?revision=' + to ) );
+		},
+
+		handleRoute: function( a, b ) {
+			var from, to, compareTwo = _.isUndefined( b );
+
+			if ( ! compareTwo ) {
+				b = this.model.revisions.get( a );
+				a = this.model.revisions.prev( b );
+				b = b ? b.id : 0;
+				a = a ? a.id : 0;
+			}
+
+			this.model.set({
+				from: this.model.revisions.get( parseInt( a, 10 ) ),
+				to: this.model.revisions.get( parseInt( a, 10 ) ),
+				compareTwoMode: compareTwo
+			});
+		}
+	});
+
+	// Initialize the revisions UI.
+	revisions.init = function() {
+		revisions.view.frame = new revisions.view.Frame({
+			model: new revisions.model.FrameState({}, {
+				revisions: new revisions.model.Revisions( revisions.settings.revisionData )
+			})
+		}).render();
+	};
+
+	$( revisions.init );
+}(jQuery));
diff --git a/wp-admin/js/revisions.min.js b/wp-admin/js/revisions.min.js
new file mode 100644
index 000000000..a1e1a004b
--- /dev/null
+++ b/wp-admin/js/revisions.min.js
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(b){var a;a=wp.revisions={model:{},view:{},controller:{}};a.settings=_.isUndefined(_wpRevisionsSettings)?{}:_wpRevisionsSettings;a.debug=false;a.log=function(){if(window.console&&a.debug){console.log.apply(console,arguments)}};b.fn.allOffsets=function(){var d=this.offset()||{top:0,left:0},c=b(window);return _.extend(d,{right:c.width()-d.left-this.outerWidth(),bottom:c.height()-d.top-this.outerHeight()})};b.fn.allPositions=function(){var c=this.position()||{top:0,left:0},d=this.parent();return _.extend(c,{right:d.outerWidth()-c.left-this.outerWidth(),bottom:d.outerHeight()-c.top-this.outerHeight()})};if(a.settings.to){a.settings.to=parseInt(a.settings.to,10)}if(a.settings.from){a.settings.from=parseInt(a.settings.from,10)}if(a.settings.compareTwoMode){a.settings.compareTwoMode=a.settings.compareTwoMode==="1"}a.model.Slider=Backbone.Model.extend({defaults:{value:null,values:null,min:0,max:1,step:1,range:false,compareTwoMode:false},initialize:function(c){this.frame=c.frame;this.revisions=c.revisions;this.listenTo(this.frame,"update:revisions",this.receiveRevisions);this.listenTo(this.frame,"change:compareTwoMode",this.updateMode);this.listenTo(this,"change:from",this.handleLocalChanges);this.listenTo(this,"change:to",this.handleLocalChanges);this.listenTo(this,"change:compareTwoMode",this.updateSliderSettings);this.listenTo(this,"update:revisions",this.updateSliderSettings);this.listenTo(this,"change:hoveredRevision",this.hoverRevision);this.set({max:this.revisions.length-1,compareTwoMode:this.frame.get("compareTwoMode"),from:this.frame.get("from"),to:this.frame.get("to")});this.updateSliderSettings()},getSliderValue:function(d,c){return isRtl?this.revisions.length-this.revisions.indexOf(this.get(d))-1:this.revisions.indexOf(this.get(c))},updateSliderSettings:function(){if(this.get("compareTwoMode")){this.set({values:[this.getSliderValue("to","from"),this.getSliderValue("from","to")],value:null,range:true})}else{this.set({value:this.getSliderValue("to","to"),values:null,range:false})}this.trigger("update:slider")},hoverRevision:function(c,d){this.trigger("hovered:revision",d)},updateMode:function(c,d){this.set({compareTwoMode:d})},handleLocalChanges:function(){this.frame.set({from:this.get("from"),to:this.get("to")})},receiveRevisions:function(d,c){if(this.get("from")===d&&this.get("to")===c){return}this.set({from:d,to:c},{silent:true});this.trigger("update:revisions",d,c)}});a.model.Tooltip=Backbone.Model.extend({defaults:{revision:null,offset:{},hovering:false,scrubbing:false},initialize:function(c){this.frame=c.frame;this.revisions=c.revisions;this.slider=c.slider;this.listenTo(this.slider,"hovered:revision",this.updateRevision);this.listenTo(this.slider,"change:hovering",this.setHovering);this.listenTo(this.slider,"change:scrubbing",this.setScrubbing)},updateRevision:function(c){this.set({revision:c})},setHovering:function(c,d){this.set({hovering:d})},setScrubbing:function(c,d){this.set({scrubbing:d})}});a.model.Revision=Backbone.Model.extend({});a.model.Revisions=Backbone.Collection.extend({model:a.model.Revision,initialize:function(){_.bindAll(this,"next","prev")},next:function(d){var c=this.indexOf(d);if(c!==-1&&c!==this.length-1){return this.at(c+1)}},prev:function(d){var c=this.indexOf(d);if(c!==-1&&c!==0){return this.at(c-1)}}});a.model.Field=Backbone.Model.extend({});a.model.Fields=Backbone.Collection.extend({model:a.model.Field});a.model.Diff=Backbone.Model.extend({initialize:function(d,e){var c=this.get("fields");this.unset("fields");this.fields=new a.model.Fields(c)}});a.model.Diffs=Backbone.Collection.extend({initialize:function(d,c){_.bindAll(this,"getClosestUnloaded");this.loadAll=_.once(this._loadAll);this.revisions=c.revisions;this.requests={}},model:a.model.Diff,ensure:function(j,d){var g=this.get(j);var f=this.requests[j];var c=b.Deferred();var e={};var i=j.split(":")[0];var h=j.split(":")[1];e[j]=true;wp.revisions.log("ensure",j);this.trigger("ensure",e,i,h,c.promise());if(g){c.resolveWith(d,[g])}else{this.trigger("ensure:load",e,i,h,c.promise());_.each(e,_.bind(function(k){if(this.requests[k]){delete e[k]}if(this.get(k)){delete e[k]}},this));if(!f){e[j]=true;f=this.load(_.keys(e))}f.done(_.bind(function(){c.resolveWith(d,[this.get(j)])},this)).fail(_.bind(function(){c.reject()}))}return c.promise()},getClosestUnloaded:function(e,c){var d=this;return _.chain([0].concat(e)).initial().zip(e).sortBy(function(f){return Math.abs(c-f[1])}).map(function(f){return f.join(":")}).filter(function(f){return _.isUndefined(d.get(f))&&!d.requests[f]}).value()},_loadAll:function(g,c,f){var e=this,d=b.Deferred();diffs=_.first(this.getClosestUnloaded(g,c),f);if(_.size(diffs)>0){this.load(diffs).done(function(){e._loadAll(g,c,f).done(function(){d.resolve()})}).fail(function(){if(1===f){d.reject()}else{e._loadAll(g,c,Math.ceil(f/2)).done(function(){d.resolve()})}})}else{d.resolve()}return d},load:function(c){wp.revisions.log("load",c);return this.fetch({data:{compare:c},remove:false}).done(function(){wp.revisions.log("load:complete",c)})},sync:function(g,e,d){if("read"===g){d=d||{};d.context=this;d.data=_.extend(d.data||{},{action:"get-revision-diffs",post_id:a.settings.postId});var c=wp.ajax.send(d);var f=this.requests;if(d.data.compare){_.each(d.data.compare,function(h){f[h]=c})}c.always(function(){if(d.data.compare){_.each(d.data.compare,function(h){delete f[h]})}});return c}else{return Backbone.Model.prototype.sync.apply(this,arguments)}}});a.model.FrameState=Backbone.Model.extend({defaults:{loading:false,error:false,compareTwoMode:false},initialize:function(c,d){var e={};_.bindAll(this,"receiveDiff");this._debouncedEnsureDiff=_.debounce(this._ensureDiff,200);this.revisions=d.revisions;this.diffs=new a.model.Diffs([],{revisions:this.revisions});this.diffs.set(a.settings.diffData);this.listenTo(this,"change:from",this.changeRevisionHandler);this.listenTo(this,"change:to",this.changeRevisionHandler);this.listenTo(this,"change:compareTwoMode",this.changeMode);this.listenTo(this,"update:revisions",this.updatedRevisions);this.listenTo(this.diffs,"ensure:load",this.updateLoadingStatus);this.listenTo(this,"update:diff",this.updateLoadingStatus);e.to=this.revisions.get(a.settings.to);e.from=this.revisions.get(a.settings.from);e.compareTwoMode=a.settings.compareTwoMode;e.baseUrl=a.settings.baseUrl;this.set(e);if(window.history&&window.history.pushState){this.router=new a.Router({model:this});Backbone.history.start({pushState:true})}},updateLoadingStatus:function(){this.set("error",false);this.set("loading",!this.diff())},changeMode:function(c,d){if(d&&0===this.revisions.indexOf(this.get("to"))){this.set({from:this.revisions.at(0),to:this.revisions.at(1)})}},updatedRevisions:function(d,c){if(this.get("compareTwoMode")){}else{this.diffs.loadAll(this.revisions.pluck("id"),c.id,40)}},diff:function(){return this.diffs.get(this._diffId)},updateDiff:function(c){var g,f,d,e;c=c||{};g=this.get("from");f=this.get("to");d=(g?g.id:0)+":"+f.id;if(this._diffId===d){return b.Deferred().reject().promise()}this._diffId=d;this.trigger("update:revisions",g,f);e=this.diffs.get(d);if(e){this.receiveDiff(e);return b.Deferred().resolve().promise()}else{if(c.immediate){return this._ensureDiff()}else{this._debouncedEnsureDiff();return b.Deferred().reject().promise()}}},changeRevisionHandler:function(d,e,c){this.updateDiff()},receiveDiff:function(c){if(_.isUndefined(c)||_.isUndefined(c.id)){this.set({loading:false,error:true})}else{if(this._diffId===c.id){this.trigger("update:diff",c)}}},_ensureDiff:function(){return this.diffs.ensure(this._diffId,this).always(this.receiveDiff)}});a.view.Frame=wp.Backbone.View.extend({className:"revisions",template:wp.template("revisions-frame"),initialize:function(){this.listenTo(this.model,"update:diff",this.renderDiff);this.listenTo(this.model,"change:compareTwoMode",this.updateCompareTwoMode);this.listenTo(this.model,"change:loading",this.updateLoadingStatus);this.listenTo(this.model,"change:error",this.updateErrorStatus);this.views.set(".revisions-control-frame",new a.view.Controls({model:this.model}))},render:function(){wp.Backbone.View.prototype.render.apply(this,arguments);b("html").css("overflow-y","scroll");b("#wpbody-content .wrap").append(this.el);this.updateCompareTwoMode();this.renderDiff(this.model.diff());this.views.ready();return this},renderDiff:function(c){this.views.set(".revisions-diff-frame",new a.view.Diff({model:c}))},updateLoadingStatus:function(){this.$el.toggleClass("loading",this.model.get("loading"))},updateErrorStatus:function(){this.$el.toggleClass("diff-error",this.model.get("error"))},updateCompareTwoMode:function(){this.$el.toggleClass("comparing-two-revisions",this.model.get("compareTwoMode"))}});a.view.Controls=wp.Backbone.View.extend({className:"revisions-controls",initialize:function(){_.bindAll(this,"setWidth");this.views.add(new a.view.Buttons({model:this.model}));this.views.add(new a.view.Checkbox({model:this.model}));var c=new a.model.Slider({frame:this.model,revisions:this.model.revisions});var d=new a.model.Tooltip({frame:this.model,revisions:this.model.revisions,slider:c});this.views.add(new a.view.Tooltip({model:d}));this.views.add(new a.view.Tickmarks({model:d}));this.views.add(new a.view.Slider({model:c}));this.views.add(new a.view.Metabox({model:this.model}))},ready:function(){this.top=this.$el.offset().top;this.window=b(window);this.window.on("scroll.wp.revisions",{controls:this},function(g){var d=g.data.controls;var c=d.$el.parent();var f=d.window.scrollTop();var h=d.views.parent;if(f>=d.top){if(!h.$el.hasClass("pinned")){d.setWidth();c.css("height",c.height()+"px");d.window.on("resize.wp.revisions.pinning click.wp.revisions.pinning",{controls:d},function(i){i.data.controls.setWidth()})}h.$el.addClass("pinned")}else{if(h.$el.hasClass("pinned")){d.window.off(".wp.revisions.pinning");d.$el.css("width","auto");h.$el.removeClass("pinned");c.css("height","auto");d.top=d.$el.offset().top}else{d.top=d.$el.offset().top}}})},setWidth:function(){this.$el.css("width",this.$el.parent().width()+"px")}});a.view.Tickmarks=wp.Backbone.View.extend({className:"revisions-tickmarks",direction:isRtl?"right":"left",initialize:function(){this.listenTo(this.model,"change:revision",this.reportTickPosition)},reportTickPosition:function(f,e){var i,h,c,g,d=this.model.revisions.indexOf(e);h=this.$el.allOffsets();c=this.$el.parent().allOffsets();if(d===this.model.revisions.length-1){i={rightPlusWidth:h.left-c.left+1,leftPlusWidth:h.right-c.right+1}}else{g=this.$("div:nth-of-type("+(d+1)+")");i=g.allPositions();_.extend(i,{left:i.left+h.left-c.left,right:i.right+h.right-c.right});_.extend(i,{leftPlusWidth:i.left+g.outerWidth(),rightPlusWidth:i.right+g.outerWidth()})}this.model.set({offset:i})},ready:function(){var d,c;d=this.model.revisions.length-1;c=1/d;this.$el.css("width",(this.model.revisions.length*50)+"px");_(d).times(function(e){this.$el.append('<div style="'+this.direction+": "+(100*c*e)+'%"></div>')},this)}});a.view.Metabox=wp.Backbone.View.extend({className:"revisions-meta",initialize:function(){this.views.add(new a.view.MetaFrom({model:this.model,className:"diff-meta diff-meta-from"}));this.views.add(new a.view.MetaTo({model:this.model}))}});a.view.Meta=wp.Backbone.View.extend({template:wp.template("revisions-meta"),events:{"click .restore-revision":"restoreRevision"},initialize:function(){this.listenTo(this.model,"update:revisions",this.render)},prepare:function(){return _.extend(this.model.toJSON()[this.type]||{},{type:this.type})},restoreRevision:function(){document.location=this.model.get("to").attributes.restoreUrl}});a.view.MetaFrom=a.view.Meta.extend({className:"diff-meta diff-meta-from",type:"from"});a.view.MetaTo=a.view.Meta.extend({className:"diff-meta diff-meta-to",type:"to"});a.view.Checkbox=wp.Backbone.View.extend({className:"revisions-checkbox",template:wp.template("revisions-checkbox"),events:{"click .compare-two-revisions":"compareTwoToggle"},initialize:function(){this.listenTo(this.model,"change:compareTwoMode",this.updateCompareTwoMode)},ready:function(){if(this.model.revisions.length<3){b(".revision-toggle-compare-mode").hide()}},updateCompareTwoMode:function(){this.$(".compare-two-revisions").prop("checked",this.model.get("compareTwoMode"))},compareTwoToggle:function(c){this.model.set({compareTwoMode:b(".compare-two-revisions").prop("checked")})}});a.view.Tooltip=wp.Backbone.View.extend({className:"revisions-tooltip",template:wp.template("revisions-meta"),initialize:function(c){this.listenTo(this.model,"change:offset",this.render);this.listenTo(this.model,"change:hovering",this.toggleVisibility);this.listenTo(this.model,"change:scrubbing",this.toggleVisibility)},prepare:function(){if(_.isNull(this.model.get("revision"))){return}else{return _.extend({type:"tooltip"},{attributes:this.model.get("revision").toJSON()})}},render:function(){var g,e,f,d={},c=this.model.revisions.indexOf(this.model.get("revision"))+1;f=(c/this.model.revisions.length)>0.5;if(isRtl){g=f?"left":"right";e=f?"leftPlusWidth":g}else{g=f?"right":"left";e=f?"rightPlusWidth":g}otherDirection="right"===g?"left":"right";wp.Backbone.View.prototype.render.apply(this,arguments);d[g]=this.model.get("offset")[e]+"px";d[otherDirection]="";this.$el.toggleClass("flipped",f).css(d)},visible:function(){return this.model.get("scrubbing")||this.model.get("hovering")},toggleVisibility:function(c){if(this.visible()){this.$el.stop().show().fadeTo(100-this.el.style.opacity*100,1)}else{this.$el.stop().fadeTo(this.el.style.opacity*300,0,function(){b(this).hide()})}return}});a.view.Buttons=wp.Backbone.View.extend({className:"revisions-buttons",template:wp.template("revisions-buttons"),events:{"click .revisions-next .button":"nextRevision","click .revisions-previous .button":"previousRevision"},initialize:function(){this.listenTo(this.model,"update:revisions",this.disabledButtonCheck)},ready:function(){this.disabledButtonCheck()},gotoModel:function(d){var c={to:this.model.revisions.at(d)};if(d){c.from=this.model.revisions.at(d-1)}else{this.model.unset("from",{silent:true})}this.model.set(c)},nextRevision:function(){var c=this.model.revisions.indexOf(this.model.get("to"))+1;this.gotoModel(c)},previousRevision:function(){var c=this.model.revisions.indexOf(this.model.get("to"))-1;this.gotoModel(c)},disabledButtonCheck:function(){var g=this.model.revisions.length-1,c=0,d=b(".revisions-next .button"),e=b(".revisions-previous .button"),f=this.model.revisions.indexOf(this.model.get("to"));d.prop("disabled",(g===f));e.prop("disabled",(c===f))}});a.view.Slider=wp.Backbone.View.extend({className:"wp-slider",direction:isRtl?"right":"left",events:{mousemove:"mouseMove"},initialize:function(){_.bindAll(this,"start","slide","stop","mouseMove","mouseEnter","mouseLeave");this.listenTo(this.model,"update:slider",this.applySliderSettings)},ready:function(){this.$el.css("width",(this.model.revisions.length*50)+"px");this.$el.slider(_.extend(this.model.toJSON(),{start:this.start,slide:this.slide,stop:this.stop}));this.$el.hoverIntent({over:this.mouseEnter,out:this.mouseLeave,timeout:800});this.applySliderSettings()},mouseMove:function(j){var d=this.model.revisions.length-1,i=this.$el.allOffsets()[this.direction],g=this.$el.width(),c=g/d,h=isRtl?b(window).width()-j.pageX:j.pageX;h=h-i;var f=Math.floor((h+(c/2))/c);if(f<0){f=0}else{if(f>=this.model.revisions.length){f=this.model.revisions.length-1}}this.model.set({hoveredRevision:this.model.revisions.at(f)})},mouseLeave:function(){this.model.set({hovering:false})},mouseEnter:function(){this.model.set({hovering:true})},applySliderSettings:function(){this.$el.slider(_.pick(this.model.toJSON(),"value","values","range"));var c=this.$("a.ui-slider-handle");if(this.model.get("compareTwoMode")){c.first().toggleClass("to-handle",!!isRtl).toggleClass("from-handle",!isRtl);c.last().toggleClass("from-handle",!!isRtl).toggleClass("to-handle",!isRtl)}else{c.removeClass("from-handle to-handle")}},start:function(c,d){this.model.set({scrubbing:true});b(window).on("mousemove.wp.revisions",{view:this},function(i){var j=i.data.view,n=j.$el.offset().left,f=n,g=n+j.$el.width(),k=g,l="0",o="100%",h=b(d.handle);if(j.model.get("compareTwoMode")){var m=h.parent().find(".ui-slider-handle");if(h.is(m.first())){k=m.last().offset().left;o=k-f}else{n=m.first().offset().left+m.first().width();l=n-f}}if(i.pageX<n){h.css("left",l)}else{if(i.pageX>k){h.css("left",o)}else{h.css("left",i.pageX-f)}}})},getPosition:function(c){return isRtl?this.model.revisions.length-c-1:c},slide:function(d,f){var c,e;if(this.model.get("compareTwoMode")){if(f.values[1]===f.values[0]){return false}if(isRtl){f.values.reverse()}c={from:this.model.revisions.at(this.getPosition(f.values[0])),to:this.model.revisions.at(this.getPosition(f.values[1]))}}else{c={to:this.model.revisions.at(this.getPosition(f.value))};if(this.getPosition(f.value)>0){c.from=this.model.revisions.at(this.getPosition(f.value)-1)}else{c.from=undefined}}e=this.model.revisions.at(this.getPosition(f.value));if(this.model.get("scrubbing")){c.hoveredRevision=e}this.model.set(c)},stop:function(c,d){b(window).off("mousemove.wp.revisions");this.model.updateSliderSettings();this.model.set({scrubbing:false})}});a.view.Diff=wp.Backbone.View.extend({className:"revisions-diff",template:wp.template("revisions-diff"),prepare:function(){return _.extend({fields:this.model.fields.toJSON()},this.options)}});a.Router=Backbone.Router.extend({initialize:function(c){this.model=c.model;this.routes=_.object([[this.baseUrl("?from=:from&to=:to"),"handleRoute"],[this.baseUrl("?from=:from&to=:to"),"handleRoute"]]);this.listenTo(this.model,"update:diff",_.debounce(this.updateUrl,250));this.listenTo(this.model,"change:compareTwoMode",this.updateUrl)},baseUrl:function(c){return this.model.get("baseUrl")+c},updateUrl:function(){var d=this.model.has("from")?this.model.get("from").id:0;var c=this.model.get("to").id;if(this.model.get("compareTwoMode")){this.navigate(this.baseUrl("?from="+d+"&to="+c))}else{this.navigate(this.baseUrl("?revision="+c))}},handleRoute:function(d,c){var g,f,e=_.isUndefined(c);if(!e){c=this.model.revisions.get(d);d=this.model.revisions.prev(c);c=c?c.id:0;d=d?d.id:0}this.model.set({from:this.model.revisions.get(parseInt(d,10)),to:this.model.revisions.get(parseInt(d,10)),compareTwoMode:e})}});a.init=function(){a.view.frame=new a.view.Frame({model:new a.model.FrameState({},{revisions:new a.model.Revisions(a.settings.revisionData)})}).render()};b(a.init)}(jQuery));
\ No newline at end of file
diff --git a/wp-admin/js/tags.js b/wp-admin/js/tags.js
index e8ac151a2..c403ad8c2 100644
--- a/wp-admin/js/tags.js
+++ b/wp-admin/js/tags.js
@@ -1,6 +1,6 @@
 jQuery(document).ready(function($) {
 
-	$('.delete-tag').live('click', function(e){
+	$('#the-list').on('click', '.delete-tag', function(e){
 		var t = $(this), tr = t.parents('tr'), r = true, data;
 		if ( 'undefined' != showNotice )
 			r = showNotice.warn();
diff --git a/wp-admin/js/tags.min.js b/wp-admin/js/tags.min.js
index b14c79ce2..c187750fd 100644
--- a/wp-admin/js/tags.min.js
+++ b/wp-admin/js/tags.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(a){a(".delete-tag").live("click",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f||f.errors){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
+jQuery(document).ready(function(a){a("#the-list").on("click",".delete-tag",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f||f.errors){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
diff --git a/wp-admin/js/theme.js b/wp-admin/js/theme.js
index 079c73b5e..0899ab72f 100644
--- a/wp-admin/js/theme.js
+++ b/wp-admin/js/theme.js
@@ -18,6 +18,31 @@ jQuery( function($) {
 	});
 });
 
+/**
+ * Theme Browser Thickbox
+ *
+ * Aligns theme browser thickbox.
+ */
+var tb_position;
+jQuery(document).ready( function($) {
+	tb_position = function() {
+		var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 1040 < width ) ? 1040 : width, adminbar_height = 0;
+
+		if ( $('body.admin-bar').length )
+			adminbar_height = 28;
+
+		if ( tbWindow.size() ) {
+			tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
+			$('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
+			tbWindow.css({'margin-left': '-' + parseInt( ( ( W - 50 ) / 2 ), 10 ) + 'px'});
+			if ( typeof document.body.style.maxWidth != 'undefined' )
+				tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
+		};
+	};
+
+	$(window).resize(function(){ tb_position(); });
+});
+
 /**
  * Theme Install
  *
diff --git a/wp-admin/js/theme.min.js b/wp-admin/js/theme.min.js
index a67f9ba1a..3efe890ff 100644
--- a/wp-admin/js/theme.min.js
+++ b/wp-admin/js/theme.min.js
@@ -1 +1 @@
-jQuery(function(a){a("#availablethemes").on("click",".theme-detail",function(c){var d=a(this).closest(".available-theme"),b=d.find(".themedetaildiv");if(!b.length){b=d.find(".install-theme-info .theme-details");b=b.clone().addClass("themedetaildiv").appendTo(d).hide()}b.toggle();c.preventDefault()})});jQuery(function(c){if(!window.postMessage){return}var e=c("#theme-installer"),d=e.find(".install-theme-info"),b=e.find(".wp-full-overlay-main"),a=c(document.body);e.on("click",".close-full-overlay",function(f){e.fadeOut(200,function(){b.empty();a.removeClass("theme-installer-active full-overlay-active")});f.preventDefault()});e.on("click",".collapse-sidebar",function(f){e.toggleClass("collapsed").toggleClass("expanded");f.preventDefault()});c("#availablethemes").on("click",".install-theme-preview",function(f){var g;d.html(c(this).closest(".installable-theme").find(".install-theme-info").html());g=d.find(".theme-preview-url").val();b.html('<iframe src="'+g+'" />');e.fadeIn(200,function(){a.addClass("theme-installer-active full-overlay-active")});f.preventDefault()})});var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});var ThemeScroller;(function(a){ThemeScroller={querying:false,scrollPollingDelay:500,failedRetryDelay:4000,outListBottomThreshold:300,init:function(){var b=this;if(typeof ajaxurl==="undefined"||typeof list_args==="undefined"||typeof theme_list_args==="undefined"){a(".pagination-links").show();return}this.nonce=a("#_ajax_fetch_list_nonce").val();this.nextPage=(theme_list_args.paged+1);this.$outList=a("#availablethemes");this.$spinner=a("div.tablenav.bottom").children(".spinner");this.$window=a(window);this.$document=a(document);if(theme_list_args.total_pages>=this.nextPage){this.pollInterval=setInterval(function(){return b.poll()},this.scrollPollingDelay)}},poll:function(){var b=this.$document.scrollTop()+this.$window.innerHeight();if(this.querying||(b<this.$outList.height()-this.outListBottomThreshold)){return}this.ajax()},process:function(b){if(b===undefined){clearInterval(this.pollInterval);return}if(this.nextPage>theme_list_args.total_pages){clearInterval(this.pollInterval)}if(this.nextPage<=(theme_list_args.total_pages+1)){this.$outList.append(b.rows)}},ajax:function(){var b=this;this.querying=true;var c={action:"fetch-list",paged:this.nextPage,s:theme_list_args.search,tab:theme_list_args.tab,type:theme_list_args.type,_ajax_fetch_list_nonce:this.nonce,"features[]":theme_list_args.features,list_args:list_args};this.$spinner.show();a.getJSON(ajaxurl,c).done(function(d){b.nextPage++;b.process(d);b.$spinner.hide();b.querying=false}).fail(function(){b.$spinner.hide();b.querying=false;setTimeout(function(){b.ajax()},b.failedRetryDelay)})}};a(document).ready(function(b){ThemeScroller.init()})})(jQuery);
\ No newline at end of file
+jQuery(function(a){a("#availablethemes").on("click",".theme-detail",function(c){var d=a(this).closest(".available-theme"),b=d.find(".themedetaildiv");if(!b.length){b=d.find(".install-theme-info .theme-details");b=b.clone().addClass("themedetaildiv").appendTo(d).hide()}b.toggle();c.preventDefault()})});var tb_position;jQuery(document).ready(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(1040<e)?1040:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}};a(window).resize(function(){tb_position()})});jQuery(function(c){if(!window.postMessage){return}var e=c("#theme-installer"),d=e.find(".install-theme-info"),b=e.find(".wp-full-overlay-main"),a=c(document.body);e.on("click",".close-full-overlay",function(f){e.fadeOut(200,function(){b.empty();a.removeClass("theme-installer-active full-overlay-active")});f.preventDefault()});e.on("click",".collapse-sidebar",function(f){e.toggleClass("collapsed").toggleClass("expanded");f.preventDefault()});c("#availablethemes").on("click",".install-theme-preview",function(f){var g;d.html(c(this).closest(".installable-theme").find(".install-theme-info").html());g=d.find(".theme-preview-url").val();b.html('<iframe src="'+g+'" />');e.fadeIn(200,function(){a.addClass("theme-installer-active full-overlay-active")});f.preventDefault()})});var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});var ThemeScroller;(function(a){ThemeScroller={querying:false,scrollPollingDelay:500,failedRetryDelay:4000,outListBottomThreshold:300,init:function(){var b=this;if(typeof ajaxurl==="undefined"||typeof list_args==="undefined"||typeof theme_list_args==="undefined"){a(".pagination-links").show();return}this.nonce=a("#_ajax_fetch_list_nonce").val();this.nextPage=(theme_list_args.paged+1);this.$outList=a("#availablethemes");this.$spinner=a("div.tablenav.bottom").children(".spinner");this.$window=a(window);this.$document=a(document);if(theme_list_args.total_pages>=this.nextPage){this.pollInterval=setInterval(function(){return b.poll()},this.scrollPollingDelay)}},poll:function(){var b=this.$document.scrollTop()+this.$window.innerHeight();if(this.querying||(b<this.$outList.height()-this.outListBottomThreshold)){return}this.ajax()},process:function(b){if(b===undefined){clearInterval(this.pollInterval);return}if(this.nextPage>theme_list_args.total_pages){clearInterval(this.pollInterval)}if(this.nextPage<=(theme_list_args.total_pages+1)){this.$outList.append(b.rows)}},ajax:function(){var b=this;this.querying=true;var c={action:"fetch-list",paged:this.nextPage,s:theme_list_args.search,tab:theme_list_args.tab,type:theme_list_args.type,_ajax_fetch_list_nonce:this.nonce,"features[]":theme_list_args.features,list_args:list_args};this.$spinner.show();a.getJSON(ajaxurl,c).done(function(d){b.nextPage++;b.process(d);b.$spinner.hide();b.querying=false}).fail(function(){b.$spinner.hide();b.querying=false;setTimeout(function(){b.ajax()},b.failedRetryDelay)})}};a(document).ready(function(b){ThemeScroller.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/link-add.php b/wp-admin/link-add.php
index 2abd79952..6f9c5678e 100644
--- a/wp-admin/link-add.php
+++ b/wp-admin/link-add.php
@@ -15,10 +15,7 @@ if ( ! current_user_can('manage_links') )
 $title = __('Add New Link');
 $parent_file = 'link-manager.php';
 
-wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image',
-	'description', 'visible', 'target', 'category', 'link_id',
-	'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel',
-	'notes', 'linkcheck[]'));
+wp_reset_vars( array('action', 'cat_id', 'link_id' ) );
 
 wp_enqueue_script('link');
 wp_enqueue_script('xfn');
diff --git a/wp-admin/link-manager.php b/wp-admin/link-manager.php
index 92194f039..3154f8e3d 100644
--- a/wp-admin/link-manager.php
+++ b/wp-admin/link-manager.php
@@ -31,7 +31,7 @@ if ( $doaction && isset( $_REQUEST['linkcheck'] ) ) {
 		exit;
 	}
 } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) {
-	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) );
+	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
 	 exit;
 }
 
@@ -72,7 +72,7 @@ if ( ! current_user_can('manage_links') )
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?> <a href="link-add.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'link'); ?></a> <?php
 if ( !empty($_REQUEST['s']) )
-	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes($_REQUEST['s']) ) ); ?>
+	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( wp_unslash($_REQUEST['s']) ) ); ?>
 </h2>
 
 <?php
diff --git a/wp-admin/link.php b/wp-admin/link.php
index d12d229ed..e696d4544 100644
--- a/wp-admin/link.php
+++ b/wp-admin/link.php
@@ -12,7 +12,7 @@
 /** Load WordPress Administration Bootstrap */
 require_once ('admin.php');
 
-wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]'));
+wp_reset_vars( array( 'action', 'cat_id', 'link_id' ) );
 
 if ( ! current_user_can('manage_links') )
 	wp_link_manager_disabled_message();
diff --git a/wp-admin/load-scripts.php b/wp-admin/load-scripts.php
index 4d185ed53..8dfe3b18a 100644
--- a/wp-admin/load-scripts.php
+++ b/wp-admin/load-scripts.php
@@ -119,7 +119,7 @@ if ( is_array( $load ) )
 	$load = implode( '', $load );
 
 $load = preg_replace( '/[^a-z0-9,_-]+/i', '', $load );
-$load = explode(',', $load);
+$load = array_unique( explode( ',', $load ) );
 
 if ( empty($load) )
 	exit;
diff --git a/wp-admin/load-styles.php b/wp-admin/load-styles.php
index 8ff93f52e..d2f8bfbde 100644
--- a/wp-admin/load-styles.php
+++ b/wp-admin/load-styles.php
@@ -96,7 +96,7 @@ require(ABSPATH . '/wp-includes/script-loader.php');
 require(ABSPATH . '/wp-includes/version.php');
 
 $load = preg_replace( '/[^a-z0-9,_-]+/i', '', $_GET['load'] );
-$load = explode(',', $load);
+$load = array_unique( explode( ',', $load ) );
 
 if ( empty($load) )
 	exit;
diff --git a/wp-admin/maint/repair.php b/wp-admin/maint/repair.php
index 288016940..7cc13e11a 100644
--- a/wp-admin/maint/repair.php
+++ b/wp-admin/maint/repair.php
@@ -21,7 +21,7 @@ header( 'Content-Type: text/html; charset=utf-8' );
 	?>
 </head>
 <body class="wp-core-ui">
-<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
+<h1 id="logo"><a href="<?php echo esc_url( __( 'http://wordpress.org/' ) ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php
 
diff --git a/wp-admin/media-new.php b/wp-admin/media-new.php
index c6a7ae141..e42881195 100644
--- a/wp-admin/media-new.php
+++ b/wp-admin/media-new.php
@@ -68,7 +68,7 @@ if ( get_user_setting('uploader') || isset( $_GET['browser-uploader'] ) )
 	<?php screen_icon(); ?>
 	<h2><?php echo esc_html( $title ); ?></h2>
 
-	<form enctype="multipart/form-data" method="post" action="<?php echo admin_url('media-new.php'); ?>" class="<?php echo $form_class; ?>" id="file-form">
+	<form enctype="multipart/form-data" method="post" action="<?php echo admin_url('media-new.php'); ?>" class="<?php echo esc_attr( $form_class ); ?>" id="file-form">
 
 	<?php media_upload_form(); ?>
 
diff --git a/wp-admin/menu-header.php b/wp-admin/menu-header.php
index 25ebaa00f..c158cc203 100644
--- a/wp-admin/menu-header.php
+++ b/wp-admin/menu-header.php
@@ -87,7 +87,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
 			$menu_file = $submenu_items[0][2];
 			if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
 				$menu_file = substr( $menu_file, 0, $pos );
-			if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
+			if ( ! empty( $menu_hook ) || ( ( 'index.php' != $submenu_items[0][2] ) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! file_exists( ABSPATH . "/wp-admin/$menu_file" ) ) ) {
 				$admin_is_parent = true;
 				echo "<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>$title</div></a>";
 			} else {
@@ -98,7 +98,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
 			$menu_file = $item[2];
 			if ( false !== ( $pos = strpos( $menu_file, '?' ) ) )
 				$menu_file = substr( $menu_file, 0, $pos );
-			if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
+			if ( ! empty( $menu_hook ) || ( ( 'index.php' != $item[2] ) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! file_exists( ABSPATH . "/wp-admin/$menu_file" ) ) ) {
 				$admin_is_parent = true;
 				echo "\n\t<a href='admin.php?page={$item[2]}'$class $aria_attributes>$arrow<div class='wp-menu-image'>$img</div><div class='wp-menu-name'>{$item[0]}</div></a>";
 			} else {
@@ -150,12 +150,12 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
 
 				$title = wptexturize($sub_item[0]);
 
-				if ( ! empty( $menu_hook ) || ( ('index.php' != $sub_item[2]) && file_exists( WP_PLUGIN_DIR . "/$sub_file" ) ) ) {
+				if ( ! empty( $menu_hook ) || ( ( 'index.php' != $sub_item[2] ) && file_exists( WP_PLUGIN_DIR . "/$sub_file" ) && ! file_exists( ABSPATH . "/wp-admin/$sub_file" ) ) ) {
 					// If admin.php is the current page or if the parent exists as a file in the plugins or admin dir
-					if ( (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}")) || file_exists($menu_file) )
-						$sub_item_url = add_query_arg( array('page' => $sub_item[2]), $item[2] );
+					if ( ( ! $admin_is_parent && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! is_dir( WP_PLUGIN_DIR . "/{$item[2]}" ) ) || file_exists( $menu_file ) )
+						$sub_item_url = add_query_arg( array( 'page' => $sub_item[2] ), $item[2] );
 					else
-						$sub_item_url = add_query_arg( array('page' => $sub_item[2]), 'admin.php' );
+						$sub_item_url = add_query_arg( array( 'page' => $sub_item[2] ), 'admin.php' );
 
 					$sub_item_url = esc_url( $sub_item_url );
 					echo "<li$class><a href='$sub_item_url'$class>$title</a></li>";
diff --git a/wp-admin/menu.php b/wp-admin/menu.php
index 90c585dbd..365b45954 100644
--- a/wp-admin/menu.php
+++ b/wp-admin/menu.php
@@ -136,17 +136,15 @@ unset($ptype, $ptype_obj, $ptype_class, $ptype_for_id, $ptype_menu_position, $me
 
 $menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' );
 
-if ( current_user_can( 'switch_themes') ) {
-	$menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'none' );
-		$submenu['themes.php'][5]  = array(__('Themes'), 'switch_themes', 'themes.php');
-		if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
-			$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php');
-} else {
-	$menu[60] = array( __('Appearance'), 'edit_theme_options', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'none' );
-		$submenu['themes.php'][5]  = array(__('Themes'), 'edit_theme_options', 'themes.php');
-		if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
-			$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php' );
-}
+$appearance_cap = current_user_can( 'switch_themes') ? 'switch_themes' : 'edit_theme_options';
+
+$menu[60] = array( __('Appearance'), $appearance_cap, 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
+	$submenu['themes.php'][5] = array( __( 'Themes' ), $appearance_cap, 'themes.php' );
+	$submenu['themes.php'][6] = array( __( 'Customize' ), 'edit_theme_options', 'customize.php', 'hide-if-no-customize' );
+	if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
+		$submenu['themes.php'][10] = array(__( 'Menus' ), 'edit_theme_options', 'nav-menus.php');
+
+unset( $appearance_cap );
 
 // Add 'Editor' to the bottom of the Appearance menu.
 if ( ! is_multisite() )
diff --git a/wp-admin/nav-menus.php b/wp-admin/nav-menus.php
index 361d0f6cd..549d03b5a 100644
--- a/wp-admin/nav-menus.php
+++ b/wp-admin/nav-menus.php
@@ -36,6 +36,11 @@ $nav_menu_selected_title = '';
 // The menu id of the current menu being edited
 $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0;
 
+// Get existing menu locations assignments
+$locations = get_registered_nav_menus();
+$menu_locations = get_nav_menu_locations();
+$num_locations = count( array_keys( $locations ) );
+
 // Allowed actions: add, update, delete
 $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'edit';
 
@@ -221,49 +226,60 @@ switch ( $action ) {
 		if ( is_nav_menu_item( $menu_item_id ) && wp_delete_post( $menu_item_id, true ) )
 			$messages[] = '<div id="message" class="updated"><p>' . __('The menu item has been successfully deleted.') . '</p></div>';
 		break;
+
 	case 'delete':
 		check_admin_referer( 'delete-nav_menu-' . $nav_menu_selected_id );
-
 		if ( is_nav_menu( $nav_menu_selected_id ) ) {
-			$deleted_nav_menu = wp_get_nav_menu_object( $nav_menu_selected_id );
-			$delete_nav_menu = wp_delete_nav_menu( $nav_menu_selected_id );
-
-			if ( is_wp_error($delete_nav_menu) ) {
-				$messages[] = '<div id="message" class="error"><p>' . $delete_nav_menu->get_error_message() . '</p></div>';
-			} else {
-				// Remove this menu from any locations.
-				$locations = get_theme_mod( 'nav_menu_locations' );
-				foreach ( (array) $locations as $location => $menu_id ) {
-					if ( $menu_id == $nav_menu_selected_id )
-						$locations[ $location ] = 0;
-				}
-				set_theme_mod( 'nav_menu_locations', $locations );
-				$messages[] = '<div id="message" class="updated"><p>' . __('The menu has been successfully deleted.') . '</p></div>';
-				// Select the next available menu
-				$nav_menu_selected_id = 0;
-				$_nav_menus = wp_get_nav_menus( array('orderby' => 'name') );
-				foreach( $_nav_menus as $index => $_nav_menu ) {
-					if ( strcmp( $_nav_menu->name, $deleted_nav_menu->name ) >= 0
-					 || $index == count( $_nav_menus ) - 1 ) {
-						$nav_menu_selected_id = $_nav_menu->term_id;
-						break;
-					}
-				}
-			}
-			unset( $delete_nav_menu, $deleted_nav_menu, $_nav_menus );
+			$deletion = wp_delete_nav_menu( $nav_menu_selected_id );
 		} else {
 			// Reset the selected menu
 			$nav_menu_selected_id = 0;
 			unset( $_REQUEST['menu'] );
 		}
+
+		if ( ! isset( $deletion ) )
+			break;
+
+		if ( is_wp_error( $deletion ) )
+			$messages[] = '<div id="message" class="error"><p>' . $deletion->get_error_message() . '</p></div>';
+		else
+			$messages[] = '<div id="message" class="updated"><p>' . __( 'The menu has been successfully deleted.' ) . '</p></div>';
+		break;
+
+	case 'delete_menus':
+		check_admin_referer( 'nav_menus_bulk_actions' );
+		foreach ( $_REQUEST['delete_menus'] as $menu_id_to_delete ) {
+			if ( ! is_nav_menu( $menu_id_to_delete ) )
+				continue;
+
+			$deletion = wp_delete_nav_menu( $menu_id_to_delete );
+			if ( is_wp_error( $deletion ) ) {
+				$messages[] = '<div id="message" class="error"><p>' . $deletion->get_error_message() . '</p></div>';
+				$deletion_error = true;
+			}
+		}
+
+		if ( empty( $deletion_error ) )
+			$messages[] = '<div id="message" class="updated"><p>' . __( 'Selected menus have been successfully deleted.' ) . '</p></div>';
 		break;
 
 	case 'update':
 		check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
 
-		// Update menu theme locations
-		if ( isset( $_POST['menu-locations'] ) )
-			set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
+		// Remove menu locations that have been unchecked
+		foreach ( $locations as $location => $description ) {
+			if ( ( empty( $_POST['menu-locations'] ) || empty( $_POST['menu-locations'][ $location ] ) ) && isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id )
+				unset( $menu_locations[ $location ] );
+		}
+
+		// Merge new and existing menu locations if any new ones are set
+		if ( isset( $_POST['menu-locations'] ) ) {
+			$new_menu_locations = array_map( 'absint', $_POST['menu-locations'] );
+			$menu_locations = array_merge( $menu_locations, $new_menu_locations );
+		}
+
+		// Set menu locations
+		set_theme_mod( 'nav_menu_locations', $menu_locations );
 
 		// Add Menu
 		if ( 0 == $nav_menu_selected_id ) {
@@ -278,20 +294,41 @@ switch ( $action ) {
 					$_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
 					$nav_menu_selected_id = $_nav_menu_selected_id;
 					$nav_menu_selected_title = $_menu_object->name;
-					$messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
+					if ( isset( $_REQUEST['menu-item'] ) )
+						wp_save_nav_menu_items( $nav_menu_selected_id, absint( $_REQUEST['menu-item'] ) );
+					if ( isset( $_REQUEST['zero-menu-state'] ) ) {
+						// If there are menu items, add them
+						wp_nav_menu_update_menu_items( $nav_menu_selected_id, $nav_menu_selected_title );
+						// Auto-save nav_menu_locations
+						$locations = get_theme_mod( 'nav_menu_locations' );
+						foreach ( (array) $locations as $location => $menu_id ) {
+								$locations[ $location ] = $nav_menu_selected_id;
+								break; // There should only be 1
+						}
+						set_theme_mod( 'nav_menu_locations', $locations );
+					}
+					if ( isset( $_REQUEST['use-location'] ) ) {
+						$locations = get_theme_mod( 'nav_menu_locations' );
+						if ( isset( $locations[$_REQUEST['use-location']] ) )
+							$locations[$_REQUEST['use-location']] = $nav_menu_selected_id;
+						set_theme_mod( 'nav_menu_locations', $locations );
+					}
+					// $messages[] = '<div id="message" class="updated"><p>' . sprintf( __( '<strong>%s</strong> has been created.' ), $nav_menu_selected_title ) . '</p></div>';
+					wp_redirect( admin_url( 'nav-menus.php?menu=' . $_nav_menu_selected_id ) );
+					exit();
 				}
 			} else {
-				$messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
+				$messages[] = '<div id="message" class="error"><p>' . __( 'Please enter a valid menu name.' ) . '</p></div>';
 			}
 
-		// update existing menu
+		// Update existing menu
 		} else {
 
 			$_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
 
 			$menu_title = trim( esc_html( $_POST['menu-name'] ) );
 			if ( ! $menu_title ) {
-				$messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
+				$messages[] = '<div id="message" class="error"><p>' . __( 'Please enter a valid menu name.' ) . '</p></div>';
 				$menu_title = $_menu_object->name;
 			}
 
@@ -307,89 +344,87 @@ switch ( $action ) {
 			}
 
 			// Update menu items
-
 			if ( ! is_wp_error( $_menu_object ) ) {
-				$unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish') );
-				$menu_items = array();
-				// Index menu items by db ID
-				foreach( $unsorted_menu_items as $_item )
-					$menu_items[$_item->db_id] = $_item;
-
-				$post_fields = array( 'menu-item-db-id', 'menu-item-object-id', 'menu-item-object', 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', 'menu-item-title', 'menu-item-url', 'menu-item-description', 'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn' );
-				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 ) {
-
-						// Menu item title can't be blank
-						if ( empty( $_POST['menu-item-title'][$_key] ) )
-							continue;
-
-						$args = array();
-						foreach ( $post_fields as $field )
-							$args[$field] = isset( $_POST[$field][$_key] ) ? $_POST[$field][$_key] : '';
-
-						$menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key ), $args );
-
-						if ( is_wp_error( $menu_item_db_id ) )
-							$messages[] = '<div id="message" class="error"><p>' . $menu_item_db_id->get_error_message() . '</p></div>';
-						elseif ( isset( $menu_items[$menu_item_db_id] ) )
-							unset( $menu_items[$menu_item_db_id] );
-					}
-				}
-
-				// Remove menu items from the menu that weren't in $_POST
-				if ( ! empty( $menu_items ) ) {
-					foreach ( array_keys( $menu_items ) as $menu_item_id ) {
-						if ( is_nav_menu_item( $menu_item_id ) ) {
-							wp_delete_post( $menu_item_id );
-						}
-					}
-				}
+				$messages = array_merge( $messages, wp_nav_menu_update_menu_items( $nav_menu_selected_id, $nav_menu_selected_title ) );
+			}
+		}
+		break;
+	case 'locations':
+		if ( ! $num_locations ) {
+			wp_redirect( admin_url( 'nav-menus.php' ) );
+			exit();
+		}
 
-				// Store 'auto-add' pages.
-				$auto_add = ! empty( $_POST['auto-add-pages'] );
-				$nav_menu_option = (array) get_option( 'nav_menu_options' );
-				if ( ! isset( $nav_menu_option['auto_add'] ) )
-					$nav_menu_option['auto_add'] = array();
-				if ( $auto_add ) {
-					if ( ! in_array( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) )
-						$nav_menu_option['auto_add'][] = $nav_menu_selected_id;
-				} else {
-					if ( false !== ( $key = array_search( $nav_menu_selected_id, $nav_menu_option['auto_add'] ) ) )
-						unset( $nav_menu_option['auto_add'][$key] );
-				}
-				// Remove nonexistent/deleted menus
-				$nav_menu_option['auto_add'] = array_intersect( $nav_menu_option['auto_add'], wp_get_nav_menus( array( 'fields' => 'ids' ) ) );
-				update_option( 'nav_menu_options', $nav_menu_option );
+		add_filter( 'screen_options_show_screen', '__return_false' );
 
-				wp_defer_term_counting(false);
+		if ( isset( $_POST['menu-locations'] ) ) {
+			check_admin_referer( 'save-menu-locations' );
 
-				do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
+			$new_menu_locations = array_map( 'absint', $_POST['menu-locations'] );
+			$menu_locations = array_merge( $menu_locations, $new_menu_locations );
+			// Set menu locations
+			set_theme_mod( 'nav_menu_locations', $menu_locations );
 
-				$messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been updated.'), $nav_menu_selected_title ) . '</p></div>';
-				unset( $menu_items, $unsorted_menu_items );
-			}
+			$messages[] = '<div id="message" class="updated"><p>' . __( 'Menu locations updated.' ) . '</p></div>';
 		}
 		break;
 }
 
 // Get all nav menus
 $nav_menus = wp_get_nav_menus( array('orderby' => 'name') );
+$menu_count = count( $nav_menus );
+
+// Are we on the add new screen?
+$add_new_screen = ( isset( $_GET['menu'] ) && 0 == $_GET['menu'] ) ? true : false;
+
+$locations_screen = ( isset( $_GET['action'] ) && 'locations' == $_GET['action'] ) ? true : false;
+
+// If we have one theme location, and zero menus, we take them right into editing their first menu
+$page_count = wp_count_posts( 'page' );
+$one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false;
+
+$nav_menus_l10n = array(
+	'oneThemeLocationNoMenus' => $one_theme_location_no_menus,
+	'moveUp'       => __( 'Move up one' ),
+	'moveDown'     => __( 'Move down one' ),
+	'moveToTop'    => __( 'Move to the top' ),
+	/* translators: %s: previous item name */
+	'moveUnder'    => __( 'Move under %s' ),
+	/* translators: %s: previous item name */
+	'moveOutFrom'  => __( 'Move out from under %s' ),
+	/* translators: %s: previous item name */
+	'under'        => __( 'Under %s' ),
+	/* translators: %s: previous item name */
+	'outFrom'      => __( 'Out from under %s' ),
+	/* translators: 1: item name, 2: item position, 3: total number of items */
+	'menuFocus'    => __( '%1$s. Menu item %2$d of %3$d.' ),
+	/* translators: 1: item name, 2: item position, 3: parent item name */
+	'subMenuFocus' => __( '%1$s. Sub item number %2$d under %3$s.' ),
+);
+wp_localize_script( 'nav-menu', 'menus', $nav_menus_l10n );
 
-// Get recently edited nav menu
-$recently_edited = (int) get_user_option( 'nav_menu_recently_edited' );
+// Redirect to add screen if there are no menus and this users has either zero, or more than 1 theme locations
+if ( 0 == $menu_count && ! $add_new_screen && ! $one_theme_location_no_menus )
+	wp_redirect( admin_url( 'nav-menus.php?action=edit&menu=0' ) );
 
-// If there was no recently edited menu, and $nav_menu_selected_id is a nav menu, update recently edited menu.
-if ( !$recently_edited && is_nav_menu( $nav_menu_selected_id ) ) {
+// Get recently edited nav menu
+$recently_edited = absint( get_user_option( 'nav_menu_recently_edited' ) );
+if ( empty( $recently_edited ) && is_nav_menu( $nav_menu_selected_id ) )
 	$recently_edited = $nav_menu_selected_id;
 
-// Else if $nav_menu_selected_id is not a menu and not requesting that we create a new menu, but $recently_edited is a menu, grab that one.
-} elseif ( 0 == $nav_menu_selected_id && ! isset( $_REQUEST['menu'] ) && is_nav_menu( $recently_edited ) ) {
+// Use $recently_edited if none are selected
+if ( empty( $nav_menu_selected_id ) && ! isset( $_GET['menu'] ) && is_nav_menu( $recently_edited ) )
 	$nav_menu_selected_id = $recently_edited;
 
-// Else try to grab the first menu from the menus list
-} elseif ( 0 == $nav_menu_selected_id && ! isset( $_REQUEST['menu'] ) && ! empty($nav_menus) ) {
+// On deletion of menu, if another menu exists, show it
+if ( ! $add_new_screen && 0 < $menu_count && isset( $_GET['action'] ) && 'delete' == $_GET['action'] )
+	$nav_menu_selected_id = $nav_menus[0]->term_id;
+
+// Set $nav_menu_selected_id to 0 if no menus
+if ( $one_theme_location_no_menus ) {
+	$nav_menu_selected_id = 0;
+} elseif ( empty( $nav_menu_selected_id ) && ! empty( $nav_menus ) && ! $add_new_screen ) {
+	// if we have no selection yet, and we have menus, set to the first one in the list
 	$nav_menu_selected_id = $nav_menus[0]->term_id;
 }
 
@@ -405,11 +440,13 @@ if ( ! $nav_menu_selected_title && is_nav_menu( $nav_menu_selected_id ) ) {
 
 // Generate truncated menu names
 foreach( (array) $nav_menus as $key => $_nav_menu ) {
-	$_nav_menu->truncated_name = trim( wp_html_excerpt( $_nav_menu->name, 40 ) );
-	if ( $_nav_menu->truncated_name != $_nav_menu->name )
-		$_nav_menu->truncated_name .= '&hellip;';
+	$nav_menus[$key]->truncated_name = wp_html_excerpt( $_nav_menu->name, 40, '&hellip;' );
+}
 
-	$nav_menus[$key]->truncated_name = $_nav_menu->truncated_name;
+// Retrieve menu locations
+if ( current_theme_supports( 'menus' ) ) {
+	$locations = get_registered_nav_menus();
+	$menu_locations = get_nav_menu_locations();
 }
 
 // Ensure the user will be able to scroll horizontally
@@ -418,8 +455,10 @@ global $_wp_nav_menu_max_depth;
 $_wp_nav_menu_max_depth = 0;
 
 // Calling wp_get_nav_menu_to_edit generates $_wp_nav_menu_max_depth
-if ( is_nav_menu( $nav_menu_selected_id ) )
+if ( is_nav_menu( $nav_menu_selected_id ) ) {
+	$menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array( 'post_status' => 'any' ) );
 	$edit_markup = wp_get_nav_menu_to_edit( $nav_menu_selected_id );
+}
 
 function wp_nav_menu_max_depth($classes) {
 	global $_wp_nav_menu_max_depth;
@@ -431,23 +470,57 @@ add_filter('admin_body_class', 'wp_nav_menu_max_depth');
 wp_nav_menu_setup();
 wp_initial_nav_menu_meta_boxes();
 
-if ( ! current_theme_supports( 'menus' ) && ! wp_get_nav_menus() )
-	$messages[] = '<div id="message" class="updated"><p>' . __('The current theme does not natively support menus, but you can use the &#8220;Custom Menu&#8221; widget to add any menus you create here to the theme&#8217;s sidebar.') . '</p></div>';
-
-get_current_screen()->add_help_tab( array(
-'id'		=> 'overview',
-'title'		=> __('Overview'),
-'content'	=>
-	'<p>' . __('This feature allows you to use a custom menu in place of your theme&#8217;s default menus.') . '</p>' .
-	'<p>' . __('Custom menus may contain links to pages, categories, custom links or other content types (use the Screen Options tab to decide which ones to show on the screen). You can specify a different navigation label for a menu item as well as other attributes. You can create multiple menus. If your theme includes more than one menu location, you can choose which custom menu to associate with each. You can also use custom menus in conjunction with the Custom Menus widget.') . '</p>' .
-	'<p>' . sprintf( __('If your theme does not support the custom menus feature (the default themes, %1$s and %2$s, do), you can learn about adding this support by following the Documentation link to the side.'), 'Twenty Twelve', 'Twenty Eleven' ) . '</p>'
-) );
-get_current_screen()->add_help_tab( array(
-'id'		=> 'create-menus',
-'title'		=> __('Create Menus'),
-'content'	=>
-	'<p>' . __('To create a new custom menu, click on the + tab, give the menu a name, and click Create Menu. Next, add menu items from the appropriate boxes. You&#8217;ll be able to edit the information for each menu item, and can drag and drop to change their order. You can also drag a menu item a little to the right to make it a submenu. Don&#8217;t forget to click Save Menu when you&#8217;re finished.') . '</p>'
-) );
+if ( ! current_theme_supports( 'menus' ) && ! $num_locations )
+	$messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'Your theme does not natively support menus, but you can use them in sidebars by adding a &#8220;Custom Menus&#8221; widget on the <a href="%s">Widgets</a> screen.' ), admin_url( 'widgets.php' ) ) . '</p></div>';
+
+if ( ! $locations_screen ) : // Main tab
+	$overview  = '<p>' . __( 'This screen is used for managing your custom navigation menus.' ) . '</p>';
+	$overview .= '<p>' . sprintf( __( 'Menus can be displayed in locations defined by your theme, even used in sidebars by adding a &#8220;Custom Menus&#8221; widget on the <a href="%1$s">Widgets</a> screen. If your theme does not support the custom menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the Documentation link to the side.' ), admin_url( 'widgets.php' ), 'Twenty Thirteen', 'Twenty Twelve' ) . '</p>';
+	$overview .= '<p>' . __( 'From this screen you can:' ) . '</p>';
+	$overview .= '<ul><li>' . __( 'Create, edit, and delete menus' ) . '</li>';
+	$overview .= '<li>' . __( 'Add, organize, and modify individual menu items' ) . '</li></ul>';
+
+	get_current_screen()->add_help_tab( array(
+		'id'      => 'overview',
+		'title'   => __( 'Overview' ),
+		'content' => $overview
+	) );
+
+	$menu_management  = '<p>' . __( 'The menu management box at the top of the screen is used to control which menu is opened in the editor below.' ) . '</p>';
+	$menu_management .= '<ul><li>' . __( 'To edit an existing menu, <strong>choose a menu from the drop down and click Select</strong>' ) . '</li>';
+	$menu_management .= '<li>' . __( 'If you haven&#8217;t yet created any menus, <strong>click the &#8217;create a new menu&#8217; link</strong> to get started' ) . '</li></ul>';
+	$menu_management .= '<p>' . __( 'You can assign theme locations to individual menus by <strong>selecting the desired settings</strong> at the bottom of the menu editor. To assign menus to all theme locations at once, <strong>visit the Manage Locations tab</strong> at the top of the screen.' ) . '</p>';
+
+	get_current_screen()->add_help_tab( array(
+		'id'      => 'menu-management',
+		'title'   => __( 'Menu Management' ),
+		'content' => $menu_management
+	) );
+
+	$editing_menus  = '<p>' . __( 'Each custom menu may contain a mix of links to pages, categories, custom URLs or other content types. Menu links are added by selecting items from the expanding boxes in the left-hand column below.' ) . '</p>';
+	$editing_menus .= '<p>' . __( '<strong>Clicking the title of any menu item</strong> in the editor will reveal a standard group of settings. Additional settings such as link target, CSS classes, link relationships, and link descriptions can be enabled and disabled via the Screen Options tab.' ) . '</p>';
+	$editing_menus .= '<ul><li>' . __( 'Add one or several items at once by <strong>selecting the checkbox next to each item and clicking Add to Menu</strong>' ) . '</li>';
+	$editing_menus .= '<li>' . __( 'To add a custom link, <strong>expand the Links section, enter a URL and link text, and click Add to Menu</strong>' ) .'</li>';
+	$editing_menus .= '<li>' . __( 'To reorganize menu items, <strong>drag and drop items with your mouse or use your keyboard</strong>. Drag or move a menu item a little to the right to make it a submenu' ) . '</li>';
+	$editing_menus .= '<li>' . __( 'Delete a menu item by <strong>expanding it and clicking the Remove link</strong>' ) . '</li></ul>';
+
+	get_current_screen()->add_help_tab( array(
+		'id'      => 'editing-menus',
+		'title'   => __( 'Editing Menus' ),
+		'content' => $editing_menus
+	) );
+else : // Locations Tab
+	$locations_overview  = '<p>' . __( 'This screen is used for globally assigning menus to locations defined by your theme.' ) . '</p>';
+	$locations_overview .= '<ul><li>' . __( 'To assign menus to one or more theme locations, <strong>select a menu from each location&#8217;s drop down.</strong> When you&#8217;re finished, <strong>click Save Changes</strong>' ) . '</li>';
+	$locations_overview .= '<li>' . __( 'To edit a menu currently assigned to a theme location, <strong>click the adjacent &#8217;Edit&#8217; link</strong>' ) . '</li>';
+	$locations_overview .= '<li>' . __( 'To add a new menu instead of assigning an existing one, <strong>click the &#8217;Use new menu&#8217; link</strong>. Your new menu will be automatically assigned to that theme location' ) . '</li></ul>';
+
+	get_current_screen()->add_help_tab( array(
+		'id'      => 'locations-overview',
+		'title'   => __( 'Overview' ),
+		'content' => $locations_overview
+	) );
+endif;
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __('For more information:') . '</strong></p>' .
@@ -460,148 +533,232 @@ require_once( './admin-header.php' );
 ?>
 <div class="wrap">
 	<?php screen_icon(); ?>
-	<h2><?php esc_html_e('Menus'); ?></h2>
+	<h2 class="nav-tab-wrapper">
+		<a href="<?php echo admin_url( 'nav-menus.php' ); ?>" class="nav-tab<?php if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'locations' != $_GET['action'] ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Edit Menus' ); ?></a>
+		<?php if ( $num_locations && $menu_count ) : ?>
+			<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'locations' ), admin_url( 'nav-menus.php' ) ) ); ?>" class="nav-tab<?php if ( $locations_screen ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Manage Locations' ); ?></a>
+		<?php endif; ?>
+	</h2>
 	<?php
 	foreach( $messages as $message ) :
 		echo $message . "\n";
 	endforeach;
 	?>
+	<?php
+	if ( $locations_screen ) :
+		echo '<p>' . sprintf( _n( 'Your theme supports %s menu. Select which menu you would like to use below.', 'Your theme supports %s menus. Select a menu to use for each theme location below.', $num_locations ), number_format_i18n( $num_locations ) ) . '</p>';
+	?>
+	<div id="menu-locations-wrap">
+		<form method="post" action="<?php echo esc_url( add_query_arg( array( 'action' => 'locations' ), admin_url( 'nav-menus.php' ) ) ); ?>">
+			<table class="widefat fixed" cellspacing="0" id="menu-locations-table">
+				<thead>
+				<tr>
+					<th scope="col" class="manage-column column-locations"><?php _e( 'Theme Location' ); ?></th>
+					<th scope="col" class="manage-column column-menus"><?php _e( 'Assigned Menu' ); ?></th>
+				</tr>
+				</thead>
+				<!--<tfoot>
+				<tr>
+					<th scope="col" class="manage-column column-locations"><?php _e( 'Theme Location' ); ?></th>
+					<th scope="col" class="manage-column column-menus"><?php _e( 'Assigned Menu' ); ?></th>
+				</tr>
+				</tfoot>-->
+				<tbody class="menu-locations">
+				<?php foreach ( $locations as $_location => $_name ) { ?>
+					<tr id="menu-locations-row">
+						<td class="menu-location-title"><strong><?php echo $_name; ?></strong></td>
+						<td class="menu-location-menus">
+							<select name="menu-locations[<?php echo $_location; ?>]" id="locations-<?php echo $_location; ?>">
+								<option value="0"><?php printf( '&mdash; %s &mdash;', esc_html__( 'Select a Menu' ) ); ?></option>
+								<?php foreach ( $nav_menus as $menu ) : ?>
+									<?php $selected = isset( $menu_locations[$_location] ) && $menu_locations[$_location] == $menu->term_id; ?>
+									<option <?php if ( $selected ) echo 'data-orig="true"'; ?> <?php selected( $selected ); ?> value="<?php echo $menu->term_id; ?>">
+										<?php echo wp_html_excerpt( $menu->name, 40, '&hellip;' ); ?>
+									</option>
+								<?php endforeach; ?>
+							</select>
+							<div class="locations-row-links">
+								<?php if ( isset( $menu_locations[ $_location ] ) && 0 != $menu_locations[ $_location ] ) : ?>
+								<span class="locations-edit-menu-link">
+									<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => $menu_locations[$_location] ), admin_url( 'nav-menus.php' ) ) ); ?>">
+										<?php _ex( 'Edit', 'menu' ); ?>
+									</a>
+								</span>
+								<?php endif; ?>
+								<span class="locations-add-menu-link">
+									<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0, 'use-location' => $_location ), admin_url( 'nav-menus.php' ) ) ); ?>">
+										<?php _ex( 'Use new menu', 'menu' ); ?>
+									</a>
+								</span>
+							</div><!-- #locations-row-links -->
+						</td><!-- .menu-location-menus -->
+					</tr><!-- #menu-locations-row -->
+				<?php } // foreach ?>
+				</tbody>
+			</table>
+			<p class="button-controls"><?php submit_button( __( 'Save Changes' ), 'primary left', 'nav-menu-locations', false ); ?></p>
+			<?php wp_nonce_field( 'save-menu-locations' ); ?>
+			<input type="hidden" name="menu" id="nav-menu-meta-object-id" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
+		</form>
+	</div><!-- #menu-locations-wrap -->
+	<?php do_action( 'after_menu_locations_table' ); ?>
+	<?php else : ?>
+	<div class="manage-menus">
+ 		<?php if ( $menu_count < 2 ) : ?>
+		<span class="add-edit-menu-action">
+			<?php printf( __( 'Edit your menu below, or <a href="%s">create a new menu</a>.' ), esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0 ), admin_url( 'nav-menus.php' ) ) ) ); ?>
+		</span><!-- /add-edit-menu-action -->
+		<?php else : ?>
+			<form method="get" action="<?php echo admin_url( 'nav-menus.php' ); ?>">
+			<input type="hidden" name="action" value="edit" />
+			<label for="menu" class="selected-menu"><?php _e( 'Select a menu to edit:' ); ?></label>
+			<select name="menu" id="menu">
+				<?php if ( $add_new_screen ) : ?>
+					<option value="0" selected="selected"><?php _e( '-- Select --' ); ?></option>
+				<?php endif; ?>
+				<?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 ) ;
+
+						if ( ! empty( $menu_locations ) && in_array( $_nav_menu->term_id, $menu_locations ) ) {
+							$locations_assigned_to_this_menu = array();
+							foreach ( array_keys( $menu_locations, $_nav_menu->term_id ) as $menu_location_key ) {
+								 $locations_assigned_to_this_menu[] = $locations[ $menu_location_key ];
+							}
+							$assigned_locations = array_slice( $locations_assigned_to_this_menu, 0, absint( apply_filters( 'wp_nav_locations_listed_per_menu', 3 ) ) );
+
+							// Adds ellipses following the number of locations defined in $assigned_locations
+							printf( ' (%1$s%2$s)',
+								implode( ', ', $assigned_locations ),
+								count( $locations_assigned_to_this_menu ) > count( $assigned_locations ) ? ' &hellip;' : ''
+							);
+						}
+						?>
+					</option>
+				<?php endforeach; ?>
+			</select>
+			<span class="submit-btn"><input type="submit" class="button-secondary" value="<?php _e( 'Select' ); ?>"></span>
+			<span class="add-new-menu-action">
+				<?php printf( __( 'or <a href="%s">create a new menu</a>.' ), esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0 ), admin_url( 'nav-menus.php' ) ) ) ); ?>
+			</span><!-- /add-new-menu-action -->
+		</form>
+	<?php endif; ?>
+	</div><!-- /manage-menus -->
 	<div id="nav-menus-frame">
-	<div id="menu-settings-column" class="metabox-holder<?php if ( !$nav_menu_selected_id ) { echo ' metabox-holder-disabled'; } ?>">
+	<div id="menu-settings-column" class="metabox-holder<?php if ( isset( $_GET['menu'] ) && '0' == $_GET['menu'] ) { echo ' metabox-holder-disabled'; } ?>">
 
-		<form id="nav-menu-meta" action="<?php echo admin_url( 'nav-menus.php' ); ?>" class="nav-menu-meta" method="post" enctype="multipart/form-data">
+		<div class="clear"></div>
+
+		<form id="nav-menu-meta" action="" class="nav-menu-meta" method="post" enctype="multipart/form-data">
 			<input type="hidden" name="menu" id="nav-menu-meta-object-id" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
 			<input type="hidden" name="action" value="add-menu-item" />
 			<?php wp_nonce_field( 'add-menu_item', 'menu-settings-column-nonce' ); ?>
-			<?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
+			<?php do_accordion_sections( 'nav-menus', 'side', null ); ?>
 		</form>
 
 	</div><!-- /#menu-settings-column -->
 	<div id="menu-management-liquid">
 		<div id="menu-management">
-			<div id="select-nav-menu-container" class="hide-if-js">
-				<form id="select-nav-menu" action="">
-					<strong><label for="select-nav-menu"><?php esc_html_e( 'Select Menu:' ); ?></label></strong>
-					<select class="select-nav-menu" name="menu">
-						<?php foreach( (array) $nav_menus as $_nav_menu ) : ?>
-							<option value="<?php echo esc_attr($_nav_menu->term_id) ?>" <?php selected($nav_menu_selected_id, $_nav_menu->term_id); ?>>
-								<?php echo esc_html( $_nav_menu->truncated_name ); ?>
-							</option>
-						<?php endforeach; ?>
-						<option value="0"><?php esc_html_e('Add New Menu'); ?></option>
-					</select>
-					<input type="hidden" name="action" value="edit" />
-					<?php submit_button( __( 'Select' ), 'secondary', 'select_menu', false ); ?>
-				</form>
-			</div>
-			<div class="nav-tabs-wrapper">
-			<div class="nav-tabs">
-				<?php
-				foreach( (array) $nav_menus as $_nav_menu ) :
-					if ( $nav_menu_selected_id == $_nav_menu->term_id ) : ?><span class="nav-tab nav-tab-active">
-							<?php echo esc_html( $_nav_menu->truncated_name ); ?>
-						</span><?php else : ?><a href="<?php
-							echo esc_url(add_query_arg(
-								array(
-									'action' => 'edit',
-									'menu' => $_nav_menu->term_id,
-								),
-								admin_url( 'nav-menus.php' )
-							));
-						?>" class="nav-tab hide-if-no-js">
-							<?php echo esc_html( $_nav_menu->truncated_name ); ?>
-						</a><?php endif;
-				endforeach;
-				if ( 0 == $nav_menu_selected_id ) : ?><span class="nav-tab menu-add-new nav-tab-active">
-					<?php printf( '<abbr title="%s">+</abbr>', esc_html__( 'Add menu' ) ); ?>
-				</span><?php else : ?><a href="<?php
-					echo esc_url(add_query_arg(
-						array(
-							'action' => 'edit',
-							'menu' => 0,
-						),
-						admin_url( 'nav-menus.php' )
-					));
-				?>" class="nav-tab menu-add-new">
-					<?php printf( '<abbr title="%s">+</abbr>', esc_html__( 'Add menu' ) ); ?>
-				</a><?php endif; ?>
-			</div>
-			</div>
-			<div class="menu-edit">
-				<form id="update-nav-menu" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">
+			<form id="update-nav-menu" action="" method="post" enctype="multipart/form-data">
+				<div class="menu-edit <?php if ( $add_new_screen ) echo 'blank-slate'; ?>">
+					<?php
+					wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+					wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
+					wp_nonce_field( 'update-nav_menu', 'update-nav-menu-nonce' );
+
+					if ( $one_theme_location_no_menus ) { ?>
+						<input type="hidden" name="zero-menu-state" value="true" />
+					<?php } ?>
+ 					<input type="hidden" name="action" value="update" />
+					<input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
 					<div id="nav-menu-header">
-						<div id="submitpost" class="submitbox">
-							<div class="major-publishing-actions">
-								<label class="menu-name-label howto open-label" for="menu-name">
-									<span><?php _e('Menu Name'); ?></span>
-									<input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Enter menu name here'); ?>" value="<?php echo esc_attr( $nav_menu_selected_title ); ?>" />
-								</label>
-								<?php if ( !empty( $nav_menu_selected_id ) ) :
-									if ( ! isset( $auto_add ) ) {
-										$auto_add = get_option( 'nav_menu_options' );
-										if ( ! isset( $auto_add['auto_add'] ) )
-											$auto_add = false;
-										elseif ( false !== array_search( $nav_menu_selected_id, $auto_add['auto_add'] ) )
-											$auto_add = true;
-										else
-											$auto_add = false;
-									}
-								?>
-								<div class="auto-add-pages">
-									<label class="howto"><input type="checkbox"<?php checked( $auto_add ); ?> name="auto-add-pages" value="1" /> <?php printf( __('Automatically add new top-level pages' ), esc_url( admin_url( 'edit.php?post_type=page' ) ) ); ?></label>
-								</div>
-								<?php endif; ?>
-								<br class="clear" />
-								<div class="publishing-action">
-									<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false, array( 'id' => 'save_menu_header' ) ); ?>
-								</div><!-- END .publishing-action -->
-
-								<?php if ( ! empty( $nav_menu_selected_id ) ) : ?>
-								<div class="delete-action">
-									<a class="submitdelete deletion menu-delete" href="<?php echo esc_url( wp_nonce_url( admin_url('nav-menus.php?action=delete&amp;menu=' . $nav_menu_selected_id), 'delete-nav_menu-' . $nav_menu_selected_id ) ); ?>"><?php _e('Delete Menu'); ?></a>
-								</div><!-- END .delete-action -->
-								<?php endif; ?>
-							</div><!-- END .major-publishing-actions -->
-						</div><!-- END #submitpost .submitbox -->
-						<?php
-						wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
-						wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
-						wp_nonce_field( 'update-nav_menu', 'update-nav-menu-nonce' );
-						?>
-						<input type="hidden" name="action" value="update" />
-						<input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
-					</div><!-- END #nav-menu-header -->
+						<div class="major-publishing-actions">
+							<label class="menu-name-label howto open-label" for="menu-name">
+								<span><?php _e( 'Menu Name' ); ?></span>
+								<input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e( 'Enter menu name here' ); ?>" value="<?php if ( $one_theme_location_no_menus ) _e( 'Menu 1' ); else echo esc_attr( $nav_menu_selected_title ); ?>" />
+							</label>
+							<div class="publishing-action">
+								<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false, array( 'id' => 'save_menu_header' ) ); ?>
+							</div><!-- END .publishing-action -->
+						</div><!-- END .major-publishing-actions -->
+					</div><!-- END .nav-menu-header -->
 					<div id="post-body">
 						<div id="post-body-content">
+							<?php if ( ! $add_new_screen ) : ?>
+							<h3><?php _e( 'Menu Structure' ); ?></h3>
+							<?php $starter_copy = ( $one_theme_location_no_menus ) ? __( 'Edit your default menu by adding or removing items. Drag each item into the order you prefer. Click Create Menu to save your changes.' ) : __( 'Drag each item into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options.' ); ?>
+							<div class="drag-instructions post-body-plain" <?php if ( isset( $menu_items ) && 0 == count( $menu_items ) ) { ?>style="display: none;"<?php } ?>>
+								<p><?php echo $starter_copy; ?></p>
+							</div>
 							<?php
-							if ( isset( $edit_markup ) ) {
-								if ( ! is_wp_error( $edit_markup ) )
-									echo $edit_markup;
-							} else if ( empty( $nav_menu_selected_id ) ) {
-								echo '<div class="post-body-plain">';
-								echo '<p>' . __('To create a custom menu, give it a name above and click Create Menu. Then choose items like pages, categories or custom links from the left column to add to this menu.') . '</p>';
-								echo '<p>' . __('After you have added your items, drag and drop to put them in the order you want. You can also click each item to reveal additional configuration options.') . '</p>';
-								echo '<p>' . __('When you have finished building your custom menu, make sure you click the Save Menu button.') . '</p>';
-								echo '</div>';
-							}
+							if ( isset( $edit_markup ) && ! is_wp_error( $edit_markup ) ) {
+								echo $edit_markup;
+							} else {
 							?>
+							<ul class="menu" id="menu-to-edit"></ul>
+							<?php } ?>
+							<?php endif; ?>
+							<?php if ( $add_new_screen ) : ?>
+								<p class="post-body-plain"><?php _e( 'Give your menu a name above, then click Create Menu.' ); ?></p>
+								<?php if ( isset( $_GET['use-location'] ) ) : ?>
+									<input type="hidden" name="use-location" value="<?php echo esc_attr( $_GET['use-location'] ); ?>" />
+								<?php endif; ?>
+							<?php endif; ?>
+							<div class="menu-settings" <?php if ( $one_theme_location_no_menus ) { ?>style="display: none;"<?php } ?>>
+								<h3><?php _e( 'Menu Settings' ); ?></h3>
+								<?php
+								if ( ! isset( $auto_add ) ) {
+									$auto_add = get_option( 'nav_menu_options' );
+									if ( ! isset( $auto_add['auto_add'] ) )
+										$auto_add = false;
+									elseif ( false !== array_search( $nav_menu_selected_id, $auto_add['auto_add'] ) )
+										$auto_add = true;
+									else
+										$auto_add = false;
+								} ?>
+
+								<dl class="auto-add-pages">
+									<dt class="howto"><?php _e( 'Auto add pages' ); ?></dt>
+									<dd class="checkbox-input"><input type="checkbox"<?php checked( $auto_add ); ?> name="auto-add-pages" id="auto-add-pages" value="1" /> <label for="auto-add-pages"><?php printf( __('Automatically add new top-level pages to this menu' ), esc_url( admin_url( 'edit.php?post_type=page' ) ) ); ?></label></dd>
+								</dl>
+
+								<?php if ( current_theme_supports( 'menus' ) ) : ?>
+
+									<dl class="menu-theme-locations">
+										<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>
+											<?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>
+											<?php endif; ?>
+										</dd>
+										<?php endforeach; ?>
+									</dl>
+
+								<?php endif; ?>
+
+							</div>
 						</div><!-- /#post-body-content -->
 					</div><!-- /#post-body -->
 					<div id="nav-menu-footer">
 						<div class="major-publishing-actions">
-						<div class="publishing-action">
-							<?php
-							if ( ! empty( $nav_menu_selected_id ) )
-								submit_button( __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false, array( 'id' => 'save_menu_footer' ) );
-							?>
-						</div>
-						</div>
+							<?php if ( 0 != $menu_count && ! $add_new_screen ) : ?>
+							<span class="delete-action">
+								<a class="submitdelete deletion menu-delete" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'delete', 'menu' => $nav_menu_selected_id, admin_url() ) ), 'delete-nav_menu-' . $nav_menu_selected_id) ); ?>"><?php _e('Delete Menu'); ?></a>
+							</span><!-- END .delete-action -->
+							<?php endif; ?>
+							<div class="publishing-action">
+								<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false, array( 'id' => 'save_menu_header' ) ); ?>
+							</div><!-- END .publishing-action -->
+						</div><!-- END .major-publishing-actions -->
 					</div><!-- /#nav-menu-footer -->
-				</form><!-- /#update-nav-menu -->
-			</div><!-- /.menu-edit -->
+				</div><!-- /.menu-edit -->
+			</form><!-- /#update-nav-menu -->
 		</div><!-- /#menu-management -->
 	</div><!-- /#menu-management-liquid -->
 	</div><!-- /#nav-menus-frame -->
+	<?php endif; ?>
 </div><!-- /.wrap-->
-
 <?php include( './admin-footer.php' ); ?>
diff --git a/wp-admin/network.php b/wp-admin/network.php
index d5549145c..c3dea6847 100644
--- a/wp-admin/network.php
+++ b/wp-admin/network.php
@@ -314,7 +314,7 @@ function network_step2( $errors = false ) {
 	$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 : str_replace( '\\', '/', get_home_path() );
+	$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 ), '/' ) : '';
 
@@ -374,8 +374,7 @@ 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>
+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 ) {
@@ -520,7 +519,7 @@ if ( $_POST ) {
 	$base              = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH );
 	$subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false;
 	if ( ! network_domain_check() ) {
-		$result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install );
+		$result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), wp_unslash( $_POST['sitename'] ), $base, $subdomain_install );
 		if ( is_wp_error( $result ) ) {
 			if ( 1 == count( $result->get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() )
 				network_step2( $result );
diff --git a/wp-admin/network/index.php b/wp-admin/network/index.php
index d2875f3e8..96c2c248a 100644
--- a/wp-admin/network/index.php
+++ b/wp-admin/network/index.php
@@ -22,14 +22,30 @@ if ( ! current_user_can( 'manage_network' ) )
 $title = __( 'Dashboard' );
 $parent_file = 'index.php';
 
-	get_current_screen()->add_help_tab( array(
-		'id'      => 'overview',
-		'title'   => __('Overview'),
-		'content' =>
-			'<p>' . __('Until WordPress 3.0, running multiple sites required using WordPress MU instead of regular WordPress. In version 3.0, these applications have merged. If you are a former MU user, you should be aware of the following changes:') . '</p>' .
-			'<ul><li>' . __('Site Admin is now Super Admin (we highly encourage you to get yourself a cape!).') . '</li>' .
-			'<li>' . __('Blogs are now called Sites; Site is now called Network.') . '</li></ul>' .
-			'<p>' . __('The Right Now box provides the network administrator with links to the screens to either create a new site or user, or to search existing users and sites. Screens for Sites and Users are also accessible through the left-hand navigation in the Network Admin section.') . '</p>'
+$overview = '<p>' . __( 'Welcome to your Network Admin. This area of the Administration Screens is used for managing all aspects of your Multisite Network.' ) . '</p>';
+$overview .= '<p>' . __( 'From here you can:' ) . '</p>';
+$overview .= '<ul><li>' . __( 'Add and manage sites or users' ) . '</li>';
+$overview .= '<li>' . __( 'Install and activate themes or plugins' ) . '</li>';
+$overview .= '<li>' . __( 'Update your network' ) . '</li>';
+$overview .= '<li>' . __( 'Modify global network settings' ) . '</li></ul>';
+
+get_current_screen()->add_help_tab( array(
+	'id'      => 'overview',
+	'title'   => __( 'Overview' ),
+	'content' => $overview
+) );
+
+$quick_tasks = '<p>' . __( 'The Right Now widget on this screen provides current user and site counts on your network.' ) . '</p>';
+$quick_tasks .= '<ul><li>' . __( 'To add a new user <strong>click Create a New User</strong>' ) . '</li>';
+$quick_tasks .= '<li>' . __( 'To add a new site <strong>click Create a New Site</strong>' ) . '</li></ul>';
+$quick_tasks .= '<p>' . __( 'To search for a user or site, use the search boxes.' ) . '</p>';
+$quick_tasks .= '<ul><li>' . __( '<strong>To search for a user</strong> enter all or part of a username or email address' ) . '</li>';
+$quick_tasks .= '<li>' . __( '<strong>To search for a site</strong> enter the path or domain' ) . '</li></ul>';
+
+get_current_screen()->add_help_tab( array(
+	'id'      => 'quick-tasks',
+	'title'   => __( 'Quick Tasks' ),
+	'content' => $quick_tasks
 ) );
 
 get_current_screen()->set_help_sidebar(
diff --git a/wp-admin/network/menu.php b/wp-admin/network/menu.php
index 68cf7e494..31d9b7204 100644
--- a/wp-admin/network/menu.php
+++ b/wp-admin/network/menu.php
@@ -56,7 +56,7 @@ if ( $update_data['counts']['total'] ) {
 unset($update_data);
 
 $submenu[ 'upgrade.php' ][10] = array( __( 'Available Updates' ), 'update_core', 'update-core.php' );
-$submenu[ 'upgrade.php' ][15] = array( __( 'Update Network' ), 'manage_network', 'upgrade.php' );
+$submenu[ 'upgrade.php' ][15] = array( __( 'Upgrade Network' ), 'manage_network', 'upgrade.php' );
 
 $menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' );
 
diff --git a/wp-admin/network/settings.php b/wp-admin/network/settings.php
index b3a0f897f..e74569403 100644
--- a/wp-admin/network/settings.php
+++ b/wp-admin/network/settings.php
@@ -61,7 +61,7 @@ if ( $_POST ) {
 	foreach ( $options as $option_name ) {
 		if ( ! isset($_POST[$option_name]) )
 			continue;
-		$value = stripslashes_deep( $_POST[$option_name] );
+		$value = wp_unslash( $_POST[$option_name] );
 		update_site_option( $option_name, $value );
 	}
 
@@ -181,7 +181,7 @@ if ( isset( $_GET['updated'] ) ) {
 				<th scope="row"><label for="welcome_email"><?php _e( 'Welcome Email' ) ?></label></th>
 				<td>
 					<textarea name="welcome_email" id="welcome_email" rows="5" cols="45" class="large-text">
-<?php echo esc_textarea( stripslashes( get_site_option( 'welcome_email' ) ) ) ?></textarea>
+<?php echo esc_textarea( get_site_option( 'welcome_email' ) ) ?></textarea>
 					<br />
 					<?php _e( 'The welcome email sent to new site owners.' ) ?>
 				</td>
@@ -190,7 +190,7 @@ if ( isset( $_GET['updated'] ) ) {
 				<th scope="row"><label for="welcome_user_email"><?php _e( 'Welcome User Email' ) ?></label></th>
 				<td>
 					<textarea name="welcome_user_email" id="welcome_user_email" rows="5" cols="45" class="large-text">
-<?php echo esc_textarea( stripslashes( get_site_option( 'welcome_user_email' ) ) ) ?></textarea>
+<?php echo esc_textarea( get_site_option( 'welcome_user_email' ) ) ?></textarea>
 					<br />
 					<?php _e( 'The welcome email sent to new users.' ) ?>
 				</td>
@@ -199,7 +199,7 @@ if ( isset( $_GET['updated'] ) ) {
 				<th scope="row"><label for="first_post"><?php _e( 'First Post' ) ?></label></th>
 				<td>
 					<textarea name="first_post" id="first_post" rows="5" cols="45" class="large-text">
-<?php echo esc_textarea( stripslashes( get_site_option( 'first_post' ) ) ) ?></textarea>
+<?php echo esc_textarea( get_site_option( 'first_post' ) ) ?></textarea>
 					<br />
 					<?php _e( 'The first post on a new site.' ) ?>
 				</td>
@@ -208,7 +208,7 @@ if ( isset( $_GET['updated'] ) ) {
 				<th scope="row"><label for="first_page"><?php _e( 'First Page' ) ?></label></th>
 				<td>
 					<textarea name="first_page" id="first_page" rows="5" cols="45" class="large-text">
-<?php echo esc_textarea( stripslashes( get_site_option('first_page') ) ) ?></textarea>
+<?php echo esc_textarea( get_site_option( 'first_page' ) ) ?></textarea>
 					<br />
 					<?php _e( 'The first page on a new site.' ) ?>
 				</td>
@@ -217,7 +217,7 @@ if ( isset( $_GET['updated'] ) ) {
 				<th scope="row"><label for="first_comment"><?php _e( 'First Comment' ) ?></label></th>
 				<td>
 					<textarea name="first_comment" id="first_comment" rows="5" cols="45" class="large-text">
-<?php echo esc_textarea( stripslashes( get_site_option('first_comment') ) ) ?></textarea>
+<?php echo esc_textarea( get_site_option( 'first_comment' ) ) ?></textarea>
 					<br />
 					<?php _e( 'The first comment on a new site.' ) ?>
 				</td>
diff --git a/wp-admin/network/site-info.php b/wp-admin/network/site-info.php
index bcc71f9f1..7dd6aeb23 100644
--- a/wp-admin/network/site-info.php
+++ b/wp-admin/network/site-info.php
@@ -62,7 +62,7 @@ if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] ) {
 	delete_option( 'rewrite_rules' );
 
 	// update blogs table
-	$blog_data = stripslashes_deep( $_POST['blog'] );
+	$blog_data = wp_unslash( $_POST['blog'] );
 	$existing_details = get_blog_details( $id, false );
 	$blog_data_checkboxes = array( 'public', 'archived', 'spam', 'mature', 'deleted' );
 	foreach ( $blog_data_checkboxes as $c ) {
diff --git a/wp-admin/network/site-new.php b/wp-admin/network/site-new.php
index db2e1f74c..9fc5eefd4 100644
--- a/wp-admin/network/site-new.php
+++ b/wp-admin/network/site-new.php
@@ -88,7 +88,7 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
 		$content_mail = sprintf( __( 'New site created by %1$s
 
 Address: %2$s
-Name: %3$s' ), $current_user->user_login , get_site_url( $id ), stripslashes( $title ) );
+Name: %3$s' ), $current_user->user_login , get_site_url( $id ), wp_unslash( $title ) );
 		wp_mail( get_site_option('admin_email'), sprintf( __( '[%s] New Site Created' ), $current_site->site_name ), $content_mail, 'From: "Site Admin" <' . get_site_option( 'admin_email' ) . '>' );
 		wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
 		wp_redirect( add_query_arg( array( 'update' => 'added', 'id' => $id ), 'site-new.php' ) );
diff --git a/wp-admin/network/site-settings.php b/wp-admin/network/site-settings.php
index f807fcf2c..c3aec75de 100644
--- a/wp-admin/network/site-settings.php
+++ b/wp-admin/network/site-settings.php
@@ -49,17 +49,13 @@ if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] && is_ar
 
 	switch_to_blog( $id );
 
-	$c = 1;
-	$count = count( $_POST['option'] );
 	$skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form.
 	foreach ( (array) $_POST['option'] as $key => $val ) {
+		$key = wp_unslash( $key );
+		$val = wp_unslash( $val );
 		if ( $key === 0 || is_array( $val ) || in_array($key, $skip_options) )
 			continue; // Avoids "0 is a protected WP option and may not be modified" error when edit blog options
-		if ( $c == $count )
-			update_option( $key, stripslashes( $val ) );
-		else
-			update_option( $key, stripslashes( $val ), false ); // no need to refresh blog details yet
-		$c++;
+		update_option( $key, $val );
 	}
 
 	do_action( 'wpmu_update_blog_options' );
@@ -121,7 +117,7 @@ if ( ! empty( $messages ) ) {
 			$class = 'all-options';
 			if ( is_serialized( $option->option_value ) ) {
 				if ( is_serialized_string( $option->option_value ) ) {
-					$option->option_value = esc_html( maybe_unserialize( $option->option_value ), 'single' );
+					$option->option_value = esc_html( maybe_unserialize( $option->option_value ) );
 				} else {
 					$option->option_value = 'SERIALIZED DATA';
 					$disabled = true;
diff --git a/wp-admin/network/site-users.php b/wp-admin/network/site-users.php
index 2064a763b..0c7a1c729 100644
--- a/wp-admin/network/site-users.php
+++ b/wp-admin/network/site-users.php
@@ -85,12 +85,10 @@ if ( $action ) {
 			if ( !empty( $_POST['newuser'] ) ) {
 				$update = 'adduser';
 				$newuser = $_POST['newuser'];
-				$userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
-				if ( $userid ) {
-					$blog_prefix = $wpdb->get_blog_prefix( $id );
-					$user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
-					if ( $user == false )
-						add_user_to_blog( $id, $userid, $_POST['new_role'] );
+				$user = get_user_by( 'login', $newuser );
+				if ( $user && $user->exists() ) {
+					if ( ! is_user_member_of_blog( $user->ID, $id ) )
+						add_user_to_blog( $id, $user->ID, $_POST['new_role'] );
 					else
 						$update = 'err_add_member';
 				} else {
diff --git a/wp-admin/network/sites.php b/wp-admin/network/sites.php
index e9b314da1..93341c35e 100644
--- a/wp-admin/network/sites.php
+++ b/wp-admin/network/sites.php
@@ -73,13 +73,13 @@ if ( isset( $_GET['action'] ) ) {
 				?>
 			</head>
 			<body class="wp-core-ui">
-				<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
+				<h1 id="logo"><a href="<?php echo esc_url( __( 'http://wordpress.org/' ) ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 				<form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
 					<input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
 					<input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
 					<input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
 					<?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
-					<p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
+					<p><?php echo esc_html( wp_unslash( $_GET['msg'] ) ); ?></p>
 					<?php submit_button( __('Confirm'), 'button' ); ?>
 				</form>
 			</body>
diff --git a/wp-admin/network/themes.php b/wp-admin/network/themes.php
index 04840ee11..711b44e0f 100644
--- a/wp-admin/network/themes.php
+++ b/wp-admin/network/themes.php
@@ -220,6 +220,8 @@ get_current_screen()->set_help_sidebar(
 $title = __('Themes');
 $parent_file = 'themes.php';
 
+wp_enqueue_script( 'theme' );
+
 require_once(ABSPATH . 'wp-admin/admin-header.php');
 
 ?>
diff --git a/wp-admin/network/upgrade.php b/wp-admin/network/upgrade.php
index cfbf4002a..74156547e 100644
--- a/wp-admin/network/upgrade.php
+++ b/wp-admin/network/upgrade.php
@@ -15,21 +15,21 @@ if ( ! is_multisite() )
 
 require_once( ABSPATH . WPINC . '/http.php' );
 
-$title = __( 'Update Network' );
+$title = __( 'Upgrade Network' );
 $parent_file = 'upgrade.php';
 
 get_current_screen()->add_help_tab( array(
 	'id'      => 'overview',
 	'title'   => __('Overview'),
 	'content' =>
-		'<p>' . __('Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Update Network button will step through each site in the network, five at a time, and make sure any database updates are applied.') . '</p>' .
+		'<p>' . __('Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied.') . '</p>' .
 		'<p>' . __('If a version update to core has not happened, clicking this button won&#8217;t affect anything.') . '</p>' .
 		'<p>' . __('If this process fails for any reason, users logging in to their sites will force the same update.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
 	'<p><strong>' . __('For more information:') . '</strong></p>' .
-	'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Updates_Screen" target="_blank">Documentation on Update Network</a>') . '</p>' .
+	'<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Updates_Screen" target="_blank">Documentation on Upgrade Network</a>') . '</p>' .
 	'<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -40,7 +40,7 @@ if ( ! current_user_can( 'manage_network' ) )
 
 echo '<div class="wrap">';
 screen_icon('tools');
-echo '<h2>' . __( 'Update Network' ) . '</h2>';
+echo '<h2>' . __( 'Upgrade Network' ) . '</h2>';
 
 $action = isset($_GET['action']) ? $_GET['action'] : 'show';
 
@@ -84,8 +84,12 @@ switch ( $action ) {
 	break;
 	case 'show':
 	default:
-		?><p><?php _e( 'You can update all the sites on your network through this page. It works by calling the update script of each site automatically. Hit the link below to update.' ); ?></p>
-		<p><a class="button" href="upgrade.php?action=upgrade"><?php _e("Update Network"); ?></a></p><?php
+		?>
+		<h3><?php _e( 'Database Upgrade Required' ); ?></h3>
+		<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>
+		<p><?php _e( 'The 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>
+		<?php
 		do_action( 'wpmu_upgrade_page' );
 	break;
 }
diff --git a/wp-admin/network/user-new.php b/wp-admin/network/user-new.php
index 204491451..316fffe58 100644
--- a/wp-admin/network/user-new.php
+++ b/wp-admin/network/user-new.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Add Site Administration Screen
+ * Add New User network administration panel.
  *
  * @package WordPress
  * @subpackage Multisite
diff --git a/wp-admin/options-discussion.php b/wp-admin/options-discussion.php
index df14d51aa..6e8d79f3c 100644
--- a/wp-admin/options-discussion.php
+++ b/wp-admin/options-discussion.php
@@ -164,7 +164,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <?php do_settings_fields('discussion', 'default'); ?>
 </table>
 
-<h3><?php _e('Avatars'); ?></h3>
+<h3 class="title"><?php _e('Avatars'); ?></h3>
 
 <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>
 
diff --git a/wp-admin/options-head.php b/wp-admin/options-head.php
index 066caafbb..1c706c87d 100644
--- a/wp-admin/options-head.php
+++ b/wp-admin/options-head.php
@@ -2,14 +2,13 @@
 /**
  * WordPress Options Header.
  *
- * Resets variables: 'action', 'standalone', and 'option_group_id'. Displays
- * updated message, if updated variable is part of the URL query.
+ * Displays updated message, if updated variable is part of the URL query.
  *
  * @package WordPress
  * @subpackage Administration
  */
 
-wp_reset_vars(array('action', 'standalone', 'option_group_id'));
+wp_reset_vars( array( 'action' ) );
 
 if ( isset( $_GET['updated'] ) && isset( $_GET['page'] ) ) {
 	// For backwards compat with plugins that don't use the Settings API and just set updated=1 in the redirect
diff --git a/wp-admin/options-media.php b/wp-admin/options-media.php
index 71d4292c6..8ba2371f7 100644
--- a/wp-admin/options-media.php
+++ b/wp-admin/options-media.php
@@ -46,7 +46,7 @@ include('./admin-header.php');
 <form action="options.php" method="post">
 <?php settings_fields('media'); ?>
 
-<h3><?php _e('Image sizes') ?></h3>
+<h3 class="title"><?php _e('Image sizes') ?></h3>
 <p><?php _e('The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post.'); ?></p>
 
 <table class="form-table">
@@ -86,14 +86,14 @@ include('./admin-header.php');
 </table>
 
 <?php if ( isset( $GLOBALS['wp_settings']['media']['embeds'] ) ) : ?>
-<h3><?php _e('Embeds') ?></h3>
+<h3 class="title"><?php _e('Embeds') ?></h3>
 <table class="form-table">
 <?php do_settings_fields( 'media', 'embeds' ); ?>
 </table>
 <?php endif; ?>
 
 <?php if ( !is_multisite() ) : ?>
-<h3><?php _e('Uploading Files'); ?></h3>
+<h3 class="title"><?php _e('Uploading Files'); ?></h3>
 <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)
diff --git a/wp-admin/options-permalink.php b/wp-admin/options-permalink.php
index 906361e8a..d086fdc6b 100644
--- a/wp-admin/options-permalink.php
+++ b/wp-admin/options-permalink.php
@@ -71,8 +71,6 @@ jQuery(document).ready(function() {
 }
 add_filter('admin_head', 'options_permalink_add_js');
 
-include('./admin-header.php');
-
 $home_path = get_home_path();
 $iis7_permalinks = iis7_supports_permalinks();
 
@@ -115,7 +113,8 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
 		$wp_rewrite->set_tag_base( $tag_base );
 	}
 
-	create_initial_taxonomies();
+	wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) );
+	exit;
 }
 
 $permalink_structure = get_option('permalink_structure');
@@ -141,7 +140,9 @@ else
 
 flush_rewrite_rules();
 
-if (isset($_POST['submit'])) : ?>
+require( ABSPATH . 'wp-admin/admin-header.php' );
+
+if ( ! empty( $_GET['settings-updated'] ) ) : ?>
 <div id="message" class="updated"><p><?php
 if ( ! is_multisite() ) {
 	if ( $iis7_permalinks ) {
@@ -188,7 +189,7 @@ $structures = array(
 	4 => $prefix . '/%postname%/',
 );
 ?>
-<h3><?php _e('Common Settings'); ?></h3>
+<h3 class="title"><?php _e('Common Settings'); ?></h3>
 <table class="form-table permalink-structure">
 	<tr>
 		<th><label><input name="selection" type="radio" value="" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
@@ -223,11 +224,11 @@ $structures = array(
 	</tr>
 </table>
 
-<h3><?php _e('Optional'); ?></h3>
+<h3 class="title"><?php _e('Optional'); ?></h3>
 <?php
 $suffix = '';
 if ( ! $is_apache && ! $iis7_permalinks )
-	$suffix = 'index.php/';
+	$suffix = $wp_rewrite->index . '/';
 ?>
 <p><?php
 /* translators: %s is a placeholder that must come at the start of the URL path. */
diff --git a/wp-admin/options-writing.php b/wp-admin/options-writing.php
index 53647fd6d..8015bae41 100644
--- a/wp-admin/options-writing.php
+++ b/wp-admin/options-writing.php
@@ -79,23 +79,21 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_category', 'o
 </td>
 </tr>
 <?php
-if ( current_theme_supports( 'post-formats' ) ) :
-	$post_formats = get_theme_support( 'post-formats' );
-	if ( is_array( $post_formats[0] ) ) :
+$post_formats = get_post_format_strings();
+unset( $post_formats['standard'] );
 ?>
 <tr valign="top">
 <th scope="row"><label for="default_post_format"><?php _e('Default Post Format') ?></label></th>
 <td>
 	<select name="default_post_format" id="default_post_format">
-		<option value="0"><?php _e('Standard'); ?></option>
-<?php foreach ( $post_formats[0] as $format ): ?>
-		<option<?php selected( get_option('default_post_format'), $format ); ?> value="<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></option>
+		<option value="0"><?php echo get_post_format_string( 'standard' ); ?></option>
+<?php foreach ( $post_formats as $format_slug => $format_name ): ?>
+		<option<?php selected( get_option( 'default_post_format' ), $format_slug ); ?> value="<?php echo esc_attr( $format_slug ); ?>"><?php echo esc_html( $format_name ); ?></option>
 <?php endforeach; ?>
 	</select>
 </td>
 </tr>
-<?php endif; endif;
-
+<?php
 if ( get_option( 'link_manager_enabled' ) ) :
 ?>
 <tr valign="top">
@@ -118,14 +116,14 @@ do_settings_fields('writing', 'remote_publishing'); // A deprecated section.
 <p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></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>
 <p><?php _e('Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut.') ?></p>
-<p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1)jQuery('.pressthis-code').show().find('textarea').focus().select();return false;" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
+<p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1){jQuery('.pressthis-code').show().find('textarea').focus().select();return false;}" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
 <div class="pressthis-code" style="display:none;">
 	<p class="description"><?php _e('If your bookmarks toolbar is hidden: copy the code below, open your Bookmarks manager, create new bookmark, type Press This into the name field and paste the code into the URL field.') ?></p>
 	<p><textarea rows="5" cols="120" readonly="readonly"><?php echo htmlspecialchars( get_shortcut_link() ); ?></textarea></p>
 </div>
 
 <?php if ( apply_filters( 'enable_post_by_email_configuration', true ) ) { ?>
-<h3><?php _e('Post via e-mail') ?></h3>
+<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>
 
 <table class="form-table">
@@ -159,7 +157,7 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_categor
 <?php } ?>
 
 <?php if ( apply_filters( 'enable_update_services_configuration', true ) ) { ?>
-<h3><?php _e('Update Services') ?></h3>
+<h3 class="title"><?php _e('Update Services') ?></h3>
 
 <?php if ( 1 == get_option('blog_public') ) : ?>
 
diff --git a/wp-admin/options.php b/wp-admin/options.php
index 92ae917bf..80a07190d 100644
--- a/wp-admin/options.php
+++ b/wp-admin/options.php
@@ -120,16 +120,16 @@ if ( 'update' == $action ) {
 	if ( 'options' == $option_page ) {
 		if ( is_multisite() && ! is_super_admin() )
 			wp_die( __( 'You do not have sufficient permissions to modify unregistered settings for this site.' ) );
-		$options = explode( ',', stripslashes( $_POST[ 'page_options' ] ) );
+		$options = explode( ',', wp_unslash( $_POST[ 'page_options' ] ) );
 	} else {
 		$options = $whitelist_options[ $option_page ];
 	}
 
 	// Handle custom date/time formats
 	if ( 'general' == $option_page ) {
-		if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['date_format'] ) )
+		if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == wp_unslash( $_POST['date_format'] ) )
 			$_POST['date_format'] = $_POST['date_format_custom'];
-		if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) )
+		if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == wp_unslash( $_POST['time_format'] ) )
 			$_POST['time_format'] = $_POST['time_format_custom'];
 		// Map UTC+- timezones to gmt_offsets and set timezone_string to empty.
 		if ( !empty($_POST['timezone_string']) && preg_match('/^UTC[+-]/', $_POST['timezone_string']) ) {
@@ -150,7 +150,7 @@ if ( 'update' == $action ) {
 				$value = $_POST[ $option ];
 				if ( ! is_array( $value ) )
 					$value = trim( $value );
-				$value = stripslashes_deep( $value );
+				$value = wp_unslash( $value );
 			}
 			update_option( $option, $value );
 		}
diff --git a/wp-admin/plugin-editor.php b/wp-admin/plugin-editor.php
index 3ab022506..2167c1ac7 100644
--- a/wp-admin/plugin-editor.php
+++ b/wp-admin/plugin-editor.php
@@ -20,17 +20,16 @@ if ( !current_user_can('edit_plugins') )
 $title = __("Edit Plugins");
 $parent_file = 'plugins.php';
 
-wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'plugin'));
+wp_reset_vars( array( 'action', 'error', 'file', 'plugin' ) );
 
 $plugins = get_plugins();
 
 if ( empty($plugins) )
 	wp_die( __('There are no plugins installed on this site.') );
 
-if ( isset($_REQUEST['file']) )
-	$plugin = stripslashes($_REQUEST['file']);
-
-if ( empty($plugin) ) {
+if ( $file ) {
+	$plugin = $file;
+} elseif ( empty( $plugin ) ) {
 	$plugin = array_keys($plugins);
 	$plugin = $plugin[0];
 }
@@ -39,8 +38,6 @@ $plugin_files = get_plugin_files($plugin);
 
 if ( empty($file) )
 	$file = $plugin_files[0];
-else
-	$file = stripslashes($file);
 
 $file = validate_file_to_edit($file, $plugin_files);
 $real_file = WP_PLUGIN_DIR . '/' . $file;
@@ -52,7 +49,7 @@ case 'update':
 
 	check_admin_referer('edit-plugin_' . $file);
 
-	$newcontent = stripslashes($_POST['newcontent']);
+	$newcontent = wp_unslash( $_POST['newcontent'] );
 	if ( is_writeable($real_file) ) {
 		$f = fopen($real_file, 'w+');
 		fwrite($f, $newcontent);
@@ -117,7 +114,7 @@ default:
 	'content'	=>
 		'<p>' . __('You can use the editor to make changes to any of your plugins&#8217; individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.') . '</p>' .
 		'<p>' . __('Choose a plugin to edit from the menu in the upper right and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don&#8217;t forget to save your changes (Update File) when you&#8217;re finished.') . '</p>' .
-		'<p>' . __('The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Lookup takes you to a web page about that particular function.') . '</p>' .
+		'<p>' . __('The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page 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.') . '</p>' .
 		'<p>' . __('If you want to make changes but don&#8217;t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.') . '</p>' .
 		( is_network_admin() ? '<p>' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '</p>' : '' )
@@ -234,7 +231,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( 'Lookup' ) ?> " 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( '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>
 		<?php endif; ?>
 <?php if ( is_writeable($real_file) ) : ?>
 	<?php if ( in_array( $file, (array) get_option( 'active_plugins', array() ) ) ) { ?>
diff --git a/wp-admin/plugin-install.php b/wp-admin/plugin-install.php
index cd64d63c9..25470d61a 100644
--- a/wp-admin/plugin-install.php
+++ b/wp-admin/plugin-install.php
@@ -39,7 +39,7 @@ get_current_screen()->add_help_tab( array(
 'id'		=> 'overview',
 'title'		=> __('Overview'),
 'content'	=>
-	'<p>' . sprintf(__('Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official <a href="%s" target="_blank">WordPress.org Plugin Directory</a> are compatible with the license WordPress uses. You can find new plugins to install by searching or browsing the Directory right here in your own Plugins section.'), 'http://wordpress.org/extend/plugins/') . '</p>'
+	'<p>' . sprintf(__('Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official <a href="%s" target="_blank">WordPress.org Plugin Directory</a> are compatible with the license WordPress uses. You can find new plugins to install by searching or browsing the Directory right here in your own Plugins section.'), 'http://wordpress.org/plugins/') . '</p>'
 ) );
 get_current_screen()->add_help_tab( array(
 'id'		=> 'adding-plugins',
diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php
index 7fc30363d..c371b6410 100644
--- a/wp-admin/plugins.php
+++ b/wp-admin/plugins.php
@@ -340,7 +340,7 @@ 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', 'http://wordpress.org/extend/plugins/') . '</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', 'http://wordpress.org/plugins/') . '</p>'
 ) );
 get_current_screen()->add_help_tab( array(
 'id'		=> 'compatibility-problems',
diff --git a/wp-admin/post-new.php b/wp-admin/post-new.php
index 8fbe7a228..4d7df63c9 100644
--- a/wp-admin/post-new.php
+++ b/wp-admin/post-new.php
@@ -48,6 +48,17 @@ if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) )
 
 wp_enqueue_script( 'autosave' );
 
+if ( is_multisite() ) {
+	add_action( 'admin_footer', '_admin_notice_post_locked' );
+} else {
+	$check_users = get_users( array( 'fields' => 'ID', 'number' => 2 ) );
+
+	if ( count( $check_users ) > 1 )
+		add_action( 'admin_footer', '_admin_notice_post_locked' );
+
+	unset( $check_users );
+}
+
 // Show post form.
 $post = get_default_post_to_edit( $post_type, true );
 $post_ID = $post->ID;
diff --git a/wp-admin/post.php b/wp-admin/post.php
index c638c18d3..eab89e6b0 100644
--- a/wp-admin/post.php
+++ b/wp-admin/post.php
@@ -14,7 +14,7 @@ require_once('./admin.php');
 $parent_file = 'edit.php';
 $submenu_file = 'edit.php';
 
-wp_reset_vars(array('action', 'safe_mode', 'withcomments', 'posts', 'content', 'edited_post_title', 'comment_error', 'profile', 'trackback_url', 'excerpt', 'showcomments', 'commentstart', 'commentend', 'commentorder'));
+wp_reset_vars( array( 'action' ) );
 
 if ( isset( $_GET['post'] ) )
  	$post_id = $post_ID = (int) $_GET['post'];
@@ -133,19 +133,23 @@ case 'edit':
 		exit();
 	}
 
-	$p = $post_id;
+	if ( ! $post )
+		wp_die( __( 'You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?' ) );
 
-	if ( empty($post->ID) )
-		wp_die( __('You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?') );
+	if ( ! $post_type_object )
+		wp_die( __( 'Unknown post type.' ) );
 
-	if ( null == $post_type_object )
-		wp_die( __('Unknown post type.') );
-
-	if ( !current_user_can($post_type_object->cap->edit_post, $post_id) )
-		wp_die( __('You are not allowed to edit this item.') );
+	if ( ! current_user_can( 'edit_post', $post_id ) )
+		wp_die( __( 'You are not allowed to edit this item.' ) );
 
 	if ( 'trash' == $post->post_status )
-		wp_die( __('You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.') );
+		wp_die( __( 'You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.' ) );
+
+	if ( ! empty( $_GET['get-post-lock'] ) ) {
+		wp_set_post_lock( $post_id );
+		wp_redirect( get_edit_post_link( $post_id, 'url' ) );
+		exit();
+	}
 
 	$post_type = $post->post_type;
 	if ( 'post' == $post_type ) {
@@ -165,15 +169,24 @@ case 'edit':
 		$post_new_file = "post-new.php?post_type=$post_type";
 	}
 
-	if ( $last = wp_check_post_lock( $post->ID ) ) {
-		add_action('admin_notices', '_admin_notice_post_locked' );
-	} else {
+	if ( ! wp_check_post_lock( $post->ID ) ) {
 		$active_post_lock = wp_set_post_lock( $post->ID );
 
 		if ( 'attachment' !== $post_type )
 			wp_enqueue_script('autosave');
 	}
 
+	if ( is_multisite() ) {
+		add_action( 'admin_footer', '_admin_notice_post_locked' );
+	} else {
+		$check_users = get_users( array( 'fields' => 'ID', 'number' => 2 ) );
+
+		if ( count( $check_users ) > 1 )
+			add_action( 'admin_footer', '_admin_notice_post_locked' );
+
+		unset( $check_users );
+	}
+
 	$title = $post_type_object->labels->edit_item;
 	$post = get_post($post_id, OBJECT, 'edit');
 
@@ -204,6 +217,10 @@ case 'editpost':
 
 	$post_id = edit_post();
 
+	// Session cookie flag that the post was saved
+	if ( isset( $_COOKIE['wp-saving-post-' . $post_id] ) )
+		setcookie( 'wp-saving-post-' . $post_id, 'saved' );
+
 	redirect_post($post_id); // Send user on their way while we keep working
 
 	exit();
@@ -212,13 +229,22 @@ case 'editpost':
 case 'trash':
 	check_admin_referer('trash-post_' . $post_id);
 
-	$post = get_post($post_id);
+	if ( ! $post )
+		wp_die( __( 'The item you are trying to move to the Trash no longer exists.' ) );
+
+	if ( ! $post_type_object )
+		wp_die( __( 'Unknown post type.' ) );
 
-	if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
-		wp_die( __('You are not allowed to move this item to the Trash.') );
+	if ( ! current_user_can( 'delete_post', $post_id ) )
+		wp_die( __( 'You are not allowed to move this item to the Trash.' ) );
+
+	if ( $user_id = wp_check_post_lock( $post_id ) ) {
+		$user = get_userdata( $user_id );
+		wp_die( sprintf( __( 'You cannot move this item to the Trash. %s is currently editing.' ), $user->display_name ) );
+	}
 
-	if ( ! wp_trash_post($post_id) )
-		wp_die( __('Error in moving to Trash.') );
+	if ( ! wp_trash_post( $post_id ) )
+		wp_die( __( 'Error in moving to Trash.' ) );
 
 	wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) );
 	exit();
@@ -227,11 +253,17 @@ case 'trash':
 case 'untrash':
 	check_admin_referer('untrash-post_' . $post_id);
 
-	if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
-		wp_die( __('You are not allowed to move this item out of the Trash.') );
+	if ( ! $post )
+		wp_die( __( 'The item you are trying to restore from the Trash no longer exists.' ) );
 
-	if ( ! wp_untrash_post($post_id) )
-		wp_die( __('Error in restoring from Trash.') );
+	if ( ! $post_type_object )
+		wp_die( __( 'Unknown post type.' ) );
+
+	if ( ! current_user_can( 'delete_post', $post_id ) )
+		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.' ) );
 
 	wp_redirect( add_query_arg('untrashed', 1, $sendback) );
 	exit();
@@ -240,17 +272,23 @@ case 'untrash':
 case 'delete':
 	check_admin_referer('delete-post_' . $post_id);
 
-	if ( !current_user_can($post_type_object->cap->delete_post, $post_id) )
-		wp_die( __('You are not allowed to delete this item.') );
+	if ( ! $post )
+		wp_die( __( 'This item has already been deleted.' ) );
+
+	if ( ! $post_type_object )
+		wp_die( __( 'Unknown post type.' ) );
+
+	if ( ! current_user_can( 'delete_post', $post_id ) )
+		wp_die( __( 'You are not allowed to delete this item.' ) );
 
-	$force = !EMPTY_TRASH_DAYS;
+	$force = ! EMPTY_TRASH_DAYS;
 	if ( $post->post_type == 'attachment' ) {
-		$force = ( $force || !MEDIA_TRASH );
-		if ( ! wp_delete_attachment($post_id, $force) )
-			wp_die( __('Error in deleting.') );
+		$force = ( $force || ! MEDIA_TRASH );
+		if ( ! wp_delete_attachment( $post_id, $force ) )
+			wp_die( __( 'Error in deleting.' ) );
 	} else {
-		if ( !wp_delete_post($post_id, $force) )
-			wp_die( __('Error in deleting.') );
+		if ( ! wp_delete_post( $post_id, $force ) )
+			wp_die( __( 'Error in deleting.' ) );
 	}
 
 	wp_redirect( add_query_arg('deleted', 1, $sendback) );
diff --git a/wp-admin/press-this.php b/wp-admin/press-this.php
index 6542fa31e..0f2be6c53 100644
--- a/wp-admin/press-this.php
+++ b/wp-admin/press-this.php
@@ -91,11 +91,11 @@ if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) {
 }
 
 // Set Variables
-$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( stripslashes( $_GET['t'] ) , ENT_QUOTES) ) ) : '';
+$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( wp_unslash( $_GET['t'] ) , ENT_QUOTES) ) ) : '';
 
 $selection = '';
 if ( !empty($_GET['s']) ) {
-	$selection = str_replace('&apos;', "'", stripslashes($_GET['s']));
+	$selection = str_replace('&apos;', "'", wp_unslash($_GET['s']));
 	$selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) );
 }
 
@@ -303,7 +303,6 @@ die;
 <script type="text/javascript">
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
-var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'press-this', isRtl = <?php echo (int) is_rtl(); ?>;
 var photostorage = false;
 //]]>
@@ -477,7 +476,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
 					<p>
 						<label for="post_format"><?php _e( 'Post Format:' ); ?>
 						<select name="post_format" id="post_format">
-							<option value="0"><?php _ex( 'Standard', 'Post format' ); ?></option>
+							<option value="0"><?php echo get_post_format_string( 'standard' ); ?></option>
 						<?php foreach ( $post_formats[0] as $format ): ?>
 							<option<?php selected( $default_format, $format ); ?> value="<?php echo esc_attr( $format ); ?>"> <?php echo esc_html( get_post_format_string( $format ) ); ?></option>
 						<?php endforeach; ?>
@@ -586,7 +585,7 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
 			</div>
 		</div>
 
-		<div id="waiting" style="display: none"><span class="spinner"></span> <span><?php esc_html_e( 'Loading...' ); ?></span></div>
+		<div id="waiting" style="display: none"><span class="spinner"></span> <span><?php esc_html_e( 'Loading&hellip;' ); ?></span></div>
 
 		<div id="extra-fields" style="display: none"></div>
 
diff --git a/wp-admin/revision.php b/wp-admin/revision.php
index dd20c1276..b6b4ae821 100644
--- a/wp-admin/revision.php
+++ b/wp-admin/revision.php
@@ -9,215 +9,202 @@
 /** WordPress Administration Bootstrap */
 require_once('./admin.php');
 
-wp_enqueue_script('list-revisions');
+require ABSPATH . 'wp-admin/includes/revision.php';
 
-wp_reset_vars(array('revision', 'left', 'right', 'action'));
+wp_reset_vars( array( 'revision', 'action', 'from', 'to' ) );
 
-$revision_id = absint($revision);
-$left        = absint($left);
-$right       = absint($right);
+$revision_id = absint( $revision );
 
+$from = is_numeric( $from ) ? absint( $from ) : null;
+if ( ! $revision_id )
+	$revision_id = absint( $to );
 $redirect = 'edit.php';
 
 switch ( $action ) :
 case 'restore' :
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
+	if ( ! $revision = wp_get_post_revision( $revision_id ) )
 		break;
-	if ( !current_user_can( 'edit_post', $revision->post_parent ) )
-		break;
-	if ( !$post = get_post( $revision->post_parent ) )
-		break;
-
-	// Revisions disabled and we're not looking at an autosave
-	if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) {
-		$redirect = 'edit.php?post_type=' . $post->post_type;
-		break;
-	}
-
-	check_admin_referer( "restore-post_$post->ID|$revision->ID" );
 
-	wp_restore_post_revision( $revision->ID );
-	$redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) );
-	break;
-case 'diff' :
-	if ( !$left_revision  = get_post( $left ) )
-		break;
-	if ( !$right_revision = get_post( $right ) )
+	if ( ! current_user_can( 'edit_post', $revision->post_parent ) )
 		break;
 
-	if ( !current_user_can( 'read_post', $left_revision->ID ) || !current_user_can( 'read_post', $right_revision->ID ) )
+	if ( ! $post = get_post( $revision->post_parent ) )
 		break;
 
-	// If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post
-	if ( $left_revision->ID == $right_revision->ID ) {
-		$redirect = get_edit_post_link( $left_revision->ID );
-		include( './js/revisions-js.php' );
+	// Revisions disabled (previously checked autosaves && ! wp_is_post_autosave( $revision ))
+	if ( ! wp_revisions_enabled( $post ) ) {
+		$redirect = 'edit.php?post_type=' . $post->post_type;
 		break;
 	}
 
-	// Don't allow reverse diffs?
-	if ( strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt) ) {
-		$redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) );
+	// Don't allow revision restore when post is locked
+	if ( wp_check_post_lock( $post->ID ) )
 		break;
-	}
-
-	if ( $left_revision->ID == $right_revision->post_parent ) // right is a revision of left
-		$post =& $left_revision;
-	elseif ( $left_revision->post_parent == $right_revision->ID ) // left is a revision of right
-		$post =& $right_revision;
-	elseif ( $left_revision->post_parent == $right_revision->post_parent ) // both are revisions of common parent
-		$post = get_post( $left_revision->post_parent );
-	else
-		break; // Don't diff two unrelated revisions
-
-	if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) { // Revisions disabled
-		if (
-			// we're not looking at an autosave
-			( !wp_is_post_autosave( $left_revision ) && !wp_is_post_autosave( $right_revision ) )
-		||
-			// we're not comparing an autosave to the current post
-			( $post->ID !== $left_revision->ID && $post->ID !== $right_revision->ID )
-		) {
-			$redirect = 'edit.php?post_type=' . $post->post_type;
-			break;
-		}
-	}
 
-	if (
-		// They're the same
-		$left_revision->ID == $right_revision->ID
-	||
-		// Neither is a revision
-		( !wp_get_post_revision( $left_revision->ID ) && !wp_get_post_revision( $right_revision->ID ) )
-	)
-		break;
+	check_admin_referer( "restore-post_{$revision->ID}" );
 
-	$post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
-	$h2 = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
-	$title = __( 'Revisions' );
-
-	$left  = $left_revision->ID;
-	$right = $right_revision->ID;
-
-	$redirect = false;
+	wp_restore_post_revision( $revision->ID );
+	$redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) );
 	break;
 case 'view' :
+case 'edit' :
 default :
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
+	if ( ! $revision = wp_get_post_revision( $revision_id ) )
 		break;
-	if ( !$post = get_post( $revision->post_parent ) )
+	if ( ! $post = get_post( $revision->post_parent ) )
 		break;
 
-	if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) )
+	if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'read_post', $post->ID ) )
 		break;
 
 	// Revisions disabled and we're not looking at an autosave
-	if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) {
+	if ( ! wp_revisions_enabled( $post ) && ! wp_is_post_autosave( $revision ) ) {
 		$redirect = 'edit.php?post_type=' . $post->post_type;
 		break;
 	}
 
-	$post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
-	$revision_title = wp_post_revision_title( $revision, false );
-	$h2 = sprintf( __( 'Revision for &#8220;%1$s&#8221; created on %2$s' ), $post_title, $revision_title );
+	$post_title = '<a href="' . get_edit_post_link() . '">' . _draft_or_post_title() . '</a>';
+	$h2 = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
 	$title = __( 'Revisions' );
 
-	// Sets up the diff radio buttons
-	$left  = $revision->ID;
-	$right = $post->ID;
-
 	$redirect = false;
 	break;
 endswitch;
 
 // Empty post_type means either malformed object found, or no valid parent was found.
-if ( !$redirect && empty($post->post_type) )
+if ( ! $redirect && empty( $post->post_type ) )
 	$redirect = 'edit.php';
 
-if ( !empty($redirect) ) {
+if ( ! empty( $redirect ) ) {
 	wp_redirect( $redirect );
 	exit;
 }
 
 // This is so that the correct "Edit" menu item is selected.
-if ( !empty($post->post_type) && 'post' != $post->post_type )
+if ( ! empty( $post->post_type ) && 'post' != $post->post_type )
 	$parent_file = $submenu_file = 'edit.php?post_type=' . $post->post_type;
 else
 	$parent_file = $submenu_file = 'edit.php';
 
-require_once( './admin-header.php' );
-
-?>
-
-<div class="wrap">
-
-<h2 class="long-header"><?php echo $h2; ?></h2>
-
-<table class="form-table ie-fixed">
-	<col class="th" />
-<?php if ( 'diff' == $action ) : ?>
-<tr id="revision">
-	<th scope="row"></th>
-	<th scope="col" class="th-full">
-		<span class="alignleft"><?php printf( __('Older: %s'), wp_post_revision_title( $left_revision ) ); ?></span>
-		<span class="alignright"><?php printf( __('Newer: %s'), wp_post_revision_title( $right_revision ) ); ?></span>
-	</th>
-</tr>
-<?php endif;
-
-// use get_post_to_edit filters?
-$identical = true;
-foreach ( _wp_post_revision_fields() as $field => $field_title ) :
-	if ( 'diff' == $action ) {
-		$left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field );
-		$right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field );
-		if ( !$content = wp_text_diff( $left_content, $right_content ) )
-			continue; // There is no difference between left and right
-		$identical = false;
-	} else {
-		add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' );
-		$content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field );
-	}
-	?>
-
-	<tr id="revision-field-<?php echo $field; ?>">
-		<th scope="row"><?php echo esc_html( $field_title ); ?></th>
-		<td><div class="pre"><?php echo $content; ?></div></td>
-	</tr>
-
-	<?php
+wp_enqueue_script( 'revisions' );
+wp_localize_script( 'revisions', '_wpRevisionsSettings', wp_prepare_revisions_for_js( $post, $revision_id, $from ) );
 
-endforeach;
+/* Revisions Help Tab */
 
-if ( 'diff' == $action && $identical ) :
+$revisions_overview  = '<p>' . __( 'This screen is used for managing your content revisions.' ) . '</p>';
+$revisions_overview .= '<p>' . __( 'Revisions are saved copies of your post or page, which are periodically created as you update your content. The red text on the left shows the content that was removed. The green text on the right shows the content that was added.' ) . '</p>';
+$revisions_overview .= '<p>' . __( 'From this screen you can review, compare, and restore revisions:' ) . '</p>';
+$revisions_overview .= '<ul><li>' . __( 'To navigate between revisions, <strong>drag the slider handle left or right</strong> or <strong>use the Previous or Next buttons</strong>.' ) . '</li>';
+$revisions_overview .= '<li>' . __( 'Compare two different revisions by <strong>selecting the &#8220;Compare any two revisions&#8221; box</strong> to the side.' ) . '</li>';
+$revisions_overview .= '<li>' . __( 'To restore a revision, <strong>click Restore This Revision</strong>.' ) . '</li></ul>';
 
-	?>
+get_current_screen()->add_help_tab( array(
+	'id'      => 'revisions-overview',
+	'title'   => __( 'Overview' ),
+	'content' => $revisions_overview
+) );
 
-	<tr><td colspan="2"><div class="updated"><p><?php _e( 'These revisions are identical.' ); ?></p></div></td></tr>
+$revisions_sidebar  = '<p><strong>' . __( 'For more information:' ) . '</strong></p>';
+$revisions_sidebar .= '<p>' . __( '<a href="http://codex.wordpress.org/Revision_Management" target="_blank">Revisions Management</a>' ) . '</p>';
+$revisions_sidebar .= '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>';
 
-	<?php
+get_current_screen()->set_help_sidebar( $revisions_sidebar );
 
-endif;
+require_once( './admin-header.php' );
 
 ?>
 
-</table>
-
-<br class="clear" />
-
-<h3><?php echo $title; ?></h3>
-
-<?php
-
-$args = array( 'format' => 'form-table', 'parent' => true, 'right' => $right, 'left' => $left );
-if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') )
-	$args['type'] = 'autosave';
+<div class="wrap">
+	<?php screen_icon(); ?>
+	<h2 class="long-header"><?php echo $h2; ?></h2>
+</div>
 
-wp_list_post_revisions( $post, $args );
+<script id="tmpl-revisions-frame" type="text/html">
+	<div class="revisions-control-frame"></div>
+	<div class="revisions-diff-frame"></div>
+</script>
+
+<script id="tmpl-revisions-buttons" type="text/html">
+	<div class="revisions-previous">
+		<input class="button" type="button" value="<?php echo esc_attr_x( 'Previous', 'Button label for a previous revision' ); ?>" />
+	</div>
+
+	<div class="revisions-next">
+		<input class="button" type="button" value="<?php echo esc_attr_x( 'Next', 'Button label for a next revision' ); ?>" />
+	</div>
+</script>
+
+<script id="tmpl-revisions-checkbox" type="text/html">
+	<div class="revision-toggle-compare-mode">
+		<label>
+			<input type="checkbox" class="compare-two-revisions"
+			<#
+			if ( 'undefined' !== typeof data && data.model.attributes.compareTwoMode ) {
+			 	#> checked="checked"<#
+			}
+			#>
+			/>
+			<?php esc_attr_e( 'Compare any two revisions' ); ?>
+		</label>
+	</div>
+</script>
+
+<script id="tmpl-revisions-meta" type="text/html">
+	<# if ( ! _.isUndefined( data.attributes ) ) { #>
+		<div class="diff-title">
+			<# if ( 'from' === data.type ) { #>
+				<strong><?php _ex( 'From:', 'Followed by post revision info' ); ?></strong>
+			<# } else if ( 'to' === data.type ) { #>
+				<strong><?php _ex( 'To:', 'Followed by post revision info' ); ?></strong>
+			<# } #>
+			<div class="author-card<# if ( data.attributes.autosave ) { #> autosave<# } #>">
+				{{{ data.attributes.author.avatar }}}
+				<div class="author-info">
+				<# if ( data.attributes.autosave ) { #>
+					<span class="byline"><?php printf( __( 'Autosave by %s' ),
+						'<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
+				<# } else if ( data.attributes.current ) { #>
+					<span class="byline"><?php printf( __( 'Current Revision by %s' ),
+						'<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
+				<# } else { #>
+					<span class="byline"><?php printf( __( 'Revision by %s' ),
+						'<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
+				<# } #>
+					<span class="time-ago">{{ data.attributes.timeAgo }}</span>
+					<span class="date">({{ data.attributes.dateShort }})</span>
+				</div>
+			<# if ( 'to' === data.type && data.attributes.restoreUrl ) { #>
+				<input  <?php if ( wp_check_post_lock( $post->ID ) ) { ?>
+					disabled="disabled"
+				<?php } else { ?>
+					<# if ( data.attributes.current ) { #>
+						disabled="disabled"
+					<# } #>
+				<?php } ?>
+				<# if ( data.attributes.autosave ) { #>
+					type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Autosave' ); ?>" />
+				<# } else { #>
+					type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Revision' ); ?>" />
+				<# } #>
+			<# } #>
+		</div>
+	<# if ( 'tooltip' === data.type ) { #>
+		<div class="revisions-tooltip-arrow"><span></span></div>
+	<# } #>
+<# } #>
+</script>
+
+<script id="tmpl-revisions-diff" type="text/html">
+	<div class="loading-indicator"><span class="spinner"></span></div>
+	<div class="diff-error"><?php _e( 'Sorry, something went wrong. The requested comparison could not be loaded.' ); ?></div>
+	<div class="diff">
+	<# _.each( data.fields, function( field ) { #>
+		<h3>{{ field.name }}</h3>
+		{{{ field.diff }}}
+	<# }); #>
+	</div>
+</script>
 
-?>
-
-</div>
 
 <?php
 require_once( './admin-footer.php' );
diff --git a/wp-admin/setup-config.php b/wp-admin/setup-config.php
index 7409d010f..82d06e99d 100644
--- a/wp-admin/setup-config.php
+++ b/wp-admin/setup-config.php
@@ -164,7 +164,7 @@ switch($step) {
 
 	case 2:
 	foreach ( array( 'dbname', 'uname', 'pwd', 'dbhost', 'prefix' ) as $key )
-		$$key = trim( stripslashes( $_POST[ $key ] ) );
+		$$key = trim( wp_unslash( $_POST[ $key ] ) );
 
 	$tryagain_link = '</p><p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button button-large">' . __( 'Try again' ) . '</a>';
 
@@ -283,7 +283,7 @@ el.select();
 		chmod(ABSPATH . 'wp-config.php', 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>
+<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="install.php" class="button button-large"><?php _e( 'Run the install' ); ?></a></p>
 <?php
diff --git a/wp-admin/theme-editor.php b/wp-admin/theme-editor.php
index c9adabe0c..8f95cab11 100644
--- a/wp-admin/theme-editor.php
+++ b/wp-admin/theme-editor.php
@@ -26,7 +26,7 @@ get_current_screen()->add_help_tab( array(
 '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>' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '</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.') . '</p>
 	<p>' . __('After typing in your edits, click Update File.') . '</p>
 	<p>' . __('<strong>Advice:</strong> think very carefully about your site crashing if you are live-editing the theme currently in use.') . '</p>
@@ -68,7 +68,7 @@ if ( empty( $file ) ) {
 	$relative_file = 'style.css';
 	$file = $allowed_files['style.css'];
 } else {
-	$relative_file = stripslashes( $file );
+	$relative_file = $file;
 	$file = $theme->get_stylesheet_directory() . '/' . $relative_file;
 }
 
@@ -78,7 +78,7 @@ $scrollto = isset( $_REQUEST['scrollto'] ) ? (int) $_REQUEST['scrollto'] : 0;
 switch( $action ) {
 case 'update':
 	check_admin_referer( 'edit-theme_' . $file . $stylesheet );
-	$newcontent = stripslashes( $_POST['newcontent'] );
+	$newcontent = wp_unslash( $_POST['newcontent'] );
 	$location = 'theme-editor.php?file=' . urlencode( $relative_file ) . '&theme=' . urlencode( $stylesheet ) . '&scrollto=' . $scrollto;
 	if ( is_writeable( $file ) ) {
 		//is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable
@@ -112,7 +112,7 @@ default:
 			$functions = wp_doc_link_parse( $content );
 
 			$docs_select = '<select name="docs-list" id="docs-list">';
-			$docs_select .= '<option value="">' . esc_attr__( 'Function Name...' ) . '</option>';
+			$docs_select .= '<option value="">' . esc_attr__( 'Function Name&hellip;' ) . '</option>';
 			foreach ( $functions as $function ) {
 				$docs_select .= '<option value="' . esc_attr( urlencode( $function ) ) . '">' . htmlspecialchars( $function ) . '()</option>';
 			}
@@ -209,7 +209,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( 'Lookup' ); ?> " 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( '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>
 	<?php endif; ?>
 
diff --git a/wp-admin/theme-install.php b/wp-admin/theme-install.php
index 0825c0e4b..14d9f52e8 100644
--- a/wp-admin/theme-install.php
+++ b/wp-admin/theme-install.php
@@ -37,7 +37,7 @@ $body_id = $tab;
 do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information.
 
 $help_overview =
-	'<p>' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/extend/themes/') . '</p>' .
+	'<p>' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/themes/') . '</p>' .
 	'<p>' . __('You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it.') . '</p>' .
 	'<p>' . __('You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme&#8217;s folder via FTP into your <code>/wp-content/themes</code> directory.') . '</p>';
 
diff --git a/wp-admin/themes.php b/wp-admin/themes.php
index 7852a7213..14ed887da 100644
--- a/wp-admin/themes.php
+++ b/wp-admin/themes.php
@@ -54,7 +54,7 @@ if ( current_user_can( 'install_themes' ) ) {
 	if ( is_multisite() ) {
 		$help_install = '<p>' . __('Installing themes on Multisite can only be done from the Network Admin section.') . '</p>';
 	} else {
-		$help_install = '<p>' . sprintf( __('If you would like to see more themes to choose from, click on the &#8220;Install Themes&#8221; tab and you will be able to browse or search for additional themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they&#8217;re free!'), 'http://wordpress.org/extend/themes/' ) . '</p>';
+		$help_install = '<p>' . sprintf( __('If you would like to see more themes to choose from, click on the &#8220;Install Themes&#8221; tab and you will be able to browse or search for additional themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they&#8217;re free!'), 'http://wordpress.org/themes/' ) . '</p>';
 	}
 
 	get_current_screen()->add_help_tab( array(
@@ -159,7 +159,7 @@ $customize_title = sprintf( __( 'Customize &#8220;%s&#8221;' ), $ct->display('Na
 	if ( is_array( $submenu ) && isset( $submenu['themes.php'] ) ) {
 		foreach ( (array) $submenu['themes.php'] as $item) {
 			$class = '';
-			if ( 'themes.php' == $item[2] || 'theme-editor.php' == $item[2] )
+			if ( 'themes.php' == $item[2] || 'theme-editor.php' == $item[2] || 'customize.php' == $item[2] )
 				continue;
 			// 0 = name, 1 = capability, 2 = file
 			if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) )
diff --git a/wp-admin/tools.php b/wp-admin/tools.php
index a036f2855..387be9035 100644
--- a/wp-admin/tools.php
+++ b/wp-admin/tools.php
@@ -43,7 +43,7 @@ require_once('./admin-header.php');
 
 	<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>
 	<p class="description"><?php _e('Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut.') ?></p>
-	<p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1)jQuery('.pressthis-code').show().find('textarea').focus().select();return false;" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
+	<p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1){jQuery('.pressthis-code').show().find('textarea').focus().select();return false;}" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
 	<div class="pressthis-code" style="display:none;">
 	<p class="description"><?php _e('If your bookmarks toolbar is hidden: copy the code below, open your Bookmarks manager, create new bookmark, type Press This into the name field and paste the code into the URL field.') ?></p>
 	<p><textarea rows="5" cols="120" readonly="readonly"><?php echo htmlspecialchars( get_shortcut_link() ); ?></textarea></p>
diff --git a/wp-admin/update-core.php b/wp-admin/update-core.php
index a45b9be98..c8f587742 100644
--- a/wp-admin/update-core.php
+++ b/wp-admin/update-core.php
@@ -188,7 +188,7 @@ function list_plugin_updates() {
 	?>
 <h3><?php _e( 'Plugins' ); ?></h3>
 <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 $form_action; ?>" name="upgrade-plugins" class="upgrade">
+<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-plugins" class="upgrade">
 <?php wp_nonce_field('upgrade-core'); ?>
 <p><input id="upgrade-plugins" class="button" type="submit" value="<?php esc_attr_e('Update Plugins'); ?>" name="upgrade" /></p>
 <table class="widefat" cellspacing="0" id="update-plugins-table">
@@ -266,7 +266,7 @@ function list_theme_updates() {
 <h3><?php _e( 'Themes' ); ?></h3>
 <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.'), _x('http://codex.wordpress.org/Child_Themes', 'Link used in suggestion to use child themes in GUU') ); ?></p>
-<form method="post" action="<?php echo $form_action; ?>" name="upgrade-themes" class="upgrade">
+<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-themes" class="upgrade">
 <?php wp_nonce_field('upgrade-core'); ?>
 <p><input id="upgrade-themes" class="button" type="submit" value="<?php esc_attr_e('Update Themes'); ?>" name="upgrade" /></p>
 <table class="widefat" cellspacing="0" id="update-themes-table">
@@ -289,7 +289,7 @@ function list_theme_updates() {
 		echo "
 	<tr class='active'>
 		<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='64' 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' /><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>";
 	}
 ?>
diff --git a/wp-admin/upgrade.php b/wp-admin/upgrade.php
index 9a632ef05..b04287735 100644
--- a/wp-admin/upgrade.php
+++ b/wp-admin/upgrade.php
@@ -58,7 +58,7 @@ else
 	?>
 </head>
 <body class="wp-core-ui">
-<h1 id="logo"><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
+<h1 id="logo"><a href="<?php echo esc_url( __( 'http://wordpress.org/' ) ); ?>"><?php _e( 'WordPress' ); ?></a></h1>
 
 <?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
 
@@ -77,7 +77,7 @@ else
 <?php else :
 switch ( $step ) :
 	case 0:
-		$goback = stripslashes( wp_get_referer() );
+		$goback = wp_get_referer();
 		$goback = esc_url_raw( $goback );
 		$goback = urlencode( $goback );
 ?>
@@ -90,7 +90,7 @@ switch ( $step ) :
 	case 1:
 		wp_upgrade();
 
-			$backto = !empty($_GET['backto']) ? stripslashes( urldecode( $_GET['backto'] ) ) : __get_option( 'home' ) . '/';
+			$backto = !empty($_GET['backto']) ? wp_unslash( urldecode( $_GET['backto'] ) ) : __get_option( 'home' ) . '/';
 			$backto = esc_url( $backto );
 			$backto = wp_validate_redirect($backto, __get_option( 'home' ) . '/');
 ?>
diff --git a/wp-admin/upload.php b/wp-admin/upload.php
index 7d50d5290..8dec1302a 100644
--- a/wp-admin/upload.php
+++ b/wp-admin/upload.php
@@ -99,7 +99,7 @@ if ( $doaction ) {
 					wp_die( __( 'You are not allowed to move this post to the trash.' ) );
 
 				if ( !wp_trash_post( $post_id ) )
-					wp_die( __( 'Error in moving to trash...' ) );
+					wp_die( __( 'Error in moving to trash.' ) );
 			}
 			$location = add_query_arg( array( 'trashed' => count( $post_ids ), 'ids' => join( ',', $post_ids ) ), $location );
 			break;
@@ -111,7 +111,7 @@ if ( $doaction ) {
 					wp_die( __( 'You are not allowed to move this post out of the trash.' ) );
 
 				if ( !wp_untrash_post( $post_id ) )
-					wp_die( __( 'Error in restoring from trash...' ) );
+					wp_die( __( 'Error in restoring from trash.' ) );
 			}
 			$location = add_query_arg( 'untrashed', count( $post_ids ), $location );
 			break;
@@ -123,7 +123,7 @@ if ( $doaction ) {
 					wp_die( __( 'You are not allowed to delete this post.' ) );
 
 				if ( !wp_delete_attachment( $post_id_del ) )
-					wp_die( __( 'Error in deleting...' ) );
+					wp_die( __( 'Error in deleting.' ) );
 			}
 			$location = add_query_arg( 'deleted', count( $post_ids ), $location );
 			break;
@@ -132,7 +132,7 @@ if ( $doaction ) {
 	wp_redirect( $location );
 	exit;
 } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) {
-	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) );
+	 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
 	 exit;
 }
 
diff --git a/wp-admin/user-edit.php b/wp-admin/user-edit.php
index eadc1f08e..bb9119f22 100644
--- a/wp-admin/user-edit.php
+++ b/wp-admin/user-edit.php
@@ -9,7 +9,7 @@
 /** WordPress Administration Bootstrap */
 require_once('./admin.php');
 
-wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer'));
+wp_reset_vars( array( 'action', 'user_id', 'wp_http_referer' ) );
 
 $user_id = (int) $user_id;
 $current_user = wp_get_current_user();
@@ -54,7 +54,7 @@ get_current_screen()->set_help_sidebar(
     '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer));
+$wp_http_referer = remove_query_arg(array('update', 'delete_count'), $wp_http_referer );
 
 $user_can_edit = current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' );
 
@@ -250,7 +250,6 @@ if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?>
 <td><select name="role" id="role">
 <?php
 // Compare user role against currently editable roles
-// TODO: create a function that does this: wp_get_user_role()
 $user_roles = array_intersect( array_values( $profileuser->roles ), array_keys( get_editable_roles() ) );
 $user_role  = array_shift( $user_roles );
 
@@ -337,7 +336,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
 	<td><input type="text" name="email" id="email" value="<?php echo esc_attr($profileuser->user_email) ?>" class="regular-text" />
 	<?php
 	$new_email = get_option( $current_user->ID . '_new_email' );
-	if ( $new_email && $new_email != $current_user->user_email ) : ?>
+	if ( $new_email && $new_email['newemail'] != $current_user->user_email && $profileuser->ID == $current_user->ID ) : ?>
 	<div class="updated inline">
 	<p><?php printf( __('There is a pending change of your e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), $new_email['newemail'], esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?></p>
 	</div>
@@ -377,10 +376,18 @@ if ( $show_password_fields ) :
 ?>
 <tr id="password">
 	<th><label for="pass1"><?php _e('New Password'); ?></label></th>
-	<td><input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("If you would like to change the password type a new one. Otherwise leave this blank."); ?></span><br />
-		<input type="password" name="pass2" id="pass2" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("Type your new password again."); ?></span><br />
-		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
-		<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
+	<td>
+		<input class="hidden" value=" " /><!-- #24364 workaround -->
+		<input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("If you would like to change the password type a new one. Otherwise leave this blank."); ?></span>
+	</td>
+</tr>
+<tr>
+	<th scope="row"><label for="pass2"><?php _e('Repeat New Password'); ?></label></th>
+	<td>
+	<input name="pass2" type="password" id="pass2" size="16" value="" autocomplete="off" /> <span class="description" for="pass2"><?php _e("Type your new password again."); ?></span>
+	<br />
+	<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
+	<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
 	</td>
 </tr>
 <?php endif; ?>
@@ -393,25 +400,27 @@ if ( $show_password_fields ) :
 		do_action( 'edit_user_profile', $profileuser );
 ?>
 
-<?php if ( count($profileuser->caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser) ) { ?>
-<br class="clear" />
-	<table width="99%" style="border: none;" cellspacing="2" cellpadding="3" class="editform">
-		<tr>
-			<th scope="row"><?php _e('Additional Capabilities') ?></th>
-			<td><?php
-			$output = '';
-			foreach ( $profileuser->caps as $cap => $value ) {
-				if ( !$wp_roles->is_role($cap) ) {
-					if ( $output != '' )
-						$output .= ', ';
-					$output .= $value ? $cap : "Denied: {$cap}";
-				}
-			}
-			echo $output;
-			?></td>
-		</tr>
-	</table>
-<?php } ?>
+<?php if ( count( $profileuser->caps ) > count( $profileuser->roles ) && apply_filters( 'additional_capabilities_display', true, $profileuser ) ) : ?>
+<h3><?php _e( 'Additional Capabilities' ); ?></h3>
+<table class="form-table">
+<tr>
+	<th scope="row"><?php _e( 'Capabilities' ); ?></th>
+	<td>
+<?php
+	$output = '';
+	foreach ( $profileuser->caps as $cap => $value ) {
+		if ( ! $wp_roles->is_role( $cap ) ) {
+			if ( '' != $output )
+				$output .= ', ';
+			$output .= $value ? $cap : sprintf( __( 'Denied: %s' ), $cap );
+		}
+	}
+	echo $output;
+?>
+	</td>
+</tr>
+</table>
+<?php endif; ?>
 
 <input type="hidden" name="action" value="update" />
 <input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?>" />
diff --git a/wp-admin/user-new.php b/wp-admin/user-new.php
index f9616a2c8..33b819641 100644
--- a/wp-admin/user-new.php
+++ b/wp-admin/user-new.php
@@ -113,11 +113,10 @@ Please click the following link to confirm the invite:
 	} else {
 		// Adding a new user to this blog
 		$user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] );
-		unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] );
 		if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) {
 			$add_user_errors = $user_details[ 'errors' ];
 		} else {
-			$new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
+			$new_user_login = apply_filters('pre_user_login', sanitize_user(wp_unslash($_REQUEST['user_login']), true));
 			if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
 				add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email
 			}
@@ -209,7 +208,7 @@ if ( isset($_GET['update']) ) {
 			case "does_not_exist":
 				$messages[] = __('The requested user does not exist.');
 				break;
-			case "does_not_exist":
+			case "enter_email":
 				$messages[] = __('Please enter a valid email address.');
 				break;
 		}
@@ -310,7 +309,7 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam
 	$var = "new_user_$var";
 	if( isset( $_POST['createuser'] ) ) {
 		if ( ! isset($$var) )
-			$$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : '';
+			$$var = isset( $_POST[$post_field] ) ? wp_unslash( $_POST[$post_field] ) : '';
 	} else {
 		$$var = false;
 	}
@@ -341,9 +340,15 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam
 	</tr>
 <?php if ( apply_filters('show_password_fields', true) ) : ?>
 	<tr class="form-field form-required">
-		<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(twice, required)'); ?></span></label></th>
-		<td><input name="pass1" type="password" id="pass1" autocomplete="off" />
-		<br />
+		<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(required)'); ?></span></label></th>
+		<td>
+			<input class="hidden" value=" " /><!-- #24364 workaround -->
+			<input name="pass1" type="password" id="pass1" autocomplete="off" />
+		</td>
+	</tr>
+	<tr class="form-field form-required">
+		<th scope="row"><label for="pass2"><?php _e('Repeat Password'); ?> <span class="description"><?php /* translators: password input field */_e('(required)'); ?></span></label></th>
+		<td>
 		<input name="pass2" type="password" id="pass2" autocomplete="off" />
 		<br />
 		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
diff --git a/wp-admin/users.php b/wp-admin/users.php
index 6ea17657c..e807487a5 100644
--- a/wp-admin/users.php
+++ b/wp-admin/users.php
@@ -64,9 +64,9 @@ get_current_screen()->set_help_sidebar(
 );
 
 if ( empty($_REQUEST) ) {
-	$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr(stripslashes($_SERVER['REQUEST_URI'])) . '" />';
+	$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
 } elseif ( isset($_REQUEST['wp_http_referer']) ) {
-	$redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer']));
+	$redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), wp_unslash( $_REQUEST['wp_http_referer'] ) );
 	$referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr($redirect) . '" />';
 } else {
 	$redirect = 'users.php';
@@ -86,6 +86,9 @@ jQuery(document).ready( function($) {
 	$('input[name=delete_option]').one('change', function() {
 		submit.prop('disabled', false);
 	});
+	$('#reassign_user').focus( function() {
+		$('#delete_option1').prop('checked', true).trigger('change');
+	});
 });
 </script>
 <?php
@@ -354,7 +357,7 @@ break;
 default:
 
 	if ( !empty($_GET['_wp_http_referer']) ) {
-		wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
+		wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce'), wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
 		exit;
 	}
 
@@ -378,7 +381,7 @@ default:
 		case 'add':
 			if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
 				$messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
-					esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ),
+					esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
 						self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
 			} else {
 				$messages[] = '<div id="message" class="updated"><p>' . __( 'New user created.' ) . '</p></div>';
diff --git a/wp-comments-post.php b/wp-comments-post.php
index 194e00f54..7b4a5e9dc 100644
--- a/wp-comments-post.php
+++ b/wp-comments-post.php
@@ -57,9 +57,9 @@ $user = wp_get_current_user();
 if ( $user->exists() ) {
 	if ( empty( $user->display_name ) )
 		$user->display_name=$user->user_login;
-	$comment_author       = $wpdb->escape($user->display_name);
-	$comment_author_email = $wpdb->escape($user->user_email);
-	$comment_author_url   = $wpdb->escape($user->user_url);
+	$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 ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
 			kses_remove_filters(); // start with a clean slate
diff --git a/wp-content/plugins/akismet/admin.php b/wp-content/plugins/akismet/admin.php
index 481b0f3d5..f80719169 100644
--- a/wp-content/plugins/akismet/admin.php
+++ b/wp-content/plugins/akismet/admin.php
@@ -39,10 +39,10 @@ function akismet_load_js_and_css() {
 		'plugins_page_akismet-key-config', 
 		'jetpack_page_akismet-key-config',
 	) ) ) {
-		wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.4.4' );
+		wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.9' );
 		wp_enqueue_style( 'akismet.css');
 	
-		wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.4.6' );
+		wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.9' );
 		wp_enqueue_script( 'akismet.js' );
 		wp_localize_script( 'akismet.js', 'WPAkismet', array(
 			'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' )
@@ -67,11 +67,14 @@ add_filter( 'plugin_action_links', 'akismet_plugin_action_links', 10, 2 );
 function akismet_conf() {
 	global $akismet_nonce, $current_user;
 	
-	$new_key_link  = 'https://akismet.com/get/';
-	$api_key       = akismet_get_key();
-	$show_key_form = $api_key;
-	$key_status    = 'empty';
-	$saved_ok      = false;
+	$new_key_link    = 'https://akismet.com/get/';
+	$config_link     = esc_url( add_query_arg( array( 'page' => 'akismet-key-config', 'show' => 'enter-api-key' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );
+	$stats_link      = esc_url( add_query_arg( array( 'page' => 'akismet-stats-display' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'index.php' ) ) );
+	$api_key         = akismet_get_key();
+	$show_key_form   = $api_key;
+	$key_status      = 'empty';
+	$saved_ok        = false;
+	$key_status_text = '';
 	
 	$ms = array();
 
@@ -98,17 +101,17 @@ function akismet_conf() {
 				$ms[] = 'key_empty';
 		}  
 		else
-			$key_status = akismet_verify_key( $key );
-
+			$key_status = akismet_verify_key( $key );		
+		
 		if ( $key != $api_key && $key_status == 'valid' ) {
-			update_option('wordpress_api_key', $key);
 			$ms[] = 'new_key_valid';
+			update_option('wordpress_api_key', $key);
 		}
 		elseif ( $key_status == 'invalid' )
 			$ms[] = 'new_key_invalid';
 		elseif ( $key_status == 'failed' )
 			$ms[] = 'new_key_failed';
-			
+
 		$api_key = $key_status == 'valid' ? $key : false;
 
 		if ( isset( $_POST['akismet_discard_month'] ) )
@@ -130,6 +133,9 @@ function akismet_conf() {
 		check_admin_referer( $akismet_nonce );
 		akismet_get_server_connectivity(0);
 	}
+	elseif ( isset( $_GET['show'] ) && $_GET['show'] == 'enter-api-key' ) {
+		$show_key_form = true;
+	}
 	
 	if ( $show_key_form ) {
 		//check current key status
@@ -154,7 +160,14 @@ function akismet_conf() {
 			elseif ( !empty( $key ) && $key_status == 'failed' )
 				$ms[] = 'key_failed';
 		}
-	}
+	}	
+		
+	$key_status_strings = array( 
+	 	'empty'   => __( 'Empty' ), 
+		'valid'   => __( 'Valid' ), 
+		'invalid' => __( 'Invalid' ), 
+		'failed'  => __( 'Failed' ), 
+ 	);
 
 	$messages = array(
 		'new_key_empty'   => array( 'class' => 'updated fade', 'text' => __('Your key has been cleared.' ) ),
@@ -174,7 +187,7 @@ function akismet_conf() {
 	<?php if ( !$api_key ) : ?>
 	<h2 class="ak-header"><?php _e('Akismet'); ?></h2>
 	<?php else: ?>
-	<h2 class="ak-header"><?php printf( __( 'Akismet <a href="%s" class="add-new-h2">Stats</a>' ), esc_url( add_query_arg( array( 'page' => 'akismet-stats-display' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'index.php' ) ) ) ); ?></h2>
+	<h2 class="ak-header"><?php printf( __( 'Akismet <a href="%s" class="add-new-h2">Stats</a>' ), $stats_link ); ?></h2>
 	<?php endif; ?>
 	<div class="no-key <?php echo $show_key_form ? 'hidden' : '';?>">
 		<p><?php _e('Akismet eliminates the comment and trackback spam you get on your site. To use Akismet you may need to sign up for an API key. Click the button below to get started.'); ?></p>
@@ -182,10 +195,10 @@ function akismet_conf() {
 			<input type="hidden" name="return" value="1"/> 
 			<input type="hidden" name="jetpack" value="<?php echo (string) class_exists( 'Jetpack' );?>"/>
 			<input type="hidden" name="user" value="<?php echo esc_attr( $current_user->user_login );?>"/>
-			<input type="submit" class="button button-primary" value="<?php echo esc_attr( __('Create a new Akismet Key') ); ?>"/>
+			<input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Create a new Akismet Key' ); ?>"/>
 		</form>
 		<br/>
-		<a href="#" class="switch-have-key"><?php _e('I already have a key'); ?></a>
+		<a href="<?php echo $config_link;?>"><?php _e('I already have a key'); ?></a>
 	</div>
 	<div class="have-key <?php echo $show_key_form ? '' : 'hidden';?>">
 		<?php if ( !empty($_POST['submit'] ) && $saved_ok ) : ?>
@@ -203,7 +216,7 @@ function akismet_conf() {
 					<tr>
 						<th><label for="key"><?php _e('Akismet API Key');?></label></th>
 						<td>
-							<input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo esc_html( get_option('wordpress_api_key') ); ?>" class="regular-text code <?php echo $key_status;?>"><div class="under-input key-status <?php echo $key_status;?>"><?php echo ucfirst( $key_status );?></div>
+							<input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo esc_attr( get_option('wordpress_api_key') ); ?>" class="regular-text code <?php echo $key_status;?>"><div class="under-input key-status <?php echo $key_status;?>"><?php echo isset( $key_status_strings[ $key_status ] ) ? $key_status_strings[ $key_status ] : '';?></div>
 							<p class="need-key description"><?php printf( __('You must enter a valid Akismet API key here. If you need an API key, you can <a href="%s">create one here</a>'), '#' );?></p>
 						</td>
 					</tr>
@@ -212,8 +225,8 @@ function akismet_conf() {
 						<th scope="row"><?php _e('Settings');?></th>
 						<td>
 							<fieldset><legend class="screen-reader-text"><span><?php _e('Settings');?></span></legend>
-							<label for="akismet_discard_month" title="<?php echo esc_attr( __( 'Auto-detete old spam' ) ); ?>"><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php echo get_option('akismet_discard_month') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Auto-delete spam submitted on posts more than a month old.'); ?></span></label><br>
-							<label for="akismet_show_user_comments_approved" title="<?php echo esc_attr( __( 'Show approved comments' ) ); ?>"><input name="akismet_show_user_comments_approved" id="akismet_show_user_comments_approved" value="true" type="checkbox" <?php echo get_option('akismet_show_user_comments_approved') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Show the number of comments you\'ve approved beside each comment author.'); ?></span></label>
+							<label for="akismet_discard_month" title="<?php esc_attr_e( 'Auto-detete old spam' ); ?>"><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php echo get_option('akismet_discard_month') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Auto-delete spam submitted on posts more than a month old.'); ?></span></label><br>
+							<label for="akismet_show_user_comments_approved" title="<?php esc_attr_e( 'Show approved comments' ); ?>"><input name="akismet_show_user_comments_approved" id="akismet_show_user_comments_approved" value="true" type="checkbox" <?php echo get_option('akismet_show_user_comments_approved') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Show the number of comments you\'ve approved beside each comment author.'); ?></span></label>
 							</fieldset>
 						</td>
 					</tr>
@@ -301,12 +314,13 @@ function akismet_conf() {
 function akismet_stats_display() {
 	global $akismet_api_host, $akismet_api_port;
 	
-	$blog    = urlencode( get_bloginfo('url') );
-	$api_key = akismet_get_key();?>
+	$blog        = urlencode( get_bloginfo('url') );
+	$api_key     = akismet_get_key();
+	$config_link = esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );?>
 	
 <div class="wrap"><?php	
 	if ( !$api_key ) :?>
-	<div id="akismet-warning" class="updated fade"><p><strong><?php _e('Akismet is almost ready.');?></strong> <?php printf( __( 'You must <a href="%1$s">enter your Akismet API key</a> for it to work.' ), esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), admin_url( 'admin.php' ) ) ) );?></p></div><?php
+	<div id="akismet-warning" class="updated fade"><p><strong><?php _e('Akismet is almost ready.');?></strong> <?php printf( __( 'You must <a href="%1$s">enter your Akismet API key</a> for it to work.' ), $config_link );?></p></div><?php
 	else :?>
 	<iframe src="<?php echo esc_url( sprintf( '%s://akismet.com/web/1.0/user-stats.php?blog=%s&api_key=%s', is_ssl()?'https':'http', $blog, $api_key ) ); ?>" width="100%" height="2500px" frameborder="0" id="akismet-stats-frame"></iframe><?php
 	endif;?>
@@ -368,7 +382,7 @@ function akismet_admin_warnings() {
 					<style type="text/css">  
 .akismet_activate{min-width:825px;border:1px solid #4F800D;padding:5px;margin:15px 0;background:#83AF24;background-image:-webkit-gradient(linear,0% 0,80% 100%,from(#83AF24),to(#4F800D));background-image:-moz-linear-gradient(80% 100% 120deg,#4F800D,#83AF24);-moz-border-radius:3px;border-radius:3px;-webkit-border-radius:3px;position:relative;overflow:hidden}.akismet_activate .aa_a{position:absolute;top:-5px;right:10px;font-size:140px;color:#769F33;font-family:Georgia, "Times New Roman", Times, serif;z-index:1}.akismet_activate .aa_button{font-weight:bold;border:1px solid #029DD6;border-top:1px solid #06B9FD;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#FFF;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button:hover{text-decoration:none !important;border:1px solid #029DD6;border-bottom:1px solid #00A8EF;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#F0F8FB;background:#0079B1;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#0079B1),to(#0092BF));background-image:-moz-linear-gradient(0% 100% 90deg,#0092BF,#0079B1);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button_border{border:1px solid #006699;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6)}.akismet_activate .aa_button_container{cursor:pointer;display:inline-block;background:#DEF1B8;padding:5px;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;width:266px}.akismet_activate .aa_description{position:absolute;top:22px;left:285px;margin-left:25px;color:#E5F2B1;font-size:15px;z-index:1000}.akismet_activate .aa_description strong{color:#FFF;font-weight:normal}
 					</style>                       
-					<form name="akismet_activate" action="https://akismet.com/get/" method="POST"> 
+					<form name="akismet_activate" action="'.esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) ).'" method="POST"> 
 						<input type="hidden" name="return" value="1"/>
 						<input type="hidden" name="jetpack" value="'.(string) class_exists( 'Jetpack' ).'"/>
 						<input type="hidden" name="user" value="'.esc_attr( $current_user->user_login ).'"/>
@@ -376,10 +390,10 @@ function akismet_admin_warnings() {
 							<div class="aa_a">A</div>     
 							<div class="aa_button_container" onclick="document.akismet_activate.submit();">  
 								<div class="aa_button_border">          
-									<div class="aa_button">Activate your Akismet account</div>  
+									<div class="aa_button">'.__('Activate your Akismet account').'</div>  
 								</div>  
 							</div>  
-							<div class="aa_description"><strong>Almost done</strong> - activate your account and say goodbye to comment spam.</div>  
+							<div class="aa_description">'.__('<strong>Almost done</strong> - activate your account and say goodbye to comment spam').'</div>  
 						</div>  
 					</form>  
 				</div>  
diff --git a/wp-content/plugins/akismet/akismet.php b/wp-content/plugins/akismet/akismet.php
index 15a1b2c2e..919ea0e75 100644
--- a/wp-content/plugins/akismet/akismet.php
+++ b/wp-content/plugins/akismet/akismet.php
@@ -6,7 +6,7 @@
 Plugin Name: Akismet
 Plugin URI: http://akismet.com/?return=true
 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/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
-Version: 2.5.8
+Version: 2.5.9
 Author: Automattic
 Author URI: http://automattic.com/wordpress-plugins/
 License: GPLv2 or later
@@ -34,7 +34,7 @@ if ( !function_exists( 'add_action' ) ) {
 	exit;
 }
 
-define('AKISMET_VERSION', '2.5.8');
+define('AKISMET_VERSION', '2.5.9');
 define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));
 
 /** If you hardcode a WP.com API key here, all key config screens will be hidden */
diff --git a/wp-content/plugins/akismet/img/logo.png b/wp-content/plugins/akismet/img/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5f5b9a1720277baf536fc765471f754decf7700
GIT binary patch
literal 2710
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
a{xPmR-(2zANa+QrCh&Cib6Mw<&;$TWdD43T

literal 0
HcmV?d00001

diff --git a/wp-content/plugins/akismet/img/logo@2x.png b/wp-content/plugins/akismet/img/logo@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..80c835b0eaf77a9d63e4ec49ece087e67dc04810
GIT binary patch
literal 1467
zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NoCO|{#S9GG!XV7ZFl&wk
z0|R4mW=KRygs+cPa(=E}VoH8es$NBI0RsrwR9IEy7UZUuBq~(o=HwMyRoE(lRaoT}
zTY-f2l@!2AO0sR0B76fBob!uP6-@L@^bC~jxD*r=Y>HCStb$zJpxTR4(rlG7N=gc>
z^!3Zj%k|2Q_413-^$jg8E%gnI^o@*ki&D~bi!1X=5-W7`ij^UTz|3(;Elw`VEGWs$
z&r<-Io0ybeT4JlD1hPm02B7ZDEr45;R}A%4a(=FUMPh-zp`L+0++>j96}bgg&PAz-
zCHX}m`T03^j-WtL2*}7U$uG{xFHmp}HdD~>O-#<r0|{u_=%Z_Zy1+&s<SZm-Lc#zn
z8sy?;$7Q1r4lPi~*>M%ETxQ6?!2HhB#W5s<^=+iDN2sI7xekX#OE!r;TU3*pIm`B}
zypFbfXQ!J=VqnCRV+#zL#I|KzJ><*c>6kl-Ly4zF!NAZ!N$y{Z+BNMZ;Xztc{w6F-
zTD|Z1g~C1Of4{pkbLSKTrJ}TVGmY<;*QK2cxzoA2vs>)b`A4lhc1?E$eq0wc5i}4C
z_|o91=*q68Z!Q>6wr~-nFe8LhP?Q)IbadsTXwHwX=ZdKA*Pj@pzHQB_4_=l3JeS?R
z5~#iH#N27^nk@H)fBpFqRKBBStF4N_jk2DEBl@vn6Kgx$q*&K;sH{JA-dp=&V_H7X
z2j|#L;VgX5<}x3V7mnvxksr$zaWP=}15U=GdV?!gf2${Ln3i&N!W!=nEewpj`)UmY
z_=Ljry&~-yWq$Hxe4qX8;rrNy{c~Lymd4D9b9dHls$-hUD$XeKK&~wQ@cq63<#<lZ
z+0R0@S+SpG(Rr8tBY=~|#CWMgzGk*sz$^RHyXQa5d%gQzEQmWJj_rcZ?~|_|Uv{q1
zO#fMSQN7ero$=0A?dj`#1tjL2m1LVZztJzxYpYdBnxlGS?M?SY6Pr(~p8t*Iwmb7-
z=^pjXrxq#LUU6f1u3TLIy8HI$MKAg7msd{Nw2tleOomyfte+qMa690xFUO+RMLo_l
z=3M{lvvY4fpW&Qs7u{~~%qrNXEGJZEW%AyqVb-Z7M|jKB6^f+R^7Y)>DL=npWusiK
z%;G8ARh}Dcm9R=VKJ&npGc1?ggqT^@K55+~YbxQSX!W~ttABE{Nl)OZVB`HWq~@1y
zxuA5U^A9_F-*i*XlV$!|Pa^(KRO^nNsOWcFx<CCs&lZ-ajV#jA@^x3LXR5trQDiFX
zzWHb7-|sqW>vL-VW#2s;b4Tb;Pjuv0U!S?gw<Y|RPMIx!>XoRcMbiu6ym!wYuu6Gx
ztYW!wm{r=o_GZ%bWE-6&?vG!}&HDJe%>4Ye+a_<F3iKXH96Rw>BVO=}L2HZSloM)x
zW=EqVI~i<a=6$)R?$gI~Kg_{W-}I85=l>JJ3(iT-U3Q|-QK0ZjU)^7a!#?o~Pp#GQ
zZ;;cAU1;W{tnsCF{zSD~?-!Z;yyrKMq1yb=U){O9Ep7oD_6U^a*(&TXi1MApa7*-C
zLE~>#z9OAUa~p?@5U<EKhIRKE{u|t``;@=fF@vQw-`>6Q?Bm9&8Bfz$QpL>;%`|Sv
zbbh_}cIuweI}AA*6_Yl}2}_<xIx#!x`-2P5um4!iP-oZn=8=;2`L$2=1C6|D1bB~U
zi|%y)mD0#^ZBmPS&{57E9Spgj<2j8?6F6RcY3OY5%RhC)NN~c(S?5gEn5_0{CZBe3
zIF@a7eFn#iFUxv#g&8H+zl=#%T5x%`(KfLfmVXTFwtDv^e496cidRopKbLh*2~7ZD
COjT+C

literal 0
HcmV?d00001

diff --git a/wp-content/plugins/akismet/readme.txt b/wp-content/plugins/akismet/readme.txt
index 597749e7e..d0094d202 100644
--- a/wp-content/plugins/akismet/readme.txt
+++ b/wp-content/plugins/akismet/readme.txt
@@ -3,7 +3,7 @@ Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eo
 Tags: akismet, comments, spam
 Requires at least: 3.0
 Tested up to: 3.6
-Stable tag: 2.5.8
+Stable tag: 2.5.9
 License: GPLv2 or later
 
 Akismet checks your comments against the Akismet web service to see if they look like spam or not.
@@ -31,6 +31,11 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
 
 == Changelog ==
 
+= 2.5.9 =
+* Update 'Already have a key' link to redirect page rather than depend on javascript
+* Fix some non-translatable strings to be translatable
+* Update Activation banner in plugins page to redirect user to Akismet config page
+
 = 2.5.8 =
 * Simplify the activation process for new users
 * Remove the reporter_ip parameter
diff --git a/wp-content/plugins/hello.php b/wp-content/plugins/hello.php
index d2287e242..2b1e07b59 100644
--- a/wp-content/plugins/hello.php
+++ b/wp-content/plugins/hello.php
@@ -5,7 +5,7 @@
  */
 /*
 Plugin Name: Hello Dolly
-Plugin URI: http://wordpress.org/extend/plugins/hello-dolly/
+Plugin URI: http://wordpress.org/plugins/hello-dolly/
 Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
 Author: Matt Mullenweg
 Version: 1.6
diff --git a/wp-content/themes/twentythirteen/404.php b/wp-content/themes/twentythirteen/404.php
new file mode 100644
index 000000000..f3197f4a4
--- /dev/null
+++ b/wp-content/themes/twentythirteen/404.php
@@ -0,0 +1,31 @@
+<?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
new file mode 100644
index 000000000..af6c0ca59
--- /dev/null
+++ b/wp-content/themes/twentythirteen/archive.php
@@ -0,0 +1,55 @@
+<?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.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/author-bio.php b/wp-content/themes/twentythirteen/author-bio.php
new file mode 100644
index 000000000..46ce86678
--- /dev/null
+++ b/wp-content/themes/twentythirteen/author-bio.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * The template for displaying Author bios.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Thirteen
+ * @since Twenty Thirteen 1.0
+ */
+?>
+
+<div class="author-info">
+	<div class="author-avatar">
+		<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentythirteen_author_bio_avatar_size', 74 ) ); ?>
+	</div><!-- .author-avatar -->
+	<div class="author-description">
+		<h2 class="author-title"><?php printf( __( 'About %s', 'twentythirteen' ), 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() ); ?>
+			</a>
+		</p>
+	</div><!-- .author-description -->
+</div><!-- .author-info -->
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/author.php b/wp-content/themes/twentythirteen/author.php
new file mode 100644
index 000000000..dd27b07ae
--- /dev/null
+++ b/wp-content/themes/twentythirteen/author.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * The template for displaying Author archive pages.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/category.php b/wp-content/themes/twentythirteen/category.php
new file mode 100644
index 000000000..7971177a8
--- /dev/null
+++ b/wp-content/themes/twentythirteen/category.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * The template for displaying Category pages.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/comments.php b/wp-content/themes/twentythirteen/comments.php
new file mode 100644
index 000000000..22818ac4f
--- /dev/null
+++ b/wp-content/themes/twentythirteen/comments.php
@@ -0,0 +1,59 @@
+<?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
new file mode 100644
index 000000000..9949fdd88
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-aside.php
@@ -0,0 +1,31 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 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
new file mode 100644
index 000000000..23abeaf17
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-audio.php
@@ -0,0 +1,37 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+			<?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><!-- .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
new file mode 100644
index 000000000..eb2fe69bc
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-chat.php
@@ -0,0 +1,31 @@
+<?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 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 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
new file mode 100644
index 000000000..b9537e855
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-gallery.php
@@ -0,0 +1,45 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+			<?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>' ) ); ?>
+		<?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
new file mode 100644
index 000000000..34f514418
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-image.php
@@ -0,0 +1,41 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 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
new file mode 100644
index 000000000..e9082cbee
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-link.php
@@ -0,0 +1,36 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 -->
+
+	<?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
new file mode 100644
index 000000000..d3d27ec92
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-none.php
@@ -0,0 +1,31 @@
+<?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
new file mode 100644
index 000000000..4c3422be5
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-quote.php
@@ -0,0 +1,27 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 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
new file mode 100644
index 000000000..281becf00
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-status.php
@@ -0,0 +1,25 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 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
new file mode 100644
index 000000000..af2ff71cd
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content-video.php
@@ -0,0 +1,41 @@
+<?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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 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
new file mode 100644
index 000000000..4f61b2206
--- /dev/null
+++ b/wp-content/themes/twentythirteen/content.php
@@ -0,0 +1,55 @@
+<?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() ) : ?>
+		<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 the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?>
+		<?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 -->
+	<?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
new file mode 100644
index 000000000..f7665a879
--- /dev/null
+++ b/wp-content/themes/twentythirteen/css/editor-style.css
@@ -0,0 +1,578 @@
+/*
+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 - Post Formats
+ * 9.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;
+}
+
+.wp-caption.alignleft {
+	margin: 5px 10px 5px 0;
+}
+
+.wp-caption.alignright {
+	margin: 5px 0 5px 10px;
+}
+
+.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 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;
+}
+
+
+/**
+ * 9.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
new file mode 100644
index 000000000..c815a14a6
--- /dev/null
+++ b/wp-content/themes/twentythirteen/css/ie.css
@@ -0,0 +1,284 @@
+/*
+Styles for older IE versions (previous to IE9).
+*/
+
+.site {
+	min-width: 1040px;
+}
+
+.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 */
+}
+
+.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 li ul ul {
+	left: 100%;
+	top: 0;
+}
+
+.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;
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/fonts/COPYING.txt b/wp-content/themes/twentythirteen/fonts/COPYING.txt
new file mode 100644
index 000000000..aece214b7
--- /dev/null
+++ b/wp-content/themes/twentythirteen/fonts/COPYING.txt
@@ -0,0 +1,9 @@
+Genericons is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+The fonts are distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
+
+This license does not convey any intellectual property rights to third party trademarks that may be included in the icon font; such marks remain subject to all rights and guidelines of use of their owner.
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/fonts/LICENSE.txt b/wp-content/themes/twentythirteen/fonts/LICENSE.txt
new file mode 100644
index 000000000..d159169d1
--- /dev/null
+++ b/wp-content/themes/twentythirteen/fonts/LICENSE.txt
@@ -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/twentythirteen/fonts/genericons-regular-webfont.eot b/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.eot
new file mode 100644
index 0000000000000000000000000000000000000000..defbbe51707ceb0134d83426c00ea4a688bff82a
GIT binary patch
literal 10388
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
TW}{@$Xoscc$CB9vCpQ29?e)3L

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.svg b/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.svg
new file mode 100644
index 000000000..32ff53b00
--- /dev/null
+++ b/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.svg
@@ -0,0 +1,105 @@
+<?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="&#xe000;" 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 -256h512v-1024h-1792zM256 1440v160h256v-96zM576 960q0 -185 131.5 -316.5t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5zM704 960q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5z" />
+<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="M384 640l128 768h512l-256 -768h-384zM1152 640l128 768h512l-256 -768h-384z" />
+<glyph unicode="&#xf107;" d="M387 862q0 106 75 181l136 135l91 -90l-136 -136q-38 -37 -38 -90t38 -91l90 -90q38 -38 91 -38t90 38l136 135l91 -90l-136 -136q-75 -75 -181 -75t-181 75l-91 91q-75 75 -75 181zM734 952l362 362l90 -90l-362 -362zM870 1450l135 136q75 75 181 75t181 -75l91 -91 q75 -75 75 -181t-75 -181l-136 -136l-90 91l135 136q38 37 38 90t-38 91l-90 90q-38 38 -91 38t-90 -38l-136 -135z" />
+<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 91q53 -54 82.5 -124t29.5 -148t-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 -247q0 -87 -23 -170 t-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="M0 381q50 -6 100 -6q293 0 522 180q-137 2 -244.5 83t-147.5 208q44 -7 79 -7q57 0 110 15q-145 29 -241 144.5t-96 267.5v5q86 -48 191 -53q-86 58 -136.5 150t-50.5 200q0 113 57 211q158 -194 383 -310t483 -129q-11 49 -11 96q0 174 123 297t297 123q89 0 168.5 -35 t138.5 -97q142 27 266 102q-47 -150 -184 -233q124 15 241 66q-84 -127 -210 -217q2 -36 2 -55q0 -168 -49 -337t-150 -323.5t-241 -273.5t-336 -190t-420 -71q-351 0 -644 189z" />
+<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-3v-2v-9v-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.5t329 -294.5l-384 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 -866l80 268q25 79 33.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 100t96 43q3 0 11 -1q-110 101 -249.5 156.5t-294.5 55.5q-208 0 -385.5 -98t-287.5 -266zM796 251 q112 -33 228 -33q138 0 267 46q-3 6 -5 11l-248 679zM1429 328q183 106 291.5 291.5t108.5 404.5q0 207 -98 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="M384 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 384h263v793h-263v-793zM809 384h264v443q0 45 8 64q16 40 50.5 68t85.5 28q133 0 133 -179v-424h264v455q0 175 -83.5 266t-220.5 91 q-50 0 -90.5 -12t-68.5 -34t-45 -41t-33 -44v112h-264v-793z" />
+<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 -287q20 -73 46 -167.5t52 -190t46 -167.5q108 -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 271 q-20 78 -72 407q-49 303 -258 284q-89 -8 -265 -160q-126 -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 -104 -51.5 -192.5t-140 -140t-192.5 -51.5h-1024q-104 0 -192.5 51.5t-140 140t-51.5 192.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="&#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="M256 384l512 512l128 -128l-512 -512zM576 1216v128h384l320 320v256h128l512 -512v-128h-256l-320 -320v-384h-128z" />
+<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 329h-587l-181 535l-180 -534h-588z" />
+<glyph unicode="&#xf409;" d="M384 1024l640 640l640 -640l-128 -128l-512 512l-512 -512zM640 512v384l384 384l384 -384v-384h-256v384h-256v-384h-256z" />
+<glyph unicode="&#xf410;" d="M256 512v51l576 384l192 -128l192 128l576 -384v-51h-1536zM256 717v614l461 -307zM256 1485v51h1536v-51l-768 -512zM1331 1024l461 307v-614z" />
+<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="M128 384q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM128 971v345q240 0 459 -94t377.5 -253.5t252.5 -379.5t94 -461h-345q0 170 -63.5 324t-181.5 273q-119 119 -272 182.5t-321 63.5zM129 1582v345q243 0 475 -64.5t428.5 -181 t362 -282.5t281 -363.5t180 -430.5t64.5 -477h-345q0 197 -52 385.5t-145.5 348t-227 294t-292 228t-346 146t-383.5 52.5z" />
+<glyph unicode="&#xf414;" d="M21 230q-57 102 31 244l760 1237q57 93 134.5 126.5t155 0t135.5 -126.5l759 -1237q88 -142 31 -244t-224 -102h-1557q-168 0 -225 102zM896 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.5zM896 896 q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-384z" />
+<glyph unicode="&#xf415;" d="M128 1024h400q45 0 79.5 27.5t44.5 69.5q33 125 136.5 206t235.5 81q154 0 270 -114q38 -38 90.5 -38t90.5 38q37 38 37 91t-37 90q-88 89 -204.5 139t-246.5 50q-194 0 -353 -106t-234 -278h-309v-256zM536 663q0 -53 37 -90q89 -89 205 -139t246 -50q194 0 353 106 t234 278h309v256h-400q-45 0 -79.5 -27.5t-44.5 -69.5q-33 -125 -136.5 -206t-235.5 -81q-156 0 -269 115q-38 37 -91 37t-91 -38q-37 -38 -37 -91zM768 1024q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
+<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="&#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-768zM896 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.5zM896 1024q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v384q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5v-384z" />
+<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-1024zM1152 1280h203l-203 203v-203z" />
+<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="&#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/fonts/genericons-regular-webfont.ttf b/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..a21dcb6476ff897f0bdf5294873796f1ed1722b4
GIT binary patch
literal 19864
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

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.woff b/wp-content/themes/twentythirteen/fonts/genericons-regular-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..b57e62c0f67219a9c0635f0f88c4255842bc80d0
GIT binary patch
literal 12156
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

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/fonts/genericons.css b/wp-content/themes/twentythirteen/fonts/genericons.css
new file mode 100644
index 000000000..2fde3990c
--- /dev/null
+++ b/wp-content/themes/twentythirteen/fonts/genericons.css
@@ -0,0 +1,157 @@
+/**
+
+	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('genericons-regular-webfont.eot');
+}
+
+@font-face {
+	font-family: 'Genericons';
+	src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),
+	     url('genericons-regular-webfont.ttf') format('truetype'),
+	     url('genericons-regular-webfont.svg#genericonsregular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+
+/**
+ * All Genericons.
+ */
+[class*="genericon"] {
+	display: inline-block;
+	width: 16px;
+	height: 16px;
+	-webkit-font-smoothing: antialiased;
+	font-size: 16px;
+	line-height: 1;
+	font-family: 'Genericons';
+	text-decoration: inherit;
+	font-weight: normal;
+	font-style: normal;
+	vertical-align: top;
+}
+
+/* IE7 */
+[class*="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'; }
+
+/* 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-top: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'; }
+
+/* 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/footer.php b/wp-content/themes/twentythirteen/footer.php
new file mode 100644
index 000000000..99b6bbb26
--- /dev/null
+++ b/wp-content/themes/twentythirteen/footer.php
@@ -0,0 +1,27 @@
+<?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( __( 'http://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
new file mode 100644
index 000000000..b4234bf1e
--- /dev/null
+++ b/wp-content/themes/twentythirteen/functions.php
@@ -0,0 +1,526 @@
+<?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 http://codex.wordpress.org/Theme_Development
+ * and http://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,
+ * see http://codex.wordpress.org/Plugin_API
+ *
+ * @package WordPress
+ * @subpackage Twenty_Thirteen
+ * @since Twenty Thirteen 1.0
+ */
+
+/**
+ * Sets 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;
+
+/**
+ * Adds 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';
+
+/**
+ * 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
+ *
+ * @return void
+ */
+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', 'fonts/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' ) );
+
+	/*
+	 * This theme supports all available post formats by default.
+	 * See http://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' );
+
+/**
+ * Returns 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, "//fonts.googleapis.com/css" );
+	}
+
+	return $fonts_url;
+}
+
+/**
+ * Enqueues scripts and styles for front end.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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' ), '2013-07-18', true );
+
+	// Add Open Sans 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() . '/fonts/genericons.css', array(), '2.09' );
+
+	// 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' );
+
+/**
+ * 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' );
+
+	// 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 )
+		$title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) );
+
+	return $title;
+}
+add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 );
+
+/**
+ * Registers two widget areas.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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' ) ) :
+/**
+ * Displays navigation to next/previous set of posts when applicable.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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' ) ) :
+/**
+ * Displays navigation to next/previous post when applicable.
+*
+* @since Twenty Thirteen 1.0
+*
+* @return void
+*/
+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' ) ) :
+/**
+ * Prints 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
+ *
+ * @return void
+ */
+function twentythirteen_entry_meta() {
+	if ( is_sticky() && is_home() && ! is_paged() )
+		echo '<span class="featured-post">' . __( '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' ) ) :
+/**
+ * Prints 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 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' ) ) :
+/**
+ * Prints the attached image with a link to the next attached image.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+function twentythirteen_the_attached_image() {
+	$post                = get_post();
+	$attachment_size     = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) );
+	$next_attachment_url = wp_get_attachment_url();
+
+	/**
+	 * 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( array_shift( $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;
+
+/**
+ * Returns the URL from the post.
+ *
+ * @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() );
+}
+
+/**
+ * Extends 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' );
+
+/**
+ * Adjusts content_width value for video post formats and attachment templates.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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.
+ * @return void
+ */
+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' );
+
+/**
+ * Binds JavaScript handlers to make 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' ), '20130226', true );
+}
+add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' );
diff --git a/wp-content/themes/twentythirteen/header.php b/wp-content/themes/twentythirteen/header.php
new file mode 100644
index 000000000..52fce701e
--- /dev/null
+++ b/wp-content/themes/twentythirteen/header.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * The Header 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">
+					<h3 class="menu-toggle"><?php _e( 'Menu', 'twentythirteen' ); ?></h3>
+					<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' ) ); ?>
+					<?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
new file mode 100644
index 000000000..4ef31c4bc
--- /dev/null
+++ b/wp-content/themes/twentythirteen/image.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * The template for displaying image attachments.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/images/dotted-line-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..07f6c93f29ab47b71b6d203a3e5a37ab49642256
GIT binary patch
literal 86
zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4WIbIRLnOkJ6A}_4*be>w
m|3Cden<R(U0ae2#A`A>-d$vA(-})7#kipZ{&t;ucLK6T_6&QX1

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..059d4ec05171be7a9bab5140ee59814561aea8fc
GIT binary patch
literal 85
zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4WISCQLnOkJ6A}_Ous!_$
n|G#m<VICII2a_a%xEPx5Y_XK;+&hhdfq}u()z4*}Q$iB}G#VFh

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light.png b/wp-content/themes/twentythirteen/images/dotted-line-light.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7f82cdbfd223a587bdc7bc5e724dd798a7aa911
GIT binary patch
literal 80
zcmeAS@N?(olHy`uVBq!ia0y~yU|<1Z4mJh`hLs=Z)iE$Ih<my?hH%IxCnO|n`1k+6
iJu}Z?$s^nh47=y*@^>Zib}=w8FnGH9xvX<aXaWGT1r#{|

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/dotted-line.png b/wp-content/themes/twentythirteen/images/dotted-line.png
new file mode 100644
index 0000000000000000000000000000000000000000..115b583f7f60b76e922f531750470a1a2aabf7d8
GIT binary patch
literal 80
zcmeAS@N?(olHy`uVBq!ia0y~yU|<1Z4mJh`hLs=Z)iE$Ih<my?hH%IxCnO|9eEa{u
ho=u|7xI>(Q;aaS2l}hW$#S9D#44$rjF6*2UngFr_6s-UN

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f9344c51903ec223d8c3e9f56ee4557c67beca7
GIT binary patch
literal 8001
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
MboFyt=akR{0Qj4ELI3~&

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/circle.png b/wp-content/themes/twentythirteen/images/headers/circle.png
new file mode 100644
index 0000000000000000000000000000000000000000..0bd940197e5eabc37574f7cf311227c31aa58b24
GIT binary patch
literal 33848
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
AF8}}l

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png
new file mode 100644
index 0000000000000000000000000000000000000000..82777a04cb88ca0439a5ade06381c163fcaa9dad
GIT binary patch
literal 1847
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
Q7#J8lUHx3vIVCg!0R60^5dZ)H

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/diamond.png b/wp-content/themes/twentythirteen/images/headers/diamond.png
new file mode 100644
index 0000000000000000000000000000000000000000..a14de6146938dd619f0dbdd8657ab2427f134b55
GIT binary patch
literal 14266
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

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png
new file mode 100644
index 0000000000000000000000000000000000000000..693bb7618bbe65c106536ab376168a09f6efdd39
GIT binary patch
literal 4039
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
D&#>xa

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/headers/star.png b/wp-content/themes/twentythirteen/images/headers/star.png
new file mode 100644
index 0000000000000000000000000000000000000000..24ca62686d5ebdbfd7bae2c0cc8e3afe4f7e2074
GIT binary patch
literal 22620
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
Xh0Dt}l^8QHFfe$!`njxgN@xNAuqy$@

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/search-icon-2x.png b/wp-content/themes/twentythirteen/images/search-icon-2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..02b63b8027efb48e1edd1344fa8b81690df30950
GIT binary patch
literal 829
zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4rT@hhJ-tuTNxM_-Uj%DxQd7f{r~@8L_}yL
zpm)wQZ!s`1_>~0t1v4-(GPAO=bMpuY3JHsd$}1=;s~8v=o0?f!+t}Lq`1(c1Bvw>b
zO_(@u!NNt0mu%U(W9P2D`}Q9=c<9K{Q<pAZxqAJ^&AYGPy!-t1$FDzsz4A{;F)%Q0
z^mK6ysfas!EkAsbg9PgbLoJ>&v4>5958Ka_%4$`Lih85f*;(_y|MKBEo4XGiGaoO%
zJH5|d;@He?mEx2>_V&Q2wx>JRB}@9YE>Ku7JMM%1z3zETd2bcOc28nhl6Sx}T!^t$
zrsd{Y>#f?6*H(Sstgm%UOMb<B#v}4#i!R<jrYGV(m0hLkZ|F>eo&TKQD;6@$-9J}-
z;}f-oFA@V5-nUoQSRN80uz_*Sr<Td5_cJUjTyVJkx6#98Ti7plFbW^&;4orH*!18~
z^H=>22gW*n|3nAjb%x4^&Lr+Q+2GC~Yxsh}Kq7&0MW>@^!%+tI1~oP*hIYpJ3@L^a
z7<cd#Fs4jC*v2UTGB|2+`#N>|FHE|xoj+~*CV7F$K)hM9!Hjvzm9-E5ADW%7!Q?Da
zqok9;@FD-lf+x%uk{f(l*)_!F7F-wpCul1!b1_$Nx`X~o7Nb4043C;Rv+8Y1)%bHU
zaU$=66H1M%F8v9gTIzewEmV>-<k((@^x2&(%ik?8{1B!x(ShNTMa{xD^WP`@l{{FV
z>MK*eIqu8tlK%!wj51*g6SM?8ggH7`nN~9SYsSj_z5bBBIX{2;gdfrs$$uFb7#KWV
L{an^LB{Ts51|tld

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/images/search-icon.png b/wp-content/themes/twentythirteen/images/search-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..11d8dc8e508ef47cca63ace49a5a4c377d5f3b6b
GIT binary patch
literal 422
zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4rT@hhU+WOo?>8Ns0i>0aTO5}`v3pGh=>rK
z(V+=zHZU+SsFwu!1v4-(@(V~v$}1QcT3Oq8dDqo9G|regcg4yLyZ0Qpd++{(Cof;U
z{`2=lkeMF?1H(2?7srr_TcsBxg_;ZmTrct|EI6|$V}=r2?eF^wRZR>d3hMn+Uro5t
zxolF5mg?sj7HsR8!Yj>OWJ_lLtgEV9)Lr-BTZYptuB?)Eja<FXbAlH~DIAlSq<O_d
zf@?}j=%R!P9=RThk|KO&KLU98e`HIX37g3)8P)dZ|A+3K>$a`8-sfk{zvm)TT)Ucq
za^r@!8_v^TmUl?aXlcBY`sV%a8L3|bovUqyd=DiYKeRz}i{fXljd$&87+%*2PSXC&
ST*tt`z~JfX=d#Wzp$P!)KZd3N

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/inc/back-compat.php b/wp-content/themes/twentythirteen/inc/back-compat.php
new file mode 100644
index 000000000..8638adfa4
--- /dev/null
+++ b/wp-content/themes/twentythirteen/inc/back-compat.php
@@ -0,0 +1,68 @@
+<?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 backwards 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
+ *
+ * @return void
+ */
+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' );
+
+/**
+ * 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
+ *
+ * @return void
+ */
+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 );
+}
+
+/**
+ * Prevents the Customizer from being loaded on WordPress versions prior to 3.6.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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' );
+
+/**
+ * Prevents the Theme Preview from being loaded on WordPress versions prior to 3.4.
+ *
+ * @since Twenty Thirteen 1.0
+ *
+ * @return void
+ */
+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' );
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/inc/custom-header.php b/wp-content/themes/twentythirteen/inc/custom-header.php
new file mode 100644
index 000000000..a835061f7
--- /dev/null
+++ b/wp-content/themes/twentythirteen/inc/custom-header.php
@@ -0,0 +1,215 @@
+<?php
+/**
+ * Implements a custom header for Twenty Thirteen.
+ * See http://codex.wordpress.org/Custom_Headers
+ *
+ * @package WordPress
+ * @subpackage Twenty_Thirteen
+ * @since Twenty Thirteen 1.0
+ */
+
+/**
+ * Sets 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' );
+
+/**
+ * Loads our special font CSS files.
+ *
+ * @since Twenty Thirteen 1.0
+ */
+function twentythirteen_custom_header_fonts() {
+	// Add Open Sans and Bitter fonts.
+	wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );
+
+	// Add Genericons font.
+	wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons.css', array(), '2.09' );
+}
+add_action( 'admin_print_styles-appearance_page_custom-header', 'twentythirteen_custom_header_fonts' );
+
+/**
+ * Styles 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;
+		}
+	<?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
+}
+
+/**
+ * Styles 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
+}
+
+/**
+ * Outputs 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() {
+	?>
+	<div id="headimg" style="background: url(<?php header_image(); ?>) no-repeat scroll top; background-size: 1600px auto;">
+		<?php $style = ' style="color:#' . get_header_textcolor() . ';"'; ?>
+		<div class="home-link">
+			<h1 class="displaying-header-text"><a id="name"<?php echo $style; ?> onclick="return false;" href="#"><?php bloginfo( 'name' ); ?></a></h1>
+			<h2 id="desc" class="displaying-header-text"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></h2>
+		</div>
+	</div>
+<?php }
diff --git a/wp-content/themes/twentythirteen/index.php b/wp-content/themes/twentythirteen/index.php
new file mode 100644
index 000000000..67faeafb2
--- /dev/null
+++ b/wp-content/themes/twentythirteen/index.php
@@ -0,0 +1,38 @@
+<?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.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/js/functions.js b/wp-content/themes/twentythirteen/js/functions.js
new file mode 100644
index 000000000..777a5cf46
--- /dev/null
+++ b/wp-content/themes/twentythirteen/js/functions.js
@@ -0,0 +1,81 @@
+/**
+ * Functionality specific to Twenty Thirteen.
+ *
+ * Provides helper functions to enhance the theme experience.
+ */
+
+( function( $ ) {
+	var body    = $( 'body' ),
+	    _window = $( window );
+
+	/**
+	 * 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() {
+		var nav = $( '#site-navigation' ), button, menu;
+		if ( ! nav )
+			return;
+
+		button = nav.find( '.menu-toggle' );
+		if ( ! button )
+			return;
+
+		// Hide button if menu is missing or empty.
+		menu = nav.find( '.nav-menu' );
+		if ( ! menu || ! menu.children().length ) {
+			button.hide();
+			return;
+		}
+
+		$( '.menu-toggle' ).on( 'click.twentythirteen', function() {
+			nav.toggleClass( 'toggled-on' );
+		} );
+	} )();
+
+	/**
+	 * 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
new file mode 100644
index 000000000..a7889168f
--- /dev/null
+++ b/wp-content/themes/twentythirteen/js/html5.js
@@ -0,0 +1,7 @@
+/*! HTML5 Shiv v3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
+/* Source: https://github.com/aFarkas/html5shiv */
+(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,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</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|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|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 figcaption figure footer header hgroup mark meter nav output progress section summary time video",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
new file mode 100644
index 000000000..640db0fa2
--- /dev/null
+++ b/wp-content/themes/twentythirteen/js/theme-customizer.js
@@ -0,0 +1,40 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme 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' == _wpCustomizeSettings.values.header_image )
+					$( '.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
new file mode 100644
index 000000000..24bb3029a
--- /dev/null
+++ b/wp-content/themes/twentythirteen/languages/twentythirteen.pot
@@ -0,0 +1,333 @@
+# Copyright (C) 2013 the WordPress team
+# This file is distributed under the GNU General Public License v2 or later.
+msgid ""
+msgstr ""
+"Project-Id-Version: Twenty Thirteen 1.0\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tags/twentythirteen\n"
+"POT-Creation-Date: 2013-08-01 18:14:18+00:00\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2013-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:16
+msgid "About %s"
+msgstr ""
+
+#: author-bio.php:20
+msgid "View all posts by %s <span class=\"meta-nav\">&rarr;</span>"
+msgstr ""
+
+#: author.php:30
+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 ""
+
+#: content-aside.php:13 content-audio.php:24 content-gallery.php:24
+#: content-image.php:23 content-link.php:24 content-quote.php:13
+#: content-status.php:13 content-video.php:23 content.php:39
+msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
+msgstr ""
+
+#: content-aside.php:14 content-audio.php:25 content-chat.php:24
+#: content-gallery.php:25 content-image.php:24 content-link.php:25
+#: content-quote.php:14 content-status.php:14 content-video.php:24
+#: content.php:40 image.php:70 page.php:35
+msgid "Pages:"
+msgstr ""
+
+#: content-aside.php:20 content-aside.php:28 content-audio.php:31
+#: content-chat.php:29 content-gallery.php:39 content-image.php:35
+#: content-link.php:19 content-quote.php:25 content-status.php:19
+#: content-video.php:35 content.php:29 image.php:44 page.php:39
+msgid "Edit"
+msgstr ""
+
+#: content-gallery.php:36 content-image.php:32 content-quote.php:22
+#: content-video.php:32 content.php:47
+msgid "Leave a comment"
+msgstr ""
+
+#: content-gallery.php:36 content-image.php:32 content-quote.php:22
+#: content-video.php:32 content.php:47
+msgid "One comment so far"
+msgstr ""
+
+#: content-gallery.php:36 content-image.php:32 content-quote.php:22
+#: content-video.php:32 content.php:47
+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.0)  #-#-#-#-#
+#. Author URI of the plugin/theme
+#: footer.php:20
+msgid "http://wordpress.org/"
+msgstr ""
+
+#: footer.php:20
+msgid "Semantic Personal Publishing Platform"
+msgstr ""
+
+#: footer.php:20
+msgid "Proudly powered by %s"
+msgstr ""
+
+#: functions.php:93
+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:124
+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:130
+msgctxt "Bitter font: on or off"
+msgid "on"
+msgstr ""
+
+#: functions.php:212
+msgid "Page %s"
+msgstr ""
+
+#: functions.php:227
+msgid "Main Widget Area"
+msgstr ""
+
+#: functions.php:229
+msgid "Appears in the footer section of the site."
+msgstr ""
+
+#: functions.php:237
+msgid "Secondary Widget Area"
+msgstr ""
+
+#: functions.php:239
+msgid "Appears on posts and pages in the sidebar."
+msgstr ""
+
+#: functions.php:264
+msgid "Posts navigation"
+msgstr ""
+
+#: functions.php:268
+msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
+msgstr ""
+
+#: functions.php:272
+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:324
+msgid "Sticky"
+msgstr ""
+
+#. Translators: used between list items, there is a space after the comma.
+#: functions.php:330 functions.php:336
+msgid ", "
+msgstr ""
+
+#: functions.php:345
+msgid "View all posts by %s"
+msgstr ""
+
+#: functions.php:365
+msgctxt "1: post format name. 2: date"
+msgid "%1$s on %2$s"
+msgstr ""
+
+#: functions.php:371
+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:38 inc/back-compat.php:50 inc/back-compat.php:65
+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:48
+msgctxt "header image description"
+msgid "Circle"
+msgstr ""
+
+#: inc/custom-header.php:53
+msgctxt "header image description"
+msgid "Diamond"
+msgstr ""
+
+#: inc/custom-header.php:58
+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 "http://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
new file mode 100644
index 000000000..06e38e754
--- /dev/null
+++ b/wp-content/themes/twentythirteen/page.php
@@ -0,0 +1,50 @@
+<?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/rtl.css b/wp-content/themes/twentythirteen/rtl.css
new file mode 100644
index 000000000..542863025
--- /dev/null
+++ b/wp-content/themes/twentythirteen/rtl.css
@@ -0,0 +1,766 @@
+/*
+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 http://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
new file mode 100644
index 0000000000000000000000000000000000000000..199c8d53687fd1127b72528090c0006be2ba43bf
GIT binary patch
literal 54593
zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1U_8XZ#K6F?M^M3-f#E8Lr;B4qMckXaxBFGn
zYma?={&R2W)w{-<jjg|}>)+^`pva;v!xXM)A)xu6LEQ0_>$=JR70fv_CknZCDtHL+
zsaZJQNI0Y@puqAZA(@%`#*L2H+q>^wu1G6Cx4HP$yH~5K>ivyg3x3Ml^M>!%x_5WK
zxUc`U?DwjuRqO9<zqjhqty7Za$Ite*Z8X$5cjGYs!&dPLOC%VY*ecJ2uev9s65}pc
z`9yEe`?qss!sC)|oS5m`QvFY&{T>^`#sgayFn$s4|8Yz*qNz?<P+6|lX|*&5<6jXT
z?b}Z`evWoa5@3<|@U2>1U8>Xj$5)ZHhI9Mwb8`x01w8q++5T$v{eGL{1{>Gx{CB8-
z-v2l42Ut|%QdPw6-oF2Bp84OO?R!=+Jals^yZw2`&Q_Pso9F8etgq$t_U2$-rSRfu
z*;M^iw~p~W+LcryJMR(m_tz)xu94B>5p|8ox}5(k|F7WjcP=`N$JdJ+&Huaad>#L^
zMQol2?sVDzvS6I>V!4CN{QGn6zhLE-m~iUxYyMtYOOrUxa8-@md!kY8jPCz8PXBFv
z|5g3Z@E$e}=fhHKr_TTX{bT*l1xu56-0{%)<eXo5{crup#GTHEc#jqoXK%X_x%qre
zi~Mi(bNYM>nwS#0Qm@X_-tJeulT|=rojL2{OS|fSde(f;oXUEsVc{W${=%2fKi+7z
z`)wakIdxBK+j^P)&G(skw@wILuD3zscdR4RU8Qw-;%-R=J=?b2)L!&hN<d?`_?{ar
z9shzSJv!p4b6!bBLXBmwj)-h^Z^K57Hl4=B0++5x9o{(q=KZ=0a`iI3ZJTlgL{r|Z
z6^~9|RU@gA`9fN?QSqR^|D%b=3+p6%S&j%O&NLCME_}BC(P#e5&pJ+zw_2xnT6Ncb
zd(Cp7K}z7oRIBYL1TLgE?zo{@J=Npz1BsiOkHXe-?Kvj0>dl!`)umeuSn|r=JTY9#
z=-m22JEWkcA?6V8$-HMzFXY!X%Kx;Ej=1)NC8Jb5V9NB=>TNmmCqLiPAT=SwY{!<D
z@ik8V^8<tu+7=!<u;gj9{_*Gkucq%~?yp|f7P98i%lrj58kVkbH_*#ZD0Mz~q5kz<
zrXvS-mQCV$6g5HZedyduPk~>(Dt-TjHZpW1Iz2M&<zP4%$kE=isqK^Q?=SYBxaX@k
zN%c1Ru<X5~v(4}LJ*~_&=7+tScYc_g{$cKXt!W%>iia;S2&Bt*AD0jMZR7NKlXtWD
zybH%XThy|Wm+ch&<~8BP=1aBO{ceXBOx!j#T<_tn37$IFlK1IE$gW<Tem=2SQp~`H
zC2B_ykNX*(!wDizrqMBTHuC@9YWvlBi<$samYUP5PpwJ6*X&uq%F}e_!if)OG;4lp
z=5C*;CSj&Bd0PJb)qVA0-0q2*85=^RmzVtGY~wMVWSthC;WB@shSvGh9zxA-n}UyM
zb^XpvKQldKtKy>dPEA{R=h=6wBxG=G`oi`4r}Ctwyt5n^3-C>e(%tt(=KsU|H&-Hi
z{Tn2X6lJW>n7`VJd&$JMgIQ)3d4lmZOx>$b2=U0bvF#0?`)k$we^NH5PFH-3{=~s{
zrOjn``_ivc=XSEa4wYj~`oJ+IFtp^hKWA%1slEr_!hQ~It$B8e%5CjawjA?hZaLlS
z;T0vkg&{-aP-9?r&-s57<o{Ji?_Cj=t+3m9?;X8u=PEXOa!c@KrNrF*r2m(}nEUWe
zCxgU{Bdzksh5KKesb6Ir|GmUOB7FOnyDJ~g@ve}3s?^5NsWDaW4SQx>UUfdJ!mm?I
z=jNqOWj-?D!`$M%s-54;3S0~&tsQP<WR^@QcC`K_VgFC?^*6TCK!a~#r@l$P(QD@u
zOx3*ITK`mY&aB{Mi)fE!!i6tyz7n7BaFLZc%SCybSwtwq#rmn-&dy0CiSskcUiRJ4
zbNSLciADU`)qNbsJnWikk0&oQWV8Gxagt9?$dc=!L%>?Y-xt6Cc-bGh)bWn8BSUEU
z!kqJr47|=7ykR@){~ouow4U?X>EuSs<*PnCP2Oi4|2lEXh6+JbMTLiM?p2}Bx+ndz
zR*t!U;8l~8#ImdVPv-n-xKp@OaMIbA)(Sj_G+Ne9`}@Su<_G7ADa%&ORH(c;bM>c6
zDaND-O+)Rw`wK;upO4R4m|SsT%ia|=QxzA-XzTwvmgB3d65_Tt*NEkcqYCHo3kn^7
zC#%NAeJPSv`gP>Qo-IE=8yuccz<;*$*uleHg6qwcB4?TA?{t=PS6maD&2!$i_57dB
zogR}MLkz;+PEXEn^<hZbp~-n8^P#`N?gpL17XscSK29}aVCYTT^<z@J4flrk?o(a1
zA4p?Y`Q`7B#CX`TAy84k;ElXs(msu;FQlyu>g7b*T6NAwZNIC${)3kCq~*!%Qrqv<
zHMbcY<n``V^S4W%|I5NFeAdFWMImoPHr!aEy2H_c^NjcZ{>9%K*$XnHLXRA{xW#h)
zDqru7-CIJW)1QjwSvq~0Jn^>dQ(MVE_R~TvLWdnZn2Z;nuD|^CqRqE!ldt7Yh|jf^
zQ22J1r<=Qj)nUT!`PLPg3^i-_INwk_!5H&Ay|r7oe6QSe>5me#x8IrPd&i0^aqlKJ
zvGgA&`#0SUT--T}^Hapu^rWrJo1FbKAB4S&w?D;ibKs+)%W;N@TGqE_-L96%?94wW
zbU-&>;aA%cH}TXp&o8Y!E#0Zwn99<5P-qIPH&bh^00(0M(~_ip37*|N4Uf0pTrHKR
z!pK}`%EI8iVO!rSrr;wn8{6*&zTsKFfa}xUGnWo9cnb!#9Mf)I$ap$I(<5Vh--Q3i
zGN&BhxVyh)4I`(Do@AiTvG;Y&rpJ=kTXQAGIxRZaX8R*BIw~-mr*v`1)VY%S+cP-x
zTp|xGEv@;zyy}0oM{`S~;<j^#xg&Oc*KP~ht!u-yB3|*%8;8Cq4v*%oMz2e29(;BZ
zKQ>#@u=~)}P6w6^zd0WYRa!sm_IzycVu#Q}A?5|~qTOsND)FLraZ;0H;!bf-*{NSr
z@+L80#kP>AAB5x<atSD8<lAxzq$O~9&or6Xqc}IESgJR3TV851*GZO1Vi^;h3*-Oq
zJD&As+wWPI+jnPcPgAKl+F|nbcD`W8tR5$iQwjX_v-I~Z`Pg~zO<(5u%8jnvI|@yW
z=FB?&`20)%dq<6u3|1^!`<B({ps2x;eWuwy7JqluZ3$r5wo4#OxF`7Rm!#d?EIc#(
zw+6*+y*ueaLombK>F;$Fnx{*jT6U7<x=R43z9WMp&juEc1uG&}yxLVRT6~nLqvu`V
zo)5)xbK1(B*@b)xMfv(a1cgdRwQafW<1G-C<Fm1{<8gV?AH6<VH!Du>1swei>!J>&
zJeqd0`reheT_3zS+@H+brp9;YyV%hzkwddq+}x6HpXG12a^ptE5P=m|#c^w{2ON}&
zI<Y+d(A&#ZzXiW(UFpAajrGU9aHF@e%C@HkEK2pC?%1cYrC7)*w&mr<oV2ywj^1UH
z=5T~7aEhujEMaEb_w1Y1<gSQy?|rxwV}zMG9af3#?uzZVt<+nuz<l(sd_Y=95@QQn
z(h)le4uv;6`(AYHyd|4^KJjU!fumXGT5E$!ef9UrulbfdZm9cfGEvd;hxLB@|6h`K
zq#RkD^=Y5^Hop7IBl?^ouCvV)pLZ~P-x4?OEw{8!tg5#Ab}fU^oKZ;e<MDZ$Z!atO
zz3`U#xqwvmx2XmPLnlmo@klbFjk!EX@Oq%gF4mqE-Q2-zQ*^lR2Dv3U#LPO8qvN}%
zK$5egL1E%PX?uxvJv?!1v~4}S3q)BIT#w#ao!c*4!RgAdKtp(|w4S8KfdJ7Lq6+JT
znHkv>j`F$he0tPM&#r&M#!7AeJ$;w+A04qhp~mPasuFW<b<wNd_h;0WB}HD$5pg<t
z@1Xhq%d><H-}lJvx?8V!@EMo=_XSf06&J)Y*~a(%6w-Z=wlLw0cJ22_QB{vCogvkp
z^O}!bow($h-=f`YQtOn<MOZUdbT{bSc+0-&#i0i~YBo(>);L`?Ks3ZjRN%YXhf_YQ
z%HpkRU8mehUVcja^f#ZIm6l@J9kvV!HzYkAlpS1F3UHldUEZ*VU8puOfhk)dvoWOH
zQctc|zs^qX_muhnW?l1Fn8qO~@j+|Vs%H<c``-P&J5Eeu;-oc|um9FBkO*uJ<d{06
z_Uq?4Ggnv7UZHTYyLVG{BhQYLDV%B3KR%un-{ci)o1_2cam6K$%&)GZZ(m>2WqP-w
zmOWkM-Ha?VCY9q4WO9~Pv}*j!V|uxOvF)#d<mu9tw|?_F^t*<xnL2m+>2GKJ{_jy>
zmR$G2UMe%Bg=<06ZZ7tV^=#gfvp8mUece&8rRrhv#~<l6-wdB>ZzxG`*uQJ`hYQwn
z6Q(cbJGRND;Jmc@yUNYsM>Se%m#3YcS9xh(h0ND@DHhS)sp)+R4tHv#X4ZWZI(K&Q
zHnB@rVuP>VjK7qzsw&EMVa48g++Hs3PghKD=+xQ!Ibm}VPfNp@Ln+#w4JxY^blGy=
z5ug0sri>v;oVDW3l)FFY{*2$(apU&o{o0Esy16W9U!?8Yu!2`u%{M9_{b2e&>H43V
z_CHsc`87J6aHxvBQ}lm#^yTfna)ygnmH&`^zx5fT$6|qRksdqtwba*3Y+#I$3W?mB
zzLHBN&ufY6i{JYL*0T%!Rd?MY?)m5zOR}-EkO%jRwT~ZVCjNJrupm|{F+D<ohsoi<
zI-_-~HSSv9&01Q*xwZIu#pPL<6T$;DkJ)nGF=vX);b73H)G=RuF6L_8&C{hy@4n^V
z?=g55owI($Db__{Y~B-19=gU<n%Vsiu=$rC^^a9VHTzE0`-R*0T8qv7|Ni?$e|f7v
zecvl1AGsaNtNwTFhUTvm>ThS?zjWjX!?w<C&y(_}iWL-}uC90={jq)j@kLJe|L9le
zGc7$Hc(3~Z{N<~5-!J`kvB%_=PUN<Udrlp@apNG1WPQ%Y$eP9j>?$o2S{$6hCOL$0
z?EJauPW5Ew#tEl=cbIcNOluT)qoR|x*|1`2YtHFOsoAqHW_&Au`)*a$yz?H$o6Jr}
zxf{JGzqk1EtCuU^tt>zHdw%`Z{jU<2B?)C)t=uiouu)^_yT~mHW+s=Xt*!pFFmLyQ
z%V}{6^Q!co^c}s>u-Jj!qC&JI{G&ks0|mZEq0C!@ejeX_F-J@I*$nF~R@w196A#`K
ze|UiDY18BbLS=s2<>fLXk`4A(a6bPkcK*G7%LB(6t#Hq2)0~Ru`(|Yb7kp}U(K!F{
z(A1KrMQ2$HLnptQxjIuvN`_&b-qVBGXAj(Zw$A<i|Ht!#l9UedtE>x+|266Q+FuvH
z&;K{$%+4zrGM67q7aX6yHRMRm;Yq#iHGe)>%u$R`k~yZhT;zmHp_p^=%<|r(JDWT8
zWt{xQn`H7os2c5g|3YJLqHg}}*#EO{UpG%*cI)fQmD6@D`2V$cFZ0}M>_;bd@Z`?_
zkpKV33+CIGp4MJme$TYx<0OmIYyI-CE@^)BYGIa(jd~5AUUUB8ttYo%-CA0vKZ#-L
z&Lv8oQY!Nm*$oO-?6Z8+yx=!K$B_iDDcvq&GV%(&O^*+1x9#GZtZQyG*}cuspF?EH
ztx%Oq1ze#5T948{MNRgZxWMIENT+rqgIdt3Y#}4vl7mNBj@BGb5n{M>Lvi-@(=WE4
zK7IXbe9_wzf8)1%GTK+H@QBgU-}6q4Q*Qb6VkeI!kItn3*I)XxCSPf>%EG7pA`=uB
zJT!bdg+qzU!I42kAe6zV+K2P?B&COMloPum7hVzj%Egevu{P#?6^nVi^TQt@1}r^3
zCa$7fp&APo9f*0pqD!m6!mL{DlKqb-wKEkoZz$Y~G<mzHo%6hl;vsSKE${B!d8K#T
zz3uaQyGiS8^-s!7teShLhjqHp=Q*E)TVg(&eX{zrYnPgL*p^05<93@1F$-IFUJPVl
zkzkVj{OlfAkb=Vm#+jG?DPC>avEzFxgI$@c$Wm^0t+hGJrd6I!s|yKGRSDDPWIwvn
z$;ms$nc3l-SoiV`i&PjB4#rKH;jFgSP-K^>mY_&F(<6z7E8BLu|3CjA$oiMUN}-95
z*m>q}6^s9V>eM9D<+agUi=9?@HopI<b#49iLx0p=k8W=ZefnY6X;tU=nH=`N3#`*F
z{XJRC&>-{Se%OWAyWZNzOluGjN#}3duyEP^Ss$gPiyTk>d1GXq9sSrv{^rT)eMvu^
zb~Gd(-Y_$BN&erx>)%LaM{eHl%qQa1ktLw3_D%Tx?uX3zwfAz%bE_+EG_DZ&yt%GP
zfRXF2_rY^hKP#`kX_95V^0&>|*B;p(%lDTH1Z6PXkeHWsa=+cI+&eG7UAeRV{vF#J
zseKQu{TF;;lFf;*Y4Dk->95`Bb7YxQ%$#U>&GWmaJbJY7RkL;4Ej<ad<&mtSQY;Ij
zI=I`IIn;Z*gw0jucmy0pI5cxOmvgZ4&6ygI6gKsn%8~3K)j5VIjz}%J<Y>!$^2Ie<
z&vf|{44;@&*iTPYeSJ@3xvgG_A4liJYlXklIoBMS5pJ<$@uR*y{Zfo^rFSw9dAROX
zN<89nV9h^94XIO2RtImgF&bX1zdh~W+XB9$*3-pw6xl@>G&^5ymp?j*@z6)ZyC;sP
z-*U-FKPaW8CdSYhBtD1VGe>80$G4Jcb|1Da6rFmq{LlH$8v^rsuRL7l?QI?xwDW)G
zmuah4na4-wSu?PRcAU6TWm2Zy;<S!I@O^o;=Mn$f)BW{1D*U@vX#ctzUMl#ophJ>J
z!%xQQh`!ZA%?lztlV2(XD_KQ-J-%SYk#Cod&gFl*X6vVdUC+2f(_CjSaEe{p!4WWr
zhfC0$`MJx+`<IOs7AE>|wgk6XzK{)4YEqgVDC%o<?!_OO<};VJW*?K=Z#!RZ<5Rsp
z?;i&bEbsjs_wCuGN6%Zg)cSGw8+#rqzvnnx{<_mo9-gkW-JL&YKG#j)<l3`DJu2An
z{;Y4(QU`^SmR;v{VO@6n_}vW}!dz`L7I4in7GAp`PE)D3L&sU9m%%&g0rMqUmOzu{
zci#(K)tFN9B+hFF1-@B&AcZgD_C=0UGxq9>C~Rpux0OXLqA69SjX{KGhGrm#!YWV2
zL*MRhsbx7I?dIsRb?z<|vo;BqS=may&D>5EQrQur&-qK&RsXy2q2jgo_ctM~0zV&W
zi>-~kS$o}i@$2nA5{DlJ`ShPW=-Qujx^wD+BTH6gJYB_Z^Y&EZi_iNv6)X}HD~Sx<
za!Yb&+M>%Uyh83)ZnDp}UlCF2>+NddTpPnX*>sLeOh=%X#Ws;>ffMXgmrE~Saw4SR
ziUW_@lO~@+4nt+d4kyOV-xugk*m=O)XY;nHjXo2YSlyU9I8JUUzAR~c)9=wG<Ea@R
zy84d9ZQN4)c-^fK>xjc8vqB2=+tSLztR+>RJX&Vj!0FT8;=YiBr8$_%P^tO|ub9R9
z?hditnSNKF%YR(BX+ix<(be+*uQdmpFT6QrSI6S_`PmwJ>v{AdYaY+`uaEdLM?feu
zYPtSj>y4qao;wD9eJi-4>BmePhX9j3VLEnOw4!c{|E-_>;@&Lw;Qb5jcPPXKJTbRj
zP`_U}m-X+hlo^Eut9Aydy<%M-k?<>dZb`)=&HK3?(~oAezuj?o`ts&*i_qm)IBv;b
zJpId3!^`Ju!+#m>?^m5{8#ukWYJ&CGuPZQK!Swy?i7D=4TjZuVtd~z&za!WG$2p%9
zEn!n%UUQ62DDA54vCiEQ*&X|N*H%s4^{URDm8(`hDEjn&&%yYa+oIM5^~4pvy;LnH
zH+Ri)rB{0_^n16}Uwq0PuKThe&d}ZZ^V_svZPM5O9jjhf`{7<}`JL_B_p3kNjxT+<
zc762c@BcSE^xgl{HGAz7(;qqe_p3Wu8us_6{V(#*zCI=WnCWxzytrsSBkgehywmDZ
z_t=XZ)uq;+W{=MPb!_vQ`<r)1oc3C|ILdp{t1qwDzrMdg`S<bnCa+fNy)nw)xi4$R
zv8;IvOid3u4ey_O*vwaQ%ZVpYL^*GF!R_Xow*95o(qyEix(@GJ_vMk$EvC7XA1Wm}
zbC;hHDN8-39qPMd)1>vUxeO07@0K;&t`VNaKI_vrR@s}kxc1#XQtzj}yEr<fveN(e
zr%7Axh<p~gt(3!F$aLaiR7BSqQSV)5{ibDp%UR5PmOHX~hIAWFpRA!VcY|QdY|fp`
z1xM0F7(LyVwFEbA3OW-Y(<gM;d<Cy=sqi_8M~5e!4)3?!x7g5-+2m^avMVPGfBxS6
z;!@@MU!6OO13hLxZ~5?LQQ@KQcU=4PuP!k;&!ls6$&Q(er?_x*-Rrpa)$Mfmo-HQ|
z4tBmX?>@`W@yBDotmk8Gt268KPF=h1d?-Lc*r1>^J+)A9|KEat``bT<e0jz9dzPc|
zq({83qgf2z<{mk@>)wy4e_IzV{JQnSJ@?P=&r~e;=YRaS&__NlwBq%IT$aDB?zg{R
zTXN!rNOzK&O1<%$ceB3DJd^e9y4vFX5tAdF^uFA4-(<b~aD|?#GsC~!Gk5Kt1zmi-
z>rMWej{1^XZkInF^8P+5*!)&6>eAm!tHuBSI{xn8IpyT1O`=y7W|?i?|M$WF;*VW<
z&utk(4Sn?Yq<q-ZdR1C4zQt|c)4KiVQuP*0i!DsNud5%oFs18O!-;?EnSM;Zz3l(j
zd&kas9`{-G<3#<d{5zMv{|hfq_ha~T>VEJ2tvf^gEI4N6{=6Lh^40VoZdv!g&U~@a
zc9zSO%D7v1Yl<e>e|!4t!<OVlK~BP73!W#x{KlEiE4c6)U;dxXceyOq*MEO^uvC0H
zgUvSU`uEF^y{}sHw4+0qf$Pu5b&vA(GxydSc(eK>JosKN@;|9O@m8{Y*NK3Ksdpcq
z54$o=<;U@jFVwe%tYTZ0!BJOvqNYx$eyg=)>1Nyiop)RJ?@RdA=9kM|b1&_BTk0m;
z9Io~wSxrqd!}!ChPk)@YF-=+c@DUgFwM|SdmYdlG-)hXdG3Uk-)0HWT^G%!1voK3V
z8KgS+H+Bgtcg|a>s<e2YXYNHOeZg}aT3OvoL$AmGeDHifkATUKV=U@3HA@9=zPHbQ
zajSRX>g!+Qzjjqd7!~?)bk=lP@AEkFIhXzD&yp`Mn5}a!J}>_$zD|dsfa}G=Y_>}c
z;rt)gHnXm;IIp~GrKrwCrr2rM%4W=q_`c-J*_8>MyL58>pI&VHcC@B;dhH6qqE?Nz
zu5YvQgbi&kUNg6!l9%auQ;4;9=A5iEA)kNUbH6Nl^irwqjwM<1bAE?xIh4_{@Abni
zVoP!~5=CaP{8%3NJ)UjxZ1EXB1=mAvgp^-x5msWzypYz=)%SeY`;TTOM<S*<bpM((
zdtKxlmuI)U+1iia-kO%z*|YHU`S;SV*8fnr;Vm$w`{MEXr&UQ@O!KQ{nx-%1UiJS&
zwRzVn={kpJHA@n+(msjD&k1r>ObZoJDsr^{_Vnd-yZto}7pa`ze6@L3>h?_Q2=3_x
zDV|e#P9JqPx##jKz%yf&s{EffQ-r4^nfWxwrY(B+{@#s_)7usw;98Ni=wY)%^R9*y
zNym58zjk+%zcn+In`gb@Va+5rt&01Tm!`6Qzof_b@cVXg`z?zvBnlWmo3yfnWBzP|
z*kzyg>t*n`JY1yYCfjl0@Q>NHCzmuU9%1qB;CL)oZx>XX=-!(?mE#dhUX0F-Z<}=G
zG}^f;jyCl<m22KIy?oDf>ef#VC5PSxEZ~|Ida$`H%zEKMmycT~Y+qRM?KtNmsSXKs
zURNK_nkmawlS*?hY!TbVk>2*8=KQCnr?0KM`Rgrj;6eu$Pw7|1!S52If7D$%^x%`%
z|3jkdYqx7L9R1E+v+dSFiGKSY-~Oza1A7)SoJbdz>dR~vU0%Rd`)uQ7ABG3|VaH$Z
zT5PgHJT`8LfBZBZ-AjLsHyQI99u`=(r><5@NAse6TwqLGiu$b1f8S0$aTa%DsVUiA
zy+&2kJK)c)t|!v^8nqdrNewerN`6`2E_*;ec5cn9Nl9k{Tmu9i#(Hzj-@WKZ-@+rB
z5*%ICX-poxFa7m<?{8mKl6dk-S4?5%)jjp8pH6Fc=f{c6k6(6soz}XwvqG+P>&R;S
z|7X3vZ_Urk-(!9^nQ|M6-`ctV-K56#wNIvHU;DCrr_7s4C)rnMI9TumesxmJKPbCp
z?JRNG7aetPpWQqE@6n>`v9V|8L^=0{nDH*3(%U+7ZGF}08}@&ftQOPI$k?Xo;`9Hr
z@7Dcw-W@z4id{iI?{{we<-Pt*nd9x9`#v1H#C~tXgKMi-$AyR-ol*Df*t_`MJD*R_
ze`mY?e$$6e>n#4a9@bqtXY9An+Fx|?io9O_Q5NSDqVsPBZ*1vZ`~K(7RgK{>ag*wI
zX1t0I_g|~)t@py@$DxoCe`fu+)AD1iN`u2QxFs^!V#22N&%gg?b?8=C!#RtNR4h5U
zn6HiRjyCHP!AqR;--*QEFaPBrXn5vy_33ck_fdOST#DZ2@<C|NiWRRmR%^1JkYCZn
z<<e%wE!OndDb&eMZj%|a&+%<0p|*ZfK?>VEbVB;$=C*ud+ax8D&h`HArq%kdV>exR
zF3FIz_~6f587HzB>hG(#&ivA3{>SOg-jKbAUp|{7(Bx2F*IUeg$i_+N(u7`l?@ZCT
z)v|w?)^|vle~o6;xwvgxUan@xeoNV+TC4Kn=UW_7Ev8QNVf^A=6Dz*@Lcy}_y+4(L
zwO_nuUwnU$!Ok6*_msPSniO}NZ<c}Fs&>!i(>541s&Y)|-1mOZ6J>Gt*T2rbU(*#X
zrYX+)Aao(igXhz4|E~(H$-J7fXypsjxfj{>z5cy$`aLhzEIdT_-i8ZZN}K+?_%^dz
zUQ%1+%(aKNYWw?+3a);2)_#kP-woEI2VcbX-BX-&EmY=3=4}D#U#H7?YCiDVzSh(I
zd+Y4nSXE&cRuelj$G5o`cnrF&?%Ex^-QP6B;EE)Vv*^mp@p0|{zx}$Fy-rIsxr=A-
zn@gA2>(~5$tN)IJNq&pS=im7+|9zPK``-)Sy{p+4UtIa&=kM9AGooki`E=@({GF)1
ziyG#~&e^-?_;zNYV~2fb@%`vOd1wbaV`y{#npu(8yQQl>G%ht&6Idv?VV|I+({|VC
zqJb%0+})pMK0o{CM$?~O?nBn>(JRl`t$koHZ`$FN6W&d^V6$X>lR{G5oyc7|h0jAz
zTV2yxqw}iETafXQDobGK!Ha?Q9pWJulg=EyA#?o@=Tw1Bg@uPoVwANd9V|Ru0((s7
z2_IUVofsB=KS<yl$Euu1-1&Q!Md)^Z-`wvaGi&lbOU_W6@0^**N44)?t9`j^!q$RY
zmg+6XF8$E6`O%=p`Am@2$&9VkV(F*XE$d!Cy4S(rV^O(7Q|s5)lL?&D0us79-mU-H
zDH9!K^-x74Ec{HDk>-brU^nB9Ju@<cgYWHC{Cl$fQhDx)Z6>N|MlP5AzN>owox>sd
zV3U^fiiZIyvOYg1EZo=@{{HG}AqR(bT5-~Hy$cvNHBA3Ldnqg5g0NTnOaAMre7i0E
zy~k%;$i^M}KRw#oz3I&3mIZ6v63#5_N;)I1W0JXS?Y1dN>qHiCt@x$jBA6iZp>e?i
z=TdRK4O$EW4-c_&^qzEmdQH5p^yB^g)f=V+toWU_ibcS&F-q!|?#ivL9Ji0%{V=7U
z=jgO;y(#Z^o!$HR<EQgBVK;9)X-RCD^<m2Kwy+#d7lW4n8&`jtJX_0t>&j0b?_Qme
zCi{PeF-t}3i<}3knTwna)0pNYXndQtz(R{f?L=I;#HB>hcIMyd?{amImaW)a@iF1+
zs?@vTdT)0nEVvWDb)#zF*TnT2atHai6c}V5own`{ERkt)lL|ViX41fUytU2DPcCqZ
zaKte~2Ntj8f}4zYd`w%pyZmeK^^JiOKa^}dw&j`BW37jlxxBHf%}VZ`7Q6pNSkc>%
ze-8KQ43Uq{-#>ntBBnjVe99GbXEWE7La&o9;Zt8e>iYR?i+F-_tls+x$D<TA^4|1r
z+ji(!+Z(U1D?dj^Z9aHTy2|I^1dS-hxT``(TXrx18?G)=y|Il)Q8;$S4W`MD6pAbp
zO7}n7aYEFa`_HC-FOsb{o%nS9o&2}2U$Xi6x---s{yNPzoj2stAD1rs6>O!v0<twi
zl?tpY{hgCzTp5_YREW1fb!1g5nmk?arOKl_tF<0_2n1?}i?=vzT>4u+|NhSn3nZFP
zOo(a<E{W{r{JMZeVu9d?lXpMf*{-a1_xj0D<*E~}f*NOAFSQ7p!Qik*p{FRs<x24h
zC+^S+28Q=*HSdRZY>76Omx`Q`xBF#SMw%Y~A_igMDIpH-75yC-VmDc&sa!G5c0Abf
z*j4nx<gMwen$9uJ5M(*e=h%8FQ}?Uz#hI%-uWYS(>1to|_L%<Nl?h3+WYtP@<L@V*
zu1yhknAfazBWA<1SD)km+l4wjog;9L*+uX0-usL<D@~gnP8?%oeKBQwtjU*0a=)*7
z=5zL&d^!C%@z`o6{kNw4$G$k&GW_@za^sp9gQ&CqD>FyFNj))Nt}=goDtm0D6caO>
zKtO&^i{^`q@9Ii8+JzdT+0XpH=jyblGX3pp{x|#TFT3PecKkcRJzYvI^w38qmg$GK
z@(Vf%gfwqkzSVS*C1dIw4VN|h=9y*1ys&!omtVd3*Cy>#=k3?Okh_^2bl#`UW$LaR
zjgM>27k4#!)E5?}F(@SpTz<3V_13vN*?Af{)cJ)Q_MQyd-#t0cDAb`qB2jONfaK-y
zx>r+Kre5*3{d!r~{Bqe@n;!xU2J$KitE8mYiRA>yaKCz`m~UL5l;jrBxJtRJz(`=l
zZkOX<tp$osWoeW=;t?z|-|)+6dfM!Lb^V=5O7ncTv%P<vyzP>Apx}h(VLn^F|G6r@
z_iwr8x>e^5<mU)GWgGsn*p_$EV&?su2g3@CU23$xZ<?pfQMaP|^fZ@`4tMi&i(NFN
zb}gH{nyr2(v*Bg?ci-X?8$wm<;#!NYN`!3fnBg)}Q*YIW-+Db0xfv!jN$~LA`mjp<
z!Fhx3+18s_)-z0C-MeaX{DsVYW>44h@Be<Xy8KP1M!~;FeXsSSXFO{XZoINJ)Mlfl
z$6S$HH<m8*OGv7|6sYcIwybdKjPLVR99)_OIDA-KRTthUdS>#y>R!`}>-X=7|Ep}b
znK+xnW;(AgtLWz~8|z#bUOk$@x}vF(Bfx2MBd>2s#FnB&B?reWhBOJQLQ9dxEz2!d
z71|U``Lma)E=**lz|5c=w$-fqmriYtvYwswJIZ>A9!n^bv7$z)TFeGF$Mg3l=bd`q
z_wva-{!)h$Bi$9IS3;X)p5J$_WHxKmowqU~`9tEzTiz~zp5@yWG>93Q>^QbV_j^%H
z1>eeq^OfRj>z=pg?u?IV`}r^?!fox+-q$;CG6_GMIKkI}xo>`lh@0}IoqSh?cDDqt
zxc&c>YJBil@o5$sYIE&ovN2wpa`x1uxN8TwlhhL2wW^CayRvuZ_`AeC3<;lB8F<KV
z>wz!(%bvwc7Amk_`0(Rg%8$41pVgzJ1eKOeQaz;O$|m^MR>8Z$sc{Bp+BYdCorz3s
z8}`adtdKb6a(0fgj?}JF1EGcvxtnHltxwKfvpegfga1W#%T>C{(OX(?oSRy7<a?j@
z#6-7yEG--|#TPH#340o3v@%i2Ni$68g&lwHRX0Y5q(Hxn`oHZ?OVlRSvOkS*EH3U9
zTolo(_*M7p>)+bp3<--~Zu2p#*?4BvEY?b|KhwTNiEokky!`#D`hV}NbYG~s-hF(#
z^v|`)N9*N}9TWWWlgDM+hT9k4ztONWX?!U8W<}y(5j(3a`<=J@u52ilvR1orVhV@P
zl`~%^2HMzl&J>GCUFW~$Ovj5IULPD|CVboQL#>Z7l%-Leaf?)PVfe#Ity7=tzuu9Q
z`Fz#Cpm^0To>qmquGv3th6a3^9Ol@-Xt{F_&&mM9Wqm>}{ok*7q=(p^6IpezeQEgG
zy&qh|yULXqe=Deo-j|rXW@W;huRp@}e*e>b{m&P9x4GR%Qh)qATJzxV{+`Y3N=?hp
z*R~x~Pk6hh&Gq(Sm*Zj04xS4em=qUn(EeP%SGlHY`+C+0r&Twm9%`B{I)B|gWryWQ
zpNZYI6z1|_*}{C!E+y`cw&=8czlRs6srYa)eDOa0nETWmZI&0k879~DeSd6Pxa<LU
z^22wTfB(q+@0|N@fByOW`;WPf?b&mF&HB^J-T&M*W@HJ}lG?STc~x7UH1~W-UfqLs
z&ISpYD-QT*7}y3(&i84ZwD9iEKI>n1GJc$v&5ND?a)SzkNHgoN?Y2g5r!YA5F67^n
z`}R|7=yTEY48l+KYW`*W*L;bWtE&m`o!MbvbFU<Kf5nEVlH?Q8aW8K7FP*<{_r}a4
zk<N}6W4prn*#du^VLqyF#}&wM<czay+J?iqQojEl{yStYAI>V0(kuDu$w9vTb>S~B
ze?NZz=CYRB>$5v@$^*G3u3}M%ZPWbvY36R}xChO4mha}@d0YQ|zIwM|?CxDAvD540
z@9U_}vD*8$@!H+pA6o<et-g3@KJWCr`F*b?_00BpJ&cZAxVD2cy7tS2?tQP%m~VQr
zIrHV}$VBgs_1>2{3jNRBKh;&L>RjOTbb@$M&WvOK=jz!?u2E!JI%9*zN85{qE$p2N
zTwik)l=Wm^FPUDYDm0;CMnKn&-6FhYN0?;`{Z(J-9c}CX<-Jb8T=AUoLlK8V+j@kL
zvFofzIxC>r$FH=4-S8&UIT@{6TPp%LM$NggEx7qi+QpaE9`};^5|j_!>{^w5on3!_
z-dF#c8zJH^_N;oa^U$7Sua4;bd+=NHY$DGycGdaszP+8e_;^YPr+@>eV`wLf!_^DN
z%PyR+G51!wB_0*HVBYD^tG-Ex7oR+!ov5GM{9oeuYq^qX3%O4J_`dbxRM`zn<Zt%P
zzx_n3ZBCNsq4=u0OY$3MZ=Jn@{m&2Qn{OXiUNm5Q8RHVr80Woz+oBKiQq%61-?~5J
zi>zU?{#Kv5?}rZUp6<4K|IIm{cKKIDJ1QRvJ}scXQcCTPp`!Wy`&)|RKP_VT_ixiD
zX|Y*u7i#Tqt<O32zot6OaLTiXm!{fo|9?{ZaYtVg$K#Iq5-a1s2hX3oVyWy>2?oZs
zXRP)8Yv1>tR&%N@I()9+aeMi-;I(RN8Z@M4-utJwQsvj-|A$qk@iaHg3<>AIBx`@Y
z=JNe1`~PeR^LF|2<>&t&H@}^g*SFgcYwcxHEx!ER!}a%^@@wlBPh?%U#>6u;H2>e_
ziTO6SR*6}Z&a%Aflecr-WBGfwGphcs^zZxo+4gHwD$}I}Su;2oR;}4SC2GBHs^CNI
z+~3oCvzCcWwpwa%{j*qv?9TXCYx2+hIK1^8(@Is=3EHI_Yqq5Snjh8r|FTA@6zc+q
zvma+yU%DTErzdHOk^~b&;ERo{>b;Dr-1Ae}y+d6UDjEtUSW?ph1D7to;q@`t=sByu
zT<VMzMnS&`I>$r3U$%-*5SB4trJ(y=*xh3B42xM+k50DlFG;_3B3H&%cM?nRJLAHS
zZ`N3^udF`V9l!Tc>HAjARp$-o&*473V(XtHY3r_U4LDS@@RgI9tAYFPmPRLL4^LJW
zB{qo$rnzFLwPO+v$wa1{({3sd*!kkAY=xux+Y<_1r?vj<F)9jWjl0rpn(D_o^M!YH
zra{q4p#u$t3;de>W21iD;QM^jHqRtDFzHa!jJR9Ue_uEi7fzk+_*=<tea@tv=`S{f
zYz;`rY+Nl@_AdFl5RZg|^^31}|43_d&A&0Td(r7juBrbvF8r~qE|2}L{LIR`4S%1k
zi)p;mK0SW(md#S;QSVmRuAKOAs<Z6ft4E~n$=_5Dux$I~BYNzt&f7&g0+(atf-E))
zNk`pux0){ba_xrzafUCU89$kB?RPJUZxt_fY&^&pwXq>-@r>46e6EYR1Qy&Z>Cisf
zQTP4Yz4%{Kc+UUuYTR}D&#J9Y<@Yai=GgbP?&Z&AyK~=5UF#G{ZE&&n)a(8%&Gq)F
z;2fpUJxgBvu6V`$_LT6wXDm!gFDkFa$7k5uPc&-eXm%62bwBf#=b{#&mrkpX?)*G8
z;z(<6wE)Lbj=8KQqJh2v8xkBCYtsT#oH!noJek09_TdD(<einQtbq?Qv{ocO6IrFe
z5X8V}U|~2TbHQX0br#3gO>AAZ4Uf(U7G2+4b5nHvN}FF#cdM1Z-B{>zL_uxp1sU~M
z&v%rBJvFGE=H^-Qum9hlL(=zj?B+0v+C1mj8t`EMzv6$F#J7eV`?El16X*3?ZYlE}
znVCa4n5+&>(Q@1yw63c;Q6bUl&m$i}5w0UGEdmY<Jel5Ue;pf7I*4+y9#CNFQPq>0
z^-1FVR@p5H7sP}8UHsCx15%hQbDmuiTFP|PQDg=O*8v8>%j<lk_*|X2g{SD4?$JtH
z8C6rI^5;qUZMQ%j*Z&{g^{elFdUuAiuZt=29sgVYMKg+e?yT-jJgNRUL6m)BgusMf
z&a4U>PuO&ynt0Axq+LLIlMYu9Yx$ZM-!8$cx2&ulcV4)jC|>gEiOaUH8*j~v&HWgp
z7jXHa&$^WxBxkPb+u6q<SJ3rWg@th$^DHinQ$2cZswrHIEFZd<6%~|NWTF}`F|;wX
zYOp9comrvsLTkb1hN7M$4GgR<g)AaW1wm$k=6vp+rs{Jtj#jp|RGqlxW3jbh;qN0h
zlARt&KTES$2DNDTafDtivY#oDF15|=)0@uS@9%H?XV`EfieVK~QuJGOY2kA=tE6uA
zo=X*v`EV?L#k_jo6Hx(2Yl{6iIzx;89p?Wq`Sx>7qg4zOu5a(k7x?&ax9ItQ-Zftq
z>`;{H3qO<?ap`Y4pI7_#1zikQKMWlVyp9POH*#`ut%~E%`Nq*C@`dAhvlIWn6KP6}
zO&JU#At^3v6m0GtS^YjgKihlO@9i;LA3T<?s#IIDs=|y%e%hR;C(gh56m8!>!B{%&
z=)n#lk@orght7Ce9I8CrbXZ_+^sR+_tw%#%DZg2LoW(4|?2mB&Rkv+d_cm|z*<wF)
z(Gd}~=)B-y$#!Q3W}Eaitn6PE9|k<}crJS3@VO2rQ6G(nkmoKNMHC<H+<3~_noGu2
zP3}(qj<og7PM?K?9Ya@aak`aoNV9zs*Zd3bZa<l$_jYM`tQVs?&q|MwD@pouWq-17
zOZ)Uu-K_rezF$wytT7E?ln#z{ICg2KS<|r#kEHV=zkQl-@-*(`Z42c&!cJSos>^2Z
z*D~y6mOjI-vhJx=G(#1e_z4Sb0gWj<37kAZbL5g1RWCdIx3sitzw|lttxb%f5&6Ft
zo-?)od}&LCQ~m787fZa#YNON4CVCp!XE01(@!3WxO>G6=`wW|(FG_9+CBNi2DBNWA
z-rR2@GsoxtS225?-A*oA+^~+xic90BB_mtN^DP&eCcC=SG<^K1p2Hqm<hi_1N}$!V
zE619_b|U8?d8_&BBly(SZ*Giwr!4&V%>fs)eADtfzb~A7pZ9I2c_0&u(Z;pkgr(<j
z9<eUW{C>(*JFhPNx$E`rVlBD!uHw_`CnBWoHKqxt80fE<v}0G+0lO&+m`az-^Kj_d
z%*tjcut0L9b?swO&d2%gf6nLU{QZ^u_Uu{)h2Xz)Lyw-e$nU>?phih=zvZgr`=QsF
zjGyruY4PsZ*16+q3IE;A&oBN~|Ll`{#Jw+GOTayZktLl)Nun)P;6llb(8I@Uca*EY
zlRlO#eB-jytAh=S5o|V2R%>2~vaC>=vx6&ZLQa&(a%MIUTR(<YwP|g;3b^L^oY-1$
zO<>M;&%&qO>-Ij{YR)@ne~7BM{;SUyW(8fXobK@c*4Lo&`=9T9>7M@gkNdo!gA=x%
z-@rAG`?QAO`#Wt43TK309l6TE*05@m)!e@hiF0ZNBv?ZEMGr7NyAtKhH0RYipF{ye
z7K`;6b%~LGwjJGe@svT_;mYm;8;yw9%2q!m92x|kiK<Ct_Pl#=R$6Uy*#<%T)gp!E
ziapC)jCn3!*4r>GaaZr#%N{zX40nCAI$G2dao}d2N^=*-ti}Q+4TYaACoXSKX5g|+
zdXvhxRGCALgUNu;Re|j|Z|j2Q(2{V0FHhK2u5J%q?ZTGMt|jEMin%#EZev2$@pG}S
z<t6WLyM1-J<FzTfGwP;U?uv1ai!(4Oxx1PzzM}hWjKrpI!TNIw&v7cMBwY7P3OmEU
z#BTBhH3qE<F^mF_b=oBaGWa&FYU?QI3Q!RKbM4fR^l2_L7wjoFeB|JBb^(JySg?ld
zbn!KBFP%K=vgXW%hRT*m*NV&K?&ZA8b8fixq`OYB>YB3T1H;3d1_q@Kj11~CauOGn
zUT8@Q&n#bhOI(t<<HW~21D99Ft~MHoM_oxbN$6^R=F0ELaDh?EGhmkJQQ_+QrYv#y
z+$XjQ&(UGwEYN(!wZI}<;639Po!DD@Q!buacXzk^O`~r|{KD0Pbv7p|9m{lR5}&^L
z;kne+VsW*>|EKD2o!hN){@g65&(B*Xa71!fyB$pXm*xAzDuiQ^#YCk=EU8Q%zC2<H
zm04OaMe%O^#-@Tr0vs%X{4y!LXYWjRU8sIbeR}zZh0DF=O`4b#)O@a<<ThOSV&jSh
zSK7X>ROm=cR{Y$Wc(SOrVzK=F<{d9)a36owpX5DvNwtVrx^#&Hm*&?D>mIWN&ZQN5
zcF!uA-hGuxTsh5biBR7kZnuEYQY}kQEk%#M$S)FG=FeOE{TsKI?1Da)ZMgw1DbHqI
zNI%~#rlbGb@qlKd<D=+~Qwno(S>7|2=*hi`GTM@pl~wcl+)K|aAD<mzbA67OsXd!~
zzA5X&BU$6FyWG3xmp^UVs{b-#=QQrQ57$gSP@E{4yv6L;{_oOPGR~e4suC^zs{1IN
z;{fN%1Z#!xF3IY@!ev{x3Vn7^aX-^7m7%Q=$`oMK;rTr~(PdRbxYf7lZXrR2MkW#F
zV;}B)W39fud`8IpL@5iUP}Tm!6L+5AVS3<_J#V)XtApc~%^LZ?66IA{xovMP<~re3
z8=)?z{Os>H$E@2A)1M`NyDpJw_Hy^@&sDtFntWUWuW!7S*5<SQ&@wf{b9Eul;~F|O
zwk?}ekZ$-+Z<g0VF`Z@!u0X+$T06aj83P;^a(z^ollFc!L-X4;?kdSMPCw{4A?GTn
z`F+=->2Y<MthTNEi<Z{D)(}b8K5|CJMDm1Hyv5d^jW6BbujaR(Xuj+S_YH$+1L4n`
zd6-_txr8*axwAy;O#3BPI<LI&yK8v)nms13WI|L6B|{3f6`m8+GCb=OoV{<GMChdp
zlLFMO4ju_`*^wT#@A87Tmazd#R#(3`sJXXrLbuNEn2>`4%rjSncXgC)|Eu11Hh^(u
zQtbYnJ08q(GF+*8>t37GW*xq`iQ2A90t5~kt;|}cVZ@lh9vX0{BEjg5;}_*xrBgds
zOtyKHvP9I*(5ahy&Z>Po&c_6DEK<xk!P>C>$=a@9)fbQ7?hsmd-$HHc5vFsdOvMv5
z4+zY3e=V^h;_+Yc<pr-BbSDdJZ254Y`S$kdzvF6C<E_PQgheuwORjM@eK2Xd+;14N
zzP(*;LYcG~6N9Mx@wh-2hpS4Wvon}`Hp|b_u5nysccR35*{nM2z?_{?56&r-A6u7U
zqZz^fA&aHu^7<zBZR-^noj!ylGx2nsPT_L-R*)LR6l-8Go6p*HgBORUPtRrvQBJ25
z+r)S2MSSY|t`lcI+5deWUw-DB8&{-m-jb3&nLT;kU6JXXEjLrnGUjW)og5^5(@9aU
zT&zlL3fuHhvGuET_AR)u{m7JEp^A3)t5<W*6LvC4uIl;}Gx?Ft8rcxeN&Zf<8izP1
zYRB$Bprg6tcG{!)(OQ}B_P@&fyCo;7E|6bo>iV9SQ$F$9UU5v4jDEFa&+UKH83pB!
z72TZnF<_0drjqjfJBo8%e=lR5qQxtkqQff9=V)fC(zRIo^t=1VMB4ISsBv#~iJrA(
zL9@Bv@87eZee&DA>H*KJ+38O{t*WiPAM$DnYx(<yYgfhwl{^<$V6-mI$((IEb;FHE
zi*Hx@UfsX-d~Qx+aMm=DLqA<Rjz7=3=pdx0acX|<`h7e4*R6hLULwNn_<n}oyN`bk
zGfUhwi`$u|xxoE&$2RrSB4OF6?;Z<H_>~uZt%~^Hkdhlwy&(6~@i?9ip2B*Wd1uZS
z1+S=@Va=1IBRqLk+Rp54hDMxBRzfk`INBD@P<CK-nGw!$L;hG{g2~ib1`5Gy!74@#
zObY~->^|aMCBU+rk8$F8ldwaP{hfdNthel$Q61(!w|m#`X<uW$1$9hb^D_E!W$i7~
zWi^|hU9R%DEoBpOQlc*@SmSn3ddSP3Rd)k--WFMvA}r9!FLkF_jicC)BQuRl$zrWW
zi0CVUqL02zk5v*9yt{vK^PE_6xjO6FBtILYx8f=n9}6dWZIk%({F}@B2p684GrhH{
zzPGGf^`SO+U+QAfzwhpUd*E6d5?ovxYJUB&nEc*kj`E(9s<zMOm$A)0k}vh8{_~Q!
z3(4-U{&{!AUzT<$am!q}!@vJzZ)|U@@usFZfp0Qy=`70cdwEL8?9796WreZsuakFM
z*JVe(o#**^>y|HV=YH+?op$fi{ZlvAX)Z1Idwj0!<+5|vj=Ndk+r6Xgct(-q)$KCJ
zBog*2tg5f>S+(?yHLuj;Yh4=hGmXB=thOqiZe%g@^qUusS~E;j{s^v+*=Eh?@UUcg
z@+{rTQ`~8qJ+>z%XLw9iKD2S+f_p}9&pl)~RLmjDqHnT%VjF{#fP~wgcvjI>0*sd>
z`;MM_Bv><fC+FcD>yBiWrQGaW1tts6vFh+>R{ogKy;)YRqViLjmcCoal}JYA8Ar-=
zdUlC5cXaR<f8lZnRb&#K`o8h`k{@%ud#}9?m=pFa#31;qR<6K96@{r6=Y*9pAJ`_g
zx8}mWtOMJPdbS)ge_awBsvhiPtSR8)KKJFu8&i`!JKbd0u2ed$+WfM=B(*dC+Vc5#
zS2DA@oya~U$|u|Tcjwd_TaM>?JPvj6y}_EA>AQ68%rz!gE^@59;#QZu+>D7Q(SL*O
z#&>1g^uOQFn0C+dO4Okp+b5P9FKhaH^yt^62Y&g47Digu2fEf5SN}ZTK1*Bo-Rksa
zvAb^DcD-26ekqqXCi3L``;A|X1CRcGJL%7#MP}MDQu|~+&5pWX>f5}cX9;(!U)QPM
zsqVGQ9`{d3QRx2J>ap3!Yz_b0Nc{>17LPiar_)3|lwKJc$(*oDfAhdjrGamq&>Dww
zK_3n)@dQo<+ia70->O|2XR|e~3axguZz(u+alt`B_l8G0?a8^lC(f;(C2G%f_PctO
z=%Ry<f6pl9e#Pna_2uQ+(cunr+j7cG=lz)c=i}ZN^BlUl8eaABoaS!ePM#;+eD!Wx
zF6;F#H@EY8=!Fz>ndM6#$`(&*EWCV3d}>Mhs@4-ePosJywRX>qjJ?)&c}h>m6dh5I
z@`~!%^>Gr{ub2Ao*|cT%&Ac8{RinDXrufK9zphn0^fuKqN|QP8XWG9vrhE6X=yaBP
z_Q+})J#x9oroZjR6}NmHWyvbxwbndGi{g6jN=jvU^=#+e>G-wYG^oPp@xi7Q&axsC
z^|acUoEg-2)NNGrk(#qjJ+*3e-@54+*-MJLw=Fk$Qt|45>G=+>u2YAlYZsS2ITgFA
zC}y*-$|>$u9SpX&Ljy#$0_N6+D6NnyVHDoQwYe;y<l153xxH!}EN2zEXB~Wh<(HfX
zgQ1_M3g3Cb6JjY}^48k&^?hhQY^fL$n!C-RL`u2rk!gwxQxfk=r$Ql#OHu0_cb@kU
zxHa|jA|~IZmxT6hS!8|dS46P<YVXFY6Z)2Hm=?M8q2hx(r>`G>x<7w$UsGetUEQ1a
z)D{<=pYrEp*whm~%dQ9-$0V<uc`L$Oe*M;M*S0!sXpxnyQu=va@b_A^(8mJbLi^4p
z_HJ6FsS%mu|8pDXug4FAa<;r<aBDx<XZGFw9{0BGi|#TeTh=B{`k%7nNZ9tPA6D8H
z9%Pd!U35F@<6qy3N2aQGFLcb?_2#qiw|Q!6t&?{y%{{{AQlPssce<@~%IoQekGORN
zAGNv7n{@ZnjQJAHy?vYVVhY}9tPm;G&#uUGaeIC$LvB^;B8`ZUNz6+E9a=VvG){9A
z=TTbQeoHv<Q($J_JSWQ(0Vh6<dC~?ZC%)-t6)-$xZz*=-2z|m=a%<0m3f{LjdseJ!
znc`O`@0uKE?!l9(9cPyy<{p>(WftQX)h~~`Q<RqfV~W1C;8yU4^)JQMxg0v<Y#U-;
zE<d+f|8<G?>2I@E`Bl~(Wjb=;Z1<$?Uzc%Do+&QsmUZ@7m(z}|tM?th+3L#rK;(I7
zL2`OsX}>@7`nM<QR|w5wwB^iunQ1-u@0;q+O=-3t`t@?|-kKZL9sYgWY`N(rr$m=-
z*wu8^^Y-W9>sw~ci`%{6>#=#?y11sP`pwLLdp7RE%F~Ol+<0$#L;CUmx7p_^;vzpW
z8?sGcz3Lp&VR3DbUhmlx-!f`9U)%0&wN~g~{kL~dj-Pw8@BEL?w$E$d?=|I1ne1D(
znSJ|JsT@wZB<XE)4osY@vxnnT`jhh<0xTzwIW#H!R^Zsf%ap%K=#7Ghl1ty6O*);g
zX6BsJxmNMo?|pUMeUn|fF#(}E*F3@k|11b&5kJcMzWKi8_c_duzC4vF&o|$0w|L#n
zcH3tGO(m&;=>-}l4lHI3TikE3m^GYDn(lY(a^VEy)4IRBmL8RyGezr^#<skgdCu=`
zw$%QSi4s^FYoR`6_r{-{@_$Ts9@cN4{+#2f)$;!z@-N^2WB)zPBJ$X_(|s`kOm8yS
z<_EfI6!ILJnxV5m*_>^~kt46vt_N*&S5!F7DaFlTwaCw;jFW4Y@0Mi`*0oPwc7IC(
z3u{B)3YTOl=9I>bFS-npnN>U%nZ~bjao@6RMuU#pGBLBZxJ8C-@6P}CYm9R;;M1vE
zWZKsGvMb8um~ch;vOgEiL(YikO}_Cf!ej#D9fl>6R;OR-X?|yr+4z_9E$4lu*^_=-
zzvbU2zf@Iq-iZmt?_wSp%n>n{Kl*mjt24fhLhOM}>*JrDRqZMi&=opA%R|&ZyhHNS
z{C(@<#EqXCIGWCXzWze2V1uO=^XBO%WDTA>nUqZXWd6U^ihIY0N7a&tw3gQYUw^s(
z-?h8<Ji`U1E6(%aWLRYK_5s@u9a#mbU3WX3m>3GLRWQZBTw?!kS=8s^vWnlQCx0>x
zevmXfWaZ{X@3?lpek;A@wz{;_$@hEBBcqqD`nGG!5ueU0m99eU>UXw0J^tE9VeV9x
zLypO5${($-N4yB&VP!g(#bN8X-+Xoa{#D1`JWC4r?lf!vqAEV=GY?M+8jG(?KR8D?
zkNxMZ`AfF{pJMck_4}tEEeDPr^fZ28D3@*3%@MWRqx1PWmz$ks$5|CRjlB;gE;Fdu
z@h&a9e|q>-Rfc2yNt@PHolK2R>GM}pomBkkY`=Q;_mwT~m)|I!m>{>?`Yt0&3g5X4
zYrjUB+sSEvyd%-f+<fGqWSVxGHjf0mP<jaW^b5PEUzuU6$!${=qBcA8Tj<%ntEOzU
zWMY5bRb>9IK7RebZM(z^AG&`3v@TG2o)?RPG=n<Bjn{4u7z6^nB)yWjrgs{gkKV$(
z{qGF54|_7%<nCVm_cctn>o~v7v6Z2`nQkoYQ(c-eY;<xCvi&u+`)Amr!S=pN%iOtj
z*9GUz7no<(?8uG?ouj8)QF_Mg$@4v8T72qflG<~+I-P{lrx?C4*9!{Y^6cakt&SJ>
zuT>c9#srst+z`sG!1cU))9kl9KJWdq`hU#Q4@%XNPRyLCe<D7!oMdBWbj+ICT{L^u
zqE(?>sgt{wIf|&bFM879<LPU^JkRx{-bqDC^`sPcjn6e2rwnfCZeLP7%VERe=HG|d
zJzU(Jdb#yhNCl-X?P5OVbo6%b`-jyV_>{FiztmbR`zq^tZXBaSqv5;e&X%l*2!HKZ
z-LosAn>mUFJYSyu`DyY#o<}n`GAc2s^c~Xqe&B-L^X6v8PW2+@_lvSmXPv#Qy7Woe
z@-_7n(&DfF5!GzAoY8Wq^|RZ~$5+4a_*MNy@8Kct*Qp$aUQeQ0VubiKRvlk;JhXg5
z+Od`9es?`rMVEFJd7jkpxcuj(xO|VG+AR^^vXgqHCbIq2hOeduno3^FT>f}cCX3s`
z6rtsQWzuKewy;h<^7HA%UANylf8kMK*dEZedeN$BS{&b0CJQg^-M!YnmEFLp$>&s#
z&kpl>dAxRR`)9Z@>VD){-+NUydtymtU+cUn^Jh7;>YQ1&dhw3CtE%{#A6&d~W#&;m
z!6{Cs&cFWg;Bwl{Ch-&df9`5(o^0gu=1$<|xnlQ2Y}=ceiwwn{cNzKGzpJ(1`}us_
zlZ78rIf6G86)l%rX}lu*S7qIVboR=$NxNKcdYMg1ZDCAwRQqAM=lY39LZ=qmG$zh7
z-E_c0$$a|mi)W^MjCpzf_&FcRG8?gNAuB9oFMhlG#$^J_qd!HG)g|@eto)M?vw1z<
z75J_zc9YCebM=1=VFy<<RY`4|JzFGLmCtK};{~DBKQ8ihTfcne6E%xH(f(=8-`A(_
z#eC&E^?X5-!vUwWKCYS!d{ZjE<s6wTIr|I$G}G&gP1`3=nKZjDvfBQ9{N*>=3^SH*
zwrDRpzS{oDEBOnt2V2FDofh!&V=~UXc}H{h<i!0|**mUm*}GH0bK2a3LpvB|G;e;Z
zaYLwqfhXZ+uC%Y`RlilguijzSONntezWz>U+uznrw$Wu-$JC}zu3mL7FKLt9<*gTr
z&m3!RKfZIl%mjrG5}#&BEtTY8xM}(G;0gQ2-yA0t>iSf!xv$|n@v?(Aj4fgECetsU
z0<Mdh*f0M3op1A{^=GEf|7Q5&%5-N|q2r00@2EN&UP=x>Z{y8$MA-MiYtQ`nC8q95
zsduKW^$)VXaL81%@#cKX=~HZPemea9%QO3>BIh<wSDf?hyurMRV)bj=Z?AQf?3WFl
z`#H(0^iXG$rI>WPN?CW9-h)ipg`QWV(w}~w|HLR*t^4h@qMH#J+pXtG$bQy{++scN
zO^fHFKc`Kk=dIDaDl=Iipu?eZh1JS;6*eF5-;#H_xqEYy_3bGOPRU$)oE+vR@Os1E
zx$E97(LQ}jH1XS_hMzY}a)svmh0ML_Sm3qc%Hc*91wpm$bl-@My<2{WUdoRRHaxyi
zN3i*KR$Jvu-B*$_dpf49`eD-&UKbzA&;I<%>Dj3&&!232deE)<@39wq`PuDvTkhI_
z%};H~nmJ2nuH)!CyDj#}y*Es3Z=)=`eLSQ>_FC@^Uw^*#tNZ8se^z`y=N5M?B+sS5
zV$<Rt`6(Z{gAcYu^UHfZTEfAot0(x~?PK^et4qS#J1%di+A@9i*}PL4AI@rAzn)~E
zmbstx(rWLQqIZf8)f^J#xx9A9dim2;MtpBJfBY%r(pvXlYp>LNAC(OA)4zVp<u5$K
zt$9_>_RFvH9-`0BofhCK+Vtd~g556TpAX%eUz;D}H}|@&l^!~E3WLF!GhUB=>^Z+t
z^I=o7y7vwxA-SjT=H8n+|4jYg<Dc*ExVqCUaCy<>yG05`lE*Vlqb7Mga$Rtw;&Li?
zs^5eKYIckMh;HoC7O3`mbdc|HQ{UZ#nvSj8HSF*9xX<>p>GY}kz35rNLl((LF7FR*
zo4NiamvQTc%5P1vJ=`zL#Y-x~)>>+=>h!$%<HBM0X%&W=a{Jsx&P|{0z1VW6?wY(U
z->=^~J2!|+Q!{;IcTQT`T$On)440B0-+9OF%F_~bjDdqennAh1uw%KmMWW08S+`d`
z%Rhc~YTDzg&mJc2=G0qNxhZ4&sgw@SM@I#P`{g`4g;fNex__`cHKDVKr<0{aQ{!MW
zqh=vXlKrX$OKU9r9&i0}i<Pz7;ELt{S3x`Xd2+uDIp-lWKXGL<OBxpopNEGHcbm(t
z&wGw+*V<bh*=rejs%XmD{@^WV;>6O-3+ptmf3g4iVB52Gg1YH<K$$n`Qc?cf&n$kw
zn3b2VS@ozh=lq$Vt1S~96j<1D*e^ahme<*q@wO?NgF%|7VS~>EmGmi|Q>S>Eu9{+W
z*+0CIkuT=Rq)*N7mR>z~bZOb^Q$PL{?Vgsf{_WupDQit8vOH={e7G&3O{qADCEy>M
zoues-gTn&_p(QU3<{mjV<KK@CMHd@aC$&7WQ(0AyMOk-izS-$lmA-Dze&uGr1x-vx
zJU4o7xN-1}QqGg~8_bPmu~)vEy)?fcVz}JVv+u^PiHlPInLZR>)uOWfaKzujdDYxe
z=hjSD6j}0Q+0%1X#pP=ydFHyTJK}go&&b%lp1r^)#_h<7)F%>_$6UI*Wtj}BHyxB{
zk)N$B?6o57-Ojt6+ty!k6+JbH??<hXqnbeW*H2Y@w_M4Im%SUU*?+0T>WH44y;iGA
zoW}Ap-|#=YHC<LVZX7Z<COD`lR+uc9F)LVkN@w)3)i2MgZxzrx^K|>|PbVWdORjMJ
z3OV=f<`<)4Q?uQiIRcNaNM3r!6{q<3U^GY5<wYt>U)=ZO6N?k?4>s%g?6vaKuhRYh
z+|$3eKAf)Tb8>0H`@rJruiY$aq5l2}PLj7%eKw1&*<7nFA*{TJmHF~Z0ng6A636d}
z7AZze4>XDPxwf`PXw@96Q?VhFm))NFX0=ko*{Z_TQ4v||_n7V5eaWur&aNpZcf}v!
zYEwMmz*JmwsPo6gEls;UPwY^5=pvY{T=Zy*rto&(uSZOSM2k}mr}pl+xWej{PKA}I
zPTIm{lR3UA<rpv>Svl#$mK_%kxPIxs7qEQM4@nl~vUh3;4`(eqXyE0PaBgLYagD=&
z<7xZ7Oy+3nJI_c-C|&&b&B2uFf(a~XQx<%!m^-&x?oQH=3m2FFY`HjV6<3Rpx~ETg
zjIfY|f5!2=?SW2T#RK0=v|94#%75LN4mnr4XJ0*ZH0|@(hw8?Mt&N2ARb~r6>ABy|
zA8@v=g~9nk{>_;Re)9v=^2AEFRiu98)K%HP&1bjV_UP0L55rxKuH=|j?eReUyJmsg
z`41a|%_}<p^smp{X1w-+aegAhsX4`cLfO|pf4XjI9oH66B=mP-{vCPyTRI2!ar$Uj
zH=R_@uRnHfIgk7f9#)Ojt0LyO&vy5EaPa>659_R$Y9x<lY+vg0YEtzRxs_rK-%l=F
z+J5!U;$Ks>@1C6cG3$6s#X<>IiB6Y^PH&EjB?u)P$rIhzUf-l8;IBUEhScRPA(G8U
zUJ7|l@jqUfcH~aap*N2d_HJyt{@8EzD*@3jFGDUIb5s@E{UgD4nuTjp)Irxv<#Fi?
zy|b6i3*`<qtar6o=rOa{Z{??F?s>mY$>#VS^1k}<x|4mi#m=p_wypi{y+BK6`|O;%
zAHE%zyR)=MWun$nzIdZ~?<cDCIX>!WQE6Df6T=o3_HJVO$-C-z-)1}an8cYDt}f4A
zyYIuX7tfBSrEIWR&SJ!LK;XixNg5Bz7H-i}n{!As*kj^Vu2oNbqEANpPMYi$WXQni
zSJ80ax$Vfo+<rz59f22L?2ku3di?fJ@2n{|T^l^}*BywuqsgA}Q1g6~z(J?>n_ULK
zCloATd9+1BNbyT5>;E66x?fG!J}}OEnC>}q=jkxTRD<VHr+VZJcN~9Yz2l)}m88>2
z&zvuhAMbwrcJ2xPDDJHuq8F>4PcvU%{X2NpK9!|icODi>Jlj>GeXMoK^X*0IDh@Ns
z1m5zk3O%cFev-9Q0)v6YF*$n?w$Leo@Ale%zZ$NVo!^spR>aFH{i$(_M0cUzVjJ^I
zZ!Es5B?bLb4f2f5KWCZpZ8C$Uw$VD#xiVXC#TBns-!-%E!u`Ong}n!5JUF+ht27E&
zJor+)qUZOKw_m?p)8_i7GWp)F58rjqET~O)oFB%T%aJ3tJESw|oBD=_U+UxooOu7#
zvZh~QJKs5F(f>%lnK!+|RL|{xB2oQVdD=dudGn_$`V_Iux0!Qi-+h)ha~*_E9Xav(
zef48?xjU-2GXH-|SsiS6JGo@Z_xm{)8kNcmCJAgYiO$=0(m3Svsn{tD(>sr^o>jMJ
zqQQp^pHGEt{c!EWv88DO358~ylMH>1tnjj~eE4~O;w;JKex8~q7#@_(zB1J@{t-jS
z9PS=waf4YgQ*Td+%{QCddv<4KTJuaN{Syf{(%Zy(ngbpC`~UI@s0dhX6+2e@`cS}U
z;~9I8itAnp{>J?_m`CxLThhwojW4D+YXo&q_qhMFNQ`IRa+O6nwX=3{pAzLeXSwvv
zS^ppte+xFXFH2+<i<RQq4Aj53|9kN*W3jxY=JLJ5FUpQfzu)|?TyCvb=BxvMmmc}F
zCVcx;|L1EY*kmi+mhdd%nNoFyJLu?-iQjI0SgGN=%6`W0Q`aiK_FkNOtHr{4lAy>%
z|1YbjuHEzFsIz>j2D4HN>r5sKJ9DA-WtkfpyxR&^Kb$LZ<+HSxz|_+|lIN#KWX#kq
z;jI=8ObW^1zV-FFgt*6YGbt{v!qw~7e{H$Z-S8u+_e%BpiMN(VJ4#D0IHyy_!RK<Q
z(La5OA8Wiq{qxdg+KbLlowVrdvE^rC!%Vpk?p*ffB6GjF$!9LkASb2+799tUnn^G$
zX=yRiY;?HcQuDL9xw%@>sd3W#wOi%y&waC3Ib)*M^v3J!tN*(9T${3~sJ(gfUL*gi
z19pAlmWst8UQEYtEM`pYST&{kjcVfIz3-mBwfTPTLv!mi51V)+PN|KtOM72kO5192
z=57G1qK8Fr#hiolPOzpL98Z4ezSeExCWVH8cj2FJi<a-c*qOGkM?893R2tKPLkt|p
z-U_el6|;KU>#Vw`^ZNFkJC+#uFSxPQ?bjJGS6;P*jcLmcrM;@G$v(!r%i-5K(`B0<
zNG@>c`TL?)uQvF3`Emo*Ngh*g3tF4YMoRPFh`4-g*S2dn@1<=xoZ)hLM`j^|$10<_
ze0TLW8_$bRD7<-ETW9@-9f#g1?X?W*T`1ypbA7kIv&PMD>f2{W^Ut1gGP3&a*Xutn
z-v4#6T5i3c`vK>TkuNfr9bTc>DO|{<o)!D6tJ70Z`Kjensm|k^TBjDw`uXzD`u(PR
zKEB%VzGeR9U+D+Rj=I%m?v0XL8s~BO$J@gK$x|!@*Y3Tg<=bA=$ia{iym#8J?9!0H
zXURK^5_c}mW;n9qsLjcBy@y*W&TI@)5hyI56CQQqO>#K5|K|-yrZ97|d)rRZu)C8S
z@kDr?g7*^powKIx+H!DaqT@S*n9Il9V}3}@_^i}9M{rB;_U&IYX17P%R6KdstTpZC
zy+xT<#CU`_I2AeH7w+7hqY}Po-ORbEl@m`-|NAR@-#4@H`wt$a?&_Y9!F@4lKhMLE
zNymHbcbG=q?uzlW>Eroy?RebZedX^wB6ps?C{e1VfBw}uE6rk#X9+zHGE;kR?_1<J
zmBD>WbddYio}jaOlF>gO-z;x?`ET~)-$r8R+Z@uAuI=jXf93r*%j`s_z_}UC1&UEB
zeflR~A3XA8%l)Ia0-E_te)e|xnVf$6Bk8c$g>5!dS&rSS){i(Y!}YtO_`s>ACiRP3
zT3;6~SDjzQn)@bm{q)^3w>sk-UWuI#{u^kndv@+hE+-Gulub#$w^?yVRmAG0@2wA2
zJ9L}*Zv6Lj{++v@ZO!F((_-5lm;O>VXxY1+&n_Iw;orLP@bT?W_N$#PHm>_Bl)wLM
z`2J_{Kc&Ru7SCGBlFR%rl|Rw%p4^eI=iQngu6r8L9a8=00{_1EXZc+;$}QA7y}S2q
zUUxb2{=`Y8JzUddk4K#9ub-VJ<Gc7y=&XzD>bTW+T;6SUYHvB4`MiUUhf^Bro+Z|%
z?%izUXL|YPdx1C4Qry@cZn!RWB$)Hl`Sc^d=e|4ar*rJwvu%Q0b7nlcxpoTIqk|gy
z`UYFiOT9cbUAN@X6;>g$yInhH83dny7j1l*>skKdsom*oni4!DIVWhXuU~S`W-jXo
z$+`b!?%jBHjJdvK`tH|X$~mTNDk=&MX5<q+?PXP!aq^sG7Q^8cOZxLaALQNl+de6?
zar?TDXY+qvuR9!mU+w&A-6>*!PD>n`^Cx5Vp8q#@+)NJMaA<9Ky#W7z{kIM~+s=G!
zjhwkS+}QGiB3GxuBZitMpM%+sA4%0vtqYu1AZe-g@^o=~#&@HaReL{O-g$0!Gk;q1
z1x>Yr&0gQFubaI(8Wy@N<;+9L4nvhb|1x`t)}UtxSVS3fmhZIgmb(7-&$)s;kE=<I
zd^>}*`cxn4+Q=AQp3FFJpW7?;x4Ba+3wP^J;Mja&VYuM43CkvLDY?V7EPrw8g42<U
zUDo}aq_REk_k{3zXRm~F9dk~c{M%@^_x=34k2bUO9ODcOU1!}elS#1mw98KBXFphe
zp4Ka4c<b}!@b}91%j14<|9=(z=iB=q(fdyy&317$X8fGw`8)i>zpCGt{g3DV{;_O9
ztCif{{@L|{<^O{W1K%}R2%7Ef(>o`8knv_mb5Ik{vjCopyY5cga(<1bOz!=&(-v>=
z{+D$6!>>E$zh=tJ(V3ZIw))HFo!jm1Pp!GKGhyYTj>TO`;wpV-o6a^_&SEjj4b9in
zzqj9J_ePJC8aL**^e~Ip{8`?|qI*xmL&hU>XH(qK*2_k7pBU(rUfg*9xcwsi^n>;;
z-3wGT3%9jQJo!gvl}+6DXTB=unyi9V<<@+>EB|AE&Gq_^^<Oqe&tjR|XT5dujqcpz
z5=Sym+}yh^J#D7O-w%hs%>Nhj|5^Mi`~TK<f8<s!yzKmPx>Aef&v%Qz{hghxkh<)I
z+s0qbKc4L0RUf>wTS(pOLHP8ui8GidtMDED(S691G0A?CkYQ(;@-4&NDK_W6e%%>=
zdrh#Jx|7=Mx@YN|^Xujv*jlCOxa`G_+5WtIef}4m_G@%1b4kxkQ3{>y-ThtvY@VKg
zjc$9=tiuPMS*YxZlX<q%$7D9kPpOxocbaBCdLlpnT++&JOQlW&_s4AKC;t-=Tj2Wj
zW^}&ElXVq6L2uX2mdpE4vpF_A<;RnC|8M{Av;XhCuiQ45clqDj)1Pz*F4sM|cU|@7
zTN2CO|I`0_bN);Ff7*W^?0>v(x9yZl#f%-r(`}E;z548M^kfxZV|F*W^*`VJPkDX#
zWihY1-;NpYYZts#)Rg@eoLFyWxXYi%QKlz%y4})#Ej}%SC6b}VLC*>ohPZxyckV2=
zu43O&9;5Qz#jEFfyM~rA3e0$Hu;cEcH$MMQs#Yw0bhpw;#>+_B_s^4sM=o;Y<!m(m
zD`(gyP<r^0*=FWVH|Nj1w^dKJ)XGHcXY`VrT<>SE*w)L&+2VTV(D#WJnr!SWLJl)_
z&bq(X%WuYFBNY`DKE)40FK=fEMy>ED)}CbPofD|99cpv#;-yHR@H+3Ek17kIzf>~)
z|5a<Z*R|!9o|k}3&)sFelF}b)ccdRrvr)6YSKDp>PyJ)`{|Wb8_pYdJd3a^z=k<GS
zl?_>^-4L9<&+}id-_#@dd^aSO3k8hC*b@}gb`&HWJHk@ZGHU@>s-m3uin8eKwSC78
zRz1^Ob}qHu!m-T8?u3L@l43HSyMfVPP9yiPey`0gZ0TvxmE84s+2yvQmrqK_?rllf
zd?PS+qyBU@E)@pJGid^IM40Pz_TD{HbN<;56+ZP3+EbrpcO6_ZE2eYv(T*uc<=zD3
zd+t2FdHS1wE_a^mt}uS2F=g>A*GH1ZK59!YEI5CL>)eC?=kLuu=2kebkfHwl%)4J%
zD;SfH7xElb+i@gt(WL;LS=ShssuW(;2<6`zI(1dZ3e~+!)PCOJukj4(Qj%^|42W5D
zOykB=zs`ewd!>8c3rk-sD=>(Yf8A_rV|_jPc$W6oRjS*P-iq1p=U;sD=3IZ{OY!e*
zKEL_wu#Q7;>F2oz#nLQ$G^Z8rIPl}W^qzqKPjx5G*<O^UTx5T0kI?bOciA8R-!kjp
z`q`3&bG&XAZ@oC<#E$ce4^=#5UmV>X(Xjcy>NM3~_nV&Y&#BPk7GE39_qbBYK<rZ7
zne=mQjXIwlD@}HVFfuSOu>Aecz`$@oBDiJ2ltrqnO#%!I42mwL7H#i%%(rjx_48Zl
zr|u@9E63r~!1<g*@sP#7`S~nfhjzRw(b78JVsP%F&5lI@PXE?EIk4kEakW#&?}(EE
zT}^_EV$PVG&J?iv9xB7gpsAsHYxnoH=J$Tw-R<uGrt<6d)YSKytC}t<H7c-3L|@)F
zJ805_x3hPt?!4@(q1t2I-o482RY8K2-TlB25$;nzkEGY8+pSoU`-a!Q=gO6<##fhG
z39~G3*|@VoghTP1XSws|8zCLshSd{3-^^v2e(SjD)*Ca=cy3wsYLzSN-0q-bQ_t5M
zm+unLIVNc`<A&Sh?SVnJLc(PYI#zLc?R-^I=%@L(ML_XLkC<7G&jy!|j0^&+qJn~~
z?Bq0Tx9s1Ma(`cK_4)a`OCBClJ^Ik0o1sY{LFwy){jU}!wj8(HB_#EMS4N-rm%8)(
zvinv4KNN%>eem*A#ubURc9qY)wyN;lHP)LlPwahxO4ZLtJEzTV{wMhVZfA6RxA(eO
zd9J!|FE1+BuljKzTez{eAoFJ9s%Lh&ML(MD=f8QAXIuE9AUnN2JUh4WV`2P#i{)<R
z(e2A#&b_<0)_m6KzP-<-Kh3xOx^MZ;c0<)^31Y#E|K`i-y!_nW_UpD+pUh{o*!|Y`
z%0J9ye!FktL&p10?k2?h|Ci_ATf5_r&@v@C+Y|-{ua7AT7jE47bt`*+P-tj(%jIh+
zZ*FdWedcDjM^wf`M*$|EnRceD*lWs9@t?aRJ2&S;*VUEEThsr@$D5t~5aK>vaF&G4
z*LC|>mVY~URc*@*woHRQx4(ytgu--;FP`+9w<==h+}O_#e@?F7DZ|Bb%PP;}>XLiY
z*rrda+P!`I(u>vEF{?j^T)rCla%HEQpeEm=wb@**$9CPi{lDtw<CW`d;|k3TYzw#i
zI5G8Bm`~E{h(~iwuf(1$S-<aDuEHwq{KLEa?N-&izOi!6ol<fC`71wG9BW?a|0-H2
z=-QgdscxOJ{ST!W7<vj-j1Ft~dU=`fFe|1=25!GC%jfQM`51Tnj0Odk85>U==slu)
zKX&Wd30j;Tt6N?knWCb3_3MdUEq|C4Lu`^iKb?7+d;hX!9Jk%R`@CYi_u<L2t^Dg>
zedJ}^DjED(bDc}p4JVg2rh|*#o>wplu3u}YTmARUjkV|Ybv7MZKH0~8(rMR?`;uIL
ziSOUS87#^5GJ1RNIvwkcWy$+4PkA}>rmO4uyqi;MAO2CjyX^apyu&kQJ-qm=Z?^Pj
zxzDBB`g}7oIrVgwUb$%$&Sbha!{pNCd!}|Pm+!heCrD;~n+`)m>dC3vcjs{TFOMtK
z36|A*>KPh(wX$-j&j;5R_gWNKE?wGLJ=a>Dz1TFjI<RP2c3MpQ-rD0`chu*;JM(1g
z%yVy!Uy83e_>yZSpZHV5p85?wuOH5t^YC5Rrau=KJ>UN-ZePyxzNT--vZLqeJ`vn?
zX>L$tq@|hV-n!s}{`K2_AGfd2)YiT|cg~+X=hpLVxf(Ce^Zfa9Rdu!8s+#1yJijWp
zW8U}mtNyH1-}kxq&`U%6MH*dGbECHz<(#aJ*`6rE=eEuE|6BRJn_fQ^=aP?{ef8pn
zFISB9_x;-Iw0`@(2Rqk`*HwPLaNvUYCv&@viGRPmZCudy=;J9K1_!T`mUs95p8EGU
zzl?3rtB)~%5AQR-|L?CgzwMO93CxYInJd_56y`(=3HJyp@dPV<)i@O4)w8shW9kXD
z7!T*|zQ)Ub&n;@@?pu=jf^FfMZMk|ZPGx6*cAeWdamtpSMRToVnqFPhNSqUtC1s@)
z!jUN1=5lG9j*rH%if_u{vdiSuLQ;Fq$*E7dv2CgQ*9f^20>@@9%=TH)65zBUb=J1t
z9S^20yg8}pVD4!HUrmd?tX(c2nHU0OSDn8e9~bxVd;ha%cDqVnU*7-Y>FeEfpAP5m
z{c|?Mq)V<sprxTOZx-A0Lne!gJf}TkV3<>U>Ztv3-tyA2xpuYh%=iD>nS0y&DWfKf
zqR5&5h3lCa8qUr*Byo9*q=+$tBL@QmgTrqYP+2ap>0%Ho0|P_C=_?l|ff#>!_gWoc
z6kuagIPqV;&0+59m3y}wRB#YF#qZ%!aOTBV>pC8WxPAeK9uiPr?ddbuu78%A-<{eQ
zG+(-5_TFFRwhDaA7XLbrW^C;~xyEm13HQ!oW>>G5)qd^kQYIcfR1w6}m148#o!IVu
zw{_3_Ybtj4ysmEFH+RzOYtOgtf4-gjFAqbF<yz6muqjuI4Ci}GmzKNtc|7(rc%Yu?
zc6{2}4_WiBZ@MCU^km7m^?CNmYu*d1OkBNH?u9f1!v;eqhCKJRu}?L$P8Nyo`y;M;
z$f>+V=EUZ+5h_b$dA@9!92udp<gw2(dl{1-NnM)K&#E7M{AIB(?$o8cFQN<#dv0vr
zKV#WB1D*%(7fxHNBI|MX)UFp3#JrqCmata0mGMs57N!w!C31R?!-WlNyHA@${NrEM
zu;NI7>pu_21q($>q!&))mORA9xr3)ojd`Kg>n6rqmPv(61MK{r9_`)!?Dt)}larsn
z+gow*_JIwG#j=bA*KWLyn{!kCXyV%k`V|vi&%gO6-@oJN?;`(~^UqoD{eL!e+H>)#
zQ{s%nmM_=noBOBk*vm?rJK+W2N+L`D{+V+)BCy6S{)T<la<1Ynrv%m=c<OrY`8O@+
z&R-K^v?fbi*DYJLe|g>c>(8f#hix^xvMN;T^xlhSdCx6hoTGL`tACBMNt&_iag90J
zArCV1cTJk25GZSz^=@bO);l`7npp<-zbT%YwRLUWL<P$g=Uzz8aM<_1ce?hcFRjy}
z?}~e!Pm#I&?Oy$cn>FXt&U#Gq4qbK1YBKvm_29?x>Gh72QW9O)etv3o$bjcRhhff<
zOCAhUO!$?aT=w`W|4ziV*v4C+kh#fn))$j!Vgg?MyZ*&qsh!EfAQRUTRK~y{WbA+Y
zczf&Z``?p~pF6X&YqJPLz%`et3*MZ6s%Uf2d)3WrY!22_!zbuGWIQPKqxj_8If0XQ
zGdx&q5SPHPaQBUUI}=kAqXZ7|aPXWvbM@|9`N+7)rBzwp#S9Kg!IK0PtNF96t@Bs}
zH$*R7y2vkCQJ}7K)sz<}{Qoo`a$7EAYX9O7Bh&Vc{54|#8JT}1{j_p&F7Ju{<Dj4t
z{Ah9W&fWhjOf<RDiz@<GY8Ek^xEAj$(e}`}BT;#7uMg9=BX93-@8)N?FEQ(QP8!pK
z73<o)P8ahr+ZGg5RhBL4XZTfmdOgS5<y@6L0UsY}tvc7cy!esK`U$lszR2<NtUa91
z_i&PU<(%`;uchUEZTDqaa2|N^ZuXK(^4X^{SneAAC|Iz3<?HF}`DtIux4UpVF*dk;
zwx5?=@wANdaFdc}uk^y7``LW2&7W|7w#?4hCFh(noMjKE=KS5UY^Cb=9Xt%{w*BAs
zu<B6ig-iRb{X=V){+e=Bd~bxa`XvuG?LP|-Kdw$RFOT$@e(oYeka6j<Ht*<{0vp{Q
zyS`W8IUKh++<c)gOCm$t{=cXF&CPBuiJmObu_R)9(27L?E-Q53I(}3MRB`3*;&8P2
z61M8W)-EsGjt=wgsHzR$0=9bgd{l2^TeU@0Gstzt7L6e7lk0ZhoGH8f%cHH=jm{q^
zul)I=Px(-q0nhQzEd`Te_Ls-MZq+vTQ}6e?Bd^AAv0_G8Xdt8Iu2kV3&W<h}W{!)w
zT>l(pcsP`I>3v{e(de_Yvb3_C&QiSe(Antgclh0y|E$ueR0&)#HQ|i+q(}TEWpkQ&
z8BSbzTy4dD^vRnqm%W>r`H#O_@~g^6pegVwvqH9Px(P!_sf^S5NYmt-E^_O?AKq<V
z`qlSkiTCYy8&a=j@Ul8HJP^LKsKJu`zfn%)(&cyd=wGb1DXh+5Xx{LxxboNDnO5`r
zj^3`g(In9(m}o4Kc6LQbW6As-7E|o@2$q?&xi;K6GC8E$BKX`+=ZV)`R(ujHZdkqS
zUwP@qAE}CBuk*ezO?-9X{rRIc|1MuC=Kee_mX$&J=8-}fo_=@tXVbM>-OJ<eOP|>n
zb)mF5OnB}8h+PX0*Z*5{rd-yhtg_-s%K63ukH+=dS<cSE7wo5=_nVex+CNdh{<U=}
zOJnfrnR?Uj$V^C|rgd`j-&oyKoA2C?jdJ>L*UYi7^e@Xc!%c$f8G@xYpObQGHhm8$
zR*U|&^N-Af6X*V3U;pj=)VNod${4pPwI%-Bm|w2w+gd1b;I7T@Pdj${E?;<A<kz7k
zvtKj|HF50zxM-Ik&m@Nz%*MMoR(CULF6!pUU)sG-foXBy=4DT}eKwW-X*km=JxXhy
zV3t*Su>0p7_cAiX72EE%oaaAxw)kKB=Xu4SKNMMfEM=Y{`}O_Fa{;SFtYXhe+fDG8
zu5|V3(iG-&qoq<kFZo}^Ph1n7@MX)bS?Oo*C2fn~mYQYlkx^eWKTJ(^wMlF1ZXd~C
zb6wldh0imT+LGn_sZsf9=~na7RZrI3srlsGI??ZDbj_E_!<*;mERI@xYRj{odze?B
zp0LN2RjsvaQLsr??5m}>OI1Xq<-}%u&6;&>c}D+S9qZ`IC}&L(k<#ZEU)O~{?mJ`R
zwR-as>1|@7)q9-P`{YBkCh1iEj^9@?EBoR^rWHHt^d(-{?XeAC87R$L^6y=3>_3OE
zD}^@In=YTtyKKwpt^SW@%P{N{WIFQfuw0+0%fXjV)c3iCeOmgS`z_OHgWlR^<^7Z7
z`g<2`+5Ya@XB%r9yNNR<i(B88@mrUxCiCi3+3%{~wRZZ)3!4snbb9{BY0KR5tz7eF
zzI-{auP^R@gNRIe<aCWLzvanAWqSL(<Yc8XGPfD?Tz<-}b6mJ-K68F<k8^>0vSI!F
z>qm>$oR*ZBcw(h~vh%lPZtSPqpD%u5X(MNT{&Uk0$4M&NPfXr9Z=a))*gURnw`RY2
zf6u?I?w+1l@0Mb|*=sdFWa{kmV`xxfiHMuCD=5%wTcm2LxV=~LM_*QkfEI>{Cl5-8
zug+R`b<Xa9tB>UR{<||UxN<OnG%zqY2r@A+EZ|^d0I6hP&~Rd4U=UGcU|{G1^**sH
zJAEX-QRj4L%(Uypx*M-G$Z)r&J+bd~5m$b=GhaH!@?(D7p?KcYpH4BI*m&%K)I&Fh
z1N`6Kyj9;=-Oc=iEyTf9w_Nr`#`49*rBcS1&+UEN?CEcnKeyfP>-!hk_h+SDGJcs_
zbxgAVk%HDK4vt5nE)G-pwC)9zu<YcJ-udoqTK<jMd--R4S#r|kY-X{M|L@ORCgq21
z`cxem`O~m*f0G;c8vXrq=F}TE2noJ!N)EH%wT+)?`6u;uW-ZwQFKd$r-G>g$=gPG<
zoy={v*^+VL0r|*Tf!bH18a}24z4-gH`ua5fAHf1YejRteZ&&+IN#OK9^AnCIL$reR
z=3I{Y9mVitcSp>f{F%odlrU<$`PLfVm-}F^@L8Q*f69|g*^Ao2%l+HkY8{u$HcyfW
zs%%#-m6vI3xWAC&hr`A0#|Qqi_PYJf?w;VbSyxIVD_Cp#=c?}-GGBL@PhYcnah37O
z2Od#JUY6+eCrEo2zv^UN(~<u_D}05C!j$uA{v2~6iqG}ET+6~aC3n}Fy|r2rM;|xd
zHT*iE@~ZcgPn{`YRm)nBY~uTTrJ;&PlhN@1G$%_oHEr$0dnWo-+l_^9)?d3U&0_pB
zC1UmEoL1x39rdYK>%-Kdjik@4wqAH$n(L}X%alXxue%O@bXmqQhpD;RweQcK875M^
z4<8rEH99{$@g?KDx&7bWbHpaBD6BbSu|Hy+t={Ps=VZRHFY0V5uU4OUO77jyYq5M!
zJM88<?p-eyckZT;`ox0=7v8;I_&}uj=sM9;O0V3jYyG)dx&yV2o|XDAb-9dSftJxq
zmg(Wzrjz<~dXCygXP!?wu|WGt;g_$g51eq&<DBfFlNE9-<}{Dq{L2Tv|9}13dG5kH
zL8n*_x7A$;&g?(O+q%q0wd+W*=cb5`bNolcuQhIOb6YH~*z0!a;bDm?$5SQwRq5%=
z#MXp$S2w$CJ~mNs_T85eW#NUdXNpWbeZ=>$*7IHa0~IEGoavQn|6KOswA-r;ZkEp#
zKDSmu=JU7cJ4JHArc36U_M{0so0Y5AY4~c#n$-5%;@s40uNE2wcAxzhVJO1?c7^G!
zPYgAkGmba?UwLWE)>Buy5^p!%+bf!voyQar8uU~0%@ONWbEjW3-dDZOOD329i+#1t
zie7dbslO@(tJ=<T$>py3*|(}P=kDpw3Z5%7b4q*9uGQUC<i$8;&)1qe>F;H0F6M7x
zGZ%L^m1@4Y=GVjMvpWuEL>}BYCpjxA>(-(`e)Dcs|9Rh8`kP-JtoyY6wq9=W2C1m5
zACrvv_pM4-|Enh3xLHe(OEE!V!5>y-Mx8BHHn|T^J&llJdETC^{caVToVylJpZ!5i
zx7^o9-|Vt`G^6o)`6|}*otK`SN>GV9EUpqW?eWo#IeQ$Am^q1AN9!=8i(I^V_kxeV
z*+k}hd{Vt}Ehe*$zda+o=lj#IukRg}e*UwzR(Y=YQ@;N7f3vDLPFSwN)*!g>u<Y@&
z1$#F$pFaGiDsHpOfkhrnZpJTFj;`4C`{wiKPlQ++UuUg4zm4mniA&+n?eA+YDdrye
zB*FDm>p9=SjJ+j~|FKVBq15u^V&A&i+w)`f`4vRwPyHYrsrqMcvF=ivrfIL%)&Izp
z<zDgZ%660OAG0iTr@xDvVER<x$*Hr|vDa@c%=z}oz1;rIt{wX~$LAgIUOMgCYJR(Y
z@}F{)cYZl|Pp{=s(#8qrA5Xok<kuDD;=475=j0>RRj=<Y=a;YBXqNsYe&^Ola|BKt
z;hX+D=6UKK4)c@i?!L)!f8bLb?f%_<S3m!sfPF_&j6Avyigm4$lFE{B=-m)o^_*|V
z3Ka&1TN@X<iiNA`iZXU3m~1QmEVXjS?a=CnQk}{otLJG8hT8otP>a@CxoV{vCsRUL
zv5QiebE?6lC)~StS-$5e)Cj(-@`$5CrD>YL8jf_vc@8)Js!r)*cUJhY{bI(J{~N-~
zyfd8{1?pbktGt|<E+cud%^`y`Rc9lsqpa52h=9xmEfdTpF-@GK(0*C1al!?OltcZG
zGJmnvGVI@d_vXyIyN~`qE9~EK)tmL^kGd$E^tXyVs>a;smp<+^|H!=a@=Eii(?00N
zKb35&^j*#vV9X<U=Wd{HctW>nr0&y6Uv{r~z4mX@B~IZR_b%l=_e$WsJyq4weeav)
z`d8gz18>zx-&k?m-0kjr)ux_Pe=qJY>ocBPxjgX3of<_(j;Y!&-9G<4{&Y%e>&YMC
zGsSCvHvg6Ax{&c=%d6#zU13)p^$MTZKAO3*rE{%^3Y+QXKo8-AZ@b$n(icg5JQbOw
z65jFP^!AmD*?aUq{SK+Qe?QXFb1VDd%gsmLZ=CB{&*45fX>;(yRdsIRtdn?5*DG%Q
zxaL6l$11B;#h({4ePg;;v{&ML{=N4LisX`QUYlRF6_S(x{ePE)<}!`MKMi~@<tEQy
zSn%}F^^4DiGw%Gec^xF(eCYYkrIA6|%dR<e?K*zrQTM$gTUGKZzq2o6Qt(|Drv3NL
zg+|*ccTG<{y>|W9)16<Y$68;@lxSnpIQ9R(l+Yi>fS_Bens~M-cK-dt6MB?SnCH3A
zG+q1t^1}bz53Xxm$b0|pc;?&x%nB_G_z{O918$UZ#mwLK^QLnZ^*4LYJG*?--`I0F
z_+M6(?$#-%ua@>*+qeDp&kef8FW1iN|9$4(DIr1I$0aweZT**!x9#WSU32<&Z$I8%
zx^qvFl-cDv^Syo7l^guOy<WP#)0m6-!;u97%nOY;RxyZ9U9^h(N=F&{qMHl;F--f*
z7#q53f`Ha^S8YMX3@z1Dt=^9sE?a1n-HDM+-mciF(UoeMnRNX6#^c4^w$pFORom=4
z)04iBFScZQ*v<O$k6zfiTUotMcH(1hnqqT!*Kx`1y8r9GIiFryFn#N(53?49eE*QP
zcFOO=fyX#w*}FFA2X4{Qo~8AA*0l#6QuD8tuJuY=CG$OTyOPw_9WVR*?Tneyep`z7
zDg2*cBzVizN%!A5HrtgS<;u)YRjmDSYt@;w&D`70>=9P@zqqMw!@}KDQ#crVdy+S_
z2>M1&+nI9CR^RYxQc`n7QI;=DlL7~0JEP;8<9dk~|6ZM0bR(XN{mI{u72o?N9F$m}
z`}-mPiqEboFODCHuz&g0^;cfH*xZ+*`kOzt^{QsPzY+G{_KvaKtNIxm`i%~5&)m+;
zuwd$n8&j@wRQ{Kd<M>zYA<FUPsezSYq?hZ(%IPj|RQ7rwn-l#r_xn+WAO1-?9ud_>
zhxs?Hd(L2TX#br>f1`i;`hThPU-JI?onN~<-k!X+cz)JbH471rrU&jEjt-$`=9e(7
zy}2g*>#mj;4^Fs?`_0?0aB*eW>B!GB`=f7J>&C{G@|ni|S@pPTyOZEmowZ^&-S#CI
zZS7c7@N9Oz{o8+&W^LPEUv||(!8<ilV}+ZB_*AdRsa~5Rn7bPIY%+I$Dt+BKjccAm
z-z*W&0M~_j1-j~f*$v?nnN1_QVrMy&?0x%ZY2WPoid{T?v-%_bLNj0e5Wn6xfAb2~
zgDKm#)Ysj-Q^wM$z`@kc=(u!l=|BJW57(tKtJh3p4Sn+cabR-XZSRNY!d;t^_I&&D
zBtrH0)5XzN3_bZ=vuk4?7FFA6e>`^ZJ)6tE1zlhK-q-Hr<Y`^NUj1{0N7Bum%ctbe
znz1?P^ldN2d39Chuj55KU8<5Co_xCViRE3*F?Z%8UpRKlvaqjSuyF4C{FHRJl2Asr
z*t3;xCnc*5#nfXLKRFa5>CKT+l>c(;iRu5+*7p?(v@ja<y!z{ZSWqHzhDU)xB8yN5
zU#?Wfg17^&ch6M6w*PnddBB6m0!}h{{oC%%&;EJsPDt?e{c{gh_$yAkFQYlna{7K2
z+?f=6{*BqbWzUV($+9hp5)Dn;Cja~YTuj6?)uE@gbz#uECkLCKem%O1VZr&IJ)w*a
z{VO6w8A8@@GPDSQkRl5MPSkSd{HONt_dm-Dlp6$`UPtPlGrm3T>f`CJqT`OPiIPdS
z`)27DW6>{Y&d8y-=Z59x8&>On|C^tCZFhc*Yw(p_6DFxfZc1_AAi8^-utjW>o@acM
z-4^|~-v1BCzi|E(w8XXhKxVU=U-sdNx|W-C+$ZI}y`mR1X=}ietwn<R`uh5n;rB{s
zTEDiO>&@h=?6Pi_Q)Blz_U7*Uf8JT%|9NgtO<{v&v+K%=mlcohs6OH{OA=qy{$2TE
zuj@@ag_I8AH%y&MEgYO@nLaz|+OB;q_N-E8r@(pVmf5VwoeyQ6{P=Ni^|Etc)ZhE*
zyi#yvVbFP%;Mo+WYg-{#P?oz|_s`L8Us)%H1@U_>w9NS9&Y(PRJMW)QQ*M|t_w(oM
z%3Gz>Bk(J=ulP=raD%1Xt=bL&H||<F!7mYqX54thJ<URg!?*C5g5rwG0^h^&dNML|
z6iNyj)=0^&R5>QtP|SYMeD#crr`|lg`|&Zm?y=D2?n3VN9$)5f^3g5M`+sKRV=q0!
z&)2>iD{sG2VzTf5+AkL-tepPL@15_x9W0d_%|y9#YBJBt*YD0Qj!*rwd8Tr8`uRDH
zO))cn<W&7%cjbZT)^!!(>sB9k7jmDqsX<tKyZ(`Hdt<xQ1s?9#h}H2vuevhP;Si(4
z>B--Nl$BR4681bMbISjY(ZU9UEVsS{aS10D!KSk&Q9gx<iWakHvM8ohIcq+VaB)kG
zTYLTOIj2jPyuQ?#&UKa1a(n-3)j_GLZaaBqPv0GTT2%1R1MWtd^eLZwHG8s8W@Npn
zGL3&06PH@HN@(u7Bgs689fm(HJ$UedWnnXOir368x$u;ue|j(TZc^D%dHGIb{o#kH
zdkp9AHlFj^zQ_6QhAHQH;@9}3Gp)WJl_k3U`>*+2KJRb8e-*iqum9|P+wgfFY~gF2
z8?rh(Kc%w^FYhyO33liEkgNToM$Nj!uJ~uxi<kQzomhIR`QxWMIp3bBt6XCC`uuYB
z-<gf)Ywy1O{MTGlY5zT?LupG5>R*YsHYR`myWfCI(n0!UvV3G0<BHH-)=Q>&J$?QB
zQuFgItCppvbt@nK8gnpUb=BUq<)shLm0rGZ`n%hw?fJnDS7N%H7Cm34e*f>pqdU2n
z*&nC>o~Ys6^R;MO#oMA^FWg_Aett>)o7(yLdj0%I?e3+o$f~T!_;z7lTUPDCNqpT!
z$yG^Z*ZFfM&p1AF^6#lvY*^OV{jL1<A~AJa$az2iz5n&M`n)_nsg;k<Pr%B;p=GPr
zwBq##U)_E3)w(hCyu;dzMWJ)8<EC3xU3p{j^3J`FQ)PS98@I+!wB2B0dQwnn{jEdJ
z#~AX%o*i9o#WT0;&%5#`0T;5)%wDqgb9DXHO@C99>)c+{ZOpwL_NLHO?#N;N+T*)x
zc2;M~U-jwx5c7N5x99Vk<!*MQO?1EJC3=2Up2J#q-OXNyr{8(KT`2#??o{`m&r&-$
zFTCcE*t$DinEhVA{I8u$Gt=^{D*t3W`Y`X)nUYthUV7!|7}t1v9(&aO?d&{Dlk!&)
zsWmF4KXa-U%ny3;D(>yONXJs;4L`MACMg^dU_5t!=a<{{$Es_-W^DWXbw68{XVf;w
z55HRz$_xHxZH{V_XmoF|*k@Lm{_l&T-JNAmpUp^RJk2sI^VzX<Ke@#%=~?^4>K820
z5>e#XCu3n@;rQYK1LwtOX*193mT&o8{aYt$TGXwzZ+r@K6w0f8zOm@aZK(3go}#tU
z^L$(GsV{qrYHqCw?QxsRufMVQ(B{hCrQw$QeR#8`ad{bLUMs5FyK32_Gujt|qD(^+
z6++eWj@kVP?_Tb<_DsfIA<ng_U)z+n{r=G>dg+wi|81ocq#guHuoeDp-By;G#iMk@
zNBGySCjb1zUMYn=>Av#Latr@zrcG;DzxnIa>j9S0JL~70O}X`?_T1B~l+T}*t^fAt
zq`auVtjbz{ZlmR5o4smQ1)jM+nbXuX+}l5V5ogC1_WwWr^Q=63Rrbt%8)sc_{iV{y
zn~%Os+?toPeP!q>frIXABD-fY+b4^;F1qq@?fw=C<70&j8>Z<$a9IAJcy=l4r%6{N
z6`M}XV4bJJ$H&KFBge;g#^}d2(S;pPUfp5TSu4YP!h4reboJ@&ZA$w88{a&O<ys)J
zHMe^1%gsx7mn-Sl9lrh0n9a{QetCW9I-8=yyMMNRxOSaI(A@aIQ||RuUVH1$W<)-F
z6?OHNQUFKvwf!2d1({E>7M`lvd)h{j|G)ue7O%pT!+tyGo{qDLs|^rWIxUxZ$;9^c
zd|keI0=uTI{CM)gx$BBzx6AgOIi2+4XMVtghfUtm+fHmf8FBhtzLBvzhkRXHwd%w#
z`L}YGaCDl)#CmU(F$ihSe*a;8<Vl^&8lug2@2;7`(!*WmvMTv{mf@4CSFGP}@gB&p
ztTNx2E&hae{lOxgD_7k_k7_(|j;^~e`z4_JU)AJoXS3qoyvh5!_q{^kCLXD}Z#R#<
z>Df>u?Ii4W^UJ#T$t{v6Gj*qz{oEyKdQkZA!GnxuuQWeYSXempC?;H4RMyF{a9Lx;
z#XKYD<S9-Z8mS!444h9a5?)-{GC?6IwpoT>Fr|%)VbQXk3tBg5Fmg1c1{`LZV8~^_
z|LmO1;)d|_#dGU_h?niqi|O9T8kxqZ;=vHGYGuzx_gN}urw42axfA!T@SlOP@0r4B
z3!OYBXcz{w3n(|OyvNXRWBCMe0kx2D#*My82@(R2FWs2x#=AZ5Ue@>A&ojhV=E@27
z>^xR;CaLMg*W|dgGYM^L6^xv-PZi0Sn%rhsaOKh!{i>CsioeATj_GhSbg_sZT45<(
z$l$!}bpvAq=Yq7)g@5G_9z4kD#LnI^Ay7Z$xzRdR+eO}srhT3LD#3%p*w?K-nDxv}
zscGx}R}~)6So;66KBvL%ga`GSu+mFBnaycO0iWbj?pl_J$?ke>4xj(G&;Fljb!bMU
z*wQb8o8`2RF>IdI<Ug(bul>0h?)E43=k<yOPd5BEA#3yJ+lLMwylMCF0mDWG#~#7s
zGrwvr=5g@wy=>$gyt4V3<d%@5MrYh>rFv&hOATbGcbz<Q*ToDSzr-m~Z67aGbw^%n
zdiGdP`|HmgVP|f$R^$jA|KBEk<Kg-r@hnMA2LGm3Z{cx{l=y6LWktB;Z+*SQ%vCF2
zZ#(8Z|INnP54N{9Hw(A$@d*@K6n~j}(R|<R9W{C%KPs+mWIY+&d+*de>3Kgh_OH9W
zeBz(0lXpI3-}B_KO}~Ylw~-Rd$3?LPo5E-A5wzaZ@1dyE**(8panpH?V?y%s%9G}M
z2q_(r>ttmtwsF}J$uVhKuWEaqKy>gl!~GY;Q<ZL-Ucd63BY{U~-OY(HTPAkDt6Uwl
z!r{>4R=#N}I$qqHRdzEAW{Gtl>sYHG$T(f@j=7H8tXj@T%jz!gS1_qH`z)g87ip8D
zs?u?GBFD{jUk-&ln*2E8)1+mRd`WAbrD^T7nYiR=^~Sv~XR;g1%eqZ!*C|T~p5UR^
z();7yci*`JjqE*&2e)bI*|Dg65HRPC`y{^ZTRMAt&~?3869gjFl)^iGS9n>PRvcR}
z;e=kauuUMets|3vJR+?k>*f6az6npgR*THO`PskowD?Br6Wn>rR)y`g_<E85Qo5eQ
z<yp4B<No|O>GkH^6>EE~p0gtP{4V8x3!dG{RH!^s5dQ3u`$m4dD<KV*Q|vaEXPwtu
z)o^HU@nrcoT7AA}YJNPsbCUaJ^!2GpTD9-?OqzAF|Jc%m-+uz?zsxmHW7nVQRrl=h
ze3$b5b7l8Q-u|2Ru1w_Qrdcy<K0Ldxem;KP(c@EHZr$B^XN}6^`S0dcy>H(v|Gw{U
z&H9C!oqz4;-ugRlq2$Z%`F{KUHsAT%dF#sBmEZ53yDQnf|L5MF2c>t;R$pHBcg?($
z=fA%1oNqBv_RaiTpX(MUIjvAXFW2*~O1bdI^U3-9BlSa!()nHP*M_f_oVmF=+4p~d
z=l$+|pU>}{$f@G-ve~|O@AlmSd(D47yRXW=&cQF?ObT1>l4I(1pZ@OTo-UcRnf?B(
zJ72dglMql)wVSxhtR>a5{;x~P{dcF%d^yu@?>BevGO<aQ-~YEL%xehheiia%d*;WB
zFV@XZ%lB8g_w)9VkDp@}Fl#)$vCjO_{CNyBm<4P+Au(ij<^1xP+40}De`B!<XK=H9
zZ8pvQ{S~$2uO1gZ`u>F7&djCS`e)SYz!UTLzlz+R_fEVzq&aO}-7H&kg)M7V-r4PV
z>({Qhnr#J7rz})F!rA+B;+?%SPjs(OU=-DxbL^hnMSq^HX7wLkQgcjdKRtQ#aC=a*
z_^QR*r))fV=t0AcecQxj=kB*!@x)Yj`laW`PH&X#sAS3f^uq4C@%pRn{$bCh-%WjO
zF?~sD(pGE9L(Nr<j#2Y}eu-^<FLLzPotgh0O`ZMe($=N74^O@LdTYtV9W|d$<u1BD
z<L{R(*F2W$$!f>Ref*ZU;*Qn&tGXQp#k&u;CT?81*v9O1_0dN!ESlF;ec!zE@o(<n
zn<vhN3kIcsf1mk6$F|}E%bY74FYVu_U;eBi{r7e4>HSkCv$}9RdwJ&~zwPaP>uT!i
zeoeMrC0f9G;Lc0NW%uU(IcZ<8_Ou|&&(F(S&fWWT)!)n0^#9L^QAP7+ZN0P7-=tS*
zNqF9!H9fqc!kJ1tm%ih@clGouXXlmwny+lP*_5m7-m&(>l7fPQrV9rfBbVLT86#<D
zRQ>nIov(~tO8c%#S8hL}!^L2vEgF1vW~gbG>8i+>ir)H6b0@Yhu1wMKPJ2#oPE&qg
zsLU~wmHGVsTQh8;=gezsVV;&0=Cv%zVWaAXI`6;#o>pB{csOBydFjKN`UkDypPQH0
z%$~Pw7SquQ>1WmMsS3|rZ?i)^@7BBfKh`WiJa=D32a}*;mR6*f@42T(-*G&&NHf}3
zyK{B=+#8$2-o-KHEUvnE<@JeUm)}M2l~Z~a^;yRM)6VE{i}e{RLmNugrEe}T)&Hpb
zT_;kg;#+yom92k%Xt>PyaeMFTs-LRbwb|Ea{yh0}V)Ua+QyU}?gq$flnHAun@r8}~
z_Wm|TRlDgcr%9Unsvc)>m0)K3l63Q1Lb=9fgX6(#Q?g8b-Y}hxUHI$Da|Q*Ct-r(9
zsxu|XeA@rPxAfDhpwyb|4pWi6F$<?Dezj3%kNoy3^HI5UuMn$1qSsZUwIS>0NSz5U
z={Zo(&CbsLXYc!e^&c!OECRZ@bp@GYexBQKVcVhIk2Do!9^Tn><(k^I(gMemyI)Dp
zl51`Jc3@d=Qg?jD%M$&!Mw1OU)-FxYTrH6GaIc=>4W`D(?q2S>+D^6p+zZQAJds)&
zmGHVOJbbkP&qq7^wVLaeX8*0N4RTl6li7Yp@Z;K-kN?zFdajn}<8a(>WzJ?XQ`K#C
z<XOM-52ncmX}pQL6uS5C%<9kQKJ1E9*>$vlLCN7yoTiXaP2Ii6-@oQ9{2b`bQ@ZDi
zlzL%OHuw9_L0g?PyKMeXdU0$Q-(hL<88f$}yRN?@CUQtIwW_DZT6y-iB&QA0V$o3+
z^P_p(et59E3q0p)FW+;hv1oAwZ%)19p47>P)|%UN%D1+4c!yp7cwpPyS1)|ue_qd4
zRmI>YviQQa=UL_JtLFdAI^Mlr;$<Q8E~~i8UVi=T>ZjRZ3l&OA1Uo-0>?nUK6*kAU
z=EC-E;#Xd+OMPAYdKz=whjmem3)5Csz1X>amvWt|ZMyy`<>+~rh01xFmwD@4x%zIJ
z<*@^kp|yBJ1*hO4pI*ijKFmo>63h*ZE)1rM>P{zCtaEJ9-J3XHsV}{aOCe6ihgX)N
z!-dny;VN4)Pq&fF3e6J=n@bot#aP@luWmVd_Qy7+t<RM>6gIhTc%j8V|J0pb+>)8K
zU;S&nqja4Y?&9Oj?@wQLj)z$=>86|kd*|Ad3JDAj$7bkeOb^Lc=*!MZ;$di#IlhI>
z;m#v(Lk8t#H;X4OeeE&fP1CAUH^pbU(rQi}L0q{OayNGEVzXe>{jpp`A&y~LTBg+z
z8KIVEy2ant`+a3=VEJgXLFYvG*}jFzfouzY3d~~D5l&3XT=ll#VWFUk*8!s$u5TmH
zY<k12z{0@H<ItDBi;JO+MgPr??X#L!c1jxXPQ6s0{`_7p16!j4SJLYVcj_mHG;sV8
z?d*P#Hml-dUZgaKqD{1nadP1I@ADS_4q;GisXscu(3{WVZkq`w%NcbB2M$K^(1T=l
zz6=Hi2Z09O^#5mA9`5I1ZqVOdwt2FF$dSOBwtQv|mxC`3&E<dS{X@g9<NWHaZ}%E6
z&b;8_I%(2`4%_`3UaWf?TQI3!YtbdS1xkwQ{0v`SK8(A?Jn8s`<wcJe9OU1pU6Kok
z?D?&w&d0!Z_+!K^=1oU8Y*u7B5Wd(UKGcevL6Jpi$!-P#rvs`>k{JY?8Zt!~6j^4t
zF$y>-s4UscAmFrMxmG<RgMgDkFB5|z%ViBb%&K$G^!`tYE-U8TKIglfQ&;)CyFPuq
z3M~mzyx(K4Un<yq|Nr8vx{+oVb7OT?Egej@-&Vb|?Dg5AO1a~?iBDc#z3XavC^*vX
zjqUuo`Kw-8UOieIx@X4Dnhm?QO$mxzvP$S`{_~n`J7%pFvzoDXUH-m(i`$+)^HkA!
zHv9I)6r)+|o=+El_%ATvx6S|NNUw)_cNv{HGCse4{q50m^KWO3Elz#D^*CQYdh4x4
zSIs<EZ<-|VYLQrAwc%MdX>lK(V^bK8l_eP*E8ggwbA036*$<9<EL~_dEm@L>F-M@I
zPk>4B%I!sMx4fcqYk${<?RsLAtX7_9cXa08*H_PNUVqN=yyf$m7xVkKXmi>u?4SAN
zjTcXv<$nFVPk$<-uWhb7FCeu<QNfex^amOJPjh1A7n@77^s&b+Ikze2{Q68O)(H<J
z*#tx+ybtFsQef;<Jl4@<QKO!6Y*PYjBA53jW*3HsjgRk3Di=7$?^iEB`s>S`l4*&J
zmnVpyE}mnOVrk>uxIS@3!|V4yWNvv#?6Tc5SHLUbN9K!Y2_uGYhp%avmfl`xF}p9h
zNl47_`_$`;&r0>BS~|GT<F`DtkfR~xf#!->(aC$>oV{zI_EAwfZHL>$WRZ)7o8zmJ
z|1Ikk<YHpspQ_wZnH^X6Cj9-n8=qebRw}bj<90N^Vk@@fARDu#f3Dm_;pOLNS-zdQ
zlwlhGB+2VHpXc9Qb)c!I!~g!K!wCw(;_FY&oOYZ=Lhpfh^e3Nxr<S%HT44Oz@qc@b
zlSO^PSsrJ-63_p^8WGLEZ8k^>tw{U!?QZ8yO~>;J=Zp9Sq8I}BCsv;be9}IF=hvV7
z1se`2@M!Bea>eek*i$is@qETwNzOjOIrAF}58b{NR{v6KsZoLilc$E~Y1TNCWltj~
zCo#5f3ST3?J43BWL1EH~g00KX7ufi%Fxgm{JXKJuWr?8-D~F?oYM-LUQZFfc&vi>!
z<lH=W>KR_0_UOUP2E*i2bLQty(e~^UPA)#~dUOUW!wiMR{wF%5P0fsM-MD(MWx))V
zM2&?Pj`nX*iDEpMRD4_`RHf&#MJwZq0~W5Dq0YgX0%}t`AAg>jwUnc5*;9t<9ZsEs
zED7s;7CIG5uDz(<Bj<h5g+rL(;S|mPouL~gIrr7&e>$YTY+b|={#^+%GYzUHX=!n(
z8`wQKJ~irr(sj2am4lTvTV2zc<KkOP6&3SEG;~eeyEbX+?@`(k%Jpi;pQD=_xKFSy
zKBK(Z*vszs-K~#BFJI3MpDZN&z$bI(G8J||VUAT@My_RHCbNQN-tCHd*?5v~##5VZ
zd5<osZt}2HG}cIUntwTU)9jegtsFP_m4Cl}HOuR?``W6)GfkNb|1~SA9+_opXLU~L
zlg@$dy47nG_4pQRI4yH9l=vevxlwJxv!093DsF$^mSRzS7q|1u)jL@}(xTRf7z^x=
z1hA++$;xiB)fR42ZAgzw_mi?`Jf8S5KEI4dTj$OHRN1f!u_rDsotF2DE=goMWth?w
z*mvMUvx7*b<LoIHs<(FuCa^RHrQ2Vs`*&fA@A_+^e|FuKH-9{H=egZ`BOhNnU=m#V
zE$P=1!-Hj)#DZhOBPGp~XZc-ydOrT&iB~(nzq{9LGk0yT-oDS*W**wypHthtxBB>m
z+1fvU8WyL?{;jybIKTG5*K3!m9v|iZendBFNoSBs|NNDnXL|z@xk|r$f1lfbCTgO!
z^~{Hci~H<i@3RGPpDxj^|IJ=;q4QMep8JQ3x%Tbf^e3%bw@LfY;e9XH|7&}r@$;X4
zy!M;L)AsCRF8dzzq^X<LJ^1q_Zu=X%-~2tFWnXnt^GNUP84n)$SSG*yE2noM<lFV_
z_k|NZWappQZRP2^<&c1J=FdyhE`64}_v^>)-KxtDPncBr*gt=2Y^nbLtKS^rXRGS|
zyghez!0nK!5$W@GW!;;+xu*Hwv`0;!@6VYez;(Q1cWU@kmsz5s6>$wS7pNJExz_$;
zSUzns^SZM6@w5K?naw#<YGOyjZ)v`_|7J|;yqg!F)wA;J4q>;B-}Sy<Uk9n()GfJr
zGN{sJN|2=Xuj<;0mZ;wHva*F7N=hNGzDR!0i$6EV>fmz~ook=JZaw!$_x5C=(xwA*
zs-8EWQIGH3=GAiUTJ_&E4ijE!TUPDeQhKk?Jj3TmszA@7qw@RiUb?ZW<FxM?ImMGo
z$Ii?<@%d5jU-`Q`%eX^b_5YuhPfb!^bmjiPH+x^{-P|<&I$JDr@^c@p8++TQo|yki
zdhH=D|CYp7){J(gg0^YrE}k~pS~4$gnwaNdMJ_uH&nX&{uU-lcWnQe&l<m9G?Vi7z
zYv!-0U5jKrcf7c$zKrL}bh(<JM`vA%ez&`vEB^Mgl5GbKQVW+D)Hd$;vgK3r|H_Qt
zdQ-wWIs_zzGf&OQymoq#(K3bF?dR(XB@)!juB2ovDEt4*^y<=H!K|VMi<iEbD_grq
z)iN~r&&%U)*Zw;b8eP2X_WnCtUOk!5|E1jIcT<l_fmE>3(fhae7y3HSUH<*o%UbLI
z%z?L=c-HrAc2#@QbEZ$%zTEA|lgrog%I5xm)t@~-xA5S%i;)|8yd=!6^)wp;Ru(@y
zo4GG8&96uI*V*j*`*w#*iuN)m6>hjWFCe^1cB$#(aJ$o6uUnqZQd@KTLVVnhlb>JD
z)|S4(VEtKqc6R^2f1lSz?~1nC`Hrz$nR9XOX1Tf5e|p9Fb8Z(b-obOUVCOv-_bj=}
z@1He;->SM^Kf6--YE|<&3FY8b?)E#MU5w9LWfQtUdb5S8``4qlmUr*BI#wN9)GS(7
zZd_*+)cM_H%OV!58Wx@QC+nlHM;E3A@VK1v+^c)<a)|dz9SQ3f?@A7KxSZ;}XqKEF
z>KlLgY<~RhYen0cm!?eX`Lb=by8Yc9CvE-~PTu!^^40TG>*_tfl=E+>NbxC2`X|(S
zLslhpuc-L<{OXOncguh9$u1PwuwdhI7VGTq`**C|xJ&SG;8MLf-{1RhZF=@;qEd3v
zwL4c=dwtvY^W-z$q>xpnC(jhye3={;kton6D#!IzM9ekWip#u3?xOs~phHt$aV%c5
zda<ZNP~N5mG4|^(asB(YPR{Jov@7?6svoV5olyDcQ+!UR!7bMM^{cOUD;PMP-g@y>
z+;@i-vHis#=V+y=$bT`3$yfO@^QXU#-v5UZYnJ_8W0YOD@AECenfGp#ZN72#vee#n
zi~G%8vgdrwJ@)0vKfmx(J*;mWEcI8;5$`MCVsz`pk$ub3rU|MvUSF<ufAx+RX@$-v
zRl9#IIXIDn{Z@5e=m(dOf9J1Vn{RXF>SMJlW=p-ae%=mbIqo?{CL`y$XZF2CFT?*A
zU9hU1D)lZmqbTr&!`Zc5wMoYu!gtSiP2@4Q(D9vK*KsE5g@^f-`zt?t?}%}Y`S~o{
zXWjC|6}Np)8=U`|te(-#EF>{K{7S~g1zy+hSFBuli}Pd7h1XA6E$Z(so0j~3|NkqG
z@6KyTJ~n4#zy0iK^V7Yy-?#bk`)_pIzxCnwOMK=^&YvAx_oN_Reo1#%?&=knj##tp
zeq}IOwv|2RZ!Oc|Cgn%XcBf}Z8h(s2(K<M5l3usji#ONS?GBYX-r=zS@_A>W^Q)2{
zSLSnzWKOTK)tk<L)Uc(retUL%;-OQl(&jG5Z+da@u}F9bOWqB;dm;Y1hQEY;-oq!_
z^Z&nlF*|>SvAFK-UriD`98C+#RVu7rcipSM+^c5y_nP#MBOi5E`})0Gt^M*vVyRg4
z`~?s8oa^$w&Jor7Y101Vs$D`~CePzI%++kLW&?{Slem88;cof;v*XuoUG2H!d!9Ip
zcT{oEhSki<hAIbc8GSmgFQJ~e>(0tZ*J}G7k5j&KQ#m%vEp=q?<XO5YYf8oi<>0`8
z{BCQtY?aGz-(;`unE$ClrE2?=FO@PAXLbACv-x*;?c?QJ-Gbv|7oQRkUfJ3#x8BWL
z*rd<dC;sf*?0E68c~%#LV#O1?H>aihRi<rRy)njx(@`bIvv1!ltJaGPgC^Wv`*+!w
zi_LSt$K2)pbYsqvh#!Y03b**^6){c;i4c;x*}t~a)aj}Exya4OE}z-kwRx)L=k#kb
zzr9k=HQe2M&rZYavf+gQ)~q8L$x{OF2bGx~*l~KlZh(vH?yPKsonG1AGJn4mrwQM?
zebGr<>G7uHzIQiBmYa9)aP(aq8~XK@gnLQTVZ&lG*CZvDi6)!|Zb4B_c`x>rEqd@Z
zH+{cN_9k^sAwhd9{o<m34#CWayRtT)waYv7V`;EecD9c4rQfSxEq-))=Q%T*L-Q=F
zr=4I=IAxK2_m{W)o}wRD=eqvh7p(4Q64?_wRri|U%Xx0<7KV+&zMjgpXV1R6a9TwF
zg}wZj<33Sy=B%;(yWIZvC$*EA9=UzKGxr*#XGOigyX#)xt}Q$Lf4tiFUE}hm<2U^4
zw_KlM>$!GHMPOdv#)3&@cbZlnt^c$3%(TRwFe9Cu;+_I?vxi%b$*h09N+Vcm&Bbpm
zCtsU&%Zi5FiHI&*bKqYze`{i^qeR#b=C2xxVRNis3MVusmYgiyH}BcAPp2A;>VAFJ
zmO3XgZTcO<-g$eUJe?mdDz~TZ(IyGQqA!15Dji=a5)@jKHGw;1p7qfLmk)97Pp^Jz
zxL*8uH}g?;KIfj_kM{X*4&QI`zIDFjn!sGq>9b}>b9jXnZ~GDF?VcR^{>k&W6@Sb0
z)8u#8TtByDV&5@i)(v`}C!UqII(_ciG_waReU~<^`*o@97F$qb=sZgyfrM?#cYQl#
z+2_iz*L&Zc=jj40M+LThKDAJPbNJpV)|y{;mzVRh-6`*@jjZ{w{+`_PoBrRzriUKv
z`2OvuQpC!Ft9MrJyxY-qfosvfQ!^d=zrXm#Yp!>-<a&t7{e4k&zYb05U9Y-))_PI7
zQuC?tdKNSH6}aYb%{ViwQe@S>nsqy$gw&RvUv#}(z1K&ulCk;d>G^d+rVlr!T5rEP
z|Hq<r%VL)W1ZYKOUp;$b;$!tSH9>FI>-_o?aF*YFOXlY1Hs4d6KNhAtPrrZpbTY?b
z9zH(47n6mAKV5R|3w4XUweH{BZ%?hY_7+{JT)cMGwd?m;wNvN)(-RYNHht8x{d{EY
z=d^0qoeNINn3m5{DPWGhTX<Q1_V#C;(!cGjsy8TPUc3C$JMF&RKVSD^{=*45^{2P)
z7yHGw_gZJa&Yc~*O773EW>*OEEDwoask2vbrq#oXb8k!c*WY|o63jJo_0mPl7BvNA
z&C-j{)!Q8qS5kZKn{A+0{KMb*w?C`9yJfOCw){&K35)o!&E&29L$R=k9)^i8oOu&C
z6M7#O&QeJ|cGUV?i1-`Loh953+-xad*f}Q&xO6PhRD0kYDB~8u(U#B<8u&nhPuXDJ
zW6oL6B=@sCw&-K4jhiy%p~W$_zY;4OT-(H*oOzutaOg0J%dk9g?KxoC)+jJV!9Y#G
zB~U=jQBdQ-SD_--CWVIEF&FwDh%kBU92PX1_4)Ucs_bu*mM81ncsO@=LKI_;gHeq^
zLl9RdZ-+orb4HxL(<Ke2JQmKKUXPj->YJ2yF5o}t!E)H)S&l(Ru+fHwz!q*cgC-#h
zzU5EnoIm@qNwd~z3){+lm$!VG`#sC9e)XFo)1CtgxqVMHb}GI2nxMie^yFp(i?Btb
zft|hM=>-#1CM@B&#oX$a-!#qJhQE24r^0at&2WcF9E(?|a6AwcQVkSgc&^g0HNdWD
zL-&czOzH_Loef_%NOFi+buM5jYF+sIue*bG`|H$Z9;U+@j$JVgi7Jbgb?d(#J7}%$
zFZ+XSj;#Euxe0$5n-)2SJqS3^w@726(X5Y^hF)w*MU3`66D8U<ED%*WyV<cRtf)?(
zC#(73H|N>^u84+7v?R8Qil}h?W&i(5knx<_`rk_@zO(<do8OY7wXL3!|NO)t4}&Hi
z-J`$1|IhbSYB+SbM>W&pS3rt`!;gQqFXUa=1Y`}rubh~i<iGd-?Z$%)Z43EtznCx1
z!IULZ>6hp=d)v2k!K_o2Z$mylbaI&e|7^6(tHZUn6aF9mns8ihjiAoIe?JVwIolfk
z{?+@dam)Fft4O1we&FQmc?(;wy|@3zb4Wv??!dFeqyHX<H5@JA68Llf&E4!AnWqQa
z9)6#D`CJu$S<dmk$IddhXCLY7|ERc8xIpunK$EP3YC|+%tAnO4<4V!c)nThvajjgn
zq9x$#$IfjcQ7ePAwk~Mf;vjs;P}Og;#THMOgEtggS&sKz|90-&p5tkgJp@cuj!ZGz
zIN$r<=4)%x%KqKC<*ux|^8uq1#{rQ-o}#cxhKDy9r&{S}YFZ>Odpv8Iqn+{;t#eD1
z{7$6JOWzs!#pzT-*c@)f9P^r4N0<~^8Zy7=Y*ACccI<Q5Gp?8QFMVdsS*UvXffyr5
zN`!&Izn5vA)ZPFF28EV}_!aD+(X{;m{Gb(A%K||h(9n|;2WV(Yz=^?UF++m@Q-TyL
zXc5(A4bZ~N8E%XWiYy0AxX`sMFqt`#0kq5tWD1X$A0tTXvOorqR*<;QVg?2d#RRFT
zP8my26yEXwIaxS}L-lDpd%;4}pDr4qO}{5UcC_*}S`ik+<#?|3$-W0o0%x1ISp8&N
zA!Os>tF=-k{fxKpT2}5QA?p9vi&#ppHNNhY@odtcD=qV9U5OH2r24#RDeGe|Eu+gI
zcY2*Vu_os5rY&J!7f$uf^UjYq-@W2O@9`b)WwUwso8COKbSXSILnMal++UH;k;^oU
zgcTKA9{u~MJoAyw?ux?ab6-!7E$<cEXKp5>ot+z9*=cUJY)QgB74PaGj*~Y#r`se<
zVpYGldZ|E9_F8Ts?=J0A9S=ivA_cqKr(TNsbYqX}+xR`ILflWou9%dsztl4An(o=N
zr~9T~*WJC)T&R1_&Q>qa%VkNMxp&OxI{Iwe_j_M=M(1-|PRU-Kde--<_PSZ&yDyw8
zS~?-+87MR_Ykc3kYFl4^{;gYo&%Xckr6o9`{HJYsw%7D~W#_MczaJfNbHf+zZ13z>
zyZ3)?{<ZEjx3+e1cmLn1>Uuku?c40SdCJuAeUDDR?s_JcHr=%3%e`F-7T)q-`fPid
z>a-Abe%|zO)6y?rj(7|Au3n%2cAt{=?ge>IZ#|p3`tx%!(U2=gK0P;$FLn;S{Akaq
zWl!Uyrbh&2r;AV3S@lRK<L%#Hn?l8d%fr5J-xqJ9@BhIkOE_12s_L|oyQTkK_wMCg
zech~FclVET>_TU`KWmGr+_K)C7o+?4r16n?LbtZ8TK@Xo*VfOglUlo@cJ1DCG0=Sf
zp1;qmv!-vi_S^Dxn)SN4`u@i=qB4vAF*0=5urXX-aqSjgtCD49o{bxCckiCf|F6b=
z{Bu*RH|mK;S)%Lh-uTJN`9ia2?d<&adiK5Q&mL=3mM_{_{Nt(mzip+_*TdiUZ)jGH
z-+BG{#yJ+|w`bj}+S|WbVa`<H&ga|i+>+k<^5PO1c{_{!o73xNpU~HrxKnSUZ=WTm
zBX{fHsYU1G=g(i?<}M;#xqHvT!iO&^s#d&zyKk<wS#DnL#`gQSwm;um=f(MbPeEDE
zZGCyk=wkQNn`S*|ZjLs8yJF4xyC2_pSB8B5pXYoxHC#*8#L(`Yu~gf|nzy$KZ05=N
zw=KH3<vj0Y)2(rJpRJ<%m#H;1xx_jqe*Exb!!_fTO$;;K80Qo`={;M2>+hXo)92U3
zXp7FB`&^y>S%}#g?b*f?eWsRfIX&gL?Od6;A}1$$IQ~4;m+EF<w&i*6rKPb8*L36x
z&hwi!Em^Ss`?32=YA>7m-sa{1w)e}iZ*}H5{d@QRZeHkk+Gt9`wB-HUi%-uJkJE|0
zWto0&&YxSqJdPyloaSA<|Ief2^|iShHg3-S{w)3NjW;gQ-i2Qmt(vy&)2>&KZtc3I
zU7hB7m-YJHt>5-px0ijH={j|-?c7Hz0<T^R3A(=_$=Cmvhf!Qm-mEEe`24H8_4h8?
zvg=x}%lEvWpB?UROAcRGam##8Mq*yUmyWl)w!Q9=u{bhwPGLMd<A+{>4_7oyUrc0f
z{^znR{ofId$ypz!_Rik+^=y9je2H6+<!_Z&y!VrvJ3E`*dj8ERljoam*}Z>--<}P%
z`x9P@%hzs6y_#Ar_dD}cPiDS_<uC1rZf(E*{qR>7?UA|h<-*}kRc^LlW_|iud=nS{
z-uCr)T52z^?7iK!eg-xcU%oTf{Mk_c<L;9iPj<L_r`={=pC?yYf9IsG?A`xK_ZvFS
zbbYn|TVXXbXYb2zvC7Pk+y8z1^WSz-P5p<v_tmvmefqWit<Lin7EiaeU)ZbX-~S+E
z7+VxI#p@jJ<vZI;Ph0PfD^Ipu%wD#4n_^1v&sXQ`!{Y9ne7LQCY|=iX(#quIFcTZY
ziOX6hedb}fkbmXb#A5ab-fw56cP>n|ZZa<F3DbF->7;vmVv{7>)F8=azMYqjC`4(k
z^tm0_Bz(B&(7GhX^v0Jvrg(VeYPP=J)x{nqJuSKT{$!_F+vZx%lbZHcW2x`$C&&F0
zt<BPVf|`YLkAI2^i?`nJbml{4ci+ir>l_0wZ&Ts!30Siw?cs+5vm2jtD*9-r2&gXE
z<lM(m<Ez^oq}uv&$FyYOwf1@~US5X{d~U0?WT{5nQa)xlO{izqwoEA(Va*+~=N6Sn
zg$ghzvT&$y&U|uaOVAaA6aOb%Yc$W?8M!P~$k%Tv>*Hl_eN_EHRfd79O!JulhKBZ3
zhAG!ljxjN`2qd`Ke`f^MH@5NC93VB2Y6VnPL2ETd7FhMd3Mnud7@RmjRh57fsH$oZ
zU;=6B4l-h8n5E&xThz$Ruwlj=FHXiCOOCbf?_*-Pz`8M~=p94LwaW?q3=9iWBMXb(
zF=!~xiuu66pwm2QCF6pWSquy|rd$jl`$4rQ1E@M<0NF!Os9}oHT)*tKC-*1z{M_fi
zOcmtBE!S3tXi0U)?b>wO<ZS=808h)Av)1^8l$Gc`pEEg=jX}VPL38QzrMs_}*nd5A
z+28K#>s!Ze9pL9soN`HlgJbDy`5o{1_48|9{I8!hcd~BlAC<_z{9;kszRNnaRGS(E
zolX`;X)f}&btpO}v2@CuuAoB^3QHF~FIcHnynC68_R_8Y&g5OW66j^Y-!fs!Je%I2
zE+6#<0VWQ`E!X(%{ya#QmW$u8<Jgv>b-TW0tu)&D*(N{F^W#R7y7%t(XU?6~UB4=C
z|Bl1_e>N}kuKgvD_4aq;wIe3Fr#CM9@bAF)r6La_5@RnXsj^z0D{{K>!ywnIGa@h3
z_pZ~ypYE3>49@Lbw<b?RXO8L;E8qB~98HsdE@@$LR9I><x5C+5Sv7d&#FrM!GAH>T
zw7A?m%j#TeWN5BuX5)iTM>6LGbofX&2r&KW-us!a@6oA$f8V})d9us$j0W43KnEu#
z5e_AFK^HNhn`{$Vm>NCQq<GY3%rRsV&fPpCVbe*805;C2bKEn7o|l_msoFkoul?=c
zude3ry*mGr{Pz6$)$c6RSAAKl{Pk_31ly}?;_YQ;qjoSnv{=EuobQe0zpH_rE>15v
z*_R$(xqA6x_G3(aS;1S^`FqxW`=Ggp^`EJXZ}*z1r?2Txc&u`ov2B@&6tCwc4kn3H
z2Fo5uBxcM~;plZcZm=e9`Q=j61t;9UUdq^_b2z|3<m!6!m2V}cSlCvcT*BwezGvyx
zSCMU3Gq(n;U|@Qj`fy6v^5+Z<e7w?u@{1KR)`Z{p=(+ae2+vH*Qitw1=Bd3$TjtCD
zJ9PZ8R378p7hhEtUT*7`GuO5A^3Bkk)n>PlW7dtGt*sSXgpa(L>TUDJHMfe_z(FW>
zcc1}d*Mw+G*OuRhb|l6{HNCvJe0yidwr?*t8dN4NU-mh<Pv^3z(3R8mSB@!cm)XO3
zIxoX@Yg?1U$@mSKZx`HH;MdD%wPfM54Kluy3M!}b6c;FRZeNxub#0Y)Jm0y}tB&a>
zWEWjt(XOVdra$k>vX>1v4fl6!U${j6@V})GQ!-v%KWY+DwsVQcuG1F+qIb;fOIfDp
z$@k49ThU~R-*c%u$*=dB>Z~-bsgZJC-tlMg4~`$*2M=>A^7FshHEn&op<<zwbNNb-
zSL&LlpDn)<a+QIv<H(}9?q$DOSsD9QY3R<k$$4}yw)$$8Y1g6$@y^Cm_8z((z3{@8
z$vVE0H#Hs!tF!;I%)TNO-1_-R<Yk-KoYJU6C+?in)=0T?#Ib0nLeYy2`zG$wS$bKp
z#3SVX$H{Ho0oRO|_`lk9<w3&wMdJDE<116Lp9{%|nkKolc&N#lCFV@%w_SQYNakAp
zl@$w}l^0Gswe~Hq^iBufhD9$P$xqs)sB3WH^x=!^LYMZ-8=ty$X~yFZ@_w-^)+kR|
zm)CsksOy(67n!b{_MQ3viD_QS<7e+!mU237oY=Yf`Punz)_j@5d@1OqbxnfE7mlxo
z>}`zn>XuycRXoVrtgd=Ceo97muGcHhZ1?X=UtdyQ++;g9_SURhZby1cN;h3xaaG9p
zHD_mV6VsiHrdL8@E=vNe5*tLjdUJKowgwe1ZFj$Og>znB*@tVB-`DA^&N4NhIEf|o
z;R6lfMPB*;H9duM&#3SS+_bFhkubj%mw37O!Gl2M-;XrBnQK1WFx<HD;T*>pRwvJo
zujjnizw?cYXZ{?6W7kgISkM~q{KUJxi{1L=U%pr-!aZSK+FV!PwK7cA-z7~~^?RsE
z8P)mpGpPDHv@Ui2eXLKy*yUl8{(}r#?riI#6CD!DGj}d!nLNX?U)GF4l;hUx(EBnw
z6%4l)fBf9--?4qWY4GZ+YTLRzjh9taYiZ1Q8P6dX$5C04P%L<F`SU%h^9{C4dwihl
z=V?DVd)4WuTAdb#t)FXUt(caeb6SA6^sDD%q4<3jiAu)*?%LnKX!7>f-My=H_BSUB
zDzDyJZN^^u-mK_Q!TWiC_gn0{ygGWjZ?)NuTOQByZf#0Fz30TiWc_<5Brch2RbI6U
zS3kXxd)hf48G#$wM-I7i1|I$`-Py1_{=*f?k4}m=%AP%0WU2gkl2}dg&w%$IPKeH5
zdb+oFdd_Vdjbr66end{5^eA}SI?i|Za^HOUc+5gUQ?2Stfw%IR!{!&P4`}bnU(cBQ
zc$&I@NZDsen*-<d6uz7~yE(AdX<B}a=#nj_=Ev`^e6e<UzsuKvSDbUN94q`VfrCZV
z)upY9m953SwSJe?)^hXRij&2cuk&~%CtCXH5o3DzbVg@ogM~+qUk&sZwq@fh**N{C
zbtPL%#rKY`7se?UUS0hxBV)Tw?#7!(D`IBtJ9zvs*R-g-_j{@?D>1J8CTn4*m>BS7
ziKOK7vbJx0@tf;5Ht&6VqOe)*tXI#=bypZChe}`f@tn2S$oAw#-HfZNTF>2W-oJCA
zpzJ%_s)LgxgV|g7r6i=Jw!Hc5JJHtmxT;>4^tE7K>FmaoJ6{avEnJvwru&79OH%ZD
z|I1f5PJArBG;OI0%h4lqcGaBl(p#d@b*v@YPcC+zP1%ntJH^+__4d5j{AhEjn^4WI
zL%j3PNedg6{P@@to79-|a^Bv@kCT$xc)H{S9=&=mEhsy0OU}s+^W<tDJ(5{_fpcXx
z-&^n3H~0VVn!@6K{@v|wYeTi>Tr$fk*fcrVg!`Y<hYwCC4p07Zl4oK>8|RUDdCTHw
zPp+#4DYH0Av~Aq7#b?H31`8qAi|4~~PMkVrG)=Pke*5Bv3#YFxRoN}T$e|??c_U(9
zZH0B}(|3{F&+q>H^x1#f^1UlA9O02m$>*7-e#Wx$Wo2dAvp-Xo=4*${Q`~5*_N~6|
zxnEe`&Y9iS+0JjD)>`}5eLix?$<270Q0&z=p4{*Etg0&gd;7^z>8vX;?-eJvwQ0Y<
zyC*ziSr8lh%vrP3>~_uGR<gOx)pA;p>6QC7g&$U5-kx)o_4M*{H#h&b(VALa_Bm^1
z-nUP$>Rw+7=N4PLW<~z?(gGu~+4^4p*L;3@^zicco=ZRVJ$v?R()Zbug0rtaT6Fw+
zn!ZQ%zv6}d^BIGewXE@&u`~Dd!c~_(b#1ydZPlc?nyd5dPYWtVcsu|7{9Zrj&#Nta
zn~z>&<u+e;cm1-Xp4?(HCtdyi-ZtAk<=Q!}NsFg?>2F)Rbsm!=quy3m)4R2EzpwG}
zj^7yUtgM$8$FxXy`I4L0j+Q+5q3PqC>+!$tYUKHOcIOYu-f=#pJn!C_8B;fH4D?;N
zChw}cW>xougA2EP&$HE78G88JY_=(PjvS2A3)yO%mbR&<_V+%k3eLlUOXKHz3jdw%
zKYQoj&&s0mUbn1nGbWr}WBVlJ@tz+)uggzQxwqG_-m}V8TG%Gx$cM(Vlfr3lZx-)T
zc^`Y>zz&8zsrSCLdfP`{Td_Ihsofk)^{)>n+X!b{^Q+(9m38d;&62loSgp6sT~PRW
zXSaCcvG4qHdz6+;6Z>YSbGTtYi_IQ^PagtQo<4dfWUIhc5E5JZ_1@cR*BKukUzV@h
zD>rY-hYz0^IDUON&K`a)-fYr|{|_X27P>rpp`ov*EBqiRHumDAB~P2vbt5+y87fHU
z+g7SEJ85qe`4+Td+q2lYc6+8*U%PBwv@%HZ>dV53t5$Z2+??GtOK<+}cduXnvwA(Z
zI)P!K*3{irX4BKmnFU@XfBN##nZMpXCRlrunf}j!oMkVTg+GnEySx1AAJdJSr!CX%
zQQs=XHucAksy$~<6@U5Q`oQh#Tf2j{tF*M=?6wRIo4%v!=Dw;=SMJ>MKQifU(&7jA
z>b%%9EAup&1NxTf#MY>+*cIT)`t8e^+OHxE!qVK8yN_(Mc%7N1{qULCid8F@Jvo;q
zv}wVvP%W`bGLNLM>{YNoAMq?h?b^PxKOYE++*%gM?7jH=`|Q1cZR76!dRFVF$>p#;
z;rgXR<^kPr-sr5hDltoYaP_s!^#k){eYX~cPrtUS>3ihVa|a7QI`1`FcmHw0qFtij
z3#P`})g8KcRqgjde<Ox{|8nkL=6}<<xw@)l_tR%05xXn4PO;xz{8o{#;m~c-)LHd=
z$}&%H>%Q$TD=G16of_xT_<(=i?l)zp?5<Amj*SggKYDSCcf;;gO56LG6&b_M*X?@$
z=AE+Qt0ie&=Kb$Q4G$c)-LPrPts__8Ui7ywVRB%6Ao(I{#@8VJ0`*qkQ1#5zGg}_d
zn38)^Z_RhER~K)rbn|g#J*pL7|C~MCZ~F8r+y#t3ybpkzG@cU~74Pb<(RsLI-Lh*p
zPH?zhjPG-6`O3x2!N-1es%cnQ7>nbdiNb<1-qO*#ZhE>dJ<4ms{zzQE|C8a)YWvHV
zFNbMN;p^%1jN5u^me%T=sh4$qvlKpjEvTIyzVZYA!H7*CVmoIz-`igi92*$_W8Hy+
z*ACsgr>ADMXxWBiXRogR6}!>p)ru_!wedGzh>Bgj7ZD#CroL$Ane_Z_?$fou`=ta@
zO26NeUhk0Kl3cJbATc{FH&ybo`KHCowuv^#DXx1eKdUBIMoTNA-1>9Vo~-)~44W38
zJ9+W{$ESxcKg*H({nE$VP{H$7SYoP{;IFF6^78OK=XC-tDkDzLSagSJd0ySd#E042
z&aSVYp7|~zRZZ~suU%Y*5h6zd6I0W4`rqB>f0?m9tog#cx~-Knr9!PQ-k32tHfYY|
z@bL9c3<l;?Pq1F&ezvabi}A}B0<#rLT#c`$#ss~5dvUGO{ynRfWqkQE^Xd9^_VpkA
zjwqV$tV~ti`qT2M-!?PWo2usy)?N-fTUYv<EpOq3%eftGCu-(}#s<ax*eAhoW_7fK
z_hLKCQpxby;UTL(f7+DJaG`XYwry?FVWmskYc561aAod!Bw&Ak!L36=jR%e$z4qwt
z?yB<_I7+>PL!Ec;jz93AW5v|$<=3C=4>aBWjjO-2^QFB}-j@BViv#^OE?v2KuB7_}
zx1=ELX}gNvu2SP`X|0^TztVG6>8n+*{`~1WbY@LjsCt{y1ARt*{T3S=orI}<Tn!uv
z|DQj8U;O#!+PlZUpL$}nqICyD`PUNWhKt!-A1~{vp7Ock;;Ewr|M)W$yAogZTwXp~
zQ^Dz``T2NuJ}Kc>YWKIM{r-1%dDRi$0@G`2<2Ei`qV@mN_U$Q2Ki_Ig{#;tRW816S
z#o=1_Y%FS@F5mgmyLqo{MDMdht-trW_q<$jc30W^m%sO@Z<k9y_4Gt*@bOt&bKFm^
zj;^o%@a@>ncGk7tm&A8Oo;Hf#!`mTy_p<M<<i~}68m^L$oQ|zMz^E)3n|bW$Yay3!
zZ+@K(Z+&WCSH5w{(vP=4r@t<ZNl(7Iw7b0P^k)6}d*dd4ef6ewcTn<92MwL7-_KkZ
z=KZ))w|!mOlMpkf@agB`s=vPY_W4ZP%wjeB-Bk}ion5nQ(V_W8A<S)Goh`x|7KR(I
zyUG4_yZQC`Hh+1UTHepI-~Ipc?DggEg?_u7nP(c+x0s`=tMKAiZ*$duwl;5X#?Jm0
zy4|#Ha^XD2ijTAB=l`AZ_1Vq-^Pjz=UuW6JPn}ixk8$1V|DU=KJ3l`sEh4KhdBJtP
zdAgx5qfT{8eVyblu71y=>Ph!k>rYV=RWm=!oKfLudbnf5q8HD(@5h|fUN?J}#ZJ@T
z2WNWg`ySc!-9EN@-r`xN)sOte&&Tfh7pBwFaWCC=N8SIW6AkNrp6UF>=M+Bm>*4L&
zi{<M6ubbrUBT@SJN$2kK-t%LvW?omBVOhL~W#PNKJN`V1-RZ%hH*ZJGy^!LUho)ME
zzWm93pR@7F*S){}<5J}RCrwwX$~g4IF-gSnA9KircJ{()lFjxE{Qk?A8JC{zx^n)~
z*IRxp3M&{6wl33tt}bs~5Yp3aTxTIKE4}#oD*+Zku2z%7Jv}nh{;EZ*h&BG_)ZpFH
zr?6CrGsZ)(s_Ush-{Atq2MhQQY~<0K#4v4%Wr)&|tyXhAbRJ4{r9`asV9__^Su7c)
zGwp)PLB=Vml0FU0)7%VXjti`vH^FO($jWp<AC&`Js`fG*mY62EKqL1C$I(K;KIT4U
z4qI-415VD3E-F`EneK4#2%5qnE~KJ4(L-|9g2)EOK1Tz?zRVJ<jS*c7+nAeFI+f%P
zPf%*OHreFM0(A}%M~+!dlLKx&Pz_OtkQ8zCa5`VWu)!eCMM+G!Ma;2PBY|_)L4gB`
zD~=R==u>*ga=gfdA=dg3cZ6!wg@czio3uVuV&uAF)$5|u{%F<p*AC&oOhhcZ79~s#
zIPl^NOIMQ4aYxU~f-EMBBg43wT^KxHSj^z{F6PkT&=vB0aJPS_0*8~-Au%o%1_r0~
ztSbUEUTCSUVfK9`+0ezhV&0Mk@)?>FPb5TsVd-3`ak$WcSw`GB-Kt51lSSq5p)Z<Z
z9!Hht#x-*uVQ@QNU=Yus-{REw_&_`>xM!p26S>tU_j8m+%YlZ7tUcL}ulZ)1dlr1W
znJrn%&fg&W@c8%B9WIMBmDTR<tqj+i`fvZ9UrSD3e}B_qa(r+7@qg#<{rX-bb?E=r
zv+wnPPQAHb{@C%8_f3C<^3-QoA9nxyy8pHRn!noM9(I4&Vp*G_4=>-JpI9Y(dJ_ki
zOVZ=k%g^hIpV^p1Y|f4S)D^OKn`mF*LWkuS`Cr>E*|8x)L#XM0LPbSI1<Ql}gNK!;
zdC1+XtT282XohAmLjt42|FVyd`0vL}_fX+EJm*fmjhfjpdkY>0HilmhKxYfvbsSCl
zaG#N%pTEAQsh!<bu<vQmv!y!oEWh8l_t!h^T&#uiOcf6i*H)**+T6ce0)x$#ueJL0
zbl=Lu>TmD;TI!*}^uMxz?ZAKe3X5<1ckKW-y%LyuQfCya8-?k5owk^G&}a>Vcuk1-
zMwdI6uI#D4{qCxF_}#sg?8iUWKW=pBOVxa}{l0yt0>{GZ6GgtJ|KEJX=*#ixO?5Jx
zWdt}2`3n9Uwe{~mZ7G)Z=l?P}We)GdNf$Ui{dWB=e^<f8_0`v3^;gbLkox}K{om~<
z_PfC<oewSgl>VQMIsvZSyB2NQ-<<TqzC4PFQE&Rmhy6!BaA^FPd_g30T}kY=5;ngV
zk$is^3C~G%nH2KlKqKS7cLfaUb!)ZuD;mhKiyp9DlK$z8;TAXM(13)T%`cy9<jvfi
zs>7-J(LAM-nWJe@!$XyA+?RuwD7B>Ctk;Z{c@pkd_w<8#t^k8Ugl+T5{9jAHSZ&|n
z=(+iLhUu>Rx6T=uomnW+_UF`t>E0TC=j!hM=I?4@<~wAx=7g1H?aYlVsS@A*e>&s%
zuQlX<ajn4@b0)PCtMeUo?)z=6Q!`kWUT(DK;|EtrGRI$hvFf@KUEN}_`}X!g6~?U-
zQaL6yInPRbsN1BntMq$uSkwwn-NT!#=1x=aJg`x!ch(X~jYT}i9g}x7C1y-o#Jk*x
zqe(HANm)0i_p8kE%h`w9`-RN*#O^GM*FLG((8|^(z9NgG%SnM@OLpmFyT}W7FCX%G
zDDfa~VRpW{<|Jl^^{;P<^kq(ayUF;>fv0T>o<|B!I^9+Eoc8oVM7~7}1ACOS(y#a&
z9zQEnS;mcp!pFa6UM>@;x^!X7L4k}m#f7R{!Vgc#FfviQ6L;jmo&}7~{~wE$B>gy~
z8MZ$3wc+E|)ncbzx5O=1-eu$9Zjumbs>6LbRIFpG(?#0@p}wyyrd@qu^6lNa#(814
z`d1dlge$51{P<cyVp`+U_Mekl`W7k1I$l)ySr|M?<<{0;Kl~>%?_ImKYL&LuDS@eq
zj<U?h{QLhuyzuREeYN7B$N#0DJ$%?Yp`Bez%+oV{`8vCTZvn41aqj#s*KtPna(P|d
zhco}`665?DA6omrx&QTQRC@aMZ?AUA=kJj*(aNkpcJOU{uC#^5l*zZw#qX_py)f4L
z+q%gM*UT;du&ufJo9u6;14k!4IupD-&$i;3!=sjak^J+D86={uedic>W#(r;T@vx>
z=Qic%eErfgt5h#)o;=Mz&(b2Rq-6FoWfQBiXLB+qr>VC5VxOgHvwfb;v`s33t6#pc
z)vCL{vN?L&vM4W>07VZ!i@bM>bgQ?^+Lf=U-;uxC%{Zgz(LZDM>ucxsFTT;Sg!Q-o
zyZI9g$}TLK8T~ECw&vf53o90c`KI454E{FPa!cOZro4A?pT*9}S?7Lw(5QUOU&1lN
zs`haEmzOVfr|iu6ll6Vw;&{Dy)B7PQZxZrn&yDU`$kcV=w9nn^?{9v6y7BJH>`7;r
zOxpNaT+Xh%;@KL*<Yhj6^Q{!^>XsZ*fATpw{;mDb)Q;V%S&L$JsMX$ncz1sN%si#(
z4_Ev+{<?p1(51eb;)+`>5yHXj+Q;)|_sROk&T|PmG2`aR=<jcD)MmVGk(^vM-)fUl
zs?y4rA2_;iR+ij<#~eLJCuN_Z^0mDC6%YPg{J1!o>G0z8Gc&Dn^Cn&LVGE6W^I&7%
z{psySeBbzs-;0TeO3S`__w2|;DLw^IF?rbD^weQyY13bqd9!!jE~(r1_Q1Ny)m*Es
zE|=%MJF%<c#jK}2JLhln((QUbuX4`)oTUMLvX_GIuA6OJf23{cYN5;KEmgOsZi)8o
zem~nP{pAf+P35G;N|Vy=Snq2#l{d?K_9dcm@gC*Z2NwR>%YMCfMb-hsIf)U98T+Rc
z)*fujeY<med0ln#-CZ~3SAF-JZ~pJjvMs;A7a!$V=6Ye<sy&n0_1)A}f_aZF?~n2I
zoM~9(^7)ECTYlWG%0G8{KX|M3&EK1unQw1f_-3kXb{_Nlna0arEtzM$tYux?mdblw
zzJJ@M_{<gl|K-Rx`S+r4ZA(AgTe$Z6Z5gpMGnPGiV?R@LbJ@jZEv(YjE}^eYebxJA
zCfsWM@;0&Pm(1<*GYPrp?oOQV^RM9l8~(G0*1ldo-?}a|v+u5kmNTn{fK<NKhOHm|
z-P}Jl@V5Qz!uOsBuW%Z^o_txQs55v+{<FE-{r61r?(Y5g`|s^7X>p%}CiTT=&JYow
zX_fzTifCrwKfi~ElkHNZdL_j6)SXNZ;*>L5Ab&HW=-G##PgmRX{`t4O#Zq|x-EEgN
zQa;_`WS+j>Zm&k|I{%2wTWyug&DMvvo#~ow6LmxPmgns1S5L0`tMh5veAzzj)1CGG
zv0=h0YG(I$WJjO8yV=~UW6Bl(^7s4iMa=qn_^kR0hZFxCWuH8JXze5?*SE0eO>K3n
zWlqf2eG2=xX{`_Fzum&RYle37W3_KtnL7I`zq<MS;hDK@pYZ0ate{pt$tfGtFYn#c
z^y<~JHP7GIHZ`rAcccDkYFKsg@*CEd?z%m@T3oPRgMH!N^{adHF8})bRMl5>r>pPR
zvrICMhQ_(c$!Ve+5@zqaQS`$%EUcDYTHv1c>wn+d&;7k|?OLZoN9Ua_M&_>*|FLIV
zch}x7PkXxU%GQkCM|mbH-nrlzEaDfDJ)4ao;kjJI%<nHQJgxpY^QP|_i>fC9J&wmz
z{7en6dgj<<eV+Hm;*V_BlNDOkd;h=j&A9B5I8nLnv5tAstB`E=u*HWZLJxm^?f>)|
z-%)w45{DdJQG>L&8CKs<Cx>Tihwk)`Gf>J_^a?RqVcGSeS4QoMXwAm|OnX9qsG0wN
zIr+?^zL}fV_tgFh)0=9)tIRv${@QnE*9zaiSN+p$w%ANImf!Ifo4)T3-}$Pn*DE7i
z%k^E%?!YStRMq+_elNRlG4$uvZ*$jgo*i;FcSdu*@405%>2eB5pI+>no9}(v>UQ>?
zLyK~IKVG=8<3YgbGQT{<OZD68++9@zuit6wI+IW<xA(-G3mJC~C#UAJ#=o=wZ)LoB
zuGp<8Yq6APHmCIx1$(YL%I#Br^6;l{f9E5$X;Puiq1;dJFW=tUljXFbjo-3*+uP~0
zBD-8Fd@DV(D(`+f`#R1}e~qS=;m7bRQ?FV@{QUMI_|A<`TTRc2<?r@1Z(Y7tGCJVe
z%<peL&O6^fYxYT>T6RDAwEG+mcN+d_+`Y3PEnrG1SAn>|)~XOUfmLP<ix#t=z8zwu
zeEHh<_XQ1!606cB{|Efv)U;dZ&b^B)A$2Rhb<bikG2P<u^YBgX=k+HxZkllQ`ZZ35
zM{nO>3=6x#ci@lZ<IvQfJ;5)YD#zci3)OTwabaTciB&;T4Er6{pF5=_$`G7>ygW=a
z;91@M`Bwk${&m{fv6Zv$;E7jk41f0e&U;h+@{Qm!gY@{<FMgf6<;RfJ#+R|?<mS&W
zmaWyxy8e>UVd*omQqiRb&sH4#Yi&Kd*SGhYkAK9r?+4m=izBRWF71)2Ov#DPp2*h_
zc-Y<S`E(5tyY=tIHQw$$v(zd^NpP~PQrPaCOILW0_vd=ePwjfG#id<aef;9uso&1=
zy*=9Mr0_9pmhH*)A2{XwR=xVV;=|Lo(beU#+f1f+uer0hYKPfYqh?{IS*P#qZ2vJ;
ze4hfN7Mp{H`MWncuNV@X-f(Q&b;&35cGT2fra%5G6d=tT4z+;mA{i}Zzx&=5e&N^I
zS-I}VN$0O`3bn5<y{Pl~N$$Z-z1mSy*4;&37Bed!{(Y@<sp#f5+uR+UTNkVhYCY|u
zuzkn5dwP2oul)IM>HGHg|8;WrvU+WOZ~tX&&cWyI-{13q3V`!sQVdg`zR`{KvJ07#
zzW+#%aG%Vr#U<N+CS^uFIHLOV=Jr65_griWvTNrSDhu6G&40c6^l9sz6U+RL?qpqm
z>i$yQS<fVH-HG~A_I;nRj=&A8UGCrB*528<eXr&2id!2u7=Gzla+9(7Dr<k<g=5Fw
za}{ec<jCArZrdTd@y)s|qPny9oy&Ik^Cz=YZsOak_V;%N2dw|#=i_;5)!OXYdvXqk
z6#w4F&p-cewavGLU!2kZ<NhjbQ<L4!GebkjK*oV}#{#48>Dy<nRNwcB<Gu7o>3@P1
zj$Zt&4oNvxuj3kzFPQLT>T11v6>m+eKD|7=cW%y#RPOw9_XVcJN4;P0;&wpXNsl$$
z-KW^pm+Nm#d2;N<WVdU_S1nyLRW9TCpMSNj6I<i`{z)rmr@P&ciMcFhd1m3ZH7~x-
zU6pA)efipQ_1UN2r>xdGeR?)yKvY!P{r!zqJ9#9m7jN<U`nUJ`)yV#{X}LCq1?#(a
zznpbboBf>k`Kq9<WQiZaA3l6oAMyBMVun}V$`>~ezjiLmOO9S1w^(d;q}vzHY%Q%b
zwehRIeEeLpspjVkOLZY-9bGq9m39|ZpZ?P4lO~tXh>py%x;i63OGqJityaY^C7m0)
zEwp#<Saj{!(bc=B*WSAw6S`b1kC8#ZD^<gNrL~FMwX(#-fAaVK#DuNhv|*EisZ`fP
zfy11Z3KQDf*v-PGo0zO9iE>ghXEM2Y@#0IlJBROHv-tcpI&^v4qb0lj-c(gQThisc
zY2N-TFCq_Yyq9PzdhEyS=`*J=q;ux(X8Zl<$-8jzb7mJ}&UJ^&MoB%C=zkC(?yXsJ
z>4qcQmlusfyzjklRk^Z-?m3;E^D<y{X<l8Up4p^1Yre0Yo0Y6By>#o7*f`CmBo$A~
zYW5wsrJtre-CmXz;UaKLeNNWO+P`Y|ubk7>IPmf7<n&`+=JMvdulLX2CV1dZ$g;ff
zWF^hMBAzCtEpg|$s@=YYT%Yo^e#NBIM_>7^jYwmW5E6Z~#qT(SkJhmVOG5OXC+wS>
zC2hVwA%6Ow`S;DTIT#ORl`c7RV#bwKnl6`&l~yd%*uN_5sNt5GhctKWPJh?^+*DVJ
zo7>oFb)p2{pUR4g3dJW6w@y&=T%lmmwos#OqlvG8N*i~Jh2KP#vm2Bqb}aRr*!udK
z?CKEHrFo8Z?$_7<d>N{#cOZbVtw856lTU-8N{KUfOM$FgId7!Q@xT|tj&^c3&lwIF
z^eofJXy<NaI{ce)!KFW!S8tSb@=s!t(QD%7^%mGMPl;pJ(-tMg5V6MA<HvmG=f&(;
zv2*fN50?u9dMaO84m)lXW8A^Cs=xE{w71^nOLSJ|DJ~KE=stVDwP2!#!WWiHSKlaB
zHNEkYVQXBd;&{O2!5T$_S&J+ua<H@6U1Kz#!qLXr+>+So;*{YU#B*o5sZ6PXg}dae
z#;Xmx&TV8^mR2EZc73Zdo3~bjWn#TQuNqH)#?*$yU244TYP(-KP8KO??{3*(a)D2H
zfzI7f4F-w5^NzGCMN}MSXMfz3rgZQ=ufUW48_Ksk28Jfe9C-ix-rb{jQyElSSOdiq
zKjtoNX>|<@%bsX-WrE>ynZTeWHLM{f6F5|RGu6(D8;Pna3${8PUm+;zZQz^ilMrLb
zK1JL(GU5H+>if4M_di?CW&h=m-5vh#Hs9y;|F<lDXT$z;Jp+RyM}tb&t-!`*nGa>n
z*KhxS&-=27lJa3cw?ePgi+;=gHR`h6%%;3GYwF>TE=AY>>}FsPXkqx)XW<#7^3mph
zsi>;V@&ARq3=H54o*K>>F@WxVQe-&4=YoUCfA(H4uzJ4#5$ehxnp942QrXD!_z`QL
z@G&W6_n)gQ=ZUk-OO1$hW0{ver{~2^kw=-)ndhq|UH|2EJiQ}a#Pj;m{Ch`Kir36O
z9joA}biSI)<>Fsa{f-mGj0_D5EF0cFjtDb0O4xSxmHZQb;T1j?rtQ4O`Iw1gsakRL
zy*W37HBX)X&ia>Uwd=Hs{SP)4PZGY$)gvx2b-Lb>j5!kpdJ{V?pZxL4`T4#qSw~_2
zcBfw9<g;!pu1P}aeV41b-=)SZ(lpbvvI=?-qq3G$CfOi*k%s=;HA^fPR@wVE@#!-#
zuqZOfobE9^_v=Z*O4FNFTej8g(ln~Aj*GgbeR|Whn__#!Of^kX_869?KD)j()%fu;
zm$UVoQ}Pop9dg}Wwl4HS*QBn;KckI}wmsAFnq#GA_VY3G(QQ*$Rd<_T;QDkp*}W|1
ze8kMXKP#T5uk4;K^5)jE1uJ{Lf4*O*o%ypmI%o4TmG!qG3X951oc=t!wCLyh^JgRW
zJ2@{{q@sM7je$Y;8pDKCPQ|_EVr$pk3@_R6?YVI1akd$Cho5{{wz&F~Ura|w_0R3c
zif>j{bMZ~7-&vmivT@m|U7!BWzBXt7&EiGh9-Lw6p7lEJ^RZJq%CEV*&RV2?Z0ggr
z@c6eH_P<>Z<#fCKQ8qTUExbEVBegp0;LE?FyOVP>xrGmNndh2EOq13Ld!O(>cIRv@
z>8e%wwWT?y+dlVhpQ6&4eBuKm!+|~lhR6q|zc_MMEMN7lt6y)*q$Rhn=RZw<c5KPo
zla=PCDRUm~+uQ5D$L;q6@z;8+K4$hWGj~>8UU&Idl3(5uyA_|yirafy+E~iD;+Xs2
zUy0AXx~hg_+ILym8@d0V%Jusgy?Uj8g|)SP;yLzL4FB2Z#wO~kuDDozJ%3B3u(R*k
zw;Z?UZnm=5-Cl4t==EdA;|2K~jG&aw$H6MT{7R*}&zuQU_fJc+R?g+tNmS;OUo}f8
zeV)w2{!eGFWExueRNOFC*vPEx&N^GI=YGJ9zblr`y!2}K?e~{D)b2dEee22_c@Zn!
zLmSH6&pF&S4UxTZJuh6#js17!_HEzV_GXlQDJ!?HIP>-EwU9Y`WA5L$uCDoWVSBxi
z=F8Q`R{hrYyB7WI<}^Leiz_@cZyXW;<xz&NVCPs})BAC^BPKjox9*d%%ie!E)h}|=
zK8t^!`}soW?_1OF)n)#AwU$5cqmut~mz^@UU#op@Vc8bZ>C<k$-5-~e7r1gO@BKdo
zZ%;i94&{w>Wwkr>chRKUa_hX>|BrhGt&Z+|HF<Bd-owD`!{xnaO`mR`f8l7geTS(e
zOZfenv#dA|TD_TjQrqbH(UvK-QJG!y{T_Ab@MjA!F)Y~3!(eoLr$$%OoMwro3W6>Z
z0)^Zw0}lm?94v@@!s;1z$%|!T#I&U%CeJImY`PzcxF+~bTPW&v?r6}I^o~WYjjn~K
zY&$1E4e=6vpQOsNm}5@iN3B^&k$nmVjwR<kcSpE=`|`F-|6v@TI){ks|D^Z#k{0ja
zW8gXe=FOY0N$U@aZ%E#d%zV&cC+nR_UV$xhf}Ey^r4*XqD9kcYIXHnMT4jcbV407H
zSBgir(5*{BQ9_|jc1M<oX>C~{#(VB)OjGwt-@R<d&8Fp7&z?CsGFj8>_l0&3H_`vg
zKW5cDJ7f9#TXwlzm{c?ahoVA@VoJAbm*iicGII~*$DhoXcm2=0`hTB^*NlDlUf6Gw
z-upM2!GVL3;en(gWDUI&2WS~Rc=;hnT%m;lv`7%NEE2rL-ihPIEIl4Y9_Q|?UF)Qk
z)i)+Tu`hPYF?jZFXW}KLjoFttoXwpUcF66v@_ONBA=2k-^1r2{mm~3=(Wda6)Z!2C
zR1e4a$=`h^_lHdww0KgpsPeAa?yFgwm!|v4O@B~YbvN_n%9StqeSADSKJQF9`Juu#
zZ~5KVg`SfP;^*=mU$UmBu&zJv-Wpet<=W=ueoeOxFWKCbnJ9aXb?0ZHJ7v31zbspk
zlyc|!cg{o=6;<DJKH<7;hu?0RxjrsFW{-L1qn0ykc-CLHT&Bz7z`?jMdzS6HyT5`f
z@BjC^w`<b$)n%cw6{SywyS4eRy|a%Ajfe``SA6)vge`kFDeZso^6P53&r5yo?@K<t
z>r(F1_3vsvKfh}Ecy62a%4Z&Li+9KC+?%z&y^Ys)RmG&$_gB}}eec_PbhX*^{WE4y
zzGiIm;l-{=$@LYdXHVF-{hh<jd0pb$#B%P${JPS$G&KKR<gT2`tJdrDZ)~Z%HKlW+
zN64=E3>&<@ix|jo>D}I-s(aDH)5~X${nx{f_eXtrd}v#D@8QX5ug})!aQW4~{kiAq
zQP;<{Nfz2`*FMbowPvQ6>Kr@m=T9z{*Y7Btd^|CJ)0@nfZo&Vyy;^dGGi-OUg+xqT
zND8;f^Zd%A^DQ?&OV|JVGN9eu&e;C{#f%M)AHF{)*qp0wml3o3&BP}^uH3mKA1b=;
zW&H<F)tcuOck|c9<P}=vT)M$<K;6mVx>BJg|J1y5?_bKCnPqKmc`!U^r+LlO#gpf=
zJWI1L`1|-;WpT09ZRXG7dT;nkeusXY{5d@R%&B)=JU?nb-d>%3>-@g>`$97et$&|S
z_v82aHTQOWR-1u}Y4x#Y-gLk3o|6s>uK#j>-;G<FH>F(uvSr5tne7VYX-Uui#HMP$
zdQ~@H;{Dq_m+l#-%$_u{Z1YxSRm+P?r=6s<88{RLxL&U|x4m4l=G)C&c6HrT-2Z+*
z(yrz^S=N7e{+lw_b>G{U`}+QTDt)#7_m-VopB6=j?|8HJZ+H67eLpts|9xubt6A~4
zZ9cZC*yZop@JwC*&He4mD_$43y834Xz1Y0pe4UO~b@hGkO8W={MeW_6zRtSZpDLmg
zS^h8TLv_EtRYc&w>&yDyRBrx%vtrYlM{`A`xzl{SODpE&t#|G)e51gyPl|Pp-}RUG
zuYE1u!h7o5+}GTPYwvD<$FjcO=AI^7-0gp#0t~7u%2Us;ReZnlu{c|m^P@v&RlC=j
z&Ex;lHtT=V+gJTDe&71bcfIbvR$9Jo$DzNuvCMv|Pc~ai*Of2%UbfnwCwAABPcLs4
z=k-56vhdrqde(PW{%rXt-Zy)#`M<)K%g(3fO1yaej{Dl1y~|dat-o)7<+g6LXrz=g
z!;jV~hs%pLC55U8c4mkjRmq;UFly?GWvf?(cDsqL&U!H`B~WLQAWvK9?7M5G=5^fg
zxjSd2*Cau{ww9cYT4IVP&1P#IdEt@6>T6s+QS|7tRaGXdW^cc7hP6~t<)l)y?z9!l
zI437Yh^)4Z-zCogDq%kK2!NM3gV+L2kR{J85FyZBp9TRYa3O_X`mtR_vXj)(`rWBV
zUwo`*RcJX7{^nM6Ph6-d`-lIxs^_0B|Nrb-U#r+7hl@tJ8y%EfRYJV1)m(CWGM!c#
zesNrM%v&V$z>lOStn$7!pU<+(n;5bPd%A3VsI+APukI8hCDy0~t!2+<zmNI;>$c_0
zW9>7|uDa-+{Q2~WO8WfCTd!CBvVRjiVdbS_O(CIFFClNGM^4lBPh1t{v}jeZK#^TS
z+o>rUovf*xDJgC*etz}deC1w1q>$jp_d!mT2R&^ru+CZ#=OjIIQpA+7&s91_O9WJk
z9vxm7wz_#knD)u+<Z5qq34R~9vYwmfayD0{3l_vhcKwW+{$bW8E)Q2Pk*iZRjZ@=T
zqn#>r_U^JP`)<Pe<oWKr>;pU>j<gu_`?Od~&nfxl{`j5N;po{1&vn#hfAeK2H+|6g
zltrVn@_fk37N(68-}kce_nf%a_A@Iw`20d6Wv`?aGD6}Lg(ps&CYtc__Z*L@oT=f*
zk3{4=``7tkpWd-nRXq<z=A5@}egRC??uX|0+>+MupLXYJ>HOT&KEkhcjhzZAS6_Xl
zu;wb)r)6auHom=fBrW^=+M;FBGgb!3$2+KRv7b{gzpt=Vy(+_KhvAWT7eDM?T&DJn
zccKsbpCtPq=T_X7n8_aAe*e|!854I$Gi9BhC2PCld5Q53!%IF3540T2IXE-!!&f=4
zjqzEhLnrQB>&eZhvHSNj->a!_Q=j~5+gqQTyz6C;!pEHG&32y(CGOmHx_nA><KK@d
zTXdg=WYlf2+O=JMno5|#hdn#r%FWDr``6=5<JXC`1$Xkw?%2xJ?(gR--FJm|WAyb8
z>3dGJ8v8J+mi4q*yC2r?ap&5(^5k@*dba0M9qDdI8|3@%91h>*Z*jKcbky1~_QbVf
zU2A&JK9(0zh@0_UdY0bDoYrr*0^Z4TUOV=!uaD=`qktyc+T!XZ?ZtP5lARCdbXg=7
zR7dZ-#M+glk#~PajQoZco5{Z(O9p@FZ1g`N!}6i#QM`76(f6z`8+R&gxwHQP`#k;S
z|5~~x$u*^VJvwzFFLSrPzuWh<o$Ir2g=F?L9<UVY+WR-5Y~hWY#nrpgnjcFYZkaIk
z)4$-mAC_O=vhC~L6_Xb}-*v#Reb-*$J32@6*=}4h`2MB2cj7*)3&p|TUA`W2@0>5q
zeZA$I%ewXITnD-{t#95dOiulGh)K<P_qCTB7tYr`!l{?NHA=Q+Ym{fjqSO?#tGBD(
zm8_h2aN^H5&x`*(W%B(oolVN(_er&Xfe+S(%$NTaXME!t%aNSC8Q=F#ITbGS_h{ta
zb&t=f#<T5Q{nV_q>8;?l(l^VN-M(9BoLi^ECm$!i=|ldMXVSv&LKMrl-EAxT@OIu@
zBcDB;tub;oEtAT7cGymSXuiHfNszz7<E3fn7v|q}FSl=b8?!L~@LH}v**mQS*L`6=
zy{@xhRc4&bkNJD2N;R%J@3Y}n6-$}Bw?l2w3;vXf>!+)=j-28u(%Lp(l5;j2`}1!5
z^H2Q(Ch-b3t#<l+QGoTQ+rb03vSqyg$Y04az0I#2Gb^h1z{^S7zr|cXc~gj;Ep?I2
z6iydD^?zrb`kvKjO?|xcUtVK7*UVs<vjqwdgE`|){<srRKmS37X1Q7H`RV)Tv>R`7
z_@jByTC2U-W@eIiip$@FJipnimQ2~N^J2E;zX=~&PW_v5yl76SjoF9yj(0YFb76Rp
zvaa4H_}{OPk7r_Dp4|T|&FuR9b05Dl`SX8W^5~-F-CJdGsl}81&lrmu{t#c8_gu*!
zyz)s!mCg5$Nt26o9<P7)#X~XO+s<lAxvih5P1J*YN&jF5j%mV9Rp)GM!)?qpq}&+x
z%s6E|rP=v^mgafBuQyrPjpWX4U^o-Z^Y41r)>$!kUp<<1HEZ66rW+>?tQKWl(7?*^
zWQi!_!-D}!qTC&YI9#}d8bkw=tc>KR{Mx3(;B_hdwTh^OXr#iP1M~myQ(zWU<?QHK
zUsf2=$iQkC!j-_HtGwcsaMJ3gP*biH--Kn!e{4T)UK$Zud1lY8>z-dDc!k1t3mb$o
zvxs!_=#{xyeBt4B5)3)@S#%ZSQP0r!DXX5fJAm_<n~u<*=c`PF)V0;yL$23{dWtMD
z7K$nH`I)}E%!gS)fW_g%yc+i=Hk}K~Ofz3NF`a$x)XaP6?2H>}k3WNImd!k%mMsUq
zyF3`a7#gi&YAAaX9m2}+cHg-bTntsug#R-zq)CEW#sW^*$qGgl=eJLG)>N+t4KH}Q
L`njxgN@xNAR=<0~

literal 0
HcmV?d00001

diff --git a/wp-content/themes/twentythirteen/search.php b/wp-content/themes/twentythirteen/search.php
new file mode 100644
index 000000000..7839defae
--- /dev/null
+++ b/wp-content/themes/twentythirteen/search.php
@@ -0,0 +1,36 @@
+<?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
new file mode 100644
index 000000000..bb6034c2a
--- /dev/null
+++ b/wp-content/themes/twentythirteen/sidebar-main.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * The sidebar containing the footer widget area.
+ *
+ * If no active widgets in this sidebar, it will be hidden 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
new file mode 100644
index 000000000..750945ccc
--- /dev/null
+++ b/wp-content/themes/twentythirteen/sidebar.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * The sidebar containing the secondary widget area, displays on posts and pages.
+ *
+ * If no active widgets in this sidebar, it will be hidden 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
new file mode 100644
index 000000000..6901828c3
--- /dev/null
+++ b/wp-content/themes/twentythirteen/single.php
@@ -0,0 +1,28 @@
+<?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
new file mode 100644
index 000000000..60d0416d6
--- /dev/null
+++ b/wp-content/themes/twentythirteen/style.css
@@ -0,0 +1,3121 @@
+/*
+Theme Name: Twenty Thirteen
+Theme URI: http://wordpress.org/themes/twentythirteen
+Author: the WordPress team
+Author URI: http://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.0
+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, flexible-width, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-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);
+	position: absolute !important;
+}
+
+.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;
+}
+
+img.alignleft {
+	margin: 5px 20px 5px 0;
+}
+
+.wp-caption.alignleft {
+	margin: 5px 10px 5px 0;
+}
+
+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;
+}
+
+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 {
+	background-color: #220e10;
+	color: #fff;
+}
+
+.nav-menu .sub-menu,
+.nav-menu .children {
+	background-color: #220e10;
+	border: 2px solid #f7f5e7;
+	border-top: 0;
+	display: none;
+	padding: 0;
+	position: absolute;
+	left: -2px;
+	z-index: 99999;
+}
+
+.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 {
+	background-color: #db572f;
+}
+
+ul.nav-menu li:hover > ul,
+.nav-menu ul li:hover > ul {
+	display: block;
+}
+
+.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: 0;
+}
+
+.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 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-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;
+}
+
+/* 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,
+.single-attachment .site-main .sidebar-container {
+	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 p.attachment {
+	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;
+}
+
+
+/**
+ * 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);
+}
+
+.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
+ * ----------------------------------------------------------------------------
+ */
+
+@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) {
+	.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;
+		padding: 12px 0 12px 20px;
+	}
+
+	.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;
+	}
+
+	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) {
+	.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;
+	}
+}
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/tag.php b/wp-content/themes/twentythirteen/tag.php
new file mode 100644
index 000000000..545400549
--- /dev/null
+++ b/wp-content/themes/twentythirteen/tag.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * The template for displaying Tag pages.
+ *
+ * Used to display archive-type pages for posts in a tag.
+ *
+ * Learn more: http://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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/taxonomy-post_format.php b/wp-content/themes/twentythirteen/taxonomy-post_format.php
new file mode 100644
index 000000000..0deb97cce
--- /dev/null
+++ b/wp-content/themes/twentythirteen/taxonomy-post_format.php
@@ -0,0 +1,41 @@
+<?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.
+ *
+ * Learn more: http://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>' . 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(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentytwelve/content-aside.php b/wp-content/themes/twentytwelve/content-aside.php
index c0645018d..4a84ae76d 100644
--- a/wp-content/themes/twentytwelve/content-aside.php
+++ b/wp-content/themes/twentytwelve/content-aside.php
@@ -10,7 +10,7 @@
 
 	<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 		<div class="aside">
-			<h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
+			<h1 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
 			<div class="entry-content">
 				<?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
 			</div><!-- .entry-content -->
diff --git a/wp-content/themes/twentytwelve/content-image.php b/wp-content/themes/twentytwelve/content-image.php
index aee3869d9..a683b83cf 100644
--- a/wp-content/themes/twentytwelve/content-image.php
+++ b/wp-content/themes/twentytwelve/content-image.php
@@ -14,7 +14,7 @@
 		</div><!-- .entry-content -->
 
 		<footer class="entry-meta">
-			<a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark">
+			<a href="<?php the_permalink(); ?>" rel="bookmark">
 				<h1><?php the_title(); ?></h1>
 				<h2><time class="entry-date" datetime="<?php echo esc_attr( get_the_date( 'c' ) ); ?>"><?php echo get_the_date(); ?></time></h2>
 			</a>
diff --git a/wp-content/themes/twentytwelve/content-page.php b/wp-content/themes/twentytwelve/content-page.php
index f00a99c9d..0abcbf791 100644
--- a/wp-content/themes/twentytwelve/content-page.php
+++ b/wp-content/themes/twentytwelve/content-page.php
@@ -10,6 +10,9 @@
 
 	<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 		<header class="entry-header">
+			<?php if ( ! is_page_template( 'page-templates/front-page.php' ) ) : ?>
+			<?php the_post_thumbnail(); ?>
+			<?php endif; ?>
 			<h1 class="entry-title"><?php the_title(); ?></h1>
 		</header>
 
diff --git a/wp-content/themes/twentytwelve/content.php b/wp-content/themes/twentytwelve/content.php
index 90cd694be..bf2936ca2 100644
--- a/wp-content/themes/twentytwelve/content.php
+++ b/wp-content/themes/twentytwelve/content.php
@@ -20,7 +20,7 @@
 			<h1 class="entry-title"><?php the_title(); ?></h1>
 			<?php else : ?>
 			<h1 class="entry-title">
-				<a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
+				<a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
 			</h1>
 			<?php endif; // is_single() ?>
 			<?php if ( comments_open() ) : ?>
diff --git a/wp-content/themes/twentytwelve/editor-style.css b/wp-content/themes/twentytwelve/editor-style.css
index f376dc790..24e9b24f6 100644
--- a/wp-content/themes/twentytwelve/editor-style.css
+++ b/wp-content/themes/twentytwelve/editor-style.css
@@ -308,7 +308,7 @@ img[class*="wp-image-"],
 img[class*="attachment-"] {
 	height: auto; /* Make sure images with WordPress-added height and width attributes are scaled correctly */
 }
-img.mceWPnextpage {
+img.mce-wp-nextpage {
 	border-radius: 0;
 	box-shadow: none;
 }
@@ -339,4 +339,4 @@ img.wp-smiley {
 	line-height: 2;
 	margin: 0 0 24px;
 	margin: 0 0 1.71429rem;
-}
\ No newline at end of file
+}
diff --git a/wp-content/themes/twentytwelve/functions.php b/wp-content/themes/twentytwelve/functions.php
index 760c11323..04981390d 100644
--- a/wp-content/themes/twentytwelve/functions.php
+++ b/wp-content/themes/twentytwelve/functions.php
@@ -83,45 +83,25 @@ add_action( 'after_setup_theme', 'twentytwelve_setup' );
 require( get_template_directory() . '/inc/custom-header.php' );
 
 /**
- * Enqueues scripts and styles for front-end.
+ * Returns the Google font stylesheet URL if available.
  *
- * @since Twenty Twelve 1.0
+ * The use of Open Sans by default is localized. For languages that use
+ * characters not supported by the font, the font can be disabled.
+ *
+ * @since Twenty Twelve 1.2
+ *
+ * @return string Font stylesheet or empty string if disabled.
  */
-function twentytwelve_scripts_styles() {
-	global $wp_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 JavaScript for handling the navigation menu hide-and-show behavior.
-	 */
-	wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
-
-	/*
-	 * Loads our special font CSS file.
-	 *
-	 * The use of Open Sans by default is localized. For languages that use
-	 * characters not supported by the font, the font can be disabled.
-	 *
-	 * To disable in a child theme, use wp_dequeue_style()
-	 * function mytheme_dequeue_fonts() {
-	 *     wp_dequeue_style( 'twentytwelve-fonts' );
-	 * }
-	 * add_action( 'wp_enqueue_scripts', 'mytheme_dequeue_fonts', 11 );
-	 */
+function twentytwelve_get_font_url() {
+	$font_url = '';
 
 	/* translators: If there are characters in your language that are not supported
-	   by Open Sans, translate this to 'off'. Do not translate into your own language. */
+	 by Open Sans, translate this to 'off'. Do not translate into your own language. */
 	if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) {
 		$subsets = 'latin,latin-ext';
 
 		/* translators: To add an additional Open Sans character subset specific to your language, translate
-		   this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */
+		 this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */
 		$subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' );
 
 		if ( 'cyrillic' == $subset )
@@ -136,9 +116,36 @@ function twentytwelve_scripts_styles() {
 			'family' => 'Open+Sans:400italic,700italic,400,700',
 			'subset' => $subsets,
 		);
-		wp_enqueue_style( 'twentytwelve-fonts', add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ), array(), null );
+		$font_url = add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" );
 	}
 
+	return $font_url;
+}
+
+/**
+ * Enqueues scripts and styles for front-end.
+ *
+ * @since Twenty Twelve 1.0
+ */
+function twentytwelve_scripts_styles() {
+	global $wp_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 JavaScript for handling the navigation menu hide-and-show behavior.
+	 */
+	wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
+
+	$font_url = twentytwelve_get_font_url();
+	if ( ! empty( $font_url ) )
+		wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null );
+
 	/*
 	 * Loads our main stylesheet.
 	 */
@@ -152,6 +159,31 @@ function twentytwelve_scripts_styles() {
 }
 add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' );
 
+/**
+ * Adds additional stylesheets to the TinyMCE editor if needed.
+ *
+ * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL.
+ *
+ * @since Twenty Twelve 1.2
+ *
+ * @param string $mce_css CSS path to load in TinyMCE.
+ * @return string
+ */
+function twentytwelve_mce_css( $mce_css ) {
+	$font_url = twentytwelve_get_font_url();
+
+	if ( empty( $font_url ) )
+		return $mce_css;
+
+	if ( ! empty( $mce_css ) )
+		$mce_css .= ',';
+
+	$mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) );
+
+	return $mce_css;
+}
+add_filter( 'mce_css', 'twentytwelve_mce_css' );
+
 /**
  * Creates a nicely formatted and more specific title element text
  * for output in head of document, based on current view.
@@ -248,8 +280,8 @@ function twentytwelve_content_nav( $html_id ) {
 	if ( $wp_query->max_num_pages > 1 ) : ?>
 		<nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
 			<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
-			<div class="nav-previous alignleft"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
-			<div class="nav-next alignright"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?></div>
+			<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
+			<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?></div>
 		</nav><!-- #<?php echo $html_id; ?> .navigation -->
 	<?php endif;
 }
@@ -286,10 +318,10 @@ function twentytwelve_comment( $comment, $args, $depth ) {
 			<header class="comment-meta comment-author vcard">
 				<?php
 					echo get_avatar( $comment, 44 );
-					printf( '<cite class="fn">%1$s %2$s</cite>',
+					printf( '<cite><b class="fn">%1$s</b> %2$s</cite>',
 						get_comment_author_link(),
 						// If current post author is also comment author, make it known visually.
-						( $comment->user_id === $post->post_author ) ? '<span> ' . __( 'Post author', 'twentytwelve' ) . '</span>' : ''
+						( $comment->user_id === $post->post_author ) ? '<span>' . __( 'Post author', 'twentytwelve' ) . '</span>' : ''
 					);
 					printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
 						esc_url( get_comment_link( $comment->comment_ID ) ),
@@ -383,6 +415,7 @@ endif;
  */
 function twentytwelve_body_class( $classes ) {
 	$background_color = get_background_color();
+	$background_image = get_background_image();
 
 	if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) )
 		$classes[] = 'full-width';
@@ -395,10 +428,12 @@ function twentytwelve_body_class( $classes ) {
 			$classes[] = 'two-sidebars';
 	}
 
-	if ( empty( $background_color ) )
-		$classes[] = 'custom-background-empty';
-	elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) )
-		$classes[] = 'custom-background-white';
+	if ( empty( $background_image ) ) {
+		if ( empty( $background_color ) )
+			$classes[] = 'custom-background-empty';
+		elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) )
+			$classes[] = 'custom-background-white';
+	}
 
 	// Enable custom font class only if the font CSS is queued to load.
 	if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) )
@@ -434,8 +469,9 @@ add_action( 'template_redirect', 'twentytwelve_content_width' );
  * @return void
  */
 function twentytwelve_customize_register( $wp_customize ) {
-	$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
-	$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
+	$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', 'twentytwelve_customize_register' );
 
@@ -445,6 +481,6 @@ add_action( 'customize_register', 'twentytwelve_customize_register' );
  * @since Twenty Twelve 1.0
  */
 function twentytwelve_customize_preview_js() {
-	wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20120827', true );
+	wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20130301', true );
 }
 add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );
diff --git a/wp-content/themes/twentytwelve/inc/custom-header.php b/wp-content/themes/twentytwelve/inc/custom-header.php
index f94d0e8f7..595bf98f5 100644
--- a/wp-content/themes/twentytwelve/inc/custom-header.php
+++ b/wp-content/themes/twentytwelve/inc/custom-header.php
@@ -21,7 +21,7 @@
 function twentytwelve_custom_header_setup() {
 	$args = array(
 		// Text color and image (empty to use none).
-		'default-text-color'     => '444',
+		'default-text-color'     => '515151',
 		'default-image'          => '',
 
 		// Set height and width, with a maximum value for the width.
@@ -46,10 +46,24 @@ function twentytwelve_custom_header_setup() {
 }
 add_action( 'after_setup_theme', 'twentytwelve_custom_header_setup' );
 
+/**
+ * Loads our special font CSS file.
+ *
+ * @since Twenty Twelve 1.2
+ *
+ * @return void
+ */
+function twentytwelve_custom_header_fonts() {
+	$font_url = twentytwelve_get_font_url();
+	if ( ! empty( $font_url ) )
+		wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null );
+}
+add_action( 'admin_print_styles-appearance_page_custom-header', 'twentytwelve_custom_header_fonts' );
+
 /**
  * Styles the header text displayed on the blog.
  *
- * get_header_textcolor() options: 444 is default, hide text (returns 'blank'), or any hex value.
+ * get_header_textcolor() options: 515151 is default, hide text (returns 'blank'), or any hex value.
  *
  * @since Twenty Twelve 1.0
  */
@@ -62,14 +76,14 @@ function twentytwelve_header_style() {
 
 	// If we get this far, we have custom styles.
 	?>
-	<style type="text/css">
+	<style type="text/css" id="twentytwelve-header-css">
 	<?php
 		// Has the text been hidden?
 		if ( ! display_header_text() ) :
 	?>
 		.site-title,
 		.site-description {
-			position: absolute !important;
+			position: absolute;
 			clip: rect(1px 1px 1px 1px); /* IE7 */
 			clip: rect(1px, 1px, 1px, 1px);
 		}
@@ -77,9 +91,9 @@ function twentytwelve_header_style() {
 		// If the user has set a custom color for the text, use that.
 		else :
 	?>
-		.site-title a,
-		.site-description {
-			color: #<?php echo $text_color; ?> !important;
+		.site-header h1 a,
+		.site-header h2 {
+			color: #<?php echo $text_color; ?>;
 		}
 	<?php endif; ?>
 	</style>
@@ -93,29 +107,30 @@ function twentytwelve_header_style() {
  */
 function twentytwelve_admin_header_style() {
 ?>
-	<style type="text/css">
+	<style type="text/css" id="twentytwelve-admin-header-css">
 	.appearance_page_custom-header #headimg {
 		border: none;
+		font-family: "Open Sans", Helvetica, Arial, sans-serif;
 	}
 	#headimg h1,
 	#headimg h2 {
-		line-height: 1.6;
+		line-height: 1.84615;
 		margin: 0;
 		padding: 0;
 	}
 	#headimg h1 {
-		font-size: 30px;
+		font-size: 26px;
 	}
 	#headimg h1 a {
 		color: #515151;
 		text-decoration: none;
 	}
 	#headimg h1 a:hover {
-		color: #21759b;
+		color: #21759b !important; /* Has to override custom inline style. */
 	}
 	#headimg h2 {
 		color: #757575;
-		font: normal 13px/1.8 "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
+		font-size: 13px;
 		margin-bottom: 24px;
 	}
 	#headimg img {
@@ -140,8 +155,8 @@ function twentytwelve_admin_header_image() {
 		else
 			$style = ' style="color:#' . get_header_textcolor() . ';"';
 		?>
-		<h1><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
-		<h2 id="desc"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></h2>
+		<h1 class="displaying-header-text"><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
+		<h2 id="desc" class="displaying-header-text"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></h2>
 		<?php $header_image = get_header_image();
 		if ( ! empty( $header_image ) ) : ?>
 			<img src="<?php echo esc_url( $header_image ); ?>" class="header-image" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" />
diff --git a/wp-content/themes/twentytwelve/js/theme-customizer.js b/wp-content/themes/twentytwelve/js/theme-customizer.js
index c1018b05c..bde05d9c5 100644
--- a/wp-content/themes/twentytwelve/js/theme-customizer.js
+++ b/wp-content/themes/twentytwelve/js/theme-customizer.js
@@ -9,24 +9,56 @@
 	// Site title and description.
 	wp.customize( 'blogname', function( value ) {
 		value.bind( function( to ) {
-			$( '.site-title a' ).html( to );
+			$( '.site-title a' ).text( to );
 		} );
 	} );
 	wp.customize( 'blogdescription', function( value ) {
 		value.bind( function( to ) {
-			$( '.site-description' ).html( to );
+			$( '.site-description' ).text( to );
 		} );
 	} );
 
-	// Hook into background color change and adjust body class value as needed.
+	// Header text color
+	wp.customize( 'header_textcolor', function( value ) {
+		value.bind( function( to ) {
+			if ( 'blank' === to ) {
+				$( '.site-title, .site-title a, .site-description' ).css( {
+					'clip': 'rect(1px, 1px, 1px, 1px)',
+					'position': 'absolute'
+				} );
+			} else {
+				$( '.site-title, .site-title a, .site-description' ).css( {
+					'clip': 'auto',
+					'color': to,
+					'position': 'relative'
+				} );
+			}
+		} );
+	} );
+
+	// Hook into background color/image change and adjust body class value as needed.
 	wp.customize( 'background_color', function( value ) {
 		value.bind( function( to ) {
-			if ( '#ffffff' == to || '#fff' == to )
-				$( 'body' ).addClass( 'custom-background-white' );
-			else if ( '' == to )
-				$( 'body' ).addClass( 'custom-background-empty' );
+			var body = $( 'body' );
+
+			if ( ( '#ffffff' == to || '#fff' == to ) && 'none' == body.css( 'background-image' ) )
+				body.addClass( 'custom-background-white' );
+			else if ( '' == to && 'none' == body.css( 'background-image' ) )
+				body.addClass( 'custom-background-empty' );
 			else
-				$( 'body' ).removeClass( 'custom-background-empty custom-background-white' );
+				body.removeClass( 'custom-background-empty custom-background-white' );
+		} );
+	} );
+	wp.customize( 'background_image', function( value ) {
+		value.bind( function( to ) {
+			var body = $( 'body' );
+
+			if ( '' != to )
+				body.removeClass( 'custom-background-empty custom-background-white' );
+			else if ( 'rgb(255, 255, 255)' == body.css( 'background-color' ) )
+				body.addClass( 'custom-background-white' );
+			else if ( 'rgb(230, 230, 230)' == body.css( 'background-color' ) && '' == _wpCustomizeSettings.values.background_color )
+				body.addClass( 'custom-background-empty' );
 		} );
 	} );
-} )( jQuery );
\ No newline at end of file
+} )( jQuery );
diff --git a/wp-content/themes/twentytwelve/languages/twentytwelve.pot b/wp-content/themes/twentytwelve/languages/twentytwelve.pot
index 2a8843418..cf8d7be99 100644
--- a/wp-content/themes/twentytwelve/languages/twentytwelve.pot
+++ b/wp-content/themes/twentytwelve/languages/twentytwelve.pot
@@ -2,9 +2,9 @@
 # This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Twelve 1.1\n"
+"Project-Id-Version: Twenty Twelve 1.2\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentytwelve\n"
-"POT-Creation-Date: 2013-04-26 13:58:46+00:00\n"
+"POT-Creation-Date: 2013-08-01 18:14:15+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -82,17 +82,16 @@ msgstr ""
 msgid "Comments are closed."
 msgstr ""
 
-#: content-aside.php:13 content-aside.php:20 content-image.php:17
-#: content-link.php:18 content-quote.php:17 content-status.php:15
-#: content.php:23
-msgid "Permalink to %s"
-msgstr ""
-
 #: content-aside.php:15 content-image.php:13 content-link.php:14
 #: content-quote.php:13 content-status.php:21 content.php:39
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
+#: content-aside.php:20 content-link.php:18 content-quote.php:17
+#: content-status.php:15
+msgid "Permalink to %s"
+msgstr ""
+
 #: content-aside.php:23 content-image.php:23 content-link.php:21
 #: content-quote.php:20 content-status.php:27 content.php:28
 msgid "Leave a reply"
@@ -109,8 +108,8 @@ msgid "% Replies"
 msgstr ""
 
 #: content-aside.php:26 content-image.php:26 content-link.php:24
-#: content-page.php:21 content-quote.php:23 content-status.php:30
-#: content.php:46 functions.php:309 image.php:37
+#: content-page.php:24 content-quote.php:23 content-status.php:30
+#: content.php:46 functions.php:341 image.php:37
 msgid "Edit"
 msgstr ""
 
@@ -128,7 +127,7 @@ msgid ""
 "related post."
 msgstr ""
 
-#: content-page.php:18 content.php:40 image.php:92
+#: content-page.php:21 content.php:40 image.php:92
 msgid "Pages:"
 msgstr ""
 
@@ -140,7 +139,7 @@ msgstr ""
 msgid "View all posts by %s <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#. #-#-#-#-#  twentytwelve.pot (Twenty Twelve 1.1)  #-#-#-#-#
+#. #-#-#-#-#  twentytwelve.pot (Twenty Twelve 1.2)  #-#-#-#-#
 #. Author URI of the plugin/theme
 #: footer.php:17
 msgid "http://wordpress.org/"
@@ -159,111 +158,111 @@ msgid "Primary Menu"
 msgstr ""
 
 #. translators: If there are characters in your language that are not supported
-#. 	   by Open Sans, translate this to 'off'. Do not translate into your own
+#. 	 by Open Sans, translate this to 'off'. Do not translate into your own
 #. language.
-#: functions.php:120
+#: functions.php:100
 msgctxt "Open Sans font: on or off"
 msgid "on"
 msgstr ""
 
 #. translators: To add an additional Open Sans character subset specific to
 #. your language, translate
-#. 		   this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your
+#. 		 this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your
 #. own language.
-#: functions.php:125
+#: functions.php:105
 msgctxt "Open Sans font: add new subset (greek, cyrillic, vietnamese)"
 msgid "no-subset"
 msgstr ""
 
-#: functions.php:181
+#: functions.php:213
 msgid "Page %s"
 msgstr ""
 
-#: functions.php:206
+#: functions.php:238
 msgid "Main Sidebar"
 msgstr ""
 
-#: functions.php:208
+#: functions.php:240
 msgid ""
 "Appears on posts and pages except the optional Front Page template, which "
 "has its own widgets"
 msgstr ""
 
-#: functions.php:216
+#: functions.php:248
 msgid "First Front Page Widget Area"
 msgstr ""
 
-#: functions.php:218 functions.php:228
+#: functions.php:250 functions.php:260
 msgid ""
 "Appears when using the optional Front Page template with a page set as "
 "Static Front Page"
 msgstr ""
 
-#: functions.php:226
+#: functions.php:258
 msgid "Second Front Page Widget Area"
 msgstr ""
 
-#: functions.php:250 single.php:20
+#: functions.php:282 single.php:20
 msgid "Post navigation"
 msgstr ""
 
-#: functions.php:251
+#: functions.php:283
 msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
 msgstr ""
 
-#: functions.php:252
+#: functions.php:284
 msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#: functions.php:277
+#: functions.php:309
 msgid "Pingback:"
 msgstr ""
 
-#: functions.php:277
+#: functions.php:309
 msgid "(Edit)"
 msgstr ""
 
-#: functions.php:292
+#: functions.php:324
 msgid "Post author"
 msgstr ""
 
 #. translators: 1: date, 2: time
-#: functions.php:298
+#: functions.php:330
 msgid "%1$s at %2$s"
 msgstr ""
 
-#: functions.php:304
+#: functions.php:336
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
-#: functions.php:313
+#: functions.php:345
 msgid "Reply"
 msgstr ""
 
 #. Translators: used between list items, there is a space after the comma.
-#: functions.php:332 functions.php:335
+#: functions.php:364 functions.php:367
 msgid ", "
 msgstr ""
 
-#: functions.php:346
+#: functions.php:378
 msgid "View all posts by %s"
 msgstr ""
 
 #. Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's
 #. name.
-#: functions.php:352
+#: functions.php:384
 msgid ""
 "This entry was posted in %1$s and tagged %2$s on %3$s<span class=\"by-author"
 "\"> by %4$s</span>."
 msgstr ""
 
-#: functions.php:354
+#: functions.php:386
 msgid ""
 "This entry was posted in %1$s on %3$s<span class=\"by-author\"> by %4$s</"
 "span>."
 msgstr ""
 
-#: functions.php:356
+#: functions.php:388
 msgid "This entry was posted on %3$s<span class=\"by-author\"> by %4$s</span>."
 msgstr ""
 
@@ -329,7 +328,7 @@ msgid "Twenty Twelve"
 msgstr ""
 
 #. Theme URI of the plugin/theme
-msgid "http://wordpress.org/extend/themes/twentytwelve"
+msgid "http://wordpress.org/themes/twentytwelve"
 msgstr ""
 
 #. Description of the plugin/theme
diff --git a/wp-content/themes/twentytwelve/rtl.css b/wp-content/themes/twentytwelve/rtl.css
index cb989a136..1055f9cca 100644
--- a/wp-content/themes/twentytwelve/rtl.css
+++ b/wp-content/themes/twentytwelve/rtl.css
@@ -117,7 +117,7 @@ article.format-link .entry-content {
 	left: 0;
 	right: auto;
 }
-.comments-area li.bypostauthor cite span {
+.comments-area .bypostauthor cite span {
 	margin-right: 5px;
 	margin-right: 0.357142857rem;
 	margin-left: auto;
diff --git a/wp-content/themes/twentytwelve/style.css b/wp-content/themes/twentytwelve/style.css
index 6b89df372..95892b71a 100644
--- a/wp-content/themes/twentytwelve/style.css
+++ b/wp-content/themes/twentytwelve/style.css
@@ -1,10 +1,10 @@
 /*
 Theme Name: Twenty Twelve
-Theme URI: http://wordpress.org/extend/themes/twentytwelve
+Theme URI: http://wordpress.org/themes/twentytwelve
 Author: the WordPress team
 Author URI: http://wordpress.org/
 Description: The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.
-Version: 1.1
+Version: 1.2
 License: GNU General Public License v2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: light, gray, white, one-column, two-columns, right-sidebar, flexible-width, 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
@@ -214,7 +214,7 @@ textarea {
 }
 button,
 input {
-    line-height: normal;
+	line-height: normal;
 }
 textarea {
 	font-size: 100%;
@@ -240,7 +240,7 @@ input[type="submit"],
 input[type="button"],
 input[type="reset"],
 article.post-password-required input[type=submit],
-li.bypostauthor cite span {
+.bypostauthor cite span {
 	padding: 6px 10px;
 	padding: 0.428571429rem 0.714285714rem;
 	font-size: 11px;
@@ -268,7 +268,7 @@ input[type="reset"] {
 }
 button[disabled],
 input[disabled] {
-    cursor: default;
+	cursor: default;
 }
 .menu-toggle:hover,
 button:hover,
@@ -300,9 +300,9 @@ input[type="reset"]:active {
 	background-image: -o-linear-gradient(top, #ebebeb, #e1e1e1);
 	background-image: linear-gradient(top, #ebebeb, #e1e1e1);
 	box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4;
-	border: none;
+	border-color: transparent;
 }
-li.bypostauthor cite span {
+.bypostauthor cite span {
 	color: #fff;
 	background-color: #21759b;
 	background-image: none;
@@ -505,8 +505,6 @@ a:hover {
 	position: absolute !important;
 	clip: rect(1px, 1px, 1px, 1px);
 }
-.main-navigation .assistive-text:hover,
-.main-navigation .assistive-text:active,
 .main-navigation .assistive-text:focus {
 	background: #fff;
 	border: 2px solid #333;
@@ -648,6 +646,9 @@ section[role="banner"] {
 .widget-area .widget a:hover {
 	color: #21759b;
 }
+.widget-area .widget a:visited {
+	color: #9f9f9f;
+}
 .widget-area #s {
 	width: 53.66666666666%; /* define a width to avoid dropping a wider submit button */
 }
@@ -797,6 +798,10 @@ article.sticky .featured-post {
 	margin: 0 0 1.714285714rem;
 	line-height: 1.714285714;
 }
+.entry-content a:visited,
+.comment-content a:visited {
+	color: #9f9f9f;
+}
 .entry-content ol,
 .comment-content ol,
 .entry-content ul,
@@ -884,15 +889,19 @@ article.sticky .featured-post {
 	margin: 0 0 24px;
 	margin: 0 0 1.714285714rem;
 }
-img.alignleft {
+img.alignleft,
+.wp-caption.alignleft {
 	margin: 12px 24px 12px 0;
 	margin: 0.857142857rem 1.714285714rem 0.857142857rem 0;
 }
-img.alignright {
+img.alignright,
+.wp-caption.alignright {
 	margin: 12px 0 12px 24px;
 	margin: 0.857142857rem 0 0.857142857rem 1.714285714rem;
 }
-img.aligncenter {
+img.aligncenter,
+.wp-caption.aligncenter {
+	clear: both;
 	margin-top: 12px;
 	margin-top: 0.857142857rem;
 	margin-bottom: 12px;
@@ -1189,6 +1198,9 @@ article.format-quote .entry-content blockquote {
 	font-size: 1.071428571rem;
 	line-height: 1.42857143;
 }
+.comments-area cite b {
+	font-weight: normal;
+}
 .comments-area article header time {
 	line-height: 1.714285714;
 	text-decoration: none;
@@ -1229,7 +1241,7 @@ article.format-quote .entry-content blockquote {
 	border-radius: 3px;
 	border: 1px solid #007cbd;
 }
-.comments-area li.bypostauthor cite span {
+.comments-area .bypostauthor cite span {
 	position: absolute;
 	margin-left: 5px;
 	margin-left: 0.357142857rem;
@@ -1238,6 +1250,9 @@ article.format-quote .entry-content blockquote {
 	font-size: 10px;
 	font-size: 0.714285714rem;
 }
+.comments-area .bypostauthor cite b {
+	font-weight: bold;
+}
 a.comment-reply-link,
 a.comment-edit-link {
 	color: #686868;
diff --git a/wp-includes/ID3/getid3.lib.php b/wp-includes/ID3/getid3.lib.php
new file mode 100644
index 000000000..f8df23348
--- /dev/null
+++ b/wp-includes/ID3/getid3.lib.php
@@ -0,0 +1,1341 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// getid3.lib.php - part of getID3()                           //
+// See readme.txt for more details                             //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+class getid3_lib
+{
+
+	public static function PrintHexBytes($string, $hex=true, $spaces=true, $htmlencoding='UTF-8') {
+		$returnstring = '';
+		for ($i = 0; $i < strlen($string); $i++) {
+			if ($hex) {
+				$returnstring .= str_pad(dechex(ord($string{$i})), 2, '0', STR_PAD_LEFT);
+			} else {
+				$returnstring .= ' '.(preg_match("#[\x20-\x7E]#", $string{$i}) ? $string{$i} : '¤');
+			}
+			if ($spaces) {
+				$returnstring .= ' ';
+			}
+		}
+		if (!empty($htmlencoding)) {
+			if ($htmlencoding === true) {
+				$htmlencoding = 'UTF-8'; // prior to getID3 v1.9.0 the function's 4th parameter was boolean
+			}
+			$returnstring = htmlentities($returnstring, ENT_QUOTES, $htmlencoding);
+		}
+		return $returnstring;
+	}
+
+	public static function trunc($floatnumber) {
+		// truncates a floating-point number at the decimal point
+		// returns int (if possible, otherwise float)
+		if ($floatnumber >= 1) {
+			$truncatednumber = floor($floatnumber);
+		} elseif ($floatnumber <= -1) {
+			$truncatednumber = ceil($floatnumber);
+		} else {
+			$truncatednumber = 0;
+		}
+		if (self::intValueSupported($truncatednumber)) {
+			$truncatednumber = (int) $truncatednumber;
+		}
+		return $truncatednumber;
+	}
+
+
+	public static function safe_inc(&$variable, $increment=1) {
+		if (isset($variable)) {
+			$variable += $increment;
+		} else {
+			$variable = $increment;
+		}
+		return true;
+	}
+
+	public static function CastAsInt($floatnum) {
+		// convert to float if not already
+		$floatnum = (float) $floatnum;
+
+		// convert a float to type int, only if possible
+		if (self::trunc($floatnum) == $floatnum) {
+			// it's not floating point
+			if (self::intValueSupported($floatnum)) {
+				// it's within int range
+				$floatnum = (int) $floatnum;
+			}
+		}
+		return $floatnum;
+	}
+
+	public static function intValueSupported($num) {
+		// check if integers are 64-bit
+		static $hasINT64 = null;
+		if ($hasINT64 === null) { // 10x faster than is_null()
+			$hasINT64 = is_int(pow(2, 31)); // 32-bit int are limited to (2^31)-1
+			if (!$hasINT64 && !defined('PHP_INT_MIN')) {
+				define('PHP_INT_MIN', ~PHP_INT_MAX);
+			}
+		}
+		// if integers are 64-bit - no other check required
+		if ($hasINT64 || (($num <= PHP_INT_MAX) && ($num >= PHP_INT_MIN))) {
+			return true;
+		}
+		return false;
+	}
+
+	public static function DecimalizeFraction($fraction) {
+		list($numerator, $denominator) = explode('/', $fraction);
+		return $numerator / ($denominator ? $denominator : 1);
+	}
+
+
+	public static function DecimalBinary2Float($binarynumerator) {
+		$numerator   = self::Bin2Dec($binarynumerator);
+		$denominator = self::Bin2Dec('1'.str_repeat('0', strlen($binarynumerator)));
+		return ($numerator / $denominator);
+	}
+
+
+	public static function NormalizeBinaryPoint($binarypointnumber, $maxbits=52) {
+		// http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html
+		if (strpos($binarypointnumber, '.') === false) {
+			$binarypointnumber = '0.'.$binarypointnumber;
+		} elseif ($binarypointnumber{0} == '.') {
+			$binarypointnumber = '0'.$binarypointnumber;
+		}
+		$exponent = 0;
+		while (($binarypointnumber{0} != '1') || (substr($binarypointnumber, 1, 1) != '.')) {
+			if (substr($binarypointnumber, 1, 1) == '.') {
+				$exponent--;
+				$binarypointnumber = substr($binarypointnumber, 2, 1).'.'.substr($binarypointnumber, 3);
+			} else {
+				$pointpos = strpos($binarypointnumber, '.');
+				$exponent += ($pointpos - 1);
+				$binarypointnumber = str_replace('.', '', $binarypointnumber);
+				$binarypointnumber = $binarypointnumber{0}.'.'.substr($binarypointnumber, 1);
+			}
+		}
+		$binarypointnumber = str_pad(substr($binarypointnumber, 0, $maxbits + 2), $maxbits + 2, '0', STR_PAD_RIGHT);
+		return array('normalized'=>$binarypointnumber, 'exponent'=>(int) $exponent);
+	}
+
+
+	public static function Float2BinaryDecimal($floatvalue) {
+		// http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html
+		$maxbits = 128; // to how many bits of precision should the calculations be taken?
+		$intpart   = self::trunc($floatvalue);
+		$floatpart = abs($floatvalue - $intpart);
+		$pointbitstring = '';
+		while (($floatpart != 0) && (strlen($pointbitstring) < $maxbits)) {
+			$floatpart *= 2;
+			$pointbitstring .= (string) self::trunc($floatpart);
+			$floatpart -= self::trunc($floatpart);
+		}
+		$binarypointnumber = decbin($intpart).'.'.$pointbitstring;
+		return $binarypointnumber;
+	}
+
+
+	public static function Float2String($floatvalue, $bits) {
+		// http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee-expl.html
+		switch ($bits) {
+			case 32:
+				$exponentbits = 8;
+				$fractionbits = 23;
+				break;
+
+			case 64:
+				$exponentbits = 11;
+				$fractionbits = 52;
+				break;
+
+			default:
+				return false;
+				break;
+		}
+		if ($floatvalue >= 0) {
+			$signbit = '0';
+		} else {
+			$signbit = '1';
+		}
+		$normalizedbinary  = self::NormalizeBinaryPoint(self::Float2BinaryDecimal($floatvalue), $fractionbits);
+		$biasedexponent    = pow(2, $exponentbits - 1) - 1 + $normalizedbinary['exponent']; // (127 or 1023) +/- exponent
+		$exponentbitstring = str_pad(decbin($biasedexponent), $exponentbits, '0', STR_PAD_LEFT);
+		$fractionbitstring = str_pad(substr($normalizedbinary['normalized'], 2), $fractionbits, '0', STR_PAD_RIGHT);
+
+		return self::BigEndian2String(self::Bin2Dec($signbit.$exponentbitstring.$fractionbitstring), $bits % 8, false);
+	}
+
+
+	public static function LittleEndian2Float($byteword) {
+		return self::BigEndian2Float(strrev($byteword));
+	}
+
+
+	public static function BigEndian2Float($byteword) {
+		// ANSI/IEEE Standard 754-1985, Standard for Binary Floating Point Arithmetic
+		// http://www.psc.edu/general/software/packages/ieee/ieee.html
+		// http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee.html
+
+		$bitword = self::BigEndian2Bin($byteword);
+		if (!$bitword) {
+			return 0;
+		}
+		$signbit = $bitword{0};
+
+		switch (strlen($byteword) * 8) {
+			case 32:
+				$exponentbits = 8;
+				$fractionbits = 23;
+				break;
+
+			case 64:
+				$exponentbits = 11;
+				$fractionbits = 52;
+				break;
+
+			case 80:
+				// 80-bit Apple SANE format
+				// http://www.mactech.com/articles/mactech/Vol.06/06.01/SANENormalized/
+				$exponentstring = substr($bitword, 1, 15);
+				$isnormalized = intval($bitword{16});
+				$fractionstring = substr($bitword, 17, 63);
+				$exponent = pow(2, self::Bin2Dec($exponentstring) - 16383);
+				$fraction = $isnormalized + self::DecimalBinary2Float($fractionstring);
+				$floatvalue = $exponent * $fraction;
+				if ($signbit == '1') {
+					$floatvalue *= -1;
+				}
+				return $floatvalue;
+				break;
+
+			default:
+				return false;
+				break;
+		}
+		$exponentstring = substr($bitword, 1, $exponentbits);
+		$fractionstring = substr($bitword, $exponentbits + 1, $fractionbits);
+		$exponent = self::Bin2Dec($exponentstring);
+		$fraction = self::Bin2Dec($fractionstring);
+
+		if (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction != 0)) {
+			// Not a Number
+			$floatvalue = false;
+		} elseif (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction == 0)) {
+			if ($signbit == '1') {
+				$floatvalue = '-infinity';
+			} else {
+				$floatvalue = '+infinity';
+			}
+		} elseif (($exponent == 0) && ($fraction == 0)) {
+			if ($signbit == '1') {
+				$floatvalue = -0;
+			} else {
+				$floatvalue = 0;
+			}
+			$floatvalue = ($signbit ? 0 : -0);
+		} elseif (($exponent == 0) && ($fraction != 0)) {
+			// These are 'unnormalized' values
+			$floatvalue = pow(2, (-1 * (pow(2, $exponentbits - 1) - 2))) * self::DecimalBinary2Float($fractionstring);
+			if ($signbit == '1') {
+				$floatvalue *= -1;
+			}
+		} elseif ($exponent != 0) {
+			$floatvalue = pow(2, ($exponent - (pow(2, $exponentbits - 1) - 1))) * (1 + self::DecimalBinary2Float($fractionstring));
+			if ($signbit == '1') {
+				$floatvalue *= -1;
+			}
+		}
+		return (float) $floatvalue;
+	}
+
+
+	public static function BigEndian2Int($byteword, $synchsafe=false, $signed=false) {
+		$intvalue = 0;
+		$bytewordlen = strlen($byteword);
+		if ($bytewordlen == 0) {
+			return false;
+		}
+		for ($i = 0; $i < $bytewordlen; $i++) {
+			if ($synchsafe) { // disregard MSB, effectively 7-bit bytes
+				//$intvalue = $intvalue | (ord($byteword{$i}) & 0x7F) << (($bytewordlen - 1 - $i) * 7); // faster, but runs into problems past 2^31 on 32-bit systems
+				$intvalue += (ord($byteword{$i}) & 0x7F) * pow(2, ($bytewordlen - 1 - $i) * 7);
+			} else {
+				$intvalue += ord($byteword{$i}) * pow(256, ($bytewordlen - 1 - $i));
+			}
+		}
+		if ($signed && !$synchsafe) {
+			// synchsafe ints are not allowed to be signed
+			if ($bytewordlen <= PHP_INT_SIZE) {
+				$signMaskBit = 0x80 << (8 * ($bytewordlen - 1));
+				if ($intvalue & $signMaskBit) {
+					$intvalue = 0 - ($intvalue & ($signMaskBit - 1));
+				}
+			} else {
+				throw new Exception('ERROR: Cannot have signed integers larger than '.(8 * PHP_INT_SIZE).'-bits ('.strlen($byteword).') in self::BigEndian2Int()');
+				break;
+			}
+		}
+		return self::CastAsInt($intvalue);
+	}
+
+
+	public static function LittleEndian2Int($byteword, $signed=false) {
+		return self::BigEndian2Int(strrev($byteword), false, $signed);
+	}
+
+
+	public static function BigEndian2Bin($byteword) {
+		$binvalue = '';
+		$bytewordlen = strlen($byteword);
+		for ($i = 0; $i < $bytewordlen; $i++) {
+			$binvalue .= str_pad(decbin(ord($byteword{$i})), 8, '0', STR_PAD_LEFT);
+		}
+		return $binvalue;
+	}
+
+
+	public static function BigEndian2String($number, $minbytes=1, $synchsafe=false, $signed=false) {
+		if ($number < 0) {
+			throw new Exception('ERROR: self::BigEndian2String() does not support negative numbers');
+		}
+		$maskbyte = (($synchsafe || $signed) ? 0x7F : 0xFF);
+		$intstring = '';
+		if ($signed) {
+			if ($minbytes > PHP_INT_SIZE) {
+				throw new Exception('ERROR: Cannot have signed integers larger than '.(8 * PHP_INT_SIZE).'-bits in self::BigEndian2String()');
+			}
+			$number = $number & (0x80 << (8 * ($minbytes - 1)));
+		}
+		while ($number != 0) {
+			$quotient = ($number / ($maskbyte + 1));
+			$intstring = chr(ceil(($quotient - floor($quotient)) * $maskbyte)).$intstring;
+			$number = floor($quotient);
+		}
+		return str_pad($intstring, $minbytes, "\x00", STR_PAD_LEFT);
+	}
+
+
+	public static function Dec2Bin($number) {
+		while ($number >= 256) {
+			$bytes[] = (($number / 256) - (floor($number / 256))) * 256;
+			$number = floor($number / 256);
+		}
+		$bytes[] = $number;
+		$binstring = '';
+		for ($i = 0; $i < count($bytes); $i++) {
+			$binstring = (($i == count($bytes) - 1) ? decbin($bytes[$i]) : str_pad(decbin($bytes[$i]), 8, '0', STR_PAD_LEFT)).$binstring;
+		}
+		return $binstring;
+	}
+
+
+	public static function Bin2Dec($binstring, $signed=false) {
+		$signmult = 1;
+		if ($signed) {
+			if ($binstring{0} == '1') {
+				$signmult = -1;
+			}
+			$binstring = substr($binstring, 1);
+		}
+		$decvalue = 0;
+		for ($i = 0; $i < strlen($binstring); $i++) {
+			$decvalue += ((int) substr($binstring, strlen($binstring) - $i - 1, 1)) * pow(2, $i);
+		}
+		return self::CastAsInt($decvalue * $signmult);
+	}
+
+
+	public static function Bin2String($binstring) {
+		// return 'hi' for input of '0110100001101001'
+		$string = '';
+		$binstringreversed = strrev($binstring);
+		for ($i = 0; $i < strlen($binstringreversed); $i += 8) {
+			$string = chr(self::Bin2Dec(strrev(substr($binstringreversed, $i, 8)))).$string;
+		}
+		return $string;
+	}
+
+
+	public static function LittleEndian2String($number, $minbytes=1, $synchsafe=false) {
+		$intstring = '';
+		while ($number > 0) {
+			if ($synchsafe) {
+				$intstring = $intstring.chr($number & 127);
+				$number >>= 7;
+			} else {
+				$intstring = $intstring.chr($number & 255);
+				$number >>= 8;
+			}
+		}
+		return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
+	}
+
+
+	public static function array_merge_clobber($array1, $array2) {
+		// written by kcØhireability*com
+		// taken from http://www.php.net/manual/en/function.array-merge-recursive.php
+		if (!is_array($array1) || !is_array($array2)) {
+			return false;
+		}
+		$newarray = $array1;
+		foreach ($array2 as $key => $val) {
+			if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) {
+				$newarray[$key] = self::array_merge_clobber($newarray[$key], $val);
+			} else {
+				$newarray[$key] = $val;
+			}
+		}
+		return $newarray;
+	}
+
+
+	public static function array_merge_noclobber($array1, $array2) {
+		if (!is_array($array1) || !is_array($array2)) {
+			return false;
+		}
+		$newarray = $array1;
+		foreach ($array2 as $key => $val) {
+			if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) {
+				$newarray[$key] = self::array_merge_noclobber($newarray[$key], $val);
+			} elseif (!isset($newarray[$key])) {
+				$newarray[$key] = $val;
+			}
+		}
+		return $newarray;
+	}
+
+
+	public static function ksort_recursive(&$theArray) {
+		ksort($theArray);
+		foreach ($theArray as $key => $value) {
+			if (is_array($value)) {
+				self::ksort_recursive($theArray[$key]);
+			}
+		}
+		return true;
+	}
+
+	public static function fileextension($filename, $numextensions=1) {
+		if (strstr($filename, '.')) {
+			$reversedfilename = strrev($filename);
+			$offset = 0;
+			for ($i = 0; $i < $numextensions; $i++) {
+				$offset = strpos($reversedfilename, '.', $offset + 1);
+				if ($offset === false) {
+					return '';
+				}
+			}
+			return strrev(substr($reversedfilename, 0, $offset));
+		}
+		return '';
+	}
+
+
+	public static function PlaytimeString($seconds) {
+		$sign = (($seconds < 0) ? '-' : '');
+		$seconds = round(abs($seconds));
+		$H = (int) floor( $seconds                            / 3600);
+		$M = (int) floor(($seconds - (3600 * $H)            ) /   60);
+		$S = (int) round( $seconds - (3600 * $H) - (60 * $M)        );
+		return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT);
+	}
+
+
+	public static function DateMac2Unix($macdate) {
+		// Macintosh timestamp: seconds since 00:00h January 1, 1904
+		// UNIX timestamp:      seconds since 00:00h January 1, 1970
+		return self::CastAsInt($macdate - 2082844800);
+	}
+
+
+	public static function FixedPoint8_8($rawdata) {
+		return self::BigEndian2Int(substr($rawdata, 0, 1)) + (float) (self::BigEndian2Int(substr($rawdata, 1, 1)) / pow(2, 8));
+	}
+
+
+	public static function FixedPoint16_16($rawdata) {
+		return self::BigEndian2Int(substr($rawdata, 0, 2)) + (float) (self::BigEndian2Int(substr($rawdata, 2, 2)) / pow(2, 16));
+	}
+
+
+	public static function FixedPoint2_30($rawdata) {
+		$binarystring = self::BigEndian2Bin($rawdata);
+		return self::Bin2Dec(substr($binarystring, 0, 2)) + (float) (self::Bin2Dec(substr($binarystring, 2, 30)) / pow(2, 30));
+	}
+
+
+	public static function CreateDeepArray($ArrayPath, $Separator, $Value) {
+		// assigns $Value to a nested array path:
+		//   $foo = self::CreateDeepArray('/path/to/my', '/', 'file.txt')
+		// is the same as:
+		//   $foo = array('path'=>array('to'=>'array('my'=>array('file.txt'))));
+		// or
+		//   $foo['path']['to']['my'] = 'file.txt';
+		$ArrayPath = ltrim($ArrayPath, $Separator);
+		if (($pos = strpos($ArrayPath, $Separator)) !== false) {
+			$ReturnedArray[substr($ArrayPath, 0, $pos)] = self::CreateDeepArray(substr($ArrayPath, $pos + 1), $Separator, $Value);
+		} else {
+			$ReturnedArray[$ArrayPath] = $Value;
+		}
+		return $ReturnedArray;
+	}
+
+	public static function array_max($arraydata, $returnkey=false) {
+		$maxvalue = false;
+		$maxkey = false;
+		foreach ($arraydata as $key => $value) {
+			if (!is_array($value)) {
+				if ($value > $maxvalue) {
+					$maxvalue = $value;
+					$maxkey = $key;
+				}
+			}
+		}
+		return ($returnkey ? $maxkey : $maxvalue);
+	}
+
+	public static function array_min($arraydata, $returnkey=false) {
+		$minvalue = false;
+		$minkey = false;
+		foreach ($arraydata as $key => $value) {
+			if (!is_array($value)) {
+				if ($value > $minvalue) {
+					$minvalue = $value;
+					$minkey = $key;
+				}
+			}
+		}
+		return ($returnkey ? $minkey : $minvalue);
+	}
+
+	public static function XML2array($XMLstring) {
+		if (function_exists('simplexml_load_string')) {
+			if (function_exists('get_object_vars')) {
+				$XMLobject = simplexml_load_string($XMLstring);
+				return self::SimpleXMLelement2array($XMLobject);
+			}
+		}
+		return false;
+	}
+
+	public static function SimpleXMLelement2array($XMLobject) {
+		if (!is_object($XMLobject) && !is_array($XMLobject)) {
+			return $XMLobject;
+		}
+		$XMLarray = (is_object($XMLobject) ? get_object_vars($XMLobject) : $XMLobject);
+		foreach ($XMLarray as $key => $value) {
+			$XMLarray[$key] = self::SimpleXMLelement2array($value);
+		}
+		return $XMLarray;
+	}
+
+
+	// Allan Hansen <ahØartemis*dk>
+	// self::md5_data() - returns md5sum for a file from startuing position to absolute end position
+	public static function hash_data($file, $offset, $end, $algorithm) {
+		static $tempdir = '';
+		if (!self::intValueSupported($end)) {
+			return false;
+		}
+		switch ($algorithm) {
+			case 'md5':
+				$hash_function = 'md5_file';
+				$unix_call     = 'md5sum';
+				$windows_call  = 'md5sum.exe';
+				$hash_length   = 32;
+				break;
+
+			case 'sha1':
+				$hash_function = 'sha1_file';
+				$unix_call     = 'sha1sum';
+				$windows_call  = 'sha1sum.exe';
+				$hash_length   = 40;
+				break;
+
+			default:
+				throw new Exception('Invalid algorithm ('.$algorithm.') in self::hash_data()');
+				break;
+		}
+		$size = $end - $offset;
+		while (true) {
+			if (GETID3_OS_ISWINDOWS) {
+
+				// It seems that sha1sum.exe for Windows only works on physical files, does not accept piped data
+				// Fall back to create-temp-file method:
+				if ($algorithm == 'sha1') {
+					break;
+				}
+
+				$RequiredFiles = array('cygwin1.dll', 'head.exe', 'tail.exe', $windows_call);
+				foreach ($RequiredFiles as $required_file) {
+					if (!is_readable(GETID3_HELPERAPPSDIR.$required_file)) {
+						// helper apps not available - fall back to old method
+						break 2;
+					}
+				}
+				$commandline  = GETID3_HELPERAPPSDIR.'head.exe -c '.$end.' '.escapeshellarg(str_replace('/', DIRECTORY_SEPARATOR, $file)).' | ';
+				$commandline .= GETID3_HELPERAPPSDIR.'tail.exe -c '.$size.' | ';
+				$commandline .= GETID3_HELPERAPPSDIR.$windows_call;
+
+			} else {
+
+				$commandline  = 'head -c'.$end.' '.escapeshellarg($file).' | ';
+				$commandline .= 'tail -c'.$size.' | ';
+				$commandline .= $unix_call;
+
+			}
+			if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
+				//throw new Exception('PHP running in Safe Mode - backtick operator not available, using slower non-system-call '.$algorithm.' algorithm');
+				break;
+			}
+			return substr(`$commandline`, 0, $hash_length);
+		}
+
+		if (empty($tempdir)) {
+			// yes this is ugly, feel free to suggest a better way
+			require_once(dirname(__FILE__).'/getid3.php');
+			$getid3_temp = new getID3();
+			$tempdir = $getid3_temp->tempdir;
+			unset($getid3_temp);
+		}
+		// try to create a temporary file in the system temp directory - invalid dirname should force to system temp dir
+		if (($data_filename = tempnam($tempdir, 'gI3')) === false) {
+			// can't find anywhere to create a temp file, just fail
+			return false;
+		}
+
+		// Init
+		$result = false;
+
+		// copy parts of file
+		try {
+			self::CopyFileParts($file, $data_filename, $offset, $end - $offset);
+			$result = $hash_function($data_filename);
+		} catch (Exception $e) {
+			throw new Exception('self::CopyFileParts() failed in getid_lib::hash_data(): '.$e->getMessage());
+		}
+		unlink($data_filename);
+		return $result;
+	}
+
+	public static function CopyFileParts($filename_source, $filename_dest, $offset, $length) {
+		if (!self::intValueSupported($offset + $length)) {
+			throw new Exception('cannot copy file portion, it extends beyond the '.round(PHP_INT_MAX / 1073741824).'GB limit');
+		}
+		if (is_readable($filename_source) && is_file($filename_source) && ($fp_src = fopen($filename_source, 'rb'))) {
+			if (($fp_dest = fopen($filename_dest, 'wb'))) {
+				if (fseek($fp_src, $offset, SEEK_SET) == 0) {
+					$byteslefttowrite = $length;
+					while (($byteslefttowrite > 0) && ($buffer = fread($fp_src, min($byteslefttowrite, getID3::FREAD_BUFFER_SIZE)))) {
+						$byteswritten = fwrite($fp_dest, $buffer, $byteslefttowrite);
+						$byteslefttowrite -= $byteswritten;
+					}
+					return true;
+				} else {
+					throw new Exception('failed to seek to offset '.$offset.' in '.$filename_source);
+				}
+				fclose($fp_dest);
+			} else {
+				throw new Exception('failed to create file for writing '.$filename_dest);
+			}
+			fclose($fp_src);
+		} else {
+			throw new Exception('failed to open file for reading '.$filename_source);
+		}
+		return false;
+	}
+
+	public static function iconv_fallback_int_utf8($charval) {
+		if ($charval < 128) {
+			// 0bbbbbbb
+			$newcharstring = chr($charval);
+		} elseif ($charval < 2048) {
+			// 110bbbbb 10bbbbbb
+			$newcharstring  = chr(($charval >>   6) | 0xC0);
+			$newcharstring .= chr(($charval & 0x3F) | 0x80);
+		} elseif ($charval < 65536) {
+			// 1110bbbb 10bbbbbb 10bbbbbb
+			$newcharstring  = chr(($charval >>  12) | 0xE0);
+			$newcharstring .= chr(($charval >>   6) | 0xC0);
+			$newcharstring .= chr(($charval & 0x3F) | 0x80);
+		} else {
+			// 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
+			$newcharstring  = chr(($charval >>  18) | 0xF0);
+			$newcharstring .= chr(($charval >>  12) | 0xC0);
+			$newcharstring .= chr(($charval >>   6) | 0xC0);
+			$newcharstring .= chr(($charval & 0x3F) | 0x80);
+		}
+		return $newcharstring;
+	}
+
+	// ISO-8859-1 => UTF-8
+	public static function iconv_fallback_iso88591_utf8($string, $bom=false) {
+		if (function_exists('utf8_encode')) {
+			return utf8_encode($string);
+		}
+		// utf8_encode() unavailable, use getID3()'s iconv_fallback() conversions (possibly PHP is compiled without XML support)
+		$newcharstring = '';
+		if ($bom) {
+			$newcharstring .= "\xEF\xBB\xBF";
+		}
+		for ($i = 0; $i < strlen($string); $i++) {
+			$charval = ord($string{$i});
+			$newcharstring .= self::iconv_fallback_int_utf8($charval);
+		}
+		return $newcharstring;
+	}
+
+	// ISO-8859-1 => UTF-16BE
+	public static function iconv_fallback_iso88591_utf16be($string, $bom=false) {
+		$newcharstring = '';
+		if ($bom) {
+			$newcharstring .= "\xFE\xFF";
+		}
+		for ($i = 0; $i < strlen($string); $i++) {
+			$newcharstring .= "\x00".$string{$i};
+		}
+		return $newcharstring;
+	}
+
+	// ISO-8859-1 => UTF-16LE
+	public static function iconv_fallback_iso88591_utf16le($string, $bom=false) {
+		$newcharstring = '';
+		if ($bom) {
+			$newcharstring .= "\xFF\xFE";
+		}
+		for ($i = 0; $i < strlen($string); $i++) {
+			$newcharstring .= $string{$i}."\x00";
+		}
+		return $newcharstring;
+	}
+
+	// ISO-8859-1 => UTF-16LE (BOM)
+	public static function iconv_fallback_iso88591_utf16($string) {
+		return self::iconv_fallback_iso88591_utf16le($string, true);
+	}
+
+	// UTF-8 => ISO-8859-1
+	public static function iconv_fallback_utf8_iso88591($string) {
+		if (function_exists('utf8_decode')) {
+			return utf8_decode($string);
+		}
+		// utf8_decode() unavailable, use getID3()'s iconv_fallback() conversions (possibly PHP is compiled without XML support)
+		$newcharstring = '';
+		$offset = 0;
+		$stringlength = strlen($string);
+		while ($offset < $stringlength) {
+			if ((ord($string{$offset}) | 0x07) == 0xF7) {
+				// 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x07) << 18) &
+						   ((ord($string{($offset + 1)}) & 0x3F) << 12) &
+						   ((ord($string{($offset + 2)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 3)}) & 0x3F);
+				$offset += 4;
+			} elseif ((ord($string{$offset}) | 0x0F) == 0xEF) {
+				// 1110bbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) &
+						   ((ord($string{($offset + 1)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 2)}) & 0x3F);
+				$offset += 3;
+			} elseif ((ord($string{$offset}) | 0x1F) == 0xDF) {
+				// 110bbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x1F) <<  6) &
+							(ord($string{($offset + 1)}) & 0x3F);
+				$offset += 2;
+			} elseif ((ord($string{$offset}) | 0x7F) == 0x7F) {
+				// 0bbbbbbb
+				$charval = ord($string{$offset});
+				$offset += 1;
+			} else {
+				// error? throw some kind of warning here?
+				$charval = false;
+				$offset += 1;
+			}
+			if ($charval !== false) {
+				$newcharstring .= (($charval < 256) ? chr($charval) : '?');
+			}
+		}
+		return $newcharstring;
+	}
+
+	// UTF-8 => UTF-16BE
+	public static function iconv_fallback_utf8_utf16be($string, $bom=false) {
+		$newcharstring = '';
+		if ($bom) {
+			$newcharstring .= "\xFE\xFF";
+		}
+		$offset = 0;
+		$stringlength = strlen($string);
+		while ($offset < $stringlength) {
+			if ((ord($string{$offset}) | 0x07) == 0xF7) {
+				// 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x07) << 18) &
+						   ((ord($string{($offset + 1)}) & 0x3F) << 12) &
+						   ((ord($string{($offset + 2)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 3)}) & 0x3F);
+				$offset += 4;
+			} elseif ((ord($string{$offset}) | 0x0F) == 0xEF) {
+				// 1110bbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) &
+						   ((ord($string{($offset + 1)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 2)}) & 0x3F);
+				$offset += 3;
+			} elseif ((ord($string{$offset}) | 0x1F) == 0xDF) {
+				// 110bbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x1F) <<  6) &
+							(ord($string{($offset + 1)}) & 0x3F);
+				$offset += 2;
+			} elseif ((ord($string{$offset}) | 0x7F) == 0x7F) {
+				// 0bbbbbbb
+				$charval = ord($string{$offset});
+				$offset += 1;
+			} else {
+				// error? throw some kind of warning here?
+				$charval = false;
+				$offset += 1;
+			}
+			if ($charval !== false) {
+				$newcharstring .= (($charval < 65536) ? self::BigEndian2String($charval, 2) : "\x00".'?');
+			}
+		}
+		return $newcharstring;
+	}
+
+	// UTF-8 => UTF-16LE
+	public static function iconv_fallback_utf8_utf16le($string, $bom=false) {
+		$newcharstring = '';
+		if ($bom) {
+			$newcharstring .= "\xFF\xFE";
+		}
+		$offset = 0;
+		$stringlength = strlen($string);
+		while ($offset < $stringlength) {
+			if ((ord($string{$offset}) | 0x07) == 0xF7) {
+				// 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x07) << 18) &
+						   ((ord($string{($offset + 1)}) & 0x3F) << 12) &
+						   ((ord($string{($offset + 2)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 3)}) & 0x3F);
+				$offset += 4;
+			} elseif ((ord($string{$offset}) | 0x0F) == 0xEF) {
+				// 1110bbbb 10bbbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x0F) << 12) &
+						   ((ord($string{($offset + 1)}) & 0x3F) <<  6) &
+							(ord($string{($offset + 2)}) & 0x3F);
+				$offset += 3;
+			} elseif ((ord($string{$offset}) | 0x1F) == 0xDF) {
+				// 110bbbbb 10bbbbbb
+				$charval = ((ord($string{($offset + 0)}) & 0x1F) <<  6) &
+							(ord($string{($offset + 1)}) & 0x3F);
+				$offset += 2;
+			} elseif ((ord($string{$offset}) | 0x7F) == 0x7F) {
+				// 0bbbbbbb
+				$charval = ord($string{$offset});
+				$offset += 1;
+			} else {
+				// error? maybe throw some warning here?
+				$charval = false;
+				$offset += 1;
+			}
+			if ($charval !== false) {
+				$newcharstring .= (($charval < 65536) ? self::LittleEndian2String($charval, 2) : '?'."\x00");
+			}
+		}
+		return $newcharstring;
+	}
+
+	// UTF-8 => UTF-16LE (BOM)
+	public static function iconv_fallback_utf8_utf16($string) {
+		return self::iconv_fallback_utf8_utf16le($string, true);
+	}
+
+	// UTF-16BE => UTF-8
+	public static function iconv_fallback_utf16be_utf8($string) {
+		if (substr($string, 0, 2) == "\xFE\xFF") {
+			// strip BOM
+			$string = substr($string, 2);
+		}
+		$newcharstring = '';
+		for ($i = 0; $i < strlen($string); $i += 2) {
+			$charval = self::BigEndian2Int(substr($string, $i, 2));
+			$newcharstring .= self::iconv_fallback_int_utf8($charval);
+		}
+		return $newcharstring;
+	}
+
+	// UTF-16LE => UTF-8
+	public static function iconv_fallback_utf16le_utf8($string) {
+		if (substr($string, 0, 2) == "\xFF\xFE") {
+			// strip BOM
+			$string = substr($string, 2);
+		}
+		$newcharstring = '';
+		for ($i = 0; $i < strlen($string); $i += 2) {
+			$charval = self::LittleEndian2Int(substr($string, $i, 2));
+			$newcharstring .= self::iconv_fallback_int_utf8($charval);
+		}
+		return $newcharstring;
+	}
+
+	// UTF-16BE => ISO-8859-1
+	public static function iconv_fallback_utf16be_iso88591($string) {
+		if (substr($string, 0, 2) == "\xFE\xFF") {
+			// strip BOM
+			$string = substr($string, 2);
+		}
+		$newcharstring = '';
+		for ($i = 0; $i < strlen($string); $i += 2) {
+			$charval = self::BigEndian2Int(substr($string, $i, 2));
+			$newcharstring .= (($charval < 256) ? chr($charval) : '?');
+		}
+		return $newcharstring;
+	}
+
+	// UTF-16LE => ISO-8859-1
+	public static function iconv_fallback_utf16le_iso88591($string) {
+		if (substr($string, 0, 2) == "\xFF\xFE") {
+			// strip BOM
+			$string = substr($string, 2);
+		}
+		$newcharstring = '';
+		for ($i = 0; $i < strlen($string); $i += 2) {
+			$charval = self::LittleEndian2Int(substr($string, $i, 2));
+			$newcharstring .= (($charval < 256) ? chr($charval) : '?');
+		}
+		return $newcharstring;
+	}
+
+	// UTF-16 (BOM) => ISO-8859-1
+	public static function iconv_fallback_utf16_iso88591($string) {
+		$bom = substr($string, 0, 2);
+		if ($bom == "\xFE\xFF") {
+			return self::iconv_fallback_utf16be_iso88591(substr($string, 2));
+		} elseif ($bom == "\xFF\xFE") {
+			return self::iconv_fallback_utf16le_iso88591(substr($string, 2));
+		}
+		return $string;
+	}
+
+	// UTF-16 (BOM) => UTF-8
+	public static function iconv_fallback_utf16_utf8($string) {
+		$bom = substr($string, 0, 2);
+		if ($bom == "\xFE\xFF") {
+			return self::iconv_fallback_utf16be_utf8(substr($string, 2));
+		} elseif ($bom == "\xFF\xFE") {
+			return self::iconv_fallback_utf16le_utf8(substr($string, 2));
+		}
+		return $string;
+	}
+
+	public static function iconv_fallback($in_charset, $out_charset, $string) {
+
+		if ($in_charset == $out_charset) {
+			return $string;
+		}
+
+		// iconv() availble
+		if (function_exists('iconv')) {
+			if ($converted_string = @iconv($in_charset, $out_charset.'//TRANSLIT', $string)) {
+				switch ($out_charset) {
+					case 'ISO-8859-1':
+						$converted_string = rtrim($converted_string, "\x00");
+						break;
+				}
+				return $converted_string;
+			}
+
+			// iconv() may sometimes fail with "illegal character in input string" error message
+			// and return an empty string, but returning the unconverted string is more useful
+			return $string;
+		}
+
+
+		// iconv() not available
+		static $ConversionFunctionList = array();
+		if (empty($ConversionFunctionList)) {
+			$ConversionFunctionList['ISO-8859-1']['UTF-8']    = 'iconv_fallback_iso88591_utf8';
+			$ConversionFunctionList['ISO-8859-1']['UTF-16']   = 'iconv_fallback_iso88591_utf16';
+			$ConversionFunctionList['ISO-8859-1']['UTF-16BE'] = 'iconv_fallback_iso88591_utf16be';
+			$ConversionFunctionList['ISO-8859-1']['UTF-16LE'] = 'iconv_fallback_iso88591_utf16le';
+			$ConversionFunctionList['UTF-8']['ISO-8859-1']    = 'iconv_fallback_utf8_iso88591';
+			$ConversionFunctionList['UTF-8']['UTF-16']        = 'iconv_fallback_utf8_utf16';
+			$ConversionFunctionList['UTF-8']['UTF-16BE']      = 'iconv_fallback_utf8_utf16be';
+			$ConversionFunctionList['UTF-8']['UTF-16LE']      = 'iconv_fallback_utf8_utf16le';
+			$ConversionFunctionList['UTF-16']['ISO-8859-1']   = 'iconv_fallback_utf16_iso88591';
+			$ConversionFunctionList['UTF-16']['UTF-8']        = 'iconv_fallback_utf16_utf8';
+			$ConversionFunctionList['UTF-16LE']['ISO-8859-1'] = 'iconv_fallback_utf16le_iso88591';
+			$ConversionFunctionList['UTF-16LE']['UTF-8']      = 'iconv_fallback_utf16le_utf8';
+			$ConversionFunctionList['UTF-16BE']['ISO-8859-1'] = 'iconv_fallback_utf16be_iso88591';
+			$ConversionFunctionList['UTF-16BE']['UTF-8']      = 'iconv_fallback_utf16be_utf8';
+		}
+		if (isset($ConversionFunctionList[strtoupper($in_charset)][strtoupper($out_charset)])) {
+			$ConversionFunction = $ConversionFunctionList[strtoupper($in_charset)][strtoupper($out_charset)];
+			return self::$ConversionFunction($string);
+		}
+		throw new Exception('PHP does not have iconv() support - cannot convert from '.$in_charset.' to '.$out_charset);
+	}
+
+
+	public static function MultiByteCharString2HTML($string, $charset='ISO-8859-1') {
+		$string = (string) $string; // in case trying to pass a numeric (float, int) string, would otherwise return an empty string
+		$HTMLstring = '';
+
+		switch ($charset) {
+			case '1251':
+			case '1252':
+			case '866':
+			case '932':
+			case '936':
+			case '950':
+			case 'BIG5':
+			case 'BIG5-HKSCS':
+			case 'cp1251':
+			case 'cp1252':
+			case 'cp866':
+			case 'EUC-JP':
+			case 'EUCJP':
+			case 'GB2312':
+			case 'ibm866':
+			case 'ISO-8859-1':
+			case 'ISO-8859-15':
+			case 'ISO8859-1':
+			case 'ISO8859-15':
+			case 'KOI8-R':
+			case 'koi8-ru':
+			case 'koi8r':
+			case 'Shift_JIS':
+			case 'SJIS':
+			case 'win-1251':
+			case 'Windows-1251':
+			case 'Windows-1252':
+				$HTMLstring = htmlentities($string, ENT_COMPAT, $charset);
+				break;
+
+			case 'UTF-8':
+				$strlen = strlen($string);
+				for ($i = 0; $i < $strlen; $i++) {
+					$char_ord_val = ord($string{$i});
+					$charval = 0;
+					if ($char_ord_val < 0x80) {
+						$charval = $char_ord_val;
+					} elseif ((($char_ord_val & 0xF0) >> 4) == 0x0F  &&  $i+3 < $strlen) {
+						$charval  = (($char_ord_val & 0x07) << 18);
+						$charval += ((ord($string{++$i}) & 0x3F) << 12);
+						$charval += ((ord($string{++$i}) & 0x3F) << 6);
+						$charval +=  (ord($string{++$i}) & 0x3F);
+					} elseif ((($char_ord_val & 0xE0) >> 5) == 0x07  &&  $i+2 < $strlen) {
+						$charval  = (($char_ord_val & 0x0F) << 12);
+						$charval += ((ord($string{++$i}) & 0x3F) << 6);
+						$charval +=  (ord($string{++$i}) & 0x3F);
+					} elseif ((($char_ord_val & 0xC0) >> 6) == 0x03  &&  $i+1 < $strlen) {
+						$charval  = (($char_ord_val & 0x1F) << 6);
+						$charval += (ord($string{++$i}) & 0x3F);
+					}
+					if (($charval >= 32) && ($charval <= 127)) {
+						$HTMLstring .= htmlentities(chr($charval));
+					} else {
+						$HTMLstring .= '&#'.$charval.';';
+					}
+				}
+				break;
+
+			case 'UTF-16LE':
+				for ($i = 0; $i < strlen($string); $i += 2) {
+					$charval = self::LittleEndian2Int(substr($string, $i, 2));
+					if (($charval >= 32) && ($charval <= 127)) {
+						$HTMLstring .= chr($charval);
+					} else {
+						$HTMLstring .= '&#'.$charval.';';
+					}
+				}
+				break;
+
+			case 'UTF-16BE':
+				for ($i = 0; $i < strlen($string); $i += 2) {
+					$charval = self::BigEndian2Int(substr($string, $i, 2));
+					if (($charval >= 32) && ($charval <= 127)) {
+						$HTMLstring .= chr($charval);
+					} else {
+						$HTMLstring .= '&#'.$charval.';';
+					}
+				}
+				break;
+
+			default:
+				$HTMLstring = 'ERROR: Character set "'.$charset.'" not supported in MultiByteCharString2HTML()';
+				break;
+		}
+		return $HTMLstring;
+	}
+
+
+
+	public static function RGADnameLookup($namecode) {
+		static $RGADname = array();
+		if (empty($RGADname)) {
+			$RGADname[0] = 'not set';
+			$RGADname[1] = 'Track Gain Adjustment';
+			$RGADname[2] = 'Album Gain Adjustment';
+		}
+
+		return (isset($RGADname[$namecode]) ? $RGADname[$namecode] : '');
+	}
+
+
+	public static function RGADoriginatorLookup($originatorcode) {
+		static $RGADoriginator = array();
+		if (empty($RGADoriginator)) {
+			$RGADoriginator[0] = 'unspecified';
+			$RGADoriginator[1] = 'pre-set by artist/producer/mastering engineer';
+			$RGADoriginator[2] = 'set by user';
+			$RGADoriginator[3] = 'determined automatically';
+		}
+
+		return (isset($RGADoriginator[$originatorcode]) ? $RGADoriginator[$originatorcode] : '');
+	}
+
+
+	public static function RGADadjustmentLookup($rawadjustment, $signbit) {
+		$adjustment = $rawadjustment / 10;
+		if ($signbit == 1) {
+			$adjustment *= -1;
+		}
+		return (float) $adjustment;
+	}
+
+
+	public static function RGADgainString($namecode, $originatorcode, $replaygain) {
+		if ($replaygain < 0) {
+			$signbit = '1';
+		} else {
+			$signbit = '0';
+		}
+		$storedreplaygain = intval(round($replaygain * 10));
+		$gainstring  = str_pad(decbin($namecode), 3, '0', STR_PAD_LEFT);
+		$gainstring .= str_pad(decbin($originatorcode), 3, '0', STR_PAD_LEFT);
+		$gainstring .= $signbit;
+		$gainstring .= str_pad(decbin($storedreplaygain), 9, '0', STR_PAD_LEFT);
+
+		return $gainstring;
+	}
+
+	public static function RGADamplitude2dB($amplitude) {
+		return 20 * log10($amplitude);
+	}
+
+
+	public static function GetDataImageSize($imgData, &$imageinfo=array()) {
+		static $tempdir = '';
+		if (empty($tempdir)) {
+			// yes this is ugly, feel free to suggest a better way
+			require_once(dirname(__FILE__).'/getid3.php');
+			$getid3_temp = new getID3();
+			$tempdir = $getid3_temp->tempdir;
+			unset($getid3_temp);
+		}
+		$GetDataImageSize = false;
+		if ($tempfilename = tempnam($tempdir, 'gI3')) {
+			if (is_writable($tempfilename) && is_file($tempfilename) && ($tmp = fopen($tempfilename, 'wb'))) {
+				fwrite($tmp, $imgData);
+				fclose($tmp);
+				$GetDataImageSize = @getimagesize($tempfilename, $imageinfo);
+			}
+			unlink($tempfilename);
+		}
+		return $GetDataImageSize;
+	}
+
+	public static function ImageExtFromMime($mime_type) {
+		// temporary way, works OK for now, but should be reworked in the future
+		return str_replace(array('image/', 'x-', 'jpeg'), array('', '', 'jpg'), $mime_type);
+	}
+
+	public static function ImageTypesLookup($imagetypeid) {
+		static $ImageTypesLookup = array();
+		if (empty($ImageTypesLookup)) {
+			$ImageTypesLookup[1]  = 'gif';
+			$ImageTypesLookup[2]  = 'jpeg';
+			$ImageTypesLookup[3]  = 'png';
+			$ImageTypesLookup[4]  = 'swf';
+			$ImageTypesLookup[5]  = 'psd';
+			$ImageTypesLookup[6]  = 'bmp';
+			$ImageTypesLookup[7]  = 'tiff (little-endian)';
+			$ImageTypesLookup[8]  = 'tiff (big-endian)';
+			$ImageTypesLookup[9]  = 'jpc';
+			$ImageTypesLookup[10] = 'jp2';
+			$ImageTypesLookup[11] = 'jpx';
+			$ImageTypesLookup[12] = 'jb2';
+			$ImageTypesLookup[13] = 'swc';
+			$ImageTypesLookup[14] = 'iff';
+		}
+		return (isset($ImageTypesLookup[$imagetypeid]) ? $ImageTypesLookup[$imagetypeid] : '');
+	}
+
+	public static function CopyTagsToComments(&$ThisFileInfo) {
+
+		// Copy all entries from ['tags'] into common ['comments']
+		if (!empty($ThisFileInfo['tags'])) {
+			foreach ($ThisFileInfo['tags'] as $tagtype => $tagarray) {
+				foreach ($tagarray as $tagname => $tagdata) {
+					foreach ($tagdata as $key => $value) {
+						if (!empty($value)) {
+							if (empty($ThisFileInfo['comments'][$tagname])) {
+
+								// fall through and append value
+
+							} elseif ($tagtype == 'id3v1') {
+
+								$newvaluelength = strlen(trim($value));
+								foreach ($ThisFileInfo['comments'][$tagname] as $existingkey => $existingvalue) {
+									$oldvaluelength = strlen(trim($existingvalue));
+									if (($newvaluelength <= $oldvaluelength) && (substr($existingvalue, 0, $newvaluelength) == trim($value))) {
+										// new value is identical but shorter-than (or equal-length to) one already in comments - skip
+										break 2;
+									}
+								}
+
+							} elseif (!is_array($value)) {
+
+								$newvaluelength = strlen(trim($value));
+								foreach ($ThisFileInfo['comments'][$tagname] as $existingkey => $existingvalue) {
+									$oldvaluelength = strlen(trim($existingvalue));
+									if (($newvaluelength > $oldvaluelength) && (substr(trim($value), 0, strlen($existingvalue)) == $existingvalue)) {
+										$ThisFileInfo['comments'][$tagname][$existingkey] = trim($value);
+										break 2;
+									}
+								}
+
+							}
+							if (is_array($value) || empty($ThisFileInfo['comments'][$tagname]) || !in_array(trim($value), $ThisFileInfo['comments'][$tagname])) {
+								$value = (is_string($value) ? trim($value) : $value);
+								$ThisFileInfo['comments'][$tagname][] = $value;
+							}
+						}
+					}
+				}
+			}
+
+			// Copy to ['comments_html']
+			foreach ($ThisFileInfo['comments'] as $field => $values) {
+				if ($field == 'picture') {
+					// pictures can take up a lot of space, and we don't need multiple copies of them
+					// let there be a single copy in [comments][picture], and not elsewhere
+					continue;
+				}
+				foreach ($values as $index => $value) {
+					if (is_array($value)) {
+						$ThisFileInfo['comments_html'][$field][$index] = $value;
+					} else {
+						$ThisFileInfo['comments_html'][$field][$index] = str_replace('&#0;', '', self::MultiByteCharString2HTML($value, $ThisFileInfo['encoding']));
+					}
+				}
+			}
+		}
+		return true;
+	}
+
+
+	public static function EmbeddedLookup($key, $begin, $end, $file, $name) {
+
+		// Cached
+		static $cache;
+		if (isset($cache[$file][$name])) {
+			return (isset($cache[$file][$name][$key]) ? $cache[$file][$name][$key] : '');
+		}
+
+		// Init
+		$keylength  = strlen($key);
+		$line_count = $end - $begin - 7;
+
+		// Open php file
+		$fp = fopen($file, 'r');
+
+		// Discard $begin lines
+		for ($i = 0; $i < ($begin + 3); $i++) {
+			fgets($fp, 1024);
+		}
+
+		// Loop thru line
+		while (0 < $line_count--) {
+
+			// Read line
+			$line = ltrim(fgets($fp, 1024), "\t ");
+
+			// METHOD A: only cache the matching key - less memory but slower on next lookup of not-previously-looked-up key
+			//$keycheck = substr($line, 0, $keylength);
+			//if ($key == $keycheck)  {
+			//	$cache[$file][$name][$keycheck] = substr($line, $keylength + 1);
+			//	break;
+			//}
+
+			// METHOD B: cache all keys in this lookup - more memory but faster on next lookup of not-previously-looked-up key
+			//$cache[$file][$name][substr($line, 0, $keylength)] = trim(substr($line, $keylength + 1));
+			$explodedLine = explode("\t", $line, 2);
+			$ThisKey   = (isset($explodedLine[0]) ? $explodedLine[0] : '');
+			$ThisValue = (isset($explodedLine[1]) ? $explodedLine[1] : '');
+			$cache[$file][$name][$ThisKey] = trim($ThisValue);
+		}
+
+		// Close and return
+		fclose($fp);
+		return (isset($cache[$file][$name][$key]) ? $cache[$file][$name][$key] : '');
+	}
+
+	public static function IncludeDependency($filename, $sourcefile, $DieOnFailure=false) {
+		global $GETID3_ERRORARRAY;
+
+		if (file_exists($filename)) {
+			if (include_once($filename)) {
+				return true;
+			} else {
+				$diemessage = basename($sourcefile).' depends on '.$filename.', which has errors';
+			}
+		} else {
+			$diemessage = basename($sourcefile).' depends on '.$filename.', which is missing';
+		}
+		if ($DieOnFailure) {
+			throw new Exception($diemessage);
+		} else {
+			$GETID3_ERRORARRAY[] = $diemessage;
+		}
+		return false;
+	}
+
+	public static function trimNullByte($string) {
+		return trim($string, "\x00");
+	}
+
+	public static function getFileSizeSyscall($path) {
+		$filesize = false;
+
+		if (GETID3_OS_ISWINDOWS) {
+			if (class_exists('COM')) { // From PHP 5.3.15 and 5.4.5, COM and DOTNET is no longer built into the php core.you have to add COM support in php.ini:
+				$filesystem = new COM('Scripting.FileSystemObject');
+				$file = $filesystem->GetFile($path);
+				$filesize = $file->Size();
+				unset($filesystem, $file);
+			} else {
+				$commandline = 'for %I in ('.escapeshellarg($path).') do @echo %~zI';
+			}
+		} else {
+			$commandline = 'ls -l '.escapeshellarg($path).' | awk \'{print $5}\'';
+		}
+		if (isset($commandline)) {
+			$output = trim(`$commandline`);
+			if (ctype_digit($output)) {
+				$filesize = (float) $output;
+			}
+		}
+		return $filesize;
+	}
+}
\ No newline at end of file
diff --git a/wp-includes/ID3/getid3.php b/wp-includes/ID3/getid3.php
new file mode 100644
index 000000000..84b9cce6e
--- /dev/null
+++ b/wp-includes/ID3/getid3.php
@@ -0,0 +1,1776 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// Please see readme.txt for more information                  //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+// define a constant rather than looking up every time it is needed
+if (!defined('GETID3_OS_ISWINDOWS')) {
+	define('GETID3_OS_ISWINDOWS', (stripos(PHP_OS, 'WIN') === 0));
+}
+// Get base path of getID3() - ONCE
+if (!defined('GETID3_INCLUDEPATH')) {
+	define('GETID3_INCLUDEPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
+}
+
+// attempt to define temp dir as something flexible but reliable
+$temp_dir = ini_get('upload_tmp_dir');
+if ($temp_dir && (!is_dir($temp_dir) || !is_readable($temp_dir))) {
+	$temp_dir = '';
+}
+if (!$temp_dir && function_exists('sys_get_temp_dir')) {
+	// PHP v5.2.1+
+	// sys_get_temp_dir() may give inaccessible temp dir, e.g. with open_basedir on virtual hosts
+	$temp_dir = sys_get_temp_dir();
+}
+$temp_dir = realpath($temp_dir);
+$open_basedir = ini_get('open_basedir');
+if ($open_basedir) {
+	// e.g. "/var/www/vhosts/getid3.org/httpdocs/:/tmp/"
+	$temp_dir     = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $temp_dir);
+	$open_basedir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $open_basedir);
+	if (substr($temp_dir, -1, 1) != DIRECTORY_SEPARATOR) {
+		$temp_dir .= DIRECTORY_SEPARATOR;
+	}
+	$found_valid_tempdir = false;
+	$open_basedirs = explode(PATH_SEPARATOR, $open_basedir);
+	foreach ($open_basedirs as $basedir) {
+		if (substr($basedir, -1, 1) != DIRECTORY_SEPARATOR) {
+			$basedir .= DIRECTORY_SEPARATOR;
+		}
+		if (preg_match('#^'.preg_quote($basedir).'#', $temp_dir)) {
+			$found_valid_tempdir = true;
+			break;
+		}
+	}
+	if (!$found_valid_tempdir) {
+		$temp_dir = '';
+	}
+	unset($open_basedirs, $found_valid_tempdir, $basedir);
+}
+if (!$temp_dir) {
+	$temp_dir = '*'; // invalid directory name should force tempnam() to use system default temp dir
+}
+// $temp_dir = '/something/else/';  // feel free to override temp dir here if it works better for your system
+define('GETID3_TEMP_DIR', $temp_dir);
+unset($open_basedir, $temp_dir);
+
+// End: Defines
+
+
+class getID3
+{
+	// public: Settings
+	public $encoding        = 'UTF-8';        // CASE SENSITIVE! - i.e. (must be supported by iconv()). Examples:  ISO-8859-1  UTF-8  UTF-16  UTF-16BE
+	public $encoding_id3v1  = 'ISO-8859-1';   // Should always be 'ISO-8859-1', but some tags may be written in other encodings such as 'EUC-CN' or 'CP1252'
+
+	// public: Optional tag checks - disable for speed.
+	public $option_tag_id3v1         = true;  // Read and process ID3v1 tags
+	public $option_tag_id3v2         = true;  // Read and process ID3v2 tags
+	public $option_tag_lyrics3       = true;  // Read and process Lyrics3 tags
+	public $option_tag_apetag        = true;  // Read and process APE tags
+	public $option_tags_process      = true;  // Copy tags to root key 'tags' and encode to $this->encoding
+	public $option_tags_html         = true;  // Copy tags to root key 'tags_html' properly translated from various encodings to HTML entities
+
+	// public: Optional tag/comment calucations
+	public $option_extra_info        = true;  // Calculate additional info such as bitrate, channelmode etc
+
+	// public: Optional handling of embedded attachments (e.g. images)
+	public $option_save_attachments  = true; // defaults to true (ATTACHMENTS_INLINE) for backward compatibility
+
+	// public: Optional calculations
+	public $option_md5_data          = false; // Get MD5 sum of data part - slow
+	public $option_md5_data_source   = false; // Use MD5 of source file if availble - only FLAC and OptimFROG
+	public $option_sha1_data         = false; // Get SHA1 sum of data part - slow
+	public $option_max_2gb_check     = null;  // Check whether file is larger than 2GB and thus not supported by 32-bit PHP (null: auto-detect based on PHP_INT_MAX)
+
+	// public: Read buffer size in bytes
+	public $option_fread_buffer_size = 32768;
+
+	// Public variables
+	public $filename;                         // Filename of file being analysed.
+	public $fp;                               // Filepointer to file being analysed.
+	public $info;                             // Result array.
+	public $tempdir = GETID3_TEMP_DIR;
+
+	// Protected variables
+	protected $startup_error   = '';
+	protected $startup_warning = '';
+	protected $memory_limit    = 0;
+
+	const VERSION           = '1.9.7-20130705';
+	const FREAD_BUFFER_SIZE = 32768;
+
+	const ATTACHMENTS_NONE   = false;
+	const ATTACHMENTS_INLINE = true;
+
+	// public: constructor
+	public function __construct() {
+
+		// Check for PHP version
+		$required_php_version = '5.0.5';
+		if (version_compare(PHP_VERSION, $required_php_version, '<')) {
+			$this->startup_error .= 'getID3() requires PHP v'.$required_php_version.' or higher - you are running v'.PHP_VERSION;
+			return false;
+		}
+
+		// Check memory
+		$this->memory_limit = ini_get('memory_limit');
+		if (preg_match('#([0-9]+)M#i', $this->memory_limit, $matches)) {
+			// could be stored as "16M" rather than 16777216 for example
+			$this->memory_limit = $matches[1] * 1048576;
+		} elseif (preg_match('#([0-9]+)G#i', $this->memory_limit, $matches)) { // The 'G' modifier is available since PHP 5.1.0
+			// could be stored as "2G" rather than 2147483648 for example
+			$this->memory_limit = $matches[1] * 1073741824;
+		}
+		if ($this->memory_limit <= 0) {
+			// memory limits probably disabled
+		} elseif ($this->memory_limit <= 4194304) {
+			$this->startup_error .= 'PHP has less than 4MB available memory and will very likely run out. Increase memory_limit in php.ini';
+		} elseif ($this->memory_limit <= 12582912) {
+			$this->startup_warning .= 'PHP has less than 12MB available memory and might run out if all modules are loaded. Increase memory_limit in php.ini';
+		}
+
+		// Check safe_mode off
+		if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
+			$this->warning('WARNING: Safe mode is on, shorten support disabled, md5data/sha1data for ogg vorbis disabled, ogg vorbos/flac tag writing disabled.');
+		}
+
+		if (intval(ini_get('mbstring.func_overload')) > 0) {
+			$this->warning('WARNING: php.ini contains "mbstring.func_overload = '.ini_get('mbstring.func_overload').'", this may break things.');
+		}
+
+		// Check for magic_quotes_runtime
+		if (function_exists('get_magic_quotes_runtime')) {
+			if (get_magic_quotes_runtime()) {
+				return $this->startup_error('magic_quotes_runtime must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_runtime(0) and set_magic_quotes_runtime(1).');
+			}
+		}
+
+		// Check for magic_quotes_gpc
+		if (function_exists('magic_quotes_gpc')) {
+			if (get_magic_quotes_gpc()) {
+				return $this->startup_error('magic_quotes_gpc must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_gpc(0) and set_magic_quotes_gpc(1).');
+			}
+		}
+
+		// Load support library
+		if (!include_once(GETID3_INCLUDEPATH.'getid3.lib.php')) {
+			$this->startup_error .= 'getid3.lib.php is missing or corrupt';
+		}
+
+		if ($this->option_max_2gb_check === null) {
+			$this->option_max_2gb_check = (PHP_INT_MAX <= 2147483647);
+		}
+
+
+		// Needed for Windows only:
+		// Define locations of helper applications for Shorten, VorbisComment, MetaFLAC
+		//   as well as other helper functions such as head, tail, md5sum, etc
+		// This path cannot contain spaces, but the below code will attempt to get the
+		//   8.3-equivalent path automatically
+		// IMPORTANT: This path must include the trailing slash
+		if (GETID3_OS_ISWINDOWS && !defined('GETID3_HELPERAPPSDIR')) {
+
+			$helperappsdir = GETID3_INCLUDEPATH.'..'.DIRECTORY_SEPARATOR.'helperapps'; // must not have any space in this path
+
+			if (!is_dir($helperappsdir)) {
+				$this->startup_warning .= '"'.$helperappsdir.'" cannot be defined as GETID3_HELPERAPPSDIR because it does not exist';
+			} elseif (strpos(realpath($helperappsdir), ' ') !== false) {
+				$DirPieces = explode(DIRECTORY_SEPARATOR, realpath($helperappsdir));
+				$path_so_far = array();
+				foreach ($DirPieces as $key => $value) {
+					if (strpos($value, ' ') !== false) {
+						if (!empty($path_so_far)) {
+							$commandline = 'dir /x '.escapeshellarg(implode(DIRECTORY_SEPARATOR, $path_so_far));
+							$dir_listing = `$commandline`;
+							$lines = explode("\n", $dir_listing);
+							foreach ($lines as $line) {
+								$line = trim($line);
+								if (preg_match('#^([0-9/]{10}) +([0-9:]{4,5}( [AP]M)?) +(<DIR>|[0-9,]+) +([^ ]{0,11}) +(.+)$#', $line, $matches)) {
+									list($dummy, $date, $time, $ampm, $filesize, $shortname, $filename) = $matches;
+									if ((strtoupper($filesize) == '<DIR>') && (strtolower($filename) == strtolower($value))) {
+										$value = $shortname;
+									}
+								}
+							}
+						} else {
+							$this->startup_warning .= 'GETID3_HELPERAPPSDIR must not have any spaces in it - use 8dot3 naming convention if neccesary. You can run "dir /x" from the commandline to see the correct 8.3-style names.';
+						}
+					}
+					$path_so_far[] = $value;
+				}
+				$helperappsdir = implode(DIRECTORY_SEPARATOR, $path_so_far);
+			}
+			define('GETID3_HELPERAPPSDIR', $helperappsdir.DIRECTORY_SEPARATOR);
+		}
+
+		return true;
+	}
+
+	public function version() {
+		return self::VERSION;
+	}
+
+	public function fread_buffer_size() {
+		return $this->option_fread_buffer_size;
+	}
+
+
+	// public: setOption
+	public function setOption($optArray) {
+		if (!is_array($optArray) || empty($optArray)) {
+			return false;
+		}
+		foreach ($optArray as $opt => $val) {
+			if (isset($this->$opt) === false) {
+				continue;
+			}
+			$this->$opt = $val;
+		}
+		return true;
+	}
+
+
+	public function openfile($filename) {
+		try {
+			if (!empty($this->startup_error)) {
+				throw new getid3_exception($this->startup_error);
+			}
+			if (!empty($this->startup_warning)) {
+				$this->warning($this->startup_warning);
+			}
+
+			// init result array and set parameters
+			$this->filename = $filename;
+			$this->info = array();
+			$this->info['GETID3_VERSION']   = $this->version();
+			$this->info['php_memory_limit'] = $this->memory_limit;
+
+			// remote files not supported
+			if (preg_match('/^(ht|f)tp:\/\//', $filename)) {
+				throw new getid3_exception('Remote files are not supported - please copy the file locally first');
+			}
+
+			$filename = str_replace('/', DIRECTORY_SEPARATOR, $filename);
+			$filename = preg_replace('#(.+)'.preg_quote(DIRECTORY_SEPARATOR).'{2,}#U', '\1'.DIRECTORY_SEPARATOR, $filename);
+
+			// open local file
+			if (is_readable($filename) && is_file($filename) && ($this->fp = fopen($filename, 'rb'))) {
+				// great
+			} else {
+				throw new getid3_exception('Could not open "'.$filename.'" (does not exist, or is not a file)');
+			}
+
+			$this->info['filesize'] = filesize($filename);
+			// set redundant parameters - might be needed in some include file
+			$this->info['filename']     = basename($filename);
+			$this->info['filepath']     = str_replace('\\', '/', realpath(dirname($filename)));
+			$this->info['filenamepath'] = $this->info['filepath'].'/'.$this->info['filename'];
+
+
+			// option_max_2gb_check
+			if ($this->option_max_2gb_check) {
+				// PHP (32-bit all, and 64-bit Windows) doesn't support integers larger than 2^31 (~2GB)
+				// filesize() simply returns (filesize % (pow(2, 32)), no matter the actual filesize
+				// ftell() returns 0 if seeking to the end is beyond the range of unsigned integer
+				$fseek = fseek($this->fp, 0, SEEK_END);
+				if (($fseek < 0) || (($this->info['filesize'] != 0) && (ftell($this->fp) == 0)) ||
+					($this->info['filesize'] < 0) ||
+					(ftell($this->fp) < 0)) {
+						$real_filesize = getid3_lib::getFileSizeSyscall($this->info['filenamepath']);
+
+						if ($real_filesize === false) {
+							unset($this->info['filesize']);
+							fclose($this->fp);
+							throw new getid3_exception('Unable to determine actual filesize. File is most likely larger than '.round(PHP_INT_MAX / 1073741824).'GB and is not supported by PHP.');
+						} elseif (getid3_lib::intValueSupported($real_filesize)) {
+							unset($this->info['filesize']);
+							fclose($this->fp);
+							throw new getid3_exception('PHP seems to think the file is larger than '.round(PHP_INT_MAX / 1073741824).'GB, but filesystem reports it as '.number_format($real_filesize, 3).'GB, please report to info@getid3.org');
+						}
+						$this->info['filesize'] = $real_filesize;
+						$this->warning('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB (filesystem reports it as '.number_format($real_filesize, 3).'GB) and is not properly supported by PHP.');
+				}
+			}
+
+			// set more parameters
+			$this->info['avdataoffset']        = 0;
+			$this->info['avdataend']           = $this->info['filesize'];
+			$this->info['fileformat']          = '';                // filled in later
+			$this->info['audio']['dataformat'] = '';                // filled in later, unset if not used
+			$this->info['video']['dataformat'] = '';                // filled in later, unset if not used
+			$this->info['tags']                = array();           // filled in later, unset if not used
+			$this->info['error']               = array();           // filled in later, unset if not used
+			$this->info['warning']             = array();           // filled in later, unset if not used
+			$this->info['comments']            = array();           // filled in later, unset if not used
+			$this->info['encoding']            = $this->encoding;   // required by id3v2 and iso modules - can be unset at the end if desired
+
+			return true;
+
+		} catch (Exception $e) {
+			$this->error($e->getMessage());
+		}
+		return false;
+	}
+
+	// public: analyze file
+	public function analyze($filename) {
+		try {
+			if (!$this->openfile($filename)) {
+				return $this->info;
+			}
+
+			// Handle tags
+			foreach (array('id3v2'=>'id3v2', 'id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
+				$option_tag = 'option_tag_'.$tag_name;
+				if ($this->$option_tag) {
+					$this->include_module('tag.'.$tag_name);
+					try {
+						$tag_class = 'getid3_'.$tag_name;
+						$tag = new $tag_class($this);
+						$tag->Analyze();
+					}
+					catch (getid3_exception $e) {
+						throw $e;
+					}
+				}
+			}
+			if (isset($this->info['id3v2']['tag_offset_start'])) {
+				$this->info['avdataoffset'] = max($this->info['avdataoffset'], $this->info['id3v2']['tag_offset_end']);
+			}
+			foreach (array('id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
+				if (isset($this->info[$tag_key]['tag_offset_start'])) {
+					$this->info['avdataend'] = min($this->info['avdataend'], $this->info[$tag_key]['tag_offset_start']);
+				}
+			}
+
+			// ID3v2 detection (NOT parsing), even if ($this->option_tag_id3v2 == false) done to make fileformat easier
+			if (!$this->option_tag_id3v2) {
+				fseek($this->fp, 0, SEEK_SET);
+				$header = fread($this->fp, 10);
+				if ((substr($header, 0, 3) == 'ID3') && (strlen($header) == 10)) {
+					$this->info['id3v2']['header']        = true;
+					$this->info['id3v2']['majorversion']  = ord($header{3});
+					$this->info['id3v2']['minorversion']  = ord($header{4});
+					$this->info['avdataoffset']          += getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length
+				}
+			}
+
+			// read 32 kb file data
+			fseek($this->fp, $this->info['avdataoffset'], SEEK_SET);
+			$formattest = fread($this->fp, 32774);
+
+			// determine format
+			$determined_format = $this->GetFileFormat($formattest, $filename);
+
+			// unable to determine file format
+			if (!$determined_format) {
+				fclose($this->fp);
+				return $this->error('unable to determine file format');
+			}
+
+			// check for illegal ID3 tags
+			if (isset($determined_format['fail_id3']) && (in_array('id3v1', $this->info['tags']) || in_array('id3v2', $this->info['tags']))) {
+				if ($determined_format['fail_id3'] === 'ERROR') {
+					fclose($this->fp);
+					return $this->error('ID3 tags not allowed on this file type.');
+				} elseif ($determined_format['fail_id3'] === 'WARNING') {
+					$this->warning('ID3 tags not allowed on this file type.');
+				}
+			}
+
+			// check for illegal APE tags
+			if (isset($determined_format['fail_ape']) && in_array('ape', $this->info['tags'])) {
+				if ($determined_format['fail_ape'] === 'ERROR') {
+					fclose($this->fp);
+					return $this->error('APE tags not allowed on this file type.');
+				} elseif ($determined_format['fail_ape'] === 'WARNING') {
+					$this->warning('APE tags not allowed on this file type.');
+				}
+			}
+
+			// set mime type
+			$this->info['mime_type'] = $determined_format['mime_type'];
+
+			// supported format signature pattern detected, but module deleted
+			if (!file_exists(GETID3_INCLUDEPATH.$determined_format['include'])) {
+				fclose($this->fp);
+				return $this->error('Format not supported, module "'.$determined_format['include'].'" was removed.');
+			}
+
+			// module requires iconv support
+			// Check encoding/iconv support
+			if (!empty($determined_format['iconv_req']) && !function_exists('iconv') && !in_array($this->encoding, array('ISO-8859-1', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'UTF-16'))) {
+				$errormessage = 'iconv() support is required for this module ('.$determined_format['include'].') for encodings other than ISO-8859-1, UTF-8, UTF-16LE, UTF16-BE, UTF-16. ';
+				if (GETID3_OS_ISWINDOWS) {
+					$errormessage .= 'PHP does not have iconv() support. Please enable php_iconv.dll in php.ini, and copy iconv.dll from c:/php/dlls to c:/windows/system32';
+				} else {
+					$errormessage .= 'PHP is not compiled with iconv() support. Please recompile with the --with-iconv switch';
+				}
+				return $this->error($errormessage);
+			}
+
+			// include module
+			include_once(GETID3_INCLUDEPATH.$determined_format['include']);
+
+			// instantiate module class
+			$class_name = 'getid3_'.$determined_format['module'];
+			if (!class_exists($class_name)) {
+				return $this->error('Format not supported, module "'.$determined_format['include'].'" is corrupt.');
+			}
+			$class = new $class_name($this);
+			$class->Analyze();
+			unset($class);
+
+			// close file
+			fclose($this->fp);
+
+			// process all tags - copy to 'tags' and convert charsets
+			if ($this->option_tags_process) {
+				$this->HandleAllTags();
+			}
+
+			// perform more calculations
+			if ($this->option_extra_info) {
+				$this->ChannelsBitratePlaytimeCalculations();
+				$this->CalculateCompressionRatioVideo();
+				$this->CalculateCompressionRatioAudio();
+				$this->CalculateReplayGain();
+				$this->ProcessAudioStreams();
+			}
+
+			// get the MD5 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
+			if ($this->option_md5_data) {
+				// do not calc md5_data if md5_data_source is present - set by flac only - future MPC/SV8 too
+				if (!$this->option_md5_data_source || empty($this->info['md5_data_source'])) {
+					$this->getHashdata('md5');
+				}
+			}
+
+			// get the SHA1 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
+			if ($this->option_sha1_data) {
+				$this->getHashdata('sha1');
+			}
+
+			// remove undesired keys
+			$this->CleanUp();
+
+		} catch (Exception $e) {
+			$this->error('Caught exception: '.$e->getMessage());
+		}
+
+		// return info array
+		return $this->info;
+	}
+
+
+	// private: error handling
+	public function error($message) {
+		$this->CleanUp();
+		if (!isset($this->info['error'])) {
+			$this->info['error'] = array();
+		}
+		$this->info['error'][] = $message;
+		return $this->info;
+	}
+
+
+	// private: warning handling
+	public function warning($message) {
+		$this->info['warning'][] = $message;
+		return true;
+	}
+
+
+	// private: CleanUp
+	private function CleanUp() {
+
+		// remove possible empty keys
+		$AVpossibleEmptyKeys = array('dataformat', 'bits_per_sample', 'encoder_options', 'streams', 'bitrate');
+		foreach ($AVpossibleEmptyKeys as $dummy => $key) {
+			if (empty($this->info['audio'][$key]) && isset($this->info['audio'][$key])) {
+				unset($this->info['audio'][$key]);
+			}
+			if (empty($this->info['video'][$key]) && isset($this->info['video'][$key])) {
+				unset($this->info['video'][$key]);
+			}
+		}
+
+		// remove empty root keys
+		if (!empty($this->info)) {
+			foreach ($this->info as $key => $value) {
+				if (empty($this->info[$key]) && ($this->info[$key] !== 0) && ($this->info[$key] !== '0')) {
+					unset($this->info[$key]);
+				}
+			}
+		}
+
+		// remove meaningless entries from unknown-format files
+		if (empty($this->info['fileformat'])) {
+			if (isset($this->info['avdataoffset'])) {
+				unset($this->info['avdataoffset']);
+			}
+			if (isset($this->info['avdataend'])) {
+				unset($this->info['avdataend']);
+			}
+		}
+
+		// remove possible duplicated identical entries
+		if (!empty($this->info['error'])) {
+			$this->info['error'] = array_values(array_unique($this->info['error']));
+		}
+		if (!empty($this->info['warning'])) {
+			$this->info['warning'] = array_values(array_unique($this->info['warning']));
+		}
+
+		// remove "global variable" type keys
+		unset($this->info['php_memory_limit']);
+
+		return true;
+	}
+
+
+	// return array containing information about all supported formats
+	public function GetFileFormatArray() {
+		static $format_info = array();
+		if (empty($format_info)) {
+			$format_info = array(
+
+				// Audio formats
+
+				// AC-3   - audio      - Dolby AC-3 / Dolby Digital
+				'ac3'  => array(
+							'pattern'   => '^\x0B\x77',
+							'group'     => 'audio',
+							'module'    => 'ac3',
+							'mime_type' => 'audio/ac3',
+						),
+
+				// AAC  - audio       - Advanced Audio Coding (AAC) - ADIF format
+				'adif' => array(
+							'pattern'   => '^ADIF',
+							'group'     => 'audio',
+							'module'    => 'aac',
+							'mime_type' => 'application/octet-stream',
+							'fail_ape'  => 'WARNING',
+						),
+
+/*
+				// AA   - audio       - Audible Audiobook
+				'aa'   => array(
+							'pattern'   => '^.{4}\x57\x90\x75\x36',
+							'group'     => 'audio',
+							'module'    => 'aa',
+							'mime_type' => 'audio/audible',
+						),
+*/
+				// AAC  - audio       - Advanced Audio Coding (AAC) - ADTS format (very similar to MP3)
+				'adts' => array(
+							'pattern'   => '^\xFF[\xF0-\xF1\xF8-\xF9]',
+							'group'     => 'audio',
+							'module'    => 'aac',
+							'mime_type' => 'application/octet-stream',
+							'fail_ape'  => 'WARNING',
+						),
+
+
+				// AU   - audio       - NeXT/Sun AUdio (AU)
+				'au'   => array(
+							'pattern'   => '^\.snd',
+							'group'     => 'audio',
+							'module'    => 'au',
+							'mime_type' => 'audio/basic',
+						),
+
+				// AVR  - audio       - Audio Visual Research
+				'avr'  => array(
+							'pattern'   => '^2BIT',
+							'group'     => 'audio',
+							'module'    => 'avr',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// BONK - audio       - Bonk v0.9+
+				'bonk' => array(
+							'pattern'   => '^\x00(BONK|INFO|META| ID3)',
+							'group'     => 'audio',
+							'module'    => 'bonk',
+							'mime_type' => 'audio/xmms-bonk',
+						),
+
+				// DSS  - audio       - Digital Speech Standard
+				'dss'  => array(
+							'pattern'   => '^[\x02-\x03]ds[s2]',
+							'group'     => 'audio',
+							'module'    => 'dss',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// DTS  - audio       - Dolby Theatre System
+				'dts'  => array(
+							'pattern'   => '^\x7F\xFE\x80\x01',
+							'group'     => 'audio',
+							'module'    => 'dts',
+							'mime_type' => 'audio/dts',
+						),
+
+				// FLAC - audio       - Free Lossless Audio Codec
+				'flac' => array(
+							'pattern'   => '^fLaC',
+							'group'     => 'audio',
+							'module'    => 'flac',
+							'mime_type' => 'audio/x-flac',
+						),
+
+				// LA   - audio       - Lossless Audio (LA)
+				'la'   => array(
+							'pattern'   => '^LA0[2-4]',
+							'group'     => 'audio',
+							'module'    => 'la',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// LPAC - audio       - Lossless Predictive Audio Compression (LPAC)
+				'lpac' => array(
+							'pattern'   => '^LPAC',
+							'group'     => 'audio',
+							'module'    => 'lpac',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// MIDI - audio       - MIDI (Musical Instrument Digital Interface)
+				'midi' => array(
+							'pattern'   => '^MThd',
+							'group'     => 'audio',
+							'module'    => 'midi',
+							'mime_type' => 'audio/midi',
+						),
+
+				// MAC  - audio       - Monkey's Audio Compressor
+				'mac'  => array(
+							'pattern'   => '^MAC ',
+							'group'     => 'audio',
+							'module'    => 'monkey',
+							'mime_type' => 'application/octet-stream',
+						),
+
+// has been known to produce false matches in random files (e.g. JPEGs), leave out until more precise matching available
+//				// MOD  - audio       - MODule (assorted sub-formats)
+//				'mod'  => array(
+//							'pattern'   => '^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)',
+//							'group'     => 'audio',
+//							'module'    => 'mod',
+//							'option'    => 'mod',
+//							'mime_type' => 'audio/mod',
+//						),
+
+				// MOD  - audio       - MODule (Impulse Tracker)
+				'it'   => array(
+							'pattern'   => '^IMPM',
+							'group'     => 'audio',
+							'module'    => 'mod',
+							//'option'    => 'it',
+							'mime_type' => 'audio/it',
+						),
+
+				// MOD  - audio       - MODule (eXtended Module, various sub-formats)
+				'xm'   => array(
+							'pattern'   => '^Extended Module',
+							'group'     => 'audio',
+							'module'    => 'mod',
+							//'option'    => 'xm',
+							'mime_type' => 'audio/xm',
+						),
+
+				// MOD  - audio       - MODule (ScreamTracker)
+				's3m'  => array(
+							'pattern'   => '^.{44}SCRM',
+							'group'     => 'audio',
+							'module'    => 'mod',
+							//'option'    => 's3m',
+							'mime_type' => 'audio/s3m',
+						),
+
+				// MPC  - audio       - Musepack / MPEGplus
+				'mpc'  => array(
+							'pattern'   => '^(MPCK|MP\+|[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0])',
+							'group'     => 'audio',
+							'module'    => 'mpc',
+							'mime_type' => 'audio/x-musepack',
+						),
+
+				// MP3  - audio       - MPEG-audio Layer 3 (very similar to AAC-ADTS)
+				'mp3'  => array(
+							'pattern'   => '^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\x0B\x10-\x1B\x20-\x2B\x30-\x3B\x40-\x4B\x50-\x5B\x60-\x6B\x70-\x7B\x80-\x8B\x90-\x9B\xA0-\xAB\xB0-\xBB\xC0-\xCB\xD0-\xDB\xE0-\xEB\xF0-\xFB]',
+							'group'     => 'audio',
+							'module'    => 'mp3',
+							'mime_type' => 'audio/mpeg',
+						),
+
+				// OFR  - audio       - OptimFROG
+				'ofr'  => array(
+							'pattern'   => '^(\*RIFF|OFR)',
+							'group'     => 'audio',
+							'module'    => 'optimfrog',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// RKAU - audio       - RKive AUdio compressor
+				'rkau' => array(
+							'pattern'   => '^RKA',
+							'group'     => 'audio',
+							'module'    => 'rkau',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// SHN  - audio       - Shorten
+				'shn'  => array(
+							'pattern'   => '^ajkg',
+							'group'     => 'audio',
+							'module'    => 'shorten',
+							'mime_type' => 'audio/xmms-shn',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// TTA  - audio       - TTA Lossless Audio Compressor (http://tta.corecodec.org)
+				'tta'  => array(
+							'pattern'   => '^TTA',  // could also be '^TTA(\x01|\x02|\x03|2|1)'
+							'group'     => 'audio',
+							'module'    => 'tta',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// VOC  - audio       - Creative Voice (VOC)
+				'voc'  => array(
+							'pattern'   => '^Creative Voice File',
+							'group'     => 'audio',
+							'module'    => 'voc',
+							'mime_type' => 'audio/voc',
+						),
+
+				// VQF  - audio       - transform-domain weighted interleave Vector Quantization Format (VQF)
+				'vqf'  => array(
+							'pattern'   => '^TWIN',
+							'group'     => 'audio',
+							'module'    => 'vqf',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// WV  - audio        - WavPack (v4.0+)
+				'wv'   => array(
+							'pattern'   => '^wvpk',
+							'group'     => 'audio',
+							'module'    => 'wavpack',
+							'mime_type' => 'application/octet-stream',
+						),
+
+
+				// Audio-Video formats
+
+				// ASF  - audio/video - Advanced Streaming Format, Windows Media Video, Windows Media Audio
+				'asf'  => array(
+							'pattern'   => '^\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C',
+							'group'     => 'audio-video',
+							'module'    => 'asf',
+							'mime_type' => 'video/x-ms-asf',
+							'iconv_req' => false,
+						),
+
+				// BINK - audio/video - Bink / Smacker
+				'bink' => array(
+							'pattern'   => '^(BIK|SMK)',
+							'group'     => 'audio-video',
+							'module'    => 'bink',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// FLV  - audio/video - FLash Video
+				'flv' => array(
+							'pattern'   => '^FLV\x01',
+							'group'     => 'audio-video',
+							'module'    => 'flv',
+							'mime_type' => 'video/x-flv',
+						),
+
+				// MKAV - audio/video - Mastroka
+				'matroska' => array(
+							'pattern'   => '^\x1A\x45\xDF\xA3',
+							'group'     => 'audio-video',
+							'module'    => 'matroska',
+							'mime_type' => 'video/x-matroska', // may also be audio/x-matroska
+						),
+
+				// MPEG - audio/video - MPEG (Moving Pictures Experts Group)
+				'mpeg' => array(
+							'pattern'   => '^\x00\x00\x01(\xBA|\xB3)',
+							'group'     => 'audio-video',
+							'module'    => 'mpeg',
+							'mime_type' => 'video/mpeg',
+						),
+
+				// NSV  - audio/video - Nullsoft Streaming Video (NSV)
+				'nsv'  => array(
+							'pattern'   => '^NSV[sf]',
+							'group'     => 'audio-video',
+							'module'    => 'nsv',
+							'mime_type' => 'application/octet-stream',
+						),
+
+				// Ogg  - audio/video - Ogg (Ogg-Vorbis, Ogg-FLAC, Speex, Ogg-Theora(*), Ogg-Tarkin(*))
+				'ogg'  => array(
+							'pattern'   => '^OggS',
+							'group'     => 'audio',
+							'module'    => 'ogg',
+							'mime_type' => 'application/ogg',
+							'fail_id3'  => 'WARNING',
+							'fail_ape'  => 'WARNING',
+						),
+
+				// QT   - audio/video - Quicktime
+				'quicktime' => array(
+							'pattern'   => '^.{4}(cmov|free|ftyp|mdat|moov|pnot|skip|wide)',
+							'group'     => 'audio-video',
+							'module'    => 'quicktime',
+							'mime_type' => 'video/quicktime',
+						),
+
+				// RIFF - audio/video - Resource Interchange File Format (RIFF) / WAV / AVI / CD-audio / SDSS = renamed variant used by SmartSound QuickTracks (www.smartsound.com) / FORM = Audio Interchange File Format (AIFF)
+				'riff' => array(
+							'pattern'   => '^(RIFF|SDSS|FORM)',
+							'group'     => 'audio-video',
+							'module'    => 'riff',
+							'mime_type' => 'audio/x-wave',
+							'fail_ape'  => 'WARNING',
+						),
+
+				// Real - audio/video - RealAudio, RealVideo
+				'real' => array(
+							'pattern'   => '^(\\.RMF|\\.ra)',
+							'group'     => 'audio-video',
+							'module'    => 'real',
+							'mime_type' => 'audio/x-realaudio',
+						),
+
+				// SWF - audio/video - ShockWave Flash
+				'swf' => array(
+							'pattern'   => '^(F|C)WS',
+							'group'     => 'audio-video',
+							'module'    => 'swf',
+							'mime_type' => 'application/x-shockwave-flash',
+						),
+
+				// TS - audio/video - MPEG-2 Transport Stream
+				'ts' => array(
+							'pattern'   => '^(\x47.{187}){10,}', // packets are 188 bytes long and start with 0x47 "G".  Check for at least 10 packets matching this pattern
+							'group'     => 'audio-video',
+							'module'    => 'ts',
+							'mime_type' => 'video/MP2T',
+						),
+
+
+				// Still-Image formats
+
+				// BMP  - still image - Bitmap (Windows, OS/2; uncompressed, RLE8, RLE4)
+				'bmp'  => array(
+							'pattern'   => '^BM',
+							'group'     => 'graphic',
+							'module'    => 'bmp',
+							'mime_type' => 'image/bmp',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// GIF  - still image - Graphics Interchange Format
+				'gif'  => array(
+							'pattern'   => '^GIF',
+							'group'     => 'graphic',
+							'module'    => 'gif',
+							'mime_type' => 'image/gif',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// JPEG - still image - Joint Photographic Experts Group (JPEG)
+				'jpg'  => array(
+							'pattern'   => '^\xFF\xD8\xFF',
+							'group'     => 'graphic',
+							'module'    => 'jpg',
+							'mime_type' => 'image/jpeg',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// PCD  - still image - Kodak Photo CD
+				'pcd'  => array(
+							'pattern'   => '^.{2048}PCD_IPI\x00',
+							'group'     => 'graphic',
+							'module'    => 'pcd',
+							'mime_type' => 'image/x-photo-cd',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// PNG  - still image - Portable Network Graphics (PNG)
+				'png'  => array(
+							'pattern'   => '^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A',
+							'group'     => 'graphic',
+							'module'    => 'png',
+							'mime_type' => 'image/png',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// SVG  - still image - Scalable Vector Graphics (SVG)
+				'svg'  => array(
+							'pattern'   => '(<!DOCTYPE svg PUBLIC |xmlns="http:\/\/www\.w3\.org\/2000\/svg")',
+							'group'     => 'graphic',
+							'module'    => 'svg',
+							'mime_type' => 'image/svg+xml',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// TIFF - still image - Tagged Information File Format (TIFF)
+				'tiff' => array(
+							'pattern'   => '^(II\x2A\x00|MM\x00\x2A)',
+							'group'     => 'graphic',
+							'module'    => 'tiff',
+							'mime_type' => 'image/tiff',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// EFAX - still image - eFax (TIFF derivative)
+				'efax'  => array(
+							'pattern'   => '^\xDC\xFE',
+							'group'     => 'graphic',
+							'module'    => 'efax',
+							'mime_type' => 'image/efax',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// Data formats
+
+				// ISO  - data        - International Standards Organization (ISO) CD-ROM Image
+				'iso'  => array(
+							'pattern'   => '^.{32769}CD001',
+							'group'     => 'misc',
+							'module'    => 'iso',
+							'mime_type' => 'application/octet-stream',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+							'iconv_req' => false,
+						),
+
+				// RAR  - data        - RAR compressed data
+				'rar'  => array(
+							'pattern'   => '^Rar\!',
+							'group'     => 'archive',
+							'module'    => 'rar',
+							'mime_type' => 'application/octet-stream',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// SZIP - audio/data  - SZIP compressed data
+				'szip' => array(
+							'pattern'   => '^SZ\x0A\x04',
+							'group'     => 'archive',
+							'module'    => 'szip',
+							'mime_type' => 'application/octet-stream',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// TAR  - data        - TAR compressed data
+				'tar'  => array(
+							'pattern'   => '^.{100}[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20\x00]{12}[0-9\x20\x00]{12}',
+							'group'     => 'archive',
+							'module'    => 'tar',
+							'mime_type' => 'application/x-tar',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// GZIP  - data        - GZIP compressed data
+				'gz'  => array(
+							'pattern'   => '^\x1F\x8B\x08',
+							'group'     => 'archive',
+							'module'    => 'gzip',
+							'mime_type' => 'application/x-gzip',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// ZIP  - data         - ZIP compressed data
+				'zip'  => array(
+							'pattern'   => '^PK\x03\x04',
+							'group'     => 'archive',
+							'module'    => 'zip',
+							'mime_type' => 'application/zip',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+
+				// Misc other formats
+
+				// PAR2 - data        - Parity Volume Set Specification 2.0
+				'par2' => array (
+							'pattern'   => '^PAR2\x00PKT',
+							'group'     => 'misc',
+							'module'    => 'par2',
+							'mime_type' => 'application/octet-stream',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// PDF  - data        - Portable Document Format
+				'pdf'  => array(
+							'pattern'   => '^\x25PDF',
+							'group'     => 'misc',
+							'module'    => 'pdf',
+							'mime_type' => 'application/pdf',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				// MSOFFICE  - data   - ZIP compressed data
+				'msoffice' => array(
+							'pattern'   => '^\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1', // D0CF11E == DOCFILE == Microsoft Office Document
+							'group'     => 'misc',
+							'module'    => 'msoffice',
+							'mime_type' => 'application/octet-stream',
+							'fail_id3'  => 'ERROR',
+							'fail_ape'  => 'ERROR',
+						),
+
+				 // CUE  - data       - CUEsheet (index to single-file disc images)
+				 'cue' => array(
+							'pattern'   => '', // empty pattern means cannot be automatically detected, will fall through all other formats and match based on filename and very basic file contents
+							'group'     => 'misc',
+							'module'    => 'cue',
+							'mime_type' => 'application/octet-stream',
+						   ),
+
+			);
+		}
+
+		return $format_info;
+	}
+
+
+
+	public function GetFileFormat(&$filedata, $filename='') {
+		// this function will determine the format of a file based on usually
+		// the first 2-4 bytes of the file (8 bytes for PNG, 16 bytes for JPG,
+		// and in the case of ISO CD image, 6 bytes offset 32kb from the start
+		// of the file).
+
+		// Identify file format - loop through $format_info and detect with reg expr
+		foreach ($this->GetFileFormatArray() as $format_name => $info) {
+			// The /s switch on preg_match() forces preg_match() NOT to treat
+			// newline (0x0A) characters as special chars but do a binary match
+			if (!empty($info['pattern']) && preg_match('#'.$info['pattern'].'#s', $filedata)) {
+				$info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php';
+				return $info;
+			}
+		}
+
+
+		if (preg_match('#\.mp[123a]$#i', $filename)) {
+			// Too many mp3 encoders on the market put gabage in front of mpeg files
+			// use assume format on these if format detection failed
+			$GetFileFormatArray = $this->GetFileFormatArray();
+			$info = $GetFileFormatArray['mp3'];
+			$info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php';
+			return $info;
+		} elseif (preg_match('/\.cue$/i', $filename) && preg_match('#FILE "[^"]+" (BINARY|MOTOROLA|AIFF|WAVE|MP3)#', $filedata)) {
+			// there's not really a useful consistent "magic" at the beginning of .cue files to identify them
+			// so until I think of something better, just go by filename if all other format checks fail
+			// and verify there's at least one instance of "TRACK xx AUDIO" in the file
+			$GetFileFormatArray = $this->GetFileFormatArray();
+			$info = $GetFileFormatArray['cue'];
+			$info['include']   = 'module.'.$info['group'].'.'.$info['module'].'.php';
+			return $info;
+		}
+
+		return false;
+	}
+
+
+	// converts array to $encoding charset from $this->encoding
+	public function CharConvert(&$array, $encoding) {
+
+		// identical encoding - end here
+		if ($encoding == $this->encoding) {
+			return;
+		}
+
+		// loop thru array
+		foreach ($array as $key => $value) {
+
+			// go recursive
+			if (is_array($value)) {
+				$this->CharConvert($array[$key], $encoding);
+			}
+
+			// convert string
+			elseif (is_string($value)) {
+				$array[$key] = trim(getid3_lib::iconv_fallback($encoding, $this->encoding, $value));
+			}
+		}
+	}
+
+
+	public function HandleAllTags() {
+
+		// key name => array (tag name, character encoding)
+		static $tags;
+		if (empty($tags)) {
+			$tags = array(
+				'asf'       => array('asf'           , 'UTF-16LE'),
+				'midi'      => array('midi'          , 'ISO-8859-1'),
+				'nsv'       => array('nsv'           , 'ISO-8859-1'),
+				'ogg'       => array('vorbiscomment' , 'UTF-8'),
+				'png'       => array('png'           , 'UTF-8'),
+				'tiff'      => array('tiff'          , 'ISO-8859-1'),
+				'quicktime' => array('quicktime'     , 'UTF-8'),
+				'real'      => array('real'          , 'ISO-8859-1'),
+				'vqf'       => array('vqf'           , 'ISO-8859-1'),
+				'zip'       => array('zip'           , 'ISO-8859-1'),
+				'riff'      => array('riff'          , 'ISO-8859-1'),
+				'lyrics3'   => array('lyrics3'       , 'ISO-8859-1'),
+				'id3v1'     => array('id3v1'         , $this->encoding_id3v1),
+				'id3v2'     => array('id3v2'         , 'UTF-8'), // not according to the specs (every frame can have a different encoding), but getID3() force-converts all encodings to UTF-8
+				'ape'       => array('ape'           , 'UTF-8'),
+				'cue'       => array('cue'           , 'ISO-8859-1'),
+				'matroska'  => array('matroska'      , 'UTF-8'),
+				'flac'      => array('vorbiscomment' , 'UTF-8'),
+				'divxtag'   => array('divx'          , 'ISO-8859-1'),
+			);
+		}
+
+		// loop through comments array
+		foreach ($tags as $comment_name => $tagname_encoding_array) {
+			list($tag_name, $encoding) = $tagname_encoding_array;
+
+			// fill in default encoding type if not already present
+			if (isset($this->info[$comment_name]) && !isset($this->info[$comment_name]['encoding'])) {
+				$this->info[$comment_name]['encoding'] = $encoding;
+			}
+
+			// copy comments if key name set
+			if (!empty($this->info[$comment_name]['comments'])) {
+				foreach ($this->info[$comment_name]['comments'] as $tag_key => $valuearray) {
+					foreach ($valuearray as $key => $value) {
+						if (is_string($value)) {
+							$value = trim($value, " \r\n\t"); // do not trim nulls from $value!! Unicode characters will get mangled if trailing nulls are removed!
+						}
+						if ($value) {
+							$this->info['tags'][trim($tag_name)][trim($tag_key)][] = $value;
+						}
+					}
+					if ($tag_key == 'picture') {
+						unset($this->info[$comment_name]['comments'][$tag_key]);
+					}
+				}
+
+				if (!isset($this->info['tags'][$tag_name])) {
+					// comments are set but contain nothing but empty strings, so skip
+					continue;
+				}
+
+				if ($this->option_tags_html) {
+					foreach ($this->info['tags'][$tag_name] as $tag_key => $valuearray) {
+						foreach ($valuearray as $key => $value) {
+							if (is_string($value)) {
+								//$this->info['tags_html'][$tag_name][$tag_key][$key] = getid3_lib::MultiByteCharString2HTML($value, $encoding);
+								$this->info['tags_html'][$tag_name][$tag_key][$key] = str_replace('&#0;', '', trim(getid3_lib::MultiByteCharString2HTML($value, $encoding)));
+							} else {
+								$this->info['tags_html'][$tag_name][$tag_key][$key] = $value;
+							}
+						}
+					}
+				}
+
+				$this->CharConvert($this->info['tags'][$tag_name], $encoding);           // only copy gets converted!
+			}
+
+		}
+
+		// pictures can take up a lot of space, and we don't need multiple copies of them
+		// let there be a single copy in [comments][picture], and not elsewhere
+		if (!empty($this->info['tags'])) {
+			$unset_keys = array('tags', 'tags_html');
+			foreach ($this->info['tags'] as $tagtype => $tagarray) {
+				foreach ($tagarray as $tagname => $tagdata) {
+					if ($tagname == 'picture') {
+						foreach ($tagdata as $key => $tagarray) {
+							$this->info['comments']['picture'][] = $tagarray;
+							if (isset($tagarray['data']) && isset($tagarray['image_mime'])) {
+								if (isset($this->info['tags'][$tagtype][$tagname][$key])) {
+									unset($this->info['tags'][$tagtype][$tagname][$key]);
+								}
+								if (isset($this->info['tags_html'][$tagtype][$tagname][$key])) {
+									unset($this->info['tags_html'][$tagtype][$tagname][$key]);
+								}
+							}
+						}
+					}
+				}
+				foreach ($unset_keys as $unset_key) {
+					// remove possible empty keys from (e.g. [tags][id3v2][picture])
+					if (empty($this->info[$unset_key][$tagtype]['picture'])) {
+						unset($this->info[$unset_key][$tagtype]['picture']);
+					}
+					if (empty($this->info[$unset_key][$tagtype])) {
+						unset($this->info[$unset_key][$tagtype]);
+					}
+					if (empty($this->info[$unset_key])) {
+						unset($this->info[$unset_key]);
+					}
+				}
+				// remove duplicate copy of picture data from (e.g. [id3v2][comments][picture])
+				if (isset($this->info[$tagtype]['comments']['picture'])) {
+					unset($this->info[$tagtype]['comments']['picture']);
+				}
+				if (empty($this->info[$tagtype]['comments'])) {
+					unset($this->info[$tagtype]['comments']);
+				}
+				if (empty($this->info[$tagtype])) {
+					unset($this->info[$tagtype]);
+				}
+			}
+		}
+		return true;
+	}
+
+
+	public function getHashdata($algorithm) {
+		switch ($algorithm) {
+			case 'md5':
+			case 'sha1':
+				break;
+
+			default:
+				return $this->error('bad algorithm "'.$algorithm.'" in getHashdata()');
+				break;
+		}
+
+		if (!empty($this->info['fileformat']) && !empty($this->info['dataformat']) && ($this->info['fileformat'] == 'ogg') && ($this->info['audio']['dataformat'] == 'vorbis')) {
+
+			// We cannot get an identical md5_data value for Ogg files where the comments
+			// span more than 1 Ogg page (compared to the same audio data with smaller
+			// comments) using the normal getID3() method of MD5'ing the data between the
+			// end of the comments and the end of the file (minus any trailing tags),
+			// because the page sequence numbers of the pages that the audio data is on
+			// do not match. Under normal circumstances, where comments are smaller than
+			// the nominal 4-8kB page size, then this is not a problem, but if there are
+			// very large comments, the only way around it is to strip off the comment
+			// tags with vorbiscomment and MD5 that file.
+			// This procedure must be applied to ALL Ogg files, not just the ones with
+			// comments larger than 1 page, because the below method simply MD5's the
+			// whole file with the comments stripped, not just the portion after the
+			// comments block (which is the standard getID3() method.
+
+			// The above-mentioned problem of comments spanning multiple pages and changing
+			// page sequence numbers likely happens for OggSpeex and OggFLAC as well, but
+			// currently vorbiscomment only works on OggVorbis files.
+
+			if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
+
+				$this->warning('Failed making system call to vorbiscomment.exe - '.$algorithm.'_data is incorrect - error returned: PHP running in Safe Mode (backtick operator not available)');
+				$this->info[$algorithm.'_data'] = false;
+
+			} else {
+
+				// Prevent user from aborting script
+				$old_abort = ignore_user_abort(true);
+
+				// Create empty file
+				$empty = tempnam(GETID3_TEMP_DIR, 'getID3');
+				touch($empty);
+
+				// Use vorbiscomment to make temp file without comments
+				$temp = tempnam(GETID3_TEMP_DIR, 'getID3');
+				$file = $this->info['filenamepath'];
+
+				if (GETID3_OS_ISWINDOWS) {
+
+					if (file_exists(GETID3_HELPERAPPSDIR.'vorbiscomment.exe')) {
+
+						$commandline = '"'.GETID3_HELPERAPPSDIR.'vorbiscomment.exe" -w -c "'.$empty.'" "'.$file.'" "'.$temp.'"';
+						$VorbisCommentError = `$commandline`;
+
+					} else {
+
+						$VorbisCommentError = 'vorbiscomment.exe not found in '.GETID3_HELPERAPPSDIR;
+
+					}
+
+				} else {
+
+					$commandline = 'vorbiscomment -w -c "'.$empty.'" "'.$file.'" "'.$temp.'" 2>&1';
+					$commandline = 'vorbiscomment -w -c '.escapeshellarg($empty).' '.escapeshellarg($file).' '.escapeshellarg($temp).' 2>&1';
+					$VorbisCommentError = `$commandline`;
+
+				}
+
+				if (!empty($VorbisCommentError)) {
+
+					$this->info['warning'][]         = 'Failed making system call to vorbiscomment(.exe) - '.$algorithm.'_data will be incorrect. If vorbiscomment is unavailable, please download from http://www.vorbis.com/download.psp and put in the getID3() directory. Error returned: '.$VorbisCommentError;
+					$this->info[$algorithm.'_data']  = false;
+
+				} else {
+
+					// Get hash of newly created file
+					switch ($algorithm) {
+						case 'md5':
+							$this->info[$algorithm.'_data'] = md5_file($temp);
+							break;
+
+						case 'sha1':
+							$this->info[$algorithm.'_data'] = sha1_file($temp);
+							break;
+					}
+				}
+
+				// Clean up
+				unlink($empty);
+				unlink($temp);
+
+				// Reset abort setting
+				ignore_user_abort($old_abort);
+
+			}
+
+		} else {
+
+			if (!empty($this->info['avdataoffset']) || (isset($this->info['avdataend']) && ($this->info['avdataend'] < $this->info['filesize']))) {
+
+				// get hash from part of file
+				$this->info[$algorithm.'_data'] = getid3_lib::hash_data($this->info['filenamepath'], $this->info['avdataoffset'], $this->info['avdataend'], $algorithm);
+
+			} else {
+
+				// get hash from whole file
+				switch ($algorithm) {
+					case 'md5':
+						$this->info[$algorithm.'_data'] = md5_file($this->info['filenamepath']);
+						break;
+
+					case 'sha1':
+						$this->info[$algorithm.'_data'] = sha1_file($this->info['filenamepath']);
+						break;
+				}
+			}
+
+		}
+		return true;
+	}
+
+
+	public function ChannelsBitratePlaytimeCalculations() {
+
+		// set channelmode on audio
+		if (!empty($this->info['audio']['channelmode']) || !isset($this->info['audio']['channels'])) {
+			// ignore
+		} elseif ($this->info['audio']['channels'] == 1) {
+			$this->info['audio']['channelmode'] = 'mono';
+		} elseif ($this->info['audio']['channels'] == 2) {
+			$this->info['audio']['channelmode'] = 'stereo';
+		}
+
+		// Calculate combined bitrate - audio + video
+		$CombinedBitrate  = 0;
+		$CombinedBitrate += (isset($this->info['audio']['bitrate']) ? $this->info['audio']['bitrate'] : 0);
+		$CombinedBitrate += (isset($this->info['video']['bitrate']) ? $this->info['video']['bitrate'] : 0);
+		if (($CombinedBitrate > 0) && empty($this->info['bitrate'])) {
+			$this->info['bitrate'] = $CombinedBitrate;
+		}
+		//if ((isset($this->info['video']) && !isset($this->info['video']['bitrate'])) || (isset($this->info['audio']) && !isset($this->info['audio']['bitrate']))) {
+		//	// for example, VBR MPEG video files cannot determine video bitrate:
+		//	// should not set overall bitrate and playtime from audio bitrate only
+		//	unset($this->info['bitrate']);
+		//}
+
+		// video bitrate undetermined, but calculable
+		if (isset($this->info['video']['dataformat']) && $this->info['video']['dataformat'] && (!isset($this->info['video']['bitrate']) || ($this->info['video']['bitrate'] == 0))) {
+			// if video bitrate not set
+			if (isset($this->info['audio']['bitrate']) && ($this->info['audio']['bitrate'] > 0) && ($this->info['audio']['bitrate'] == $this->info['bitrate'])) {
+				// AND if audio bitrate is set to same as overall bitrate
+				if (isset($this->info['playtime_seconds']) && ($this->info['playtime_seconds'] > 0)) {
+					// AND if playtime is set
+					if (isset($this->info['avdataend']) && isset($this->info['avdataoffset'])) {
+						// AND if AV data offset start/end is known
+						// THEN we can calculate the video bitrate
+						$this->info['bitrate'] = round((($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds']);
+						$this->info['video']['bitrate'] = $this->info['bitrate'] - $this->info['audio']['bitrate'];
+					}
+				}
+			}
+		}
+
+		if ((!isset($this->info['playtime_seconds']) || ($this->info['playtime_seconds'] <= 0)) && !empty($this->info['bitrate'])) {
+			$this->info['playtime_seconds'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['bitrate'];
+		}
+
+		if (!isset($this->info['bitrate']) && !empty($this->info['playtime_seconds'])) {
+			$this->info['bitrate'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds'];
+		}
+		if (isset($this->info['bitrate']) && empty($this->info['audio']['bitrate']) && empty($this->info['video']['bitrate'])) {
+			if (isset($this->info['audio']['dataformat']) && empty($this->info['video']['resolution_x'])) {
+				// audio only
+				$this->info['audio']['bitrate'] = $this->info['bitrate'];
+			} elseif (isset($this->info['video']['resolution_x']) && empty($this->info['audio']['dataformat'])) {
+				// video only
+				$this->info['video']['bitrate'] = $this->info['bitrate'];
+			}
+		}
+
+		// Set playtime string
+		if (!empty($this->info['playtime_seconds']) && empty($this->info['playtime_string'])) {
+			$this->info['playtime_string'] = getid3_lib::PlaytimeString($this->info['playtime_seconds']);
+		}
+	}
+
+
+	public function CalculateCompressionRatioVideo() {
+		if (empty($this->info['video'])) {
+			return false;
+		}
+		if (empty($this->info['video']['resolution_x']) || empty($this->info['video']['resolution_y'])) {
+			return false;
+		}
+		if (empty($this->info['video']['bits_per_sample'])) {
+			return false;
+		}
+
+		switch ($this->info['video']['dataformat']) {
+			case 'bmp':
+			case 'gif':
+			case 'jpeg':
+			case 'jpg':
+			case 'png':
+			case 'tiff':
+				$FrameRate = 1;
+				$PlaytimeSeconds = 1;
+				$BitrateCompressed = $this->info['filesize'] * 8;
+				break;
+
+			default:
+				if (!empty($this->info['video']['frame_rate'])) {
+					$FrameRate = $this->info['video']['frame_rate'];
+				} else {
+					return false;
+				}
+				if (!empty($this->info['playtime_seconds'])) {
+					$PlaytimeSeconds = $this->info['playtime_seconds'];
+				} else {
+					return false;
+				}
+				if (!empty($this->info['video']['bitrate'])) {
+					$BitrateCompressed = $this->info['video']['bitrate'];
+				} else {
+					return false;
+				}
+				break;
+		}
+		$BitrateUncompressed = $this->info['video']['resolution_x'] * $this->info['video']['resolution_y'] * $this->info['video']['bits_per_sample'] * $FrameRate;
+
+		$this->info['video']['compression_ratio'] = $BitrateCompressed / $BitrateUncompressed;
+		return true;
+	}
+
+
+	public function CalculateCompressionRatioAudio() {
+		if (empty($this->info['audio']['bitrate']) || empty($this->info['audio']['channels']) || empty($this->info['audio']['sample_rate']) || !is_numeric($this->info['audio']['sample_rate'])) {
+			return false;
+		}
+		$this->info['audio']['compression_ratio'] = $this->info['audio']['bitrate'] / ($this->info['audio']['channels'] * $this->info['audio']['sample_rate'] * (!empty($this->info['audio']['bits_per_sample']) ? $this->info['audio']['bits_per_sample'] : 16));
+
+		if (!empty($this->info['audio']['streams'])) {
+			foreach ($this->info['audio']['streams'] as $streamnumber => $streamdata) {
+				if (!empty($streamdata['bitrate']) && !empty($streamdata['channels']) && !empty($streamdata['sample_rate'])) {
+					$this->info['audio']['streams'][$streamnumber]['compression_ratio'] = $streamdata['bitrate'] / ($streamdata['channels'] * $streamdata['sample_rate'] * (!empty($streamdata['bits_per_sample']) ? $streamdata['bits_per_sample'] : 16));
+				}
+			}
+		}
+		return true;
+	}
+
+
+	public function CalculateReplayGain() {
+		if (isset($this->info['replay_gain'])) {
+			if (!isset($this->info['replay_gain']['reference_volume'])) {
+				$this->info['replay_gain']['reference_volume'] = (double) 89.0;
+			}
+			if (isset($this->info['replay_gain']['track']['adjustment'])) {
+				$this->info['replay_gain']['track']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['track']['adjustment'];
+			}
+			if (isset($this->info['replay_gain']['album']['adjustment'])) {
+				$this->info['replay_gain']['album']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['album']['adjustment'];
+			}
+
+			if (isset($this->info['replay_gain']['track']['peak'])) {
+				$this->info['replay_gain']['track']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['track']['peak']);
+			}
+			if (isset($this->info['replay_gain']['album']['peak'])) {
+				$this->info['replay_gain']['album']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['album']['peak']);
+			}
+		}
+		return true;
+	}
+
+	public function ProcessAudioStreams() {
+		if (!empty($this->info['audio']['bitrate']) || !empty($this->info['audio']['channels']) || !empty($this->info['audio']['sample_rate'])) {
+			if (!isset($this->info['audio']['streams'])) {
+				foreach ($this->info['audio'] as $key => $value) {
+					if ($key != 'streams') {
+						$this->info['audio']['streams'][0][$key] = $value;
+					}
+				}
+			}
+		}
+		return true;
+	}
+
+	public function getid3_tempnam() {
+		return tempnam($this->tempdir, 'gI3');
+	}
+
+	public function include_module($name) {
+		//if (!file_exists($this->include_path.'module.'.$name.'.php')) {
+		if (!file_exists(GETID3_INCLUDEPATH.'module.'.$name.'.php')) {
+			throw new getid3_exception('Required module.'.$name.'.php is missing.');
+		}
+		include_once(GETID3_INCLUDEPATH.'module.'.$name.'.php');
+		return true;
+	}
+
+}
+
+
+abstract class getid3_handler
+{
+	protected $getid3;                       // pointer
+
+	protected $data_string_flag     = false; // analyzing filepointer or string
+	protected $data_string          = '';    // string to analyze
+	protected $data_string_position = 0;     // seek position in string
+	protected $data_string_length   = 0;     // string length
+
+	private $dependency_to = null;
+
+
+	public function __construct(getID3 $getid3, $call_module=null) {
+		$this->getid3 = $getid3;
+
+		if ($call_module) {
+			$this->dependency_to = str_replace('getid3_', '', $call_module);
+		}
+	}
+
+
+	// Analyze from file pointer
+	abstract public function Analyze();
+
+
+	// Analyze from string instead
+	public function AnalyzeString($string) {
+		// Enter string mode
+	    $this->setStringMode($string);
+
+		// Save info
+		$saved_avdataoffset = $this->getid3->info['avdataoffset'];
+		$saved_avdataend    = $this->getid3->info['avdataend'];
+		$saved_filesize     = (isset($this->getid3->info['filesize']) ? $this->getid3->info['filesize'] : null); // may be not set if called as dependency without openfile() call
+
+		// Reset some info
+		$this->getid3->info['avdataoffset'] = 0;
+		$this->getid3->info['avdataend']    = $this->getid3->info['filesize'] = $this->data_string_length;
+
+		// Analyze
+		$this->Analyze();
+
+		// Restore some info
+		$this->getid3->info['avdataoffset'] = $saved_avdataoffset;
+		$this->getid3->info['avdataend']    = $saved_avdataend;
+		$this->getid3->info['filesize']     = $saved_filesize;
+
+		// Exit string mode
+		$this->data_string_flag = false;
+	}
+
+	public function setStringMode($string) {
+		$this->data_string_flag   = true;
+		$this->data_string        = $string;
+		$this->data_string_length = strlen($string);
+	}
+
+	protected function ftell() {
+		if ($this->data_string_flag) {
+			return $this->data_string_position;
+		}
+		return ftell($this->getid3->fp);
+	}
+
+	protected function fread($bytes) {
+		if ($this->data_string_flag) {
+			$this->data_string_position += $bytes;
+			return substr($this->data_string, $this->data_string_position - $bytes, $bytes);
+		}
+	    $pos = $this->ftell() + $bytes;
+	    if (!getid3_lib::intValueSupported($pos)) {
+			throw new getid3_exception('cannot fread('.$bytes.' from '.$this->ftell().') because beyond PHP filesystem limit', 10);
+	    }
+		return fread($this->getid3->fp, $bytes);
+	}
+
+	protected function fseek($bytes, $whence=SEEK_SET) {
+		if ($this->data_string_flag) {
+			switch ($whence) {
+				case SEEK_SET:
+					$this->data_string_position = $bytes;
+					break;
+
+				case SEEK_CUR:
+					$this->data_string_position += $bytes;
+					break;
+
+				case SEEK_END:
+					$this->data_string_position = $this->data_string_length + $bytes;
+					break;
+			}
+			return 0;
+	    } else {
+	    	$pos = $bytes;
+	    	if ($whence == SEEK_CUR) {
+				$pos = $this->ftell() + $bytes;
+	    	} elseif ($whence == SEEK_END) {
+				$pos = $this->info['filesize'] + $bytes;
+	    	}
+	    	if (!getid3_lib::intValueSupported($pos)) {
+				throw new getid3_exception('cannot fseek('.$pos.') because beyond PHP filesystem limit', 10);
+			}
+		}
+		return fseek($this->getid3->fp, $bytes, $whence);
+	}
+
+	protected function feof() {
+		if ($this->data_string_flag) {
+			return $this->data_string_position >= $this->data_string_length;
+		}
+		return feof($this->getid3->fp);
+	}
+
+	final protected function isDependencyFor($module) {
+		return $this->dependency_to == $module;
+	}
+
+	protected function error($text)
+	{
+		$this->getid3->info['error'][] = $text;
+
+		return false;
+	}
+
+	protected function warning($text)
+	{
+		return $this->getid3->warning($text);
+	}
+
+	protected function notice($text)
+	{
+		// does nothing for now
+	}
+
+	public function saveAttachment($name, $offset, $length, $image_mime=null) {
+		try {
+
+			// do not extract at all
+			if ($this->getid3->option_save_attachments === getID3::ATTACHMENTS_NONE) {
+
+				$attachment = null; // do not set any
+
+			// extract to return array
+			} elseif ($this->getid3->option_save_attachments === getID3::ATTACHMENTS_INLINE) {
+
+				$this->fseek($offset);
+				$attachment = $this->fread($length); // get whole data in one pass, till it is anyway stored in memory
+				if ($attachment === false || strlen($attachment) != $length) {
+					throw new Exception('failed to read attachment data');
+				}
+
+			// assume directory path is given
+			} else {
+
+				// set up destination path
+				$dir = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->getid3->option_save_attachments), DIRECTORY_SEPARATOR);
+				if (!is_dir($dir) || !is_writable($dir)) { // check supplied directory
+					throw new Exception('supplied path ('.$dir.') does not exist, or is not writable');
+				}
+				$dest = $dir.DIRECTORY_SEPARATOR.$name.($image_mime ? '.'.getid3_lib::ImageExtFromMime($image_mime) : '');
+
+				// create dest file
+				if (($fp_dest = fopen($dest, 'wb')) == false) {
+					throw new Exception('failed to create file '.$dest);
+				}
+
+				// copy data
+				$this->fseek($offset);
+				$buffersize = ($this->data_string_flag ? $length : $this->getid3->fread_buffer_size());
+				$bytesleft = $length;
+				while ($bytesleft > 0) {
+					if (($buffer = $this->fread(min($buffersize, $bytesleft))) === false || ($byteswritten = fwrite($fp_dest, $buffer)) === false || ($byteswritten === 0)) {
+						throw new Exception($buffer === false ? 'not enough data to read' : 'failed to write to destination file, may be not enough disk space');
+					}
+					$bytesleft -= $byteswritten;
+				}
+
+				fclose($fp_dest);
+				$attachment = $dest;
+
+			}
+
+		} catch (Exception $e) {
+
+			// close and remove dest file if created
+			if (isset($fp_dest) && is_resource($fp_dest)) {
+				fclose($fp_dest);
+				unlink($dest);
+			}
+
+			// do not set any is case of error
+			$attachment = null;
+			$this->warning('Failed to extract attachment '.$name.': '.$e->getMessage());
+
+		}
+
+		// seek to the end of attachment
+		$this->fseek($offset + $length);
+
+		return $attachment;
+	}
+
+}
+
+
+class getid3_exception extends Exception
+{
+	public $message;
+}
\ No newline at end of file
diff --git a/wp-includes/ID3/license.commercial.txt b/wp-includes/ID3/license.commercial.txt
new file mode 100644
index 000000000..416e5a146
--- /dev/null
+++ b/wp-includes/ID3/license.commercial.txt
@@ -0,0 +1,27 @@
+                  getID3() Commercial License
+                  ===========================
+
+getID3() is licensed under the "GNU Public License" (GPL) and/or the
+"getID3() Commercial License" (gCL). This document describes the gCL.
+
+---------------------------------------------------------------------
+
+The license is non-exclusively granted to a single person or company,
+per payment of the license fee, for the lifetime of that person or
+company. The license is non-transferrable.
+
+The gCL grants the licensee the right to use getID3() in commercial
+closed-source projects. Modifications may be made to getID3() with no
+obligation to release the modified source code. getID3() (or pieces
+thereof) may be included in any number of projects authored (in whole
+or in part) by the licensee.
+
+The licensee may use any version of getID3(), past, present or future,
+as is most convenient. This license does not entitle the licensee to
+receive any technical support, updates or bugfixes, except as such are
+made publicly available to all getID3() users.
+
+The licensee may not sub-license getID3() itself, meaning that any
+commercially released product containing all or parts of getID3() must
+have added functionality beyond what is available in getID3();
+getID3() itself may not be re-licensed by the licensee.
diff --git a/wp-includes/ID3/license.txt b/wp-includes/ID3/license.txt
new file mode 100644
index 000000000..85f4356e8
--- /dev/null
+++ b/wp-includes/ID3/license.txt
@@ -0,0 +1,28 @@
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+
+*****************************************************************
+*****************************************************************
+
+   getID3() is released under multiple licenses. You may choose
+   from the following licenses, and use getID3 according to the
+   terms of the license most suitable to your project.
+
+GNU GPL: https://gnu.org/licenses/gpl.html                   (v3)
+         https://gnu.org/licenses/old-licenses/gpl-2.0.html  (v2)
+         https://gnu.org/licenses/old-licenses/gpl-1.0.html  (v1)
+
+GNU LGPL: https://gnu.org/licenses/lgpl.html                 (v3)
+
+Mozilla MPL: http://www.mozilla.org/MPL/2.0/                 (v2)
+
+getID3 Commercial License: http://getid3.org/#gCL (payment required)
+
+*****************************************************************
+*****************************************************************
+
+Copies of each of the above licenses are included in the 'licenses'
+directory of the getID3 distribution.
diff --git a/wp-includes/ID3/module.audio-video.asf.php b/wp-includes/ID3/module.audio-video.asf.php
new file mode 100644
index 000000000..cfc60a780
--- /dev/null
+++ b/wp-includes/ID3/module.audio-video.asf.php
@@ -0,0 +1,2019 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio-video.asf.php                                  //
+// module for analyzing ASF, WMA and WMV files                 //
+// dependencies: module.audio-video.riff.php                   //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true);
+
+class getid3_asf extends getid3_handler
+{
+
+	public function __construct(getID3 $getid3) {
+		parent::__construct($getid3);  // extends getid3_handler::__construct()
+
+		// initialize all GUID constants
+		$GUIDarray = $this->KnownGUIDs();
+		foreach ($GUIDarray as $GUIDname => $hexstringvalue) {
+			if (!defined($GUIDname)) {
+				define($GUIDname, $this->GUIDtoBytestring($hexstringvalue));
+			}
+		}
+	}
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		// Shortcuts
+		$thisfile_audio = &$info['audio'];
+		$thisfile_video = &$info['video'];
+		$info['asf']  = array();
+		$thisfile_asf = &$info['asf'];
+		$thisfile_asf['comments'] = array();
+		$thisfile_asf_comments    = &$thisfile_asf['comments'];
+		$thisfile_asf['header_object'] = array();
+		$thisfile_asf_headerobject     = &$thisfile_asf['header_object'];
+
+
+		// ASF structure:
+		// * Header Object [required]
+		//   * File Properties Object [required]   (global file attributes)
+		//   * Stream Properties Object [required] (defines media stream & characteristics)
+		//   * Header Extension Object [required]  (additional functionality)
+		//   * Content Description Object          (bibliographic information)
+		//   * Script Command Object               (commands for during playback)
+		//   * Marker Object                       (named jumped points within the file)
+		// * Data Object [required]
+		//   * Data Packets
+		// * Index Object
+
+		// Header Object: (mandatory, one only)
+		// Field Name                   Field Type   Size (bits)
+		// Object ID                    GUID         128             // GUID for header object - GETID3_ASF_Header_Object
+		// Object Size                  QWORD        64              // size of header object, including 30 bytes of Header Object header
+		// Number of Header Objects     DWORD        32              // number of objects in header object
+		// Reserved1                    BYTE         8               // hardcoded: 0x01
+		// Reserved2                    BYTE         8               // hardcoded: 0x02
+
+		$info['fileformat'] = 'asf';
+
+		fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET);
+		$HeaderObjectData = fread($this->getid3->fp, 30);
+
+		$thisfile_asf_headerobject['objectid']      = substr($HeaderObjectData, 0, 16);
+		$thisfile_asf_headerobject['objectid_guid'] = $this->BytestringToGUID($thisfile_asf_headerobject['objectid']);
+		if ($thisfile_asf_headerobject['objectid'] != GETID3_ASF_Header_Object) {
+			$info['warning'][] = 'ASF header GUID {'.$this->BytestringToGUID($thisfile_asf_headerobject['objectid']).'} does not match expected "GETID3_ASF_Header_Object" GUID {'.$this->BytestringToGUID(GETID3_ASF_Header_Object).'}';
+			unset($info['fileformat']);
+			unset($info['asf']);
+			return false;
+			break;
+		}
+		$thisfile_asf_headerobject['objectsize']    = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 16, 8));
+		$thisfile_asf_headerobject['headerobjects'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 24, 4));
+		$thisfile_asf_headerobject['reserved1']     = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 28, 1));
+		$thisfile_asf_headerobject['reserved2']     = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 29, 1));
+
+		$NextObjectOffset = ftell($this->getid3->fp);
+		$ASFHeaderData = fread($this->getid3->fp, $thisfile_asf_headerobject['objectsize'] - 30);
+		$offset = 0;
+
+		for ($HeaderObjectsCounter = 0; $HeaderObjectsCounter < $thisfile_asf_headerobject['headerobjects']; $HeaderObjectsCounter++) {
+			$NextObjectGUID = substr($ASFHeaderData, $offset, 16);
+			$offset += 16;
+			$NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID);
+			$NextObjectSize = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+			$offset += 8;
+			switch ($NextObjectGUID) {
+
+				case GETID3_ASF_File_Properties_Object:
+					// File Properties Object: (mandatory, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for file properties object - GETID3_ASF_File_Properties_Object
+					// Object Size                  QWORD        64              // size of file properties object, including 104 bytes of File Properties Object header
+					// File ID                      GUID         128             // unique ID - identical to File ID in Data Object
+					// File Size                    QWORD        64              // entire file in bytes. Invalid if Broadcast Flag == 1
+					// Creation Date                QWORD        64              // date & time of file creation. Maybe invalid if Broadcast Flag == 1
+					// Data Packets Count           QWORD        64              // number of data packets in Data Object. Invalid if Broadcast Flag == 1
+					// Play Duration                QWORD        64              // playtime, in 100-nanosecond units. Invalid if Broadcast Flag == 1
+					// Send Duration                QWORD        64              // time needed to send file, in 100-nanosecond units. Players can ignore this value. Invalid if Broadcast Flag == 1
+					// Preroll                      QWORD        64              // time to buffer data before starting to play file, in 1-millisecond units. If <> 0, PlayDuration and PresentationTime have been offset by this amount
+					// Flags                        DWORD        32              //
+					// * Broadcast Flag             bits         1  (0x01)       // file is currently being written, some header values are invalid
+					// * Seekable Flag              bits         1  (0x02)       // is file seekable
+					// * Reserved                   bits         30 (0xFFFFFFFC) // reserved - set to zero
+					// Minimum Data Packet Size     DWORD        32              // in bytes. should be same as Maximum Data Packet Size. Invalid if Broadcast Flag == 1
+					// Maximum Data Packet Size     DWORD        32              // in bytes. should be same as Minimum Data Packet Size. Invalid if Broadcast Flag == 1
+					// Maximum Bitrate              DWORD        32              // maximum instantaneous bitrate in bits per second for entire file, including all data streams and ASF overhead
+
+					// shortcut
+					$thisfile_asf['file_properties_object'] = array();
+					$thisfile_asf_filepropertiesobject      = &$thisfile_asf['file_properties_object'];
+
+					$thisfile_asf_filepropertiesobject['offset']             = $NextObjectOffset + $offset;
+					$thisfile_asf_filepropertiesobject['objectid']           = $NextObjectGUID;
+					$thisfile_asf_filepropertiesobject['objectid_guid']      = $NextObjectGUIDtext;
+					$thisfile_asf_filepropertiesobject['objectsize']         = $NextObjectSize;
+					$thisfile_asf_filepropertiesobject['fileid']             = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_filepropertiesobject['fileid_guid']        = $this->BytestringToGUID($thisfile_asf_filepropertiesobject['fileid']);
+					$thisfile_asf_filepropertiesobject['filesize']           = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['creation_date']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$thisfile_asf_filepropertiesobject['creation_date_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_filepropertiesobject['creation_date']);
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['data_packets']       = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['play_duration']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['send_duration']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['preroll']            = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_filepropertiesobject['flags_raw']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_filepropertiesobject['flags']['broadcast'] = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0001);
+					$thisfile_asf_filepropertiesobject['flags']['seekable']  = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0002);
+
+					$thisfile_asf_filepropertiesobject['min_packet_size']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_filepropertiesobject['max_packet_size']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_filepropertiesobject['max_bitrate']        = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+
+					if ($thisfile_asf_filepropertiesobject['flags']['broadcast']) {
+
+						// broadcast flag is set, some values invalid
+						unset($thisfile_asf_filepropertiesobject['filesize']);
+						unset($thisfile_asf_filepropertiesobject['data_packets']);
+						unset($thisfile_asf_filepropertiesobject['play_duration']);
+						unset($thisfile_asf_filepropertiesobject['send_duration']);
+						unset($thisfile_asf_filepropertiesobject['min_packet_size']);
+						unset($thisfile_asf_filepropertiesobject['max_packet_size']);
+
+					} else {
+
+						// broadcast flag NOT set, perform calculations
+						$info['playtime_seconds'] = ($thisfile_asf_filepropertiesobject['play_duration'] / 10000000) - ($thisfile_asf_filepropertiesobject['preroll'] / 1000);
+
+						//$info['bitrate'] = $thisfile_asf_filepropertiesobject['max_bitrate'];
+						$info['bitrate'] = ((isset($thisfile_asf_filepropertiesobject['filesize']) ? $thisfile_asf_filepropertiesobject['filesize'] : $info['filesize']) * 8) / $info['playtime_seconds'];
+					}
+					break;
+
+				case GETID3_ASF_Stream_Properties_Object:
+					// Stream Properties Object: (mandatory, one per media stream)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for stream properties object - GETID3_ASF_Stream_Properties_Object
+					// Object Size                  QWORD        64              // size of stream properties object, including 78 bytes of Stream Properties Object header
+					// Stream Type                  GUID         128             // GETID3_ASF_Audio_Media, GETID3_ASF_Video_Media or GETID3_ASF_Command_Media
+					// Error Correction Type        GUID         128             // GETID3_ASF_Audio_Spread for audio-only streams, GETID3_ASF_No_Error_Correction for other stream types
+					// Time Offset                  QWORD        64              // 100-nanosecond units. typically zero. added to all timestamps of samples in the stream
+					// Type-Specific Data Length    DWORD        32              // number of bytes for Type-Specific Data field
+					// Error Correction Data Length DWORD        32              // number of bytes for Error Correction Data field
+					// Flags                        WORD         16              //
+					// * Stream Number              bits         7 (0x007F)      // number of this stream.  1 <= valid <= 127
+					// * Reserved                   bits         8 (0x7F80)      // reserved - set to zero
+					// * Encrypted Content Flag     bits         1 (0x8000)      // stream contents encrypted if set
+					// Reserved                     DWORD        32              // reserved - set to zero
+					// Type-Specific Data           BYTESTREAM   variable        // type-specific format data, depending on value of Stream Type
+					// Error Correction Data        BYTESTREAM   variable        // error-correction-specific format data, depending on value of Error Correct Type
+
+					// There is one GETID3_ASF_Stream_Properties_Object for each stream (audio, video) but the
+					// stream number isn't known until halfway through decoding the structure, hence it
+					// it is decoded to a temporary variable and then stuck in the appropriate index later
+
+					$StreamPropertiesObjectData['offset']             = $NextObjectOffset + $offset;
+					$StreamPropertiesObjectData['objectid']           = $NextObjectGUID;
+					$StreamPropertiesObjectData['objectid_guid']      = $NextObjectGUIDtext;
+					$StreamPropertiesObjectData['objectsize']         = $NextObjectSize;
+					$StreamPropertiesObjectData['stream_type']        = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$StreamPropertiesObjectData['stream_type_guid']   = $this->BytestringToGUID($StreamPropertiesObjectData['stream_type']);
+					$StreamPropertiesObjectData['error_correct_type'] = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$StreamPropertiesObjectData['error_correct_guid'] = $this->BytestringToGUID($StreamPropertiesObjectData['error_correct_type']);
+					$StreamPropertiesObjectData['time_offset']        = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+					$offset += 8;
+					$StreamPropertiesObjectData['type_data_length']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$StreamPropertiesObjectData['error_data_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$StreamPropertiesObjectData['flags_raw']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$StreamPropertiesObjectStreamNumber               = $StreamPropertiesObjectData['flags_raw'] & 0x007F;
+					$StreamPropertiesObjectData['flags']['encrypted'] = (bool) ($StreamPropertiesObjectData['flags_raw'] & 0x8000);
+
+					$offset += 4; // reserved - DWORD
+					$StreamPropertiesObjectData['type_specific_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['type_data_length']);
+					$offset += $StreamPropertiesObjectData['type_data_length'];
+					$StreamPropertiesObjectData['error_correct_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['error_data_length']);
+					$offset += $StreamPropertiesObjectData['error_data_length'];
+
+					switch ($StreamPropertiesObjectData['stream_type']) {
+
+						case GETID3_ASF_Audio_Media:
+							$thisfile_audio['dataformat']   = (!empty($thisfile_audio['dataformat'])   ? $thisfile_audio['dataformat']   : 'asf');
+							$thisfile_audio['bitrate_mode'] = (!empty($thisfile_audio['bitrate_mode']) ? $thisfile_audio['bitrate_mode'] : 'cbr');
+
+							$audiodata = getid3_riff::parseWAVEFORMATex(substr($StreamPropertiesObjectData['type_specific_data'], 0, 16));
+							unset($audiodata['raw']);
+							$thisfile_audio = getid3_lib::array_merge_noclobber($audiodata, $thisfile_audio);
+							break;
+
+						case GETID3_ASF_Video_Media:
+							$thisfile_video['dataformat']   = (!empty($thisfile_video['dataformat'])   ? $thisfile_video['dataformat']   : 'asf');
+							$thisfile_video['bitrate_mode'] = (!empty($thisfile_video['bitrate_mode']) ? $thisfile_video['bitrate_mode'] : 'cbr');
+							break;
+
+						case GETID3_ASF_Command_Media:
+						default:
+							// do nothing
+							break;
+
+					}
+
+					$thisfile_asf['stream_properties_object'][$StreamPropertiesObjectStreamNumber] = $StreamPropertiesObjectData;
+					unset($StreamPropertiesObjectData); // clear for next stream, if any
+					break;
+
+				case GETID3_ASF_Header_Extension_Object:
+					// Header Extension Object: (mandatory, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Header Extension object - GETID3_ASF_Header_Extension_Object
+					// Object Size                  QWORD        64              // size of Header Extension object, including 46 bytes of Header Extension Object header
+					// Reserved Field 1             GUID         128             // hardcoded: GETID3_ASF_Reserved_1
+					// Reserved Field 2             WORD         16              // hardcoded: 0x00000006
+					// Header Extension Data Size   DWORD        32              // in bytes. valid: 0, or > 24. equals object size minus 46
+					// Header Extension Data        BYTESTREAM   variable        // array of zero or more extended header objects
+
+					// shortcut
+					$thisfile_asf['header_extension_object'] = array();
+					$thisfile_asf_headerextensionobject      = &$thisfile_asf['header_extension_object'];
+
+					$thisfile_asf_headerextensionobject['offset']              = $NextObjectOffset + $offset;
+					$thisfile_asf_headerextensionobject['objectid']            = $NextObjectGUID;
+					$thisfile_asf_headerextensionobject['objectid_guid']       = $NextObjectGUIDtext;
+					$thisfile_asf_headerextensionobject['objectsize']          = $NextObjectSize;
+					$thisfile_asf_headerextensionobject['reserved_1']          = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_headerextensionobject['reserved_1_guid']     = $this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']);
+					if ($thisfile_asf_headerextensionobject['reserved_1'] != GETID3_ASF_Reserved_1) {
+						$info['warning'][] = 'header_extension_object.reserved_1 GUID ('.$this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']).') does not match expected "GETID3_ASF_Reserved_1" GUID ('.$this->BytestringToGUID(GETID3_ASF_Reserved_1).')';
+						//return false;
+						break;
+					}
+					$thisfile_asf_headerextensionobject['reserved_2']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					if ($thisfile_asf_headerextensionobject['reserved_2'] != 6) {
+						$info['warning'][] = 'header_extension_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_headerextensionobject['reserved_2']).') does not match expected value of "6"';
+						//return false;
+						break;
+					}
+					$thisfile_asf_headerextensionobject['extension_data_size'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_headerextensionobject['extension_data']      =                              substr($ASFHeaderData, $offset, $thisfile_asf_headerextensionobject['extension_data_size']);
+					$unhandled_sections = 0;
+					$thisfile_asf_headerextensionobject['extension_data_parsed'] = $this->ASF_HeaderExtensionObjectDataParse($thisfile_asf_headerextensionobject['extension_data'], $unhandled_sections);
+					if ($unhandled_sections === 0) {
+						unset($thisfile_asf_headerextensionobject['extension_data']);
+					}
+					$offset += $thisfile_asf_headerextensionobject['extension_data_size'];
+					break;
+
+				case GETID3_ASF_Codec_List_Object:
+					// Codec List Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Codec List object - GETID3_ASF_Codec_List_Object
+					// Object Size                  QWORD        64              // size of Codec List object, including 44 bytes of Codec List Object header
+					// Reserved                     GUID         128             // hardcoded: 86D15241-311D-11D0-A3A4-00A0C90348F6
+					// Codec Entries Count          DWORD        32              // number of entries in Codec Entries array
+					// Codec Entries                array of:    variable        //
+					// * Type                       WORD         16              // 0x0001 = Video Codec, 0x0002 = Audio Codec, 0xFFFF = Unknown Codec
+					// * Codec Name Length          WORD         16              // number of Unicode characters stored in the Codec Name field
+					// * Codec Name                 WCHAR        variable        // array of Unicode characters - name of codec used to create the content
+					// * Codec Description Length   WORD         16              // number of Unicode characters stored in the Codec Description field
+					// * Codec Description          WCHAR        variable        // array of Unicode characters - description of format used to create the content
+					// * Codec Information Length   WORD         16              // number of Unicode characters stored in the Codec Information field
+					// * Codec Information          BYTESTREAM   variable        // opaque array of information bytes about the codec used to create the content
+
+					// shortcut
+					$thisfile_asf['codec_list_object'] = array();
+					$thisfile_asf_codeclistobject      = &$thisfile_asf['codec_list_object'];
+
+					$thisfile_asf_codeclistobject['offset']                    = $NextObjectOffset + $offset;
+					$thisfile_asf_codeclistobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_codeclistobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_codeclistobject['objectsize']                = $NextObjectSize;
+					$thisfile_asf_codeclistobject['reserved']                  = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_codeclistobject['reserved_guid']             = $this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']);
+					if ($thisfile_asf_codeclistobject['reserved'] != $this->GUIDtoBytestring('86D15241-311D-11D0-A3A4-00A0C90348F6')) {
+						$info['warning'][] = 'codec_list_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}';
+						//return false;
+						break;
+					}
+					$thisfile_asf_codeclistobject['codec_entries_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					for ($CodecEntryCounter = 0; $CodecEntryCounter < $thisfile_asf_codeclistobject['codec_entries_count']; $CodecEntryCounter++) {
+						// shortcut
+						$thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter] = array();
+						$thisfile_asf_codeclistobject_codecentries_current = &$thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter];
+
+						$thisfile_asf_codeclistobject_codecentries_current['type_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_codeclistobject_codecentries_current['type'] = $this->ASFCodecListObjectTypeLookup($thisfile_asf_codeclistobject_codecentries_current['type_raw']);
+
+						$CodecNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
+						$offset += 2;
+						$thisfile_asf_codeclistobject_codecentries_current['name'] = substr($ASFHeaderData, $offset, $CodecNameLength);
+						$offset += $CodecNameLength;
+
+						$CodecDescriptionLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
+						$offset += 2;
+						$thisfile_asf_codeclistobject_codecentries_current['description'] = substr($ASFHeaderData, $offset, $CodecDescriptionLength);
+						$offset += $CodecDescriptionLength;
+
+						$CodecInformationLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_codeclistobject_codecentries_current['information'] = substr($ASFHeaderData, $offset, $CodecInformationLength);
+						$offset += $CodecInformationLength;
+
+						if ($thisfile_asf_codeclistobject_codecentries_current['type_raw'] == 2) { // audio codec
+
+							if (strpos($thisfile_asf_codeclistobject_codecentries_current['description'], ',') === false) {
+								$info['warning'][] = '[asf][codec_list_object][codec_entries]['.$CodecEntryCounter.'][description] expected to contain comma-seperated list of parameters: "'.$thisfile_asf_codeclistobject_codecentries_current['description'].'"';
+							} else {
+
+								list($AudioCodecBitrate, $AudioCodecFrequency, $AudioCodecChannels) = explode(',', $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']));
+								$thisfile_audio['codec'] = $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['name']);
+
+								if (!isset($thisfile_audio['bitrate']) && strstr($AudioCodecBitrate, 'kbps')) {
+									$thisfile_audio['bitrate'] = (int) (trim(str_replace('kbps', '', $AudioCodecBitrate)) * 1000);
+								}
+								//if (!isset($thisfile_video['bitrate']) && isset($thisfile_audio['bitrate']) && isset($thisfile_asf['file_properties_object']['max_bitrate']) && ($thisfile_asf_codeclistobject['codec_entries_count'] > 1)) {
+								if (empty($thisfile_video['bitrate']) && !empty($thisfile_audio['bitrate']) && !empty($info['bitrate'])) {
+									//$thisfile_video['bitrate'] = $thisfile_asf['file_properties_object']['max_bitrate'] - $thisfile_audio['bitrate'];
+									$thisfile_video['bitrate'] = $info['bitrate'] - $thisfile_audio['bitrate'];
+								}
+
+								$AudioCodecFrequency = (int) trim(str_replace('kHz', '', $AudioCodecFrequency));
+								switch ($AudioCodecFrequency) {
+									case 8:
+									case 8000:
+										$thisfile_audio['sample_rate'] = 8000;
+										break;
+
+									case 11:
+									case 11025:
+										$thisfile_audio['sample_rate'] = 11025;
+										break;
+
+									case 12:
+									case 12000:
+										$thisfile_audio['sample_rate'] = 12000;
+										break;
+
+									case 16:
+									case 16000:
+										$thisfile_audio['sample_rate'] = 16000;
+										break;
+
+									case 22:
+									case 22050:
+										$thisfile_audio['sample_rate'] = 22050;
+										break;
+
+									case 24:
+									case 24000:
+										$thisfile_audio['sample_rate'] = 24000;
+										break;
+
+									case 32:
+									case 32000:
+										$thisfile_audio['sample_rate'] = 32000;
+										break;
+
+									case 44:
+									case 441000:
+										$thisfile_audio['sample_rate'] = 44100;
+										break;
+
+									case 48:
+									case 48000:
+										$thisfile_audio['sample_rate'] = 48000;
+										break;
+
+									default:
+										$info['warning'][] = 'unknown frequency: "'.$AudioCodecFrequency.'" ('.$this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']).')';
+										break;
+								}
+
+								if (!isset($thisfile_audio['channels'])) {
+									if (strstr($AudioCodecChannels, 'stereo')) {
+										$thisfile_audio['channels'] = 2;
+									} elseif (strstr($AudioCodecChannels, 'mono')) {
+										$thisfile_audio['channels'] = 1;
+									}
+								}
+
+							}
+						}
+					}
+					break;
+
+				case GETID3_ASF_Script_Command_Object:
+					// Script Command Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Script Command object - GETID3_ASF_Script_Command_Object
+					// Object Size                  QWORD        64              // size of Script Command object, including 44 bytes of Script Command Object header
+					// Reserved                     GUID         128             // hardcoded: 4B1ACBE3-100B-11D0-A39B-00A0C90348F6
+					// Commands Count               WORD         16              // number of Commands structures in the Script Commands Objects
+					// Command Types Count          WORD         16              // number of Command Types structures in the Script Commands Objects
+					// Command Types                array of:    variable        //
+					// * Command Type Name Length   WORD         16              // number of Unicode characters for Command Type Name
+					// * Command Type Name          WCHAR        variable        // array of Unicode characters - name of a type of command
+					// Commands                     array of:    variable        //
+					// * Presentation Time          DWORD        32              // presentation time of that command, in milliseconds
+					// * Type Index                 WORD         16              // type of this command, as a zero-based index into the array of Command Types of this object
+					// * Command Name Length        WORD         16              // number of Unicode characters for Command Name
+					// * Command Name               WCHAR        variable        // array of Unicode characters - name of this command
+
+					// shortcut
+					$thisfile_asf['script_command_object'] = array();
+					$thisfile_asf_scriptcommandobject      = &$thisfile_asf['script_command_object'];
+
+					$thisfile_asf_scriptcommandobject['offset']               = $NextObjectOffset + $offset;
+					$thisfile_asf_scriptcommandobject['objectid']             = $NextObjectGUID;
+					$thisfile_asf_scriptcommandobject['objectid_guid']        = $NextObjectGUIDtext;
+					$thisfile_asf_scriptcommandobject['objectsize']           = $NextObjectSize;
+					$thisfile_asf_scriptcommandobject['reserved']             = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_scriptcommandobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']);
+					if ($thisfile_asf_scriptcommandobject['reserved'] != $this->GUIDtoBytestring('4B1ACBE3-100B-11D0-A39B-00A0C90348F6')) {
+						$info['warning'][] = 'script_command_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}';
+						//return false;
+						break;
+					}
+					$thisfile_asf_scriptcommandobject['commands_count']       = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_scriptcommandobject['command_types_count']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					for ($CommandTypesCounter = 0; $CommandTypesCounter < $thisfile_asf_scriptcommandobject['command_types_count']; $CommandTypesCounter++) {
+						$CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
+						$offset += 2;
+						$thisfile_asf_scriptcommandobject['command_types'][$CommandTypesCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength);
+						$offset += $CommandTypeNameLength;
+					}
+					for ($CommandsCounter = 0; $CommandsCounter < $thisfile_asf_scriptcommandobject['commands_count']; $CommandsCounter++) {
+						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['presentation_time']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+						$offset += 4;
+						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['type_index']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+
+						$CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
+						$offset += 2;
+						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength);
+						$offset += $CommandTypeNameLength;
+					}
+					break;
+
+				case GETID3_ASF_Marker_Object:
+					// Marker Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Marker object - GETID3_ASF_Marker_Object
+					// Object Size                  QWORD        64              // size of Marker object, including 48 bytes of Marker Object header
+					// Reserved                     GUID         128             // hardcoded: 4CFEDB20-75F6-11CF-9C0F-00A0C90349CB
+					// Markers Count                DWORD        32              // number of Marker structures in Marker Object
+					// Reserved                     WORD         16              // hardcoded: 0x0000
+					// Name Length                  WORD         16              // number of bytes in the Name field
+					// Name                         WCHAR        variable        // name of the Marker Object
+					// Markers                      array of:    variable        //
+					// * Offset                     QWORD        64              // byte offset into Data Object
+					// * Presentation Time          QWORD        64              // in 100-nanosecond units
+					// * Entry Length               WORD         16              // length in bytes of (Send Time + Flags + Marker Description Length + Marker Description + Padding)
+					// * Send Time                  DWORD        32              // in milliseconds
+					// * Flags                      DWORD        32              // hardcoded: 0x00000000
+					// * Marker Description Length  DWORD        32              // number of bytes in Marker Description field
+					// * Marker Description         WCHAR        variable        // array of Unicode characters - description of marker entry
+					// * Padding                    BYTESTREAM   variable        // optional padding bytes
+
+					// shortcut
+					$thisfile_asf['marker_object'] = array();
+					$thisfile_asf_markerobject     = &$thisfile_asf['marker_object'];
+
+					$thisfile_asf_markerobject['offset']               = $NextObjectOffset + $offset;
+					$thisfile_asf_markerobject['objectid']             = $NextObjectGUID;
+					$thisfile_asf_markerobject['objectid_guid']        = $NextObjectGUIDtext;
+					$thisfile_asf_markerobject['objectsize']           = $NextObjectSize;
+					$thisfile_asf_markerobject['reserved']             = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_markerobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_markerobject['reserved']);
+					if ($thisfile_asf_markerobject['reserved'] != $this->GUIDtoBytestring('4CFEDB20-75F6-11CF-9C0F-00A0C90349CB')) {
+						$info['warning'][] = 'marker_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_markerobject['reserved_1']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}';
+						break;
+					}
+					$thisfile_asf_markerobject['markers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_markerobject['reserved_2'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					if ($thisfile_asf_markerobject['reserved_2'] != 0) {
+						$info['warning'][] = 'marker_object.reserved_2 ('.getid3_lib::PrintHexBytes($thisfile_asf_markerobject['reserved_2']).') does not match expected value of "0"';
+						break;
+					}
+					$thisfile_asf_markerobject['name_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_markerobject['name'] = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['name_length']);
+					$offset += $thisfile_asf_markerobject['name_length'];
+					for ($MarkersCounter = 0; $MarkersCounter < $thisfile_asf_markerobject['markers_count']; $MarkersCounter++) {
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['offset']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+						$offset += 8;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['presentation_time']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
+						$offset += 8;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length']              = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['send_time']                 = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+						$offset += 4;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['flags']                     = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+						$offset += 4;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+						$offset += 4;
+						$thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description']        = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length']);
+						$offset += $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'];
+						$PaddingLength = $thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length'] - 4 -  4 - 4 - $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'];
+						if ($PaddingLength > 0) {
+							$thisfile_asf_markerobject['markers'][$MarkersCounter]['padding']               = substr($ASFHeaderData, $offset, $PaddingLength);
+							$offset += $PaddingLength;
+						}
+					}
+					break;
+
+				case GETID3_ASF_Bitrate_Mutual_Exclusion_Object:
+					// Bitrate Mutual Exclusion Object: (optional)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Bitrate Mutual Exclusion object - GETID3_ASF_Bitrate_Mutual_Exclusion_Object
+					// Object Size                  QWORD        64              // size of Bitrate Mutual Exclusion object, including 42 bytes of Bitrate Mutual Exclusion Object header
+					// Exlusion Type                GUID         128             // nature of mutual exclusion relationship. one of: (GETID3_ASF_Mutex_Bitrate, GETID3_ASF_Mutex_Unknown)
+					// Stream Numbers Count         WORD         16              // number of video streams
+					// Stream Numbers               WORD         variable        // array of mutually exclusive video stream numbers. 1 <= valid <= 127
+
+					// shortcut
+					$thisfile_asf['bitrate_mutual_exclusion_object'] = array();
+					$thisfile_asf_bitratemutualexclusionobject       = &$thisfile_asf['bitrate_mutual_exclusion_object'];
+
+					$thisfile_asf_bitratemutualexclusionobject['offset']               = $NextObjectOffset + $offset;
+					$thisfile_asf_bitratemutualexclusionobject['objectid']             = $NextObjectGUID;
+					$thisfile_asf_bitratemutualexclusionobject['objectid_guid']        = $NextObjectGUIDtext;
+					$thisfile_asf_bitratemutualexclusionobject['objectsize']           = $NextObjectSize;
+					$thisfile_asf_bitratemutualexclusionobject['reserved']             = substr($ASFHeaderData, $offset, 16);
+					$thisfile_asf_bitratemutualexclusionobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']);
+					$offset += 16;
+					if (($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Bitrate) && ($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Unknown)) {
+						$info['warning'][] = 'bitrate_mutual_exclusion_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']).'} does not match expected "GETID3_ASF_Mutex_Bitrate" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Bitrate).'} or  "GETID3_ASF_Mutex_Unknown" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Unknown).'}';
+						//return false;
+						break;
+					}
+					$thisfile_asf_bitratemutualexclusionobject['stream_numbers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					for ($StreamNumberCounter = 0; $StreamNumberCounter < $thisfile_asf_bitratemutualexclusionobject['stream_numbers_count']; $StreamNumberCounter++) {
+						$thisfile_asf_bitratemutualexclusionobject['stream_numbers'][$StreamNumberCounter] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+					}
+					break;
+
+				case GETID3_ASF_Error_Correction_Object:
+					// Error Correction Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Error Correction object - GETID3_ASF_Error_Correction_Object
+					// Object Size                  QWORD        64              // size of Error Correction object, including 44 bytes of Error Correction Object header
+					// Error Correction Type        GUID         128             // type of error correction. one of: (GETID3_ASF_No_Error_Correction, GETID3_ASF_Audio_Spread)
+					// Error Correction Data Length DWORD        32              // number of bytes in Error Correction Data field
+					// Error Correction Data        BYTESTREAM   variable        // structure depends on value of Error Correction Type field
+
+					// shortcut
+					$thisfile_asf['error_correction_object'] = array();
+					$thisfile_asf_errorcorrectionobject      = &$thisfile_asf['error_correction_object'];
+
+					$thisfile_asf_errorcorrectionobject['offset']                = $NextObjectOffset + $offset;
+					$thisfile_asf_errorcorrectionobject['objectid']              = $NextObjectGUID;
+					$thisfile_asf_errorcorrectionobject['objectid_guid']         = $NextObjectGUIDtext;
+					$thisfile_asf_errorcorrectionobject['objectsize']            = $NextObjectSize;
+					$thisfile_asf_errorcorrectionobject['error_correction_type'] = substr($ASFHeaderData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_errorcorrectionobject['error_correction_guid'] = $this->BytestringToGUID($thisfile_asf_errorcorrectionobject['error_correction_type']);
+					$thisfile_asf_errorcorrectionobject['error_correction_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+					$offset += 4;
+					switch ($thisfile_asf_errorcorrectionobject['error_correction_type']) {
+						case GETID3_ASF_No_Error_Correction:
+							// should be no data, but just in case there is, skip to the end of the field
+							$offset += $thisfile_asf_errorcorrectionobject['error_correction_data_length'];
+							break;
+
+						case GETID3_ASF_Audio_Spread:
+							// Field Name                   Field Type   Size (bits)
+							// Span                         BYTE         8               // number of packets over which audio will be spread.
+							// Virtual Packet Length        WORD         16              // size of largest audio payload found in audio stream
+							// Virtual Chunk Length         WORD         16              // size of largest audio payload found in audio stream
+							// Silence Data Length          WORD         16              // number of bytes in Silence Data field
+							// Silence Data                 BYTESTREAM   variable        // hardcoded: 0x00 * (Silence Data Length) bytes
+
+							$thisfile_asf_errorcorrectionobject['span']                  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 1));
+							$offset += 1;
+							$thisfile_asf_errorcorrectionobject['virtual_packet_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+							$offset += 2;
+							$thisfile_asf_errorcorrectionobject['virtual_chunk_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+							$offset += 2;
+							$thisfile_asf_errorcorrectionobject['silence_data_length']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+							$offset += 2;
+							$thisfile_asf_errorcorrectionobject['silence_data']          = substr($ASFHeaderData, $offset, $thisfile_asf_errorcorrectionobject['silence_data_length']);
+							$offset += $thisfile_asf_errorcorrectionobject['silence_data_length'];
+							break;
+
+						default:
+							$info['warning'][] = 'error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or  "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}';
+							//return false;
+							break;
+					}
+
+					break;
+
+				case GETID3_ASF_Content_Description_Object:
+					// Content Description Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Content Description object - GETID3_ASF_Content_Description_Object
+					// Object Size                  QWORD        64              // size of Content Description object, including 34 bytes of Content Description Object header
+					// Title Length                 WORD         16              // number of bytes in Title field
+					// Author Length                WORD         16              // number of bytes in Author field
+					// Copyright Length             WORD         16              // number of bytes in Copyright field
+					// Description Length           WORD         16              // number of bytes in Description field
+					// Rating Length                WORD         16              // number of bytes in Rating field
+					// Title                        WCHAR        16              // array of Unicode characters - Title
+					// Author                       WCHAR        16              // array of Unicode characters - Author
+					// Copyright                    WCHAR        16              // array of Unicode characters - Copyright
+					// Description                  WCHAR        16              // array of Unicode characters - Description
+					// Rating                       WCHAR        16              // array of Unicode characters - Rating
+
+					// shortcut
+					$thisfile_asf['content_description_object'] = array();
+					$thisfile_asf_contentdescriptionobject      = &$thisfile_asf['content_description_object'];
+
+					$thisfile_asf_contentdescriptionobject['offset']                = $NextObjectOffset + $offset;
+					$thisfile_asf_contentdescriptionobject['objectid']              = $NextObjectGUID;
+					$thisfile_asf_contentdescriptionobject['objectid_guid']         = $NextObjectGUIDtext;
+					$thisfile_asf_contentdescriptionobject['objectsize']            = $NextObjectSize;
+					$thisfile_asf_contentdescriptionobject['title_length']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_contentdescriptionobject['author_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_contentdescriptionobject['copyright_length']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_contentdescriptionobject['description_length']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_contentdescriptionobject['rating_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_contentdescriptionobject['title']                 = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['title_length']);
+					$offset += $thisfile_asf_contentdescriptionobject['title_length'];
+					$thisfile_asf_contentdescriptionobject['author']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['author_length']);
+					$offset += $thisfile_asf_contentdescriptionobject['author_length'];
+					$thisfile_asf_contentdescriptionobject['copyright']             = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['copyright_length']);
+					$offset += $thisfile_asf_contentdescriptionobject['copyright_length'];
+					$thisfile_asf_contentdescriptionobject['description']           = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['description_length']);
+					$offset += $thisfile_asf_contentdescriptionobject['description_length'];
+					$thisfile_asf_contentdescriptionobject['rating']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['rating_length']);
+					$offset += $thisfile_asf_contentdescriptionobject['rating_length'];
+
+					$ASFcommentKeysToCopy = array('title'=>'title', 'author'=>'artist', 'copyright'=>'copyright', 'description'=>'comment', 'rating'=>'rating');
+					foreach ($ASFcommentKeysToCopy as $keytocopyfrom => $keytocopyto) {
+						if (!empty($thisfile_asf_contentdescriptionobject[$keytocopyfrom])) {
+							$thisfile_asf_comments[$keytocopyto][] = $this->TrimTerm($thisfile_asf_contentdescriptionobject[$keytocopyfrom]);
+						}
+					}
+					break;
+
+				case GETID3_ASF_Extended_Content_Description_Object:
+					// Extended Content Description Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Extended Content Description object - GETID3_ASF_Extended_Content_Description_Object
+					// Object Size                  QWORD        64              // size of ExtendedContent Description object, including 26 bytes of Extended Content Description Object header
+					// Content Descriptors Count    WORD         16              // number of entries in Content Descriptors list
+					// Content Descriptors          array of:    variable        //
+					// * Descriptor Name Length     WORD         16              // size in bytes of Descriptor Name field
+					// * Descriptor Name            WCHAR        variable        // array of Unicode characters - Descriptor Name
+					// * Descriptor Value Data Type WORD         16              // Lookup array:
+																					// 0x0000 = Unicode String (variable length)
+																					// 0x0001 = BYTE array     (variable length)
+																					// 0x0002 = BOOL           (DWORD, 32 bits)
+																					// 0x0003 = DWORD          (DWORD, 32 bits)
+																					// 0x0004 = QWORD          (QWORD, 64 bits)
+																					// 0x0005 = WORD           (WORD,  16 bits)
+					// * Descriptor Value Length    WORD         16              // number of bytes stored in Descriptor Value field
+					// * Descriptor Value           variable     variable        // value for Content Descriptor
+
+					// shortcut
+					$thisfile_asf['extended_content_description_object'] = array();
+					$thisfile_asf_extendedcontentdescriptionobject       = &$thisfile_asf['extended_content_description_object'];
+
+					$thisfile_asf_extendedcontentdescriptionobject['offset']                    = $NextObjectOffset + $offset;
+					$thisfile_asf_extendedcontentdescriptionobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_extendedcontentdescriptionobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_extendedcontentdescriptionobject['objectsize']                = $NextObjectSize;
+					$thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					for ($ExtendedContentDescriptorsCounter = 0; $ExtendedContentDescriptorsCounter < $thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count']; $ExtendedContentDescriptorsCounter++) {
+						// shortcut
+						$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter] = array();
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current                 = &$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter];
+
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['base_offset']  = $offset + 30;
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']         = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']);
+						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length'];
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']        = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length']);
+						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'];
+						switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {
+							case 0x0000: // Unicode string
+								break;
+
+							case 0x0001: // BYTE array
+								// do nothing
+								break;
+
+							case 0x0002: // BOOL
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = (bool) getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+								break;
+
+							case 0x0003: // DWORD
+							case 0x0004: // QWORD
+							case 0x0005: // WORD
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+								break;
+
+							default:
+								$info['warning'][] = 'extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')';
+								//return false;
+								break;
+						}
+						switch ($this->TrimConvert(strtolower($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']))) {
+
+							case 'wm/albumartist':
+							case 'artist':
+								// Note: not 'artist', that comes from 'author' tag
+								$thisfile_asf_comments['albumartist'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'wm/albumtitle':
+							case 'album':
+								$thisfile_asf_comments['album']  = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'wm/genre':
+							case 'genre':
+								$thisfile_asf_comments['genre'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'wm/partofset':
+								$thisfile_asf_comments['partofset'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'wm/tracknumber':
+							case 'tracknumber':
+								// be careful casting to int: casting unicode strings to int gives unexpected results (stops parsing at first non-numeric character)
+								$thisfile_asf_comments['track'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								foreach ($thisfile_asf_comments['track'] as $key => $value) {
+									if (preg_match('/^[0-9\x00]+$/', $value)) {
+										$thisfile_asf_comments['track'][$key] = intval(str_replace("\x00", '', $value));
+									}
+								}
+								break;
+
+							case 'wm/track':
+								if (empty($thisfile_asf_comments['track'])) {
+									$thisfile_asf_comments['track'] = array(1 + $this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								}
+								break;
+
+							case 'wm/year':
+							case 'year':
+							case 'date':
+								$thisfile_asf_comments['year'] = array( $this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'wm/lyrics':
+							case 'lyrics':
+								$thisfile_asf_comments['lyrics'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+								break;
+
+							case 'isvbr':
+								if ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']) {
+									$thisfile_audio['bitrate_mode'] = 'vbr';
+									$thisfile_video['bitrate_mode'] = 'vbr';
+								}
+								break;
+
+							case 'id3':
+								// id3v2 module might not be loaded
+								if (class_exists('getid3_id3v2')) {
+									$tempfile         = tempnam(GETID3_TEMP_DIR, 'getID3');
+									$tempfilehandle   = fopen($tempfile, 'wb');
+									$tempThisfileInfo = array('encoding'=>$info['encoding']);
+									fwrite($tempfilehandle, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+									fclose($tempfilehandle);
+
+									$getid3_temp = new getID3();
+									$getid3_temp->openfile($tempfile);
+									$getid3_id3v2 = new getid3_id3v2($getid3_temp);
+									$getid3_id3v2->Analyze();
+									$info['id3v2'] = $getid3_temp->info['id3v2'];
+									unset($getid3_temp, $getid3_id3v2);
+
+									unlink($tempfile);
+								}
+								break;
+
+							case 'wm/encodingtime':
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+								$thisfile_asf_comments['encoding_time_unix'] = array($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix']);
+								break;
+
+							case 'wm/picture':
+								$WMpicture = $this->ASF_WMpicture($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+								foreach ($WMpicture as $key => $value) {
+									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current[$key] = $value;
+								}
+								unset($WMpicture);
+/*
+								$wm_picture_offset = 0;
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id'] = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 1));
+								$wm_picture_offset += 1;
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type']    = $this->WMpictureTypeLookup($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id']);
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_size']    = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 4));
+								$wm_picture_offset += 4;
+
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = '';
+								do {
+									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);
+									$wm_picture_offset += 2;
+									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] .= $next_byte_pair;
+								} while ($next_byte_pair !== "\x00\x00");
+
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] = '';
+								do {
+									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);
+									$wm_picture_offset += 2;
+									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] .= $next_byte_pair;
+								} while ($next_byte_pair !== "\x00\x00");
+
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['dataoffset'] = $wm_picture_offset;
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'] = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset);
+								unset($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
+
+								$imageinfo = array();
+								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = '';
+								$imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], $imageinfo);
+								unset($imageinfo);
+								if (!empty($imagechunkcheck)) {
+									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]);
+								}
+								if (!isset($thisfile_asf_comments['picture'])) {
+									$thisfile_asf_comments['picture'] = array();
+								}
+								$thisfile_asf_comments['picture'][] = array('data'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], 'image_mime'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime']);
+*/
+								break;
+
+							default:
+								switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {
+									case 0: // Unicode string
+										if (substr($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']), 0, 3) == 'WM/') {
+											$thisfile_asf_comments[str_replace('wm/', '', strtolower($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name'])))] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
+										}
+										break;
+
+									case 1:
+										break;
+								}
+								break;
+						}
+
+					}
+					break;
+
+				case GETID3_ASF_Stream_Bitrate_Properties_Object:
+					// Stream Bitrate Properties Object: (optional, one only)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Stream Bitrate Properties object - GETID3_ASF_Stream_Bitrate_Properties_Object
+					// Object Size                  QWORD        64              // size of Extended Content Description object, including 26 bytes of Stream Bitrate Properties Object header
+					// Bitrate Records Count        WORD         16              // number of records in Bitrate Records
+					// Bitrate Records              array of:    variable        //
+					// * Flags                      WORD         16              //
+					// * * Stream Number            bits         7  (0x007F)     // number of this stream
+					// * * Reserved                 bits         9  (0xFF80)     // hardcoded: 0
+					// * Average Bitrate            DWORD        32              // in bits per second
+
+					// shortcut
+					$thisfile_asf['stream_bitrate_properties_object'] = array();
+					$thisfile_asf_streambitratepropertiesobject       = &$thisfile_asf['stream_bitrate_properties_object'];
+
+					$thisfile_asf_streambitratepropertiesobject['offset']                    = $NextObjectOffset + $offset;
+					$thisfile_asf_streambitratepropertiesobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_streambitratepropertiesobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_streambitratepropertiesobject['objectsize']                = $NextObjectSize;
+					$thisfile_asf_streambitratepropertiesobject['bitrate_records_count']     = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+					$offset += 2;
+					for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitratepropertiesobject['bitrate_records_count']; $BitrateRecordsCounter++) {
+						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags']['stream_number'] = $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] & 0x007F;
+						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
+						$offset += 4;
+					}
+					break;
+
+				case GETID3_ASF_Padding_Object:
+					// Padding Object: (optional)
+					// Field Name                   Field Type   Size (bits)
+					// Object ID                    GUID         128             // GUID for Padding object - GETID3_ASF_Padding_Object
+					// Object Size                  QWORD        64              // size of Padding object, including 24 bytes of ASF Padding Object header
+					// Padding Data                 BYTESTREAM   variable        // ignore
+
+					// shortcut
+					$thisfile_asf['padding_object'] = array();
+					$thisfile_asf_paddingobject     = &$thisfile_asf['padding_object'];
+
+					$thisfile_asf_paddingobject['offset']                    = $NextObjectOffset + $offset;
+					$thisfile_asf_paddingobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_paddingobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_paddingobject['objectsize']                = $NextObjectSize;
+					$thisfile_asf_paddingobject['padding_length']            = $thisfile_asf_paddingobject['objectsize'] - 16 - 8;
+					$thisfile_asf_paddingobject['padding']                   = substr($ASFHeaderData, $offset, $thisfile_asf_paddingobject['padding_length']);
+					$offset += ($NextObjectSize - 16 - 8);
+					break;
+
+				case GETID3_ASF_Extended_Content_Encryption_Object:
+				case GETID3_ASF_Content_Encryption_Object:
+					// WMA DRM - just ignore
+					$offset += ($NextObjectSize - 16 - 8);
+					break;
+
+				default:
+					// Implementations shall ignore any standard or non-standard object that they do not know how to handle.
+					if ($this->GUIDname($NextObjectGUIDtext)) {
+						$info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);
+					} else {
+						$info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);
+					}
+					$offset += ($NextObjectSize - 16 - 8);
+					break;
+			}
+		}
+		if (isset($thisfile_asf_streambitrateproperties['bitrate_records_count'])) {
+			$ASFbitrateAudio = 0;
+			$ASFbitrateVideo = 0;
+			for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitrateproperties['bitrate_records_count']; $BitrateRecordsCounter++) {
+				if (isset($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter])) {
+					switch ($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter]['type_raw']) {
+						case 1:
+							$ASFbitrateVideo += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate'];
+							break;
+
+						case 2:
+							$ASFbitrateAudio += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate'];
+							break;
+
+						default:
+							// do nothing
+							break;
+					}
+				}
+			}
+			if ($ASFbitrateAudio > 0) {
+				$thisfile_audio['bitrate'] = $ASFbitrateAudio;
+			}
+			if ($ASFbitrateVideo > 0) {
+				$thisfile_video['bitrate'] = $ASFbitrateVideo;
+			}
+		}
+		if (isset($thisfile_asf['stream_properties_object']) && is_array($thisfile_asf['stream_properties_object'])) {
+
+			$thisfile_audio['bitrate'] = 0;
+			$thisfile_video['bitrate'] = 0;
+
+			foreach ($thisfile_asf['stream_properties_object'] as $streamnumber => $streamdata) {
+
+				switch ($streamdata['stream_type']) {
+					case GETID3_ASF_Audio_Media:
+						// Field Name                   Field Type   Size (bits)
+						// Codec ID / Format Tag        WORD         16              // unique ID of audio codec - defined as wFormatTag field of WAVEFORMATEX structure
+						// Number of Channels           WORD         16              // number of channels of audio - defined as nChannels field of WAVEFORMATEX structure
+						// Samples Per Second           DWORD        32              // in Hertz - defined as nSamplesPerSec field of WAVEFORMATEX structure
+						// Average number of Bytes/sec  DWORD        32              // bytes/sec of audio stream  - defined as nAvgBytesPerSec field of WAVEFORMATEX structure
+						// Block Alignment              WORD         16              // block size in bytes of audio codec - defined as nBlockAlign field of WAVEFORMATEX structure
+						// Bits per sample              WORD         16              // bits per sample of mono data. set to zero for variable bitrate codecs. defined as wBitsPerSample field of WAVEFORMATEX structure
+						// Codec Specific Data Size     WORD         16              // size in bytes of Codec Specific Data buffer - defined as cbSize field of WAVEFORMATEX structure
+						// Codec Specific Data          BYTESTREAM   variable        // array of codec-specific data bytes
+
+						// shortcut
+						$thisfile_asf['audio_media'][$streamnumber] = array();
+						$thisfile_asf_audiomedia_currentstream      = &$thisfile_asf['audio_media'][$streamnumber];
+
+						$audiomediaoffset = 0;
+
+						$thisfile_asf_audiomedia_currentstream = getid3_riff::parseWAVEFORMATex(substr($streamdata['type_specific_data'], $audiomediaoffset, 16));
+						$audiomediaoffset += 16;
+
+						$thisfile_audio['lossless'] = false;
+						switch ($thisfile_asf_audiomedia_currentstream['raw']['wFormatTag']) {
+							case 0x0001: // PCM
+							case 0x0163: // WMA9 Lossless
+								$thisfile_audio['lossless'] = true;
+								break;
+						}
+
+						if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) {
+							foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) {
+								if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) {
+									$thisfile_asf_audiomedia_currentstream['bitrate'] = $dataarray['bitrate'];
+									$thisfile_audio['bitrate'] += $dataarray['bitrate'];
+									break;
+								}
+							}
+						} else {
+							if (!empty($thisfile_asf_audiomedia_currentstream['bytes_sec'])) {
+								$thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bytes_sec'] * 8;
+							} elseif (!empty($thisfile_asf_audiomedia_currentstream['bitrate'])) {
+								$thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bitrate'];
+							}
+						}
+						$thisfile_audio['streams'][$streamnumber]                = $thisfile_asf_audiomedia_currentstream;
+						$thisfile_audio['streams'][$streamnumber]['wformattag']  = $thisfile_asf_audiomedia_currentstream['raw']['wFormatTag'];
+						$thisfile_audio['streams'][$streamnumber]['lossless']    = $thisfile_audio['lossless'];
+						$thisfile_audio['streams'][$streamnumber]['bitrate']     = $thisfile_audio['bitrate'];
+						$thisfile_audio['streams'][$streamnumber]['dataformat']  = 'wma';
+						unset($thisfile_audio['streams'][$streamnumber]['raw']);
+
+						$thisfile_asf_audiomedia_currentstream['codec_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $audiomediaoffset, 2));
+						$audiomediaoffset += 2;
+						$thisfile_asf_audiomedia_currentstream['codec_data']      = substr($streamdata['type_specific_data'], $audiomediaoffset, $thisfile_asf_audiomedia_currentstream['codec_data_size']);
+						$audiomediaoffset += $thisfile_asf_audiomedia_currentstream['codec_data_size'];
+
+						break;
+
+					case GETID3_ASF_Video_Media:
+						// Field Name                   Field Type   Size (bits)
+						// Encoded Image Width          DWORD        32              // width of image in pixels
+						// Encoded Image Height         DWORD        32              // height of image in pixels
+						// Reserved Flags               BYTE         8               // hardcoded: 0x02
+						// Format Data Size             WORD         16              // size of Format Data field in bytes
+						// Format Data                  array of:    variable        //
+						// * Format Data Size           DWORD        32              // number of bytes in Format Data field, in bytes - defined as biSize field of BITMAPINFOHEADER structure
+						// * Image Width                LONG         32              // width of encoded image in pixels - defined as biWidth field of BITMAPINFOHEADER structure
+						// * Image Height               LONG         32              // height of encoded image in pixels - defined as biHeight field of BITMAPINFOHEADER structure
+						// * Reserved                   WORD         16              // hardcoded: 0x0001 - defined as biPlanes field of BITMAPINFOHEADER structure
+						// * Bits Per Pixel Count       WORD         16              // bits per pixel - defined as biBitCount field of BITMAPINFOHEADER structure
+						// * Compression ID             FOURCC       32              // fourcc of video codec - defined as biCompression field of BITMAPINFOHEADER structure
+						// * Image Size                 DWORD        32              // image size in bytes - defined as biSizeImage field of BITMAPINFOHEADER structure
+						// * Horizontal Pixels / Meter  DWORD        32              // horizontal resolution of target device in pixels per meter - defined as biXPelsPerMeter field of BITMAPINFOHEADER structure
+						// * Vertical Pixels / Meter    DWORD        32              // vertical resolution of target device in pixels per meter - defined as biYPelsPerMeter field of BITMAPINFOHEADER structure
+						// * Colors Used Count          DWORD        32              // number of color indexes in the color table that are actually used - defined as biClrUsed field of BITMAPINFOHEADER structure
+						// * Important Colors Count     DWORD        32              // number of color index required for displaying bitmap. if zero, all colors are required. defined as biClrImportant field of BITMAPINFOHEADER structure
+						// * Codec Specific Data        BYTESTREAM   variable        // array of codec-specific data bytes
+
+						// shortcut
+						$thisfile_asf['video_media'][$streamnumber] = array();
+						$thisfile_asf_videomedia_currentstream      = &$thisfile_asf['video_media'][$streamnumber];
+
+						$videomediaoffset = 0;
+						$thisfile_asf_videomedia_currentstream['image_width']                     = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['image_height']                    = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['flags']                           = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 1));
+						$videomediaoffset += 1;
+						$thisfile_asf_videomedia_currentstream['format_data_size']                = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
+						$videomediaoffset += 2;
+						$thisfile_asf_videomedia_currentstream['format_data']['format_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['image_width']      = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['image_height']     = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['reserved']         = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
+						$videomediaoffset += 2;
+						$thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel']   = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
+						$videomediaoffset += 2;
+						$thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']     = substr($streamdata['type_specific_data'], $videomediaoffset, 4);
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['image_size']       = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['horizontal_pels']  = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['vertical_pels']    = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['colors_used']      = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['colors_important'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
+						$videomediaoffset += 4;
+						$thisfile_asf_videomedia_currentstream['format_data']['codec_data']       = substr($streamdata['type_specific_data'], $videomediaoffset);
+
+						if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) {
+							foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) {
+								if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) {
+									$thisfile_asf_videomedia_currentstream['bitrate'] = $dataarray['bitrate'];
+									$thisfile_video['streams'][$streamnumber]['bitrate'] = $dataarray['bitrate'];
+									$thisfile_video['bitrate'] += $dataarray['bitrate'];
+									break;
+								}
+							}
+						}
+
+						$thisfile_asf_videomedia_currentstream['format_data']['codec'] = getid3_riff::fourccLookup($thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']);
+
+						$thisfile_video['streams'][$streamnumber]['fourcc']          = $thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc'];
+						$thisfile_video['streams'][$streamnumber]['codec']           = $thisfile_asf_videomedia_currentstream['format_data']['codec'];
+						$thisfile_video['streams'][$streamnumber]['resolution_x']    = $thisfile_asf_videomedia_currentstream['image_width'];
+						$thisfile_video['streams'][$streamnumber]['resolution_y']    = $thisfile_asf_videomedia_currentstream['image_height'];
+						$thisfile_video['streams'][$streamnumber]['bits_per_sample'] = $thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel'];
+						break;
+
+					default:
+						break;
+				}
+			}
+		}
+
+		while (ftell($this->getid3->fp) < $info['avdataend']) {
+			$NextObjectDataHeader = fread($this->getid3->fp, 24);
+			$offset = 0;
+			$NextObjectGUID = substr($NextObjectDataHeader, 0, 16);
+			$offset += 16;
+			$NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID);
+			$NextObjectSize = getid3_lib::LittleEndian2Int(substr($NextObjectDataHeader, $offset, 8));
+			$offset += 8;
+
+			switch ($NextObjectGUID) {
+				case GETID3_ASF_Data_Object:
+					// Data Object: (mandatory, one only)
+					// Field Name                       Field Type   Size (bits)
+					// Object ID                        GUID         128             // GUID for Data object - GETID3_ASF_Data_Object
+					// Object Size                      QWORD        64              // size of Data object, including 50 bytes of Data Object header. may be 0 if FilePropertiesObject.BroadcastFlag == 1
+					// File ID                          GUID         128             // unique identifier. identical to File ID field in Header Object
+					// Total Data Packets               QWORD        64              // number of Data Packet entries in Data Object. invalid if FilePropertiesObject.BroadcastFlag == 1
+					// Reserved                         WORD         16              // hardcoded: 0x0101
+
+					// shortcut
+					$thisfile_asf['data_object'] = array();
+					$thisfile_asf_dataobject     = &$thisfile_asf['data_object'];
+
+					$DataObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 50 - 24);
+					$offset = 24;
+
+					$thisfile_asf_dataobject['objectid']           = $NextObjectGUID;
+					$thisfile_asf_dataobject['objectid_guid']      = $NextObjectGUIDtext;
+					$thisfile_asf_dataobject['objectsize']         = $NextObjectSize;
+
+					$thisfile_asf_dataobject['fileid']             = substr($DataObjectData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_dataobject['fileid_guid']        = $this->BytestringToGUID($thisfile_asf_dataobject['fileid']);
+					$thisfile_asf_dataobject['total_data_packets'] = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_dataobject['reserved']           = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 2));
+					$offset += 2;
+					if ($thisfile_asf_dataobject['reserved'] != 0x0101) {
+						$info['warning'][] = 'data_object.reserved ('.getid3_lib::PrintHexBytes($thisfile_asf_dataobject['reserved']).') does not match expected value of "0x0101"';
+						//return false;
+						break;
+					}
+
+					// Data Packets                     array of:    variable        //
+					// * Error Correction Flags         BYTE         8               //
+					// * * Error Correction Data Length bits         4               // if Error Correction Length Type == 00, size of Error Correction Data in bytes, else hardcoded: 0000
+					// * * Opaque Data Present          bits         1               //
+					// * * Error Correction Length Type bits         2               // number of bits for size of the error correction data. hardcoded: 00
+					// * * Error Correction Present     bits         1               // If set, use Opaque Data Packet structure, else use Payload structure
+					// * Error Correction Data
+
+					$info['avdataoffset'] = ftell($this->getid3->fp);
+					fseek($this->getid3->fp, ($thisfile_asf_dataobject['objectsize'] - 50), SEEK_CUR); // skip actual audio/video data
+					$info['avdataend'] = ftell($this->getid3->fp);
+					break;
+
+				case GETID3_ASF_Simple_Index_Object:
+					// Simple Index Object: (optional, recommended, one per video stream)
+					// Field Name                       Field Type   Size (bits)
+					// Object ID                        GUID         128             // GUID for Simple Index object - GETID3_ASF_Data_Object
+					// Object Size                      QWORD        64              // size of Simple Index object, including 56 bytes of Simple Index Object header
+					// File ID                          GUID         128             // unique identifier. may be zero or identical to File ID field in Data Object and Header Object
+					// Index Entry Time Interval        QWORD        64              // interval between index entries in 100-nanosecond units
+					// Maximum Packet Count             DWORD        32              // maximum packet count for all index entries
+					// Index Entries Count              DWORD        32              // number of Index Entries structures
+					// Index Entries                    array of:    variable        //
+					// * Packet Number                  DWORD        32              // number of the Data Packet associated with this index entry
+					// * Packet Count                   WORD         16              // number of Data Packets to sent at this index entry
+
+					// shortcut
+					$thisfile_asf['simple_index_object'] = array();
+					$thisfile_asf_simpleindexobject      = &$thisfile_asf['simple_index_object'];
+
+					$SimpleIndexObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 56 - 24);
+					$offset = 24;
+
+					$thisfile_asf_simpleindexobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_simpleindexobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_simpleindexobject['objectsize']                = $NextObjectSize;
+
+					$thisfile_asf_simpleindexobject['fileid']                    =                  substr($SimpleIndexObjectData, $offset, 16);
+					$offset += 16;
+					$thisfile_asf_simpleindexobject['fileid_guid']               = $this->BytestringToGUID($thisfile_asf_simpleindexobject['fileid']);
+					$thisfile_asf_simpleindexobject['index_entry_time_interval'] = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 8));
+					$offset += 8;
+					$thisfile_asf_simpleindexobject['maximum_packet_count']      = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_simpleindexobject['index_entries_count']       = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4));
+					$offset += 4;
+
+					$IndexEntriesData = $SimpleIndexObjectData.fread($this->getid3->fp, 6 * $thisfile_asf_simpleindexobject['index_entries_count']);
+					for ($IndexEntriesCounter = 0; $IndexEntriesCounter < $thisfile_asf_simpleindexobject['index_entries_count']; $IndexEntriesCounter++) {
+						$thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_number'] = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4));
+						$offset += 4;
+						$thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_count']  = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4));
+						$offset += 2;
+					}
+
+					break;
+
+				case GETID3_ASF_Index_Object:
+					// 6.2 ASF top-level Index Object (optional but recommended when appropriate, 0 or 1)
+					// Field Name                       Field Type   Size (bits)
+					// Object ID                        GUID         128             // GUID for the Index Object - GETID3_ASF_Index_Object
+					// Object Size                      QWORD        64              // Specifies the size, in bytes, of the Index Object, including at least 34 bytes of Index Object header
+					// Index Entry Time Interval        DWORD        32              // Specifies the time interval between each index entry in ms.
+					// Index Specifiers Count           WORD         16              // Specifies the number of Index Specifiers structures in this Index Object.
+					// Index Blocks Count               DWORD        32              // Specifies the number of Index Blocks structures in this Index Object.
+
+					// Index Entry Time Interval        DWORD        32              // Specifies the time interval between index entries in milliseconds.  This value cannot be 0.
+					// Index Specifiers Count           WORD         16              // Specifies the number of entries in the Index Specifiers list.  Valid values are 1 and greater.
+					// Index Specifiers                 array of:    varies          //
+					// * Stream Number                  WORD         16              // Specifies the stream number that the Index Specifiers refer to. Valid values are between 1 and 127.
+					// * Index Type                     WORD         16              // Specifies Index Type values as follows:
+																					//   1 = Nearest Past Data Packet - indexes point to the data packet whose presentation time is closest to the index entry time.
+																					//   2 = Nearest Past Media Object - indexes point to the closest data packet containing an entire object or first fragment of an object.
+																					//   3 = Nearest Past Cleanpoint. - indexes point to the closest data packet containing an entire object (or first fragment of an object) that has the Cleanpoint Flag set.
+																					//   Nearest Past Cleanpoint is the most common type of index.
+					// Index Entry Count                DWORD        32              // Specifies the number of Index Entries in the block.
+					// * Block Positions                QWORD        varies          // Specifies a list of byte offsets of the beginnings of the blocks relative to the beginning of the first Data Packet (i.e., the beginning of the Data Object + 50 bytes). The number of entries in this list is specified by the value of the Index Specifiers Count field. The order of those byte offsets is tied to the order in which Index Specifiers are listed.
+					// * Index Entries                  array of:    varies          //
+					// * * Offsets                      DWORD        varies          // An offset value of 0xffffffff indicates an invalid offset value
+
+					// shortcut
+					$thisfile_asf['asf_index_object'] = array();
+					$thisfile_asf_asfindexobject      = &$thisfile_asf['asf_index_object'];
+
+					$ASFIndexObjectData = $NextObjectDataHeader.fread($this->getid3->fp, 34 - 24);
+					$offset = 24;
+
+					$thisfile_asf_asfindexobject['objectid']                  = $NextObjectGUID;
+					$thisfile_asf_asfindexobject['objectid_guid']             = $NextObjectGUIDtext;
+					$thisfile_asf_asfindexobject['objectsize']                = $NextObjectSize;
+
+					$thisfile_asf_asfindexobject['entry_time_interval']       = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
+					$offset += 4;
+					$thisfile_asf_asfindexobject['index_specifiers_count']    = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
+					$offset += 2;
+					$thisfile_asf_asfindexobject['index_blocks_count']        = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
+					$offset += 4;
+
+					$ASFIndexObjectData .= fread($this->getid3->fp, 4 * $thisfile_asf_asfindexobject['index_specifiers_count']);
+					for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
+						$IndexSpecifierStreamNumber = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['stream_number']   = $IndexSpecifierStreamNumber;
+						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type']      = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
+						$offset += 2;
+						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type_text'] = $this->ASFIndexObjectIndexTypeLookup($thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type']);
+					}
+
+					$ASFIndexObjectData .= fread($this->getid3->fp, 4);
+					$thisfile_asf_asfindexobject['index_entry_count'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
+					$offset += 4;
+
+					$ASFIndexObjectData .= fread($this->getid3->fp, 8 * $thisfile_asf_asfindexobject['index_specifiers_count']);
+					for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
+						$thisfile_asf_asfindexobject['block_positions'][$IndexSpecifiersCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 8));
+						$offset += 8;
+					}
+
+					$ASFIndexObjectData .= fread($this->getid3->fp, 4 * $thisfile_asf_asfindexobject['index_specifiers_count'] * $thisfile_asf_asfindexobject['index_entry_count']);
+					for ($IndexEntryCounter = 0; $IndexEntryCounter < $thisfile_asf_asfindexobject['index_entry_count']; $IndexEntryCounter++) {
+						for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
+							$thisfile_asf_asfindexobject['offsets'][$IndexSpecifiersCounter][$IndexEntryCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
+							$offset += 4;
+						}
+					}
+					break;
+
+
+				default:
+					// Implementations shall ignore any standard or non-standard object that they do not know how to handle.
+					if ($this->GUIDname($NextObjectGUIDtext)) {
+						$info['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF body at offset '.($offset - 16 - 8);
+					} else {
+						$info['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF body at offset '.(ftell($this->getid3->fp) - 16 - 8);
+					}
+					fseek($this->getid3->fp, ($NextObjectSize - 16 - 8), SEEK_CUR);
+					break;
+			}
+		}
+
+		if (isset($thisfile_asf_codeclistobject['codec_entries']) && is_array($thisfile_asf_codeclistobject['codec_entries'])) {
+			foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) {
+				switch ($streamdata['information']) {
+					case 'WMV1':
+					case 'WMV2':
+					case 'WMV3':
+					case 'MSS1':
+					case 'MSS2':
+					case 'WMVA':
+					case 'WVC1':
+					case 'WMVP':
+					case 'WVP2':
+						$thisfile_video['dataformat'] = 'wmv';
+						$info['mime_type'] = 'video/x-ms-wmv';
+						break;
+
+					case 'MP42':
+					case 'MP43':
+					case 'MP4S':
+					case 'mp4s':
+						$thisfile_video['dataformat'] = 'asf';
+						$info['mime_type'] = 'video/x-ms-asf';
+						break;
+
+					default:
+						switch ($streamdata['type_raw']) {
+							case 1:
+								if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) {
+									$thisfile_video['dataformat'] = 'wmv';
+									if ($info['mime_type'] == 'video/x-ms-asf') {
+										$info['mime_type'] = 'video/x-ms-wmv';
+									}
+								}
+								break;
+
+							case 2:
+								if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) {
+									$thisfile_audio['dataformat'] = 'wma';
+									if ($info['mime_type'] == 'video/x-ms-asf') {
+										$info['mime_type'] = 'audio/x-ms-wma';
+									}
+								}
+								break;
+
+						}
+						break;
+				}
+			}
+		}
+
+		switch (isset($thisfile_audio['codec']) ? $thisfile_audio['codec'] : '') {
+			case 'MPEG Layer-3':
+				$thisfile_audio['dataformat'] = 'mp3';
+				break;
+
+			default:
+				break;
+		}
+
+		if (isset($thisfile_asf_codeclistobject['codec_entries'])) {
+			foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) {
+				switch ($streamdata['type_raw']) {
+
+					case 1: // video
+						$thisfile_video['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']);
+						break;
+
+					case 2: // audio
+						$thisfile_audio['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']);
+
+						// AH 2003-10-01
+						$thisfile_audio['encoder_options'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][0]['description']);
+
+						$thisfile_audio['codec']   = $thisfile_audio['encoder'];
+						break;
+
+					default:
+						$info['warning'][] = 'Unknown streamtype: [codec_list_object][codec_entries]['.$streamnumber.'][type_raw] == '.$streamdata['type_raw'];
+						break;
+
+				}
+			}
+		}
+
+		if (isset($info['audio'])) {
+			$thisfile_audio['lossless']           = (isset($thisfile_audio['lossless'])           ? $thisfile_audio['lossless']           : false);
+			$thisfile_audio['dataformat']         = (!empty($thisfile_audio['dataformat'])        ? $thisfile_audio['dataformat']         : 'asf');
+		}
+		if (!empty($thisfile_video['dataformat'])) {
+			$thisfile_video['lossless']           = (isset($thisfile_audio['lossless'])           ? $thisfile_audio['lossless']           : false);
+			$thisfile_video['pixel_aspect_ratio'] = (isset($thisfile_audio['pixel_aspect_ratio']) ? $thisfile_audio['pixel_aspect_ratio'] : (float) 1);
+			$thisfile_video['dataformat']         = (!empty($thisfile_video['dataformat'])        ? $thisfile_video['dataformat']         : 'asf');
+		}
+		if (!empty($thisfile_video['streams'])) {
+			$thisfile_video['streams']['resolution_x'] = 0;
+			$thisfile_video['streams']['resolution_y'] = 0;
+			foreach ($thisfile_video['streams'] as $key => $valuearray) {
+				if (($valuearray['resolution_x'] > $thisfile_video['streams']['resolution_x']) || ($valuearray['resolution_y'] > $thisfile_video['streams']['resolution_y'])) {
+					$thisfile_video['resolution_x'] = $valuearray['resolution_x'];
+					$thisfile_video['resolution_y'] = $valuearray['resolution_y'];
+				}
+			}
+		}
+		$info['bitrate'] = (isset($thisfile_audio['bitrate']) ? $thisfile_audio['bitrate'] : 0) + (isset($thisfile_video['bitrate']) ? $thisfile_video['bitrate'] : 0);
+
+		if ((!isset($info['playtime_seconds']) || ($info['playtime_seconds'] <= 0)) && ($info['bitrate'] > 0)) {
+			$info['playtime_seconds'] = ($info['filesize'] - $info['avdataoffset']) / ($info['bitrate'] / 8);
+		}
+
+		return true;
+	}
+
+	public static function ASFCodecListObjectTypeLookup($CodecListType) {
+		static $ASFCodecListObjectTypeLookup = array();
+		if (empty($ASFCodecListObjectTypeLookup)) {
+			$ASFCodecListObjectTypeLookup[0x0001] = 'Video Codec';
+			$ASFCodecListObjectTypeLookup[0x0002] = 'Audio Codec';
+			$ASFCodecListObjectTypeLookup[0xFFFF] = 'Unknown Codec';
+		}
+
+		return (isset($ASFCodecListObjectTypeLookup[$CodecListType]) ? $ASFCodecListObjectTypeLookup[$CodecListType] : 'Invalid Codec Type');
+	}
+
+	public static function KnownGUIDs() {
+		static $GUIDarray = array(
+			'GETID3_ASF_Extended_Stream_Properties_Object'   => '14E6A5CB-C672-4332-8399-A96952065B5A',
+			'GETID3_ASF_Padding_Object'                      => '1806D474-CADF-4509-A4BA-9AABCB96AAE8',
+			'GETID3_ASF_Payload_Ext_Syst_Pixel_Aspect_Ratio' => '1B1EE554-F9EA-4BC8-821A-376B74E4C4B8',
+			'GETID3_ASF_Script_Command_Object'               => '1EFB1A30-0B62-11D0-A39B-00A0C90348F6',
+			'GETID3_ASF_No_Error_Correction'                 => '20FB5700-5B55-11CF-A8FD-00805F5C442B',
+			'GETID3_ASF_Content_Branding_Object'             => '2211B3FA-BD23-11D2-B4B7-00A0C955FC6E',
+			'GETID3_ASF_Content_Encryption_Object'           => '2211B3FB-BD23-11D2-B4B7-00A0C955FC6E',
+			'GETID3_ASF_Digital_Signature_Object'            => '2211B3FC-BD23-11D2-B4B7-00A0C955FC6E',
+			'GETID3_ASF_Extended_Content_Encryption_Object'  => '298AE614-2622-4C17-B935-DAE07EE9289C',
+			'GETID3_ASF_Simple_Index_Object'                 => '33000890-E5B1-11CF-89F4-00A0C90349CB',
+			'GETID3_ASF_Degradable_JPEG_Media'               => '35907DE0-E415-11CF-A917-00805F5C442B',
+			'GETID3_ASF_Payload_Extension_System_Timecode'   => '399595EC-8667-4E2D-8FDB-98814CE76C1E',
+			'GETID3_ASF_Binary_Media'                        => '3AFB65E2-47EF-40F2-AC2C-70A90D71D343',
+			'GETID3_ASF_Timecode_Index_Object'               => '3CB73FD0-0C4A-4803-953D-EDF7B6228F0C',
+			'GETID3_ASF_Metadata_Library_Object'             => '44231C94-9498-49D1-A141-1D134E457054',
+			'GETID3_ASF_Reserved_3'                          => '4B1ACBE3-100B-11D0-A39B-00A0C90348F6',
+			'GETID3_ASF_Reserved_4'                          => '4CFEDB20-75F6-11CF-9C0F-00A0C90349CB',
+			'GETID3_ASF_Command_Media'                       => '59DACFC0-59E6-11D0-A3AC-00A0C90348F6',
+			'GETID3_ASF_Header_Extension_Object'             => '5FBF03B5-A92E-11CF-8EE3-00C00C205365',
+			'GETID3_ASF_Media_Object_Index_Parameters_Obj'   => '6B203BAD-3F11-4E84-ACA8-D7613DE2CFA7',
+			'GETID3_ASF_Header_Object'                       => '75B22630-668E-11CF-A6D9-00AA0062CE6C',
+			'GETID3_ASF_Content_Description_Object'          => '75B22633-668E-11CF-A6D9-00AA0062CE6C',
+			'GETID3_ASF_Error_Correction_Object'             => '75B22635-668E-11CF-A6D9-00AA0062CE6C',
+			'GETID3_ASF_Data_Object'                         => '75B22636-668E-11CF-A6D9-00AA0062CE6C',
+			'GETID3_ASF_Web_Stream_Media_Subtype'            => '776257D4-C627-41CB-8F81-7AC7FF1C40CC',
+			'GETID3_ASF_Stream_Bitrate_Properties_Object'    => '7BF875CE-468D-11D1-8D82-006097C9A2B2',
+			'GETID3_ASF_Language_List_Object'                => '7C4346A9-EFE0-4BFC-B229-393EDE415C85',
+			'GETID3_ASF_Codec_List_Object'                   => '86D15240-311D-11D0-A3A4-00A0C90348F6',
+			'GETID3_ASF_Reserved_2'                          => '86D15241-311D-11D0-A3A4-00A0C90348F6',
+			'GETID3_ASF_File_Properties_Object'              => '8CABDCA1-A947-11CF-8EE4-00C00C205365',
+			'GETID3_ASF_File_Transfer_Media'                 => '91BD222C-F21C-497A-8B6D-5AA86BFC0185',
+			'GETID3_ASF_Old_RTP_Extension_Data'              => '96800C63-4C94-11D1-837B-0080C7A37F95',
+			'GETID3_ASF_Advanced_Mutual_Exclusion_Object'    => 'A08649CF-4775-4670-8A16-6E35357566CD',
+			'GETID3_ASF_Bandwidth_Sharing_Object'            => 'A69609E6-517B-11D2-B6AF-00C04FD908E9',
+			'GETID3_ASF_Reserved_1'                          => 'ABD3D211-A9BA-11cf-8EE6-00C00C205365',
+			'GETID3_ASF_Bandwidth_Sharing_Exclusive'         => 'AF6060AA-5197-11D2-B6AF-00C04FD908E9',
+			'GETID3_ASF_Bandwidth_Sharing_Partial'           => 'AF6060AB-5197-11D2-B6AF-00C04FD908E9',
+			'GETID3_ASF_JFIF_Media'                          => 'B61BE100-5B4E-11CF-A8FD-00805F5C442B',
+			'GETID3_ASF_Stream_Properties_Object'            => 'B7DC0791-A9B7-11CF-8EE6-00C00C205365',
+			'GETID3_ASF_Video_Media'                         => 'BC19EFC0-5B4D-11CF-A8FD-00805F5C442B',
+			'GETID3_ASF_Audio_Spread'                        => 'BFC3CD50-618F-11CF-8BB2-00AA00B4E220',
+			'GETID3_ASF_Metadata_Object'                     => 'C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA',
+			'GETID3_ASF_Payload_Ext_Syst_Sample_Duration'    => 'C6BD9450-867F-4907-83A3-C77921B733AD',
+			'GETID3_ASF_Group_Mutual_Exclusion_Object'       => 'D1465A40-5A79-4338-B71B-E36B8FD6C249',
+			'GETID3_ASF_Extended_Content_Description_Object' => 'D2D0A440-E307-11D2-97F0-00A0C95EA850',
+			'GETID3_ASF_Stream_Prioritization_Object'        => 'D4FED15B-88D3-454F-81F0-ED5C45999E24',
+			'GETID3_ASF_Payload_Ext_System_Content_Type'     => 'D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC',
+			'GETID3_ASF_Old_File_Properties_Object'          => 'D6E229D0-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_ASF_Header_Object'               => 'D6E229D1-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_ASF_Data_Object'                 => 'D6E229D2-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Index_Object'                        => 'D6E229D3-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Stream_Properties_Object'        => 'D6E229D4-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Content_Description_Object'      => 'D6E229D5-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Script_Command_Object'           => 'D6E229D6-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Marker_Object'                   => 'D6E229D7-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Component_Download_Object'       => 'D6E229D8-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Stream_Group_Object'             => 'D6E229D9-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Scalable_Object'                 => 'D6E229DA-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Prioritization_Object'           => 'D6E229DB-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Bitrate_Mutual_Exclusion_Object'     => 'D6E229DC-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Inter_Media_Dependency_Object'   => 'D6E229DD-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Rating_Object'                   => 'D6E229DE-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Index_Parameters_Object'             => 'D6E229DF-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Color_Table_Object'              => 'D6E229E0-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Language_List_Object'            => 'D6E229E1-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Audio_Media'                     => 'D6E229E2-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Video_Media'                     => 'D6E229E3-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Image_Media'                     => 'D6E229E4-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Timecode_Media'                  => 'D6E229E5-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Text_Media'                      => 'D6E229E6-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_MIDI_Media'                      => 'D6E229E7-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Command_Media'                   => 'D6E229E8-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_No_Error_Concealment'            => 'D6E229EA-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Scrambled_Audio'                 => 'D6E229EB-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_No_Color_Table'                  => 'D6E229EC-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_SMPTE_Time'                      => 'D6E229ED-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_ASCII_Text'                      => 'D6E229EE-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Unicode_Text'                    => 'D6E229EF-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_HTML_Text'                       => 'D6E229F0-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_URL_Command'                     => 'D6E229F1-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Filename_Command'                => 'D6E229F2-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_ACM_Codec'                       => 'D6E229F3-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_VCM_Codec'                       => 'D6E229F4-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_QuickTime_Codec'                 => 'D6E229F5-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_DirectShow_Transform_Filter'     => 'D6E229F6-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_DirectShow_Rendering_Filter'     => 'D6E229F7-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_No_Enhancement'                  => 'D6E229F8-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Unknown_Enhancement_Type'        => 'D6E229F9-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Temporal_Enhancement'            => 'D6E229FA-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Spatial_Enhancement'             => 'D6E229FB-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Quality_Enhancement'             => 'D6E229FC-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Number_of_Channels_Enhancement'  => 'D6E229FD-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Frequency_Response_Enhancement'  => 'D6E229FE-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Media_Object'                    => 'D6E229FF-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Mutex_Language'                      => 'D6E22A00-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Mutex_Bitrate'                       => 'D6E22A01-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Mutex_Unknown'                       => 'D6E22A02-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_ASF_Placeholder_Object'          => 'D6E22A0E-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Old_Data_Unit_Extension_Object'      => 'D6E22A0F-35DA-11D1-9034-00A0C90349BE',
+			'GETID3_ASF_Web_Stream_Format'                   => 'DA1E6B13-8359-4050-B398-388E965BF00C',
+			'GETID3_ASF_Payload_Ext_System_File_Name'        => 'E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B',
+			'GETID3_ASF_Marker_Object'                       => 'F487CD01-A951-11CF-8EE6-00C00C205365',
+			'GETID3_ASF_Timecode_Index_Parameters_Object'    => 'F55E496D-9797-4B5D-8C8B-604DFE9BFB24',
+			'GETID3_ASF_Audio_Media'                         => 'F8699E40-5B4D-11CF-A8FD-00805F5C442B',
+			'GETID3_ASF_Media_Object_Index_Object'           => 'FEB103F8-12AD-4C64-840F-2A1D2F7AD48C',
+			'GETID3_ASF_Alt_Extended_Content_Encryption_Obj' => 'FF889EF1-ADEE-40DA-9E71-98704BB928CE',
+			'GETID3_ASF_Index_Placeholder_Object'            => 'D9AADE20-7C17-4F9C-BC28-8555DD98E2A2', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html
+			'GETID3_ASF_Compatibility_Object'                => '26F18B5D-4584-47EC-9F5F-0E651F0452C9', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html
+		);
+		return $GUIDarray;
+	}
+
+	public static function GUIDname($GUIDstring) {
+		static $GUIDarray = array();
+		if (empty($GUIDarray)) {
+			$GUIDarray = self::KnownGUIDs();
+		}
+		return array_search($GUIDstring, $GUIDarray);
+	}
+
+	public static function ASFIndexObjectIndexTypeLookup($id) {
+		static $ASFIndexObjectIndexTypeLookup = array();
+		if (empty($ASFIndexObjectIndexTypeLookup)) {
+			$ASFIndexObjectIndexTypeLookup[1] = 'Nearest Past Data Packet';
+			$ASFIndexObjectIndexTypeLookup[2] = 'Nearest Past Media Object';
+			$ASFIndexObjectIndexTypeLookup[3] = 'Nearest Past Cleanpoint';
+		}
+		return (isset($ASFIndexObjectIndexTypeLookup[$id]) ? $ASFIndexObjectIndexTypeLookup[$id] : 'invalid');
+	}
+
+	public static function GUIDtoBytestring($GUIDstring) {
+		// Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way:
+		// first 4 bytes are in little-endian order
+		// next 2 bytes are appended in little-endian order
+		// next 2 bytes are appended in little-endian order
+		// next 2 bytes are appended in big-endian order
+		// next 6 bytes are appended in big-endian order
+
+		// AaBbCcDd-EeFf-GgHh-IiJj-KkLlMmNnOoPp is stored as this 16-byte string:
+		// $Dd $Cc $Bb $Aa $Ff $Ee $Hh $Gg $Ii $Jj $Kk $Ll $Mm $Nn $Oo $Pp
+
+		$hexbytecharstring  = chr(hexdec(substr($GUIDstring,  6, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  4, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  2, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  0, 2)));
+
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 11, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  9, 2)));
+
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 16, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 14, 2)));
+
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 19, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 21, 2)));
+
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 24, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 26, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 28, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 30, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 32, 2)));
+		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 34, 2)));
+
+		return $hexbytecharstring;
+	}
+
+	public static function BytestringToGUID($Bytestring) {
+		$GUIDstring  = str_pad(dechex(ord($Bytestring{3})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{2})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{1})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{0})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= '-';
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{5})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{4})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= '-';
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{7})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{6})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= '-';
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{8})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{9})),  2, '0', STR_PAD_LEFT);
+		$GUIDstring .= '-';
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{10})), 2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{11})), 2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{12})), 2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{13})), 2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{14})), 2, '0', STR_PAD_LEFT);
+		$GUIDstring .= str_pad(dechex(ord($Bytestring{15})), 2, '0', STR_PAD_LEFT);
+
+		return strtoupper($GUIDstring);
+	}
+
+	public static function FILETIMEtoUNIXtime($FILETIME, $round=true) {
+		// FILETIME is a 64-bit unsigned integer representing
+		// the number of 100-nanosecond intervals since January 1, 1601
+		// UNIX timestamp is number of seconds since January 1, 1970
+		// 116444736000000000 = 10000000 * 60 * 60 * 24 * 365 * 369 + 89 leap days
+		if ($round) {
+			return intval(round(($FILETIME - 116444736000000000) / 10000000));
+		}
+		return ($FILETIME - 116444736000000000) / 10000000;
+	}
+
+	public static function WMpictureTypeLookup($WMpictureType) {
+		static $WMpictureTypeLookup = array();
+		if (empty($WMpictureTypeLookup)) {
+			$WMpictureTypeLookup[0x03] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Front Cover');
+			$WMpictureTypeLookup[0x04] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Back Cover');
+			$WMpictureTypeLookup[0x00] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'User Defined');
+			$WMpictureTypeLookup[0x05] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Leaflet Page');
+			$WMpictureTypeLookup[0x06] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Media Label');
+			$WMpictureTypeLookup[0x07] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Lead Artist');
+			$WMpictureTypeLookup[0x08] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Artist');
+			$WMpictureTypeLookup[0x09] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Conductor');
+			$WMpictureTypeLookup[0x0A] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Band');
+			$WMpictureTypeLookup[0x0B] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Composer');
+			$WMpictureTypeLookup[0x0C] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Lyricist');
+			$WMpictureTypeLookup[0x0D] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Recording Location');
+			$WMpictureTypeLookup[0x0E] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'During Recording');
+			$WMpictureTypeLookup[0x0F] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'During Performance');
+			$WMpictureTypeLookup[0x10] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Video Screen Capture');
+			$WMpictureTypeLookup[0x12] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Illustration');
+			$WMpictureTypeLookup[0x13] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Band Logotype');
+			$WMpictureTypeLookup[0x14] = getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-16LE', 'Publisher Logotype');
+		}
+		return (isset($WMpictureTypeLookup[$WMpictureType]) ? $WMpictureTypeLookup[$WMpictureType] : '');
+	}
+
+	public function ASF_HeaderExtensionObjectDataParse(&$asf_header_extension_object_data, &$unhandled_sections) {
+		// http://msdn.microsoft.com/en-us/library/bb643323.aspx
+
+		$offset = 0;
+		$objectOffset = 0;
+		$HeaderExtensionObjectParsed = array();
+		while ($objectOffset < strlen($asf_header_extension_object_data)) {
+			$offset = $objectOffset;
+			$thisObject = array();
+
+			$thisObject['guid']                              =                              substr($asf_header_extension_object_data, $offset, 16);
+			$offset += 16;
+			$thisObject['guid_text'] = $this->BytestringToGUID($thisObject['guid']);
+			$thisObject['guid_name'] = $this->GUIDname($thisObject['guid_text']);
+
+			$thisObject['size']                              = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
+			$offset += 8;
+			if ($thisObject['size'] <= 0) {
+				break;
+			}
+
+			switch ($thisObject['guid']) {
+				case GETID3_ASF_Extended_Stream_Properties_Object:
+					$thisObject['start_time']                        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
+					$offset += 8;
+					$thisObject['start_time_unix']                   = $this->FILETIMEtoUNIXtime($thisObject['start_time']);
+
+					$thisObject['end_time']                          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
+					$offset += 8;
+					$thisObject['end_time_unix']                     = $this->FILETIMEtoUNIXtime($thisObject['end_time']);
+
+					$thisObject['data_bitrate']                      = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['buffer_size']                       = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['initial_buffer_fullness']           = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['alternate_data_bitrate']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['alternate_buffer_size']             = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['alternate_initial_buffer_fullness'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['maximum_object_size']               = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['flags_raw']                         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+					$thisObject['flags']['reliable']                = (bool) $thisObject['flags_raw'] & 0x00000001;
+					$thisObject['flags']['seekable']                = (bool) $thisObject['flags_raw'] & 0x00000002;
+					$thisObject['flags']['no_cleanpoints']          = (bool) $thisObject['flags_raw'] & 0x00000004;
+					$thisObject['flags']['resend_live_cleanpoints'] = (bool) $thisObject['flags_raw'] & 0x00000008;
+
+					$thisObject['stream_number']                     = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					$thisObject['stream_language_id_index']          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					$thisObject['average_time_per_frame']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+					$offset += 4;
+
+					$thisObject['stream_name_count']                 = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					$thisObject['payload_extension_system_count']    = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					for ($i = 0; $i < $thisObject['stream_name_count']; $i++) {
+						$streamName = array();
+
+						$streamName['language_id_index']             = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$streamName['stream_name_length']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$streamName['stream_name']                   = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  $streamName['stream_name_length']));
+						$offset += $streamName['stream_name_length'];
+
+						$thisObject['stream_names'][$i] = $streamName;
+					}
+
+					for ($i = 0; $i < $thisObject['payload_extension_system_count']; $i++) {
+						$payloadExtensionSystem = array();
+
+						$payloadExtensionSystem['extension_system_id']   =                              substr($asf_header_extension_object_data, $offset, 16);
+						$offset += 16;
+						$payloadExtensionSystem['extension_system_id_text'] = $this->BytestringToGUID($payloadExtensionSystem['extension_system_id']);
+
+						$payloadExtensionSystem['extension_system_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+						if ($payloadExtensionSystem['extension_system_size'] <= 0) {
+							break 2;
+						}
+
+						$payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+						$offset += 4;
+
+						$payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  $payloadExtensionSystem['extension_system_info_length']));
+						$offset += $payloadExtensionSystem['extension_system_info_length'];
+
+						$thisObject['payload_extension_systems'][$i] = $payloadExtensionSystem;
+					}
+
+					break;
+
+				case GETID3_ASF_Padding_Object:
+					// padding, skip it
+					break;
+
+				case GETID3_ASF_Metadata_Object:
+					$thisObject['description_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					for ($i = 0; $i < $thisObject['description_record_counts']; $i++) {
+						$descriptionRecord = array();
+
+						$descriptionRecord['reserved_1']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2)); // must be zero
+						$offset += 2;
+
+						$descriptionRecord['stream_number']      = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$descriptionRecord['name_length']        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$descriptionRecord['data_type']          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+						$descriptionRecord['data_type_text'] = $this->ASFmetadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']);
+
+						$descriptionRecord['data_length']        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+						$offset += 4;
+
+						$descriptionRecord['name']               =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['name_length']);
+						$offset += $descriptionRecord['name_length'];
+
+						$descriptionRecord['data']               =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['data_length']);
+						$offset += $descriptionRecord['data_length'];
+						switch ($descriptionRecord['data_type']) {
+							case 0x0000: // Unicode string
+								break;
+
+							case 0x0001: // BYTE array
+								// do nothing
+								break;
+
+							case 0x0002: // BOOL
+								$descriptionRecord['data'] = (bool) getid3_lib::LittleEndian2Int($descriptionRecord['data']);
+								break;
+
+							case 0x0003: // DWORD
+							case 0x0004: // QWORD
+							case 0x0005: // WORD
+								$descriptionRecord['data'] = getid3_lib::LittleEndian2Int($descriptionRecord['data']);
+								break;
+
+							case 0x0006: // GUID
+								$descriptionRecord['data_text'] = $this->BytestringToGUID($descriptionRecord['data']);
+								break;
+						}
+
+						$thisObject['description_record'][$i] = $descriptionRecord;
+					}
+					break;
+
+				case GETID3_ASF_Language_List_Object:
+					$thisObject['language_id_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					for ($i = 0; $i < $thisObject['language_id_record_counts']; $i++) {
+						$languageIDrecord = array();
+
+						$languageIDrecord['language_id_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  1));
+						$offset += 1;
+
+						$languageIDrecord['language_id']                =                              substr($asf_header_extension_object_data, $offset,  $languageIDrecord['language_id_length']);
+						$offset += $languageIDrecord['language_id_length'];
+
+						$thisObject['language_id_record'][$i] = $languageIDrecord;
+					}
+					break;
+
+				case GETID3_ASF_Metadata_Library_Object:
+					$thisObject['description_records_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+					$offset += 2;
+
+					for ($i = 0; $i < $thisObject['description_records_count']; $i++) {
+						$descriptionRecord = array();
+
+						$descriptionRecord['language_list_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$descriptionRecord['stream_number']       = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$descriptionRecord['name_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+
+						$descriptionRecord['data_type']           = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
+						$offset += 2;
+						$descriptionRecord['data_type_text'] = $this->ASFmetadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']);
+
+						$descriptionRecord['data_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
+						$offset += 4;
+
+						$descriptionRecord['name']                =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['name_length']);
+						$offset += $descriptionRecord['name_length'];
+
+						$descriptionRecord['data']                =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['data_length']);
+						$offset += $descriptionRecord['data_length'];
+
+						if (preg_match('#^WM/Picture$#', str_replace("\x00", '', trim($descriptionRecord['name'])))) {
+							$WMpicture = $this->ASF_WMpicture($descriptionRecord['data']);
+							foreach ($WMpicture as $key => $value) {
+								$descriptionRecord['data'] = $WMpicture;
+							}
+							unset($WMpicture);
+						}
+
+						$thisObject['description_record'][$i] = $descriptionRecord;
+					}
+					break;
+
+				default:
+					$unhandled_sections++;
+					if ($this->GUIDname($thisObject['guid_text'])) {
+						$this->getid3->info['warning'][] = 'unhandled Header Extension Object GUID "'.$this->GUIDname($thisObject['guid_text']).'" {'.$thisObject['guid_text'].'} at offset '.($offset - 16 - 8);
+					} else {
+						$this->getid3->info['warning'][] = 'unknown Header Extension Object GUID {'.$thisObject['guid_text'].'} in at offset '.($offset - 16 - 8);
+					}
+					break;
+			}
+			$HeaderExtensionObjectParsed[] = $thisObject;
+
+			$objectOffset += $thisObject['size'];
+		}
+		return $HeaderExtensionObjectParsed;
+	}
+
+
+	public static function ASFmetadataLibraryObjectDataTypeLookup($id) {
+		static $ASFmetadataLibraryObjectDataTypeLookup = array(
+			0x0000 => 'Unicode string', // The data consists of a sequence of Unicode characters
+			0x0001 => 'BYTE array',     // The type of the data is implementation-specific
+			0x0002 => 'BOOL',           // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values
+			0x0003 => 'DWORD',          // The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer
+			0x0004 => 'QWORD',          // The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer
+			0x0005 => 'WORD',           // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer
+			0x0006 => 'GUID',           // The data is 16 bytes long and should be interpreted as a 128-bit GUID
+		);
+		return (isset($ASFmetadataLibraryObjectDataTypeLookup[$id]) ? $ASFmetadataLibraryObjectDataTypeLookup[$id] : 'invalid');
+	}
+
+	public function ASF_WMpicture(&$data) {
+		//typedef struct _WMPicture{
+		//  LPWSTR  pwszMIMEType;
+		//  BYTE  bPictureType;
+		//  LPWSTR  pwszDescription;
+		//  DWORD  dwDataLen;
+		//  BYTE*  pbData;
+		//} WM_PICTURE;
+
+		$WMpicture = array();
+
+		$offset = 0;
+		$WMpicture['image_type_id'] = getid3_lib::LittleEndian2Int(substr($data, $offset, 1));
+		$offset += 1;
+		$WMpicture['image_type']    = $this->WMpictureTypeLookup($WMpicture['image_type_id']);
+		$WMpicture['image_size']    = getid3_lib::LittleEndian2Int(substr($data, $offset, 4));
+		$offset += 4;
+
+		$WMpicture['image_mime'] = '';
+		do {
+			$next_byte_pair = substr($data, $offset, 2);
+			$offset += 2;
+			$WMpicture['image_mime'] .= $next_byte_pair;
+		} while ($next_byte_pair !== "\x00\x00");
+
+		$WMpicture['image_description'] = '';
+		do {
+			$next_byte_pair = substr($data, $offset, 2);
+			$offset += 2;
+			$WMpicture['image_description'] .= $next_byte_pair;
+		} while ($next_byte_pair !== "\x00\x00");
+
+		$WMpicture['dataoffset'] = $offset;
+		$WMpicture['data'] = substr($data, $offset);
+
+		$imageinfo = array();
+		$WMpicture['image_mime'] = '';
+		$imagechunkcheck = getid3_lib::GetDataImageSize($WMpicture['data'], $imageinfo);
+		unset($imageinfo);
+		if (!empty($imagechunkcheck)) {
+			$WMpicture['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]);
+		}
+		if (!isset($this->getid3->info['asf']['comments']['picture'])) {
+			$this->getid3->info['asf']['comments']['picture'] = array();
+		}
+		$this->getid3->info['asf']['comments']['picture'][] = array('data'=>$WMpicture['data'], 'image_mime'=>$WMpicture['image_mime']);
+
+		return $WMpicture;
+	}
+
+
+	// Remove terminator 00 00 and convert UTF-16LE to Latin-1
+	public static function TrimConvert($string) {
+		return trim(getid3_lib::iconv_fallback('UTF-16LE', 'ISO-8859-1', self::TrimTerm($string)), ' ');
+	}
+
+
+	// Remove terminator 00 00
+	public static function TrimTerm($string) {
+		// remove terminator, only if present (it should be, but...)
+		if (substr($string, -2) === "\x00\x00") {
+			$string = substr($string, 0, -2);
+		}
+		return $string;
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio-video.flv.php b/wp-includes/ID3/module.audio-video.flv.php
new file mode 100644
index 000000000..f9c4cf3ea
--- /dev/null
+++ b/wp-includes/ID3/module.audio-video.flv.php
@@ -0,0 +1,729 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+//                                                             //
+//  FLV module by Seth Kaufman <sethØwhirl-i-gig*com>          //
+//                                                             //
+//  * version 0.1 (26 June 2005)                               //
+//                                                             //
+//                                                             //
+//  * version 0.1.1 (15 July 2005)                             //
+//  minor modifications by James Heinrich <info@getid3.org>    //
+//                                                             //
+//  * version 0.2 (22 February 2006)                           //
+//  Support for On2 VP6 codec and meta information             //
+//    by Steve Webster <steve.websterØfeaturecreep*com>        //
+//                                                             //
+//  * version 0.3 (15 June 2006)                               //
+//  Modified to not read entire file into memory               //
+//    by James Heinrich <info@getid3.org>                      //
+//                                                             //
+//  * version 0.4 (07 December 2007)                           //
+//  Bugfixes for incorrectly parsed FLV dimensions             //
+//    and incorrect parsing of onMetaTag                       //
+//    by Evgeny Moysevich <moysevichØgmail*com>                //
+//                                                             //
+//  * version 0.5 (21 May 2009)                                //
+//  Fixed parsing of audio tags and added additional codec     //
+//    details. The duration is now read from onMetaTag (if     //
+//    exists), rather than parsing whole file                  //
+//    by Nigel Barnes <ngbarnesØhotmail*com>                   //
+//                                                             //
+//  * version 0.6 (24 May 2009)                                //
+//  Better parsing of files with h264 video                    //
+//    by Evgeny Moysevich <moysevichØgmail*com>                //
+//                                                             //
+//  * version 0.6.1 (30 May 2011)                              //
+//    prevent infinite loops in expGolombUe()                  //
+//                                                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio-video.flv.php                                  //
+// module for analyzing Shockwave Flash Video files            //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+define('GETID3_FLV_TAG_AUDIO',          8);
+define('GETID3_FLV_TAG_VIDEO',          9);
+define('GETID3_FLV_TAG_META',          18);
+
+define('GETID3_FLV_VIDEO_H263',         2);
+define('GETID3_FLV_VIDEO_SCREEN',       3);
+define('GETID3_FLV_VIDEO_VP6FLV',       4);
+define('GETID3_FLV_VIDEO_VP6FLV_ALPHA', 5);
+define('GETID3_FLV_VIDEO_SCREENV2',     6);
+define('GETID3_FLV_VIDEO_H264',         7);
+
+define('H264_AVC_SEQUENCE_HEADER',          0);
+define('H264_PROFILE_BASELINE',            66);
+define('H264_PROFILE_MAIN',                77);
+define('H264_PROFILE_EXTENDED',            88);
+define('H264_PROFILE_HIGH',               100);
+define('H264_PROFILE_HIGH10',             110);
+define('H264_PROFILE_HIGH422',            122);
+define('H264_PROFILE_HIGH444',            144);
+define('H264_PROFILE_HIGH444_PREDICTIVE', 244);
+
+class getid3_flv extends getid3_handler
+{
+	public $max_frames = 100000; // break out of the loop if too many frames have been scanned; only scan this many if meta frame does not contain useful duration
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET);
+
+		$FLVdataLength = $info['avdataend'] - $info['avdataoffset'];
+		$FLVheader = fread($this->getid3->fp, 5);
+
+		$info['fileformat'] = 'flv';
+		$info['flv']['header']['signature'] =                           substr($FLVheader, 0, 3);
+		$info['flv']['header']['version']   = getid3_lib::BigEndian2Int(substr($FLVheader, 3, 1));
+		$TypeFlags                          = getid3_lib::BigEndian2Int(substr($FLVheader, 4, 1));
+
+		$magic = 'FLV';
+		if ($info['flv']['header']['signature'] != $magic) {
+			$info['error'][] = 'Expecting "'.getid3_lib::PrintHexBytes($magic).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($info['flv']['header']['signature']).'"';
+			unset($info['flv']);
+			unset($info['fileformat']);
+			return false;
+		}
+
+		$info['flv']['header']['hasAudio'] = (bool) ($TypeFlags & 0x04);
+		$info['flv']['header']['hasVideo'] = (bool) ($TypeFlags & 0x01);
+
+		$FrameSizeDataLength = getid3_lib::BigEndian2Int(fread($this->getid3->fp, 4));
+		$FLVheaderFrameLength = 9;
+		if ($FrameSizeDataLength > $FLVheaderFrameLength) {
+			fseek($this->getid3->fp, $FrameSizeDataLength - $FLVheaderFrameLength, SEEK_CUR);
+		}
+		$Duration = 0;
+		$found_video = false;
+		$found_audio = false;
+		$found_meta  = false;
+		$found_valid_meta_playtime = false;
+		$tagParseCount = 0;
+		$info['flv']['framecount'] = array('total'=>0, 'audio'=>0, 'video'=>0);
+		$flv_framecount = &$info['flv']['framecount'];
+		while (((ftell($this->getid3->fp) + 16) < $info['avdataend']) && (($tagParseCount++ <= $this->max_frames) || !$found_valid_meta_playtime))  {
+			$ThisTagHeader = fread($this->getid3->fp, 16);
+
+			$PreviousTagLength = getid3_lib::BigEndian2Int(substr($ThisTagHeader,  0, 4));
+			$TagType           = getid3_lib::BigEndian2Int(substr($ThisTagHeader,  4, 1));
+			$DataLength        = getid3_lib::BigEndian2Int(substr($ThisTagHeader,  5, 3));
+			$Timestamp         = getid3_lib::BigEndian2Int(substr($ThisTagHeader,  8, 3));
+			$LastHeaderByte    = getid3_lib::BigEndian2Int(substr($ThisTagHeader, 15, 1));
+			$NextOffset = ftell($this->getid3->fp) - 1 + $DataLength;
+			if ($Timestamp > $Duration) {
+				$Duration = $Timestamp;
+			}
+
+			$flv_framecount['total']++;
+			switch ($TagType) {
+				case GETID3_FLV_TAG_AUDIO:
+					$flv_framecount['audio']++;
+					if (!$found_audio) {
+						$found_audio = true;
+						$info['flv']['audio']['audioFormat']     = ($LastHeaderByte >> 4) & 0x0F;
+						$info['flv']['audio']['audioRate']       = ($LastHeaderByte >> 2) & 0x03;
+						$info['flv']['audio']['audioSampleSize'] = ($LastHeaderByte >> 1) & 0x01;
+						$info['flv']['audio']['audioType']       =  $LastHeaderByte       & 0x01;
+					}
+					break;
+
+				case GETID3_FLV_TAG_VIDEO:
+					$flv_framecount['video']++;
+					if (!$found_video) {
+						$found_video = true;
+						$info['flv']['video']['videoCodec'] = $LastHeaderByte & 0x07;
+
+						$FLVvideoHeader = fread($this->getid3->fp, 11);
+
+						if ($info['flv']['video']['videoCodec'] == GETID3_FLV_VIDEO_H264) {
+							// this code block contributed by: moysevichØgmail*com
+
+							$AVCPacketType = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 0, 1));
+							if ($AVCPacketType == H264_AVC_SEQUENCE_HEADER) {
+								//	read AVCDecoderConfigurationRecord
+								$configurationVersion       = getid3_lib::BigEndian2Int(substr($FLVvideoHeader,  4, 1));
+								$AVCProfileIndication       = getid3_lib::BigEndian2Int(substr($FLVvideoHeader,  5, 1));
+								$profile_compatibility      = getid3_lib::BigEndian2Int(substr($FLVvideoHeader,  6, 1));
+								$lengthSizeMinusOne         = getid3_lib::BigEndian2Int(substr($FLVvideoHeader,  7, 1));
+								$numOfSequenceParameterSets = getid3_lib::BigEndian2Int(substr($FLVvideoHeader,  8, 1));
+
+								if (($numOfSequenceParameterSets & 0x1F) != 0) {
+									//	there is at least one SequenceParameterSet
+									//	read size of the first SequenceParameterSet
+									//$spsSize = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 9, 2));
+									$spsSize = getid3_lib::LittleEndian2Int(substr($FLVvideoHeader, 9, 2));
+									//	read the first SequenceParameterSet
+									$sps = fread($this->getid3->fp, $spsSize);
+									if (strlen($sps) == $spsSize) {	//	make sure that whole SequenceParameterSet was red
+										$spsReader = new AVCSequenceParameterSetReader($sps);
+										$spsReader->readData();
+										$info['video']['resolution_x'] = $spsReader->getWidth();
+										$info['video']['resolution_y'] = $spsReader->getHeight();
+									}
+								}
+							}
+							// end: moysevichØgmail*com
+
+						} elseif ($info['flv']['video']['videoCodec'] == GETID3_FLV_VIDEO_H263) {
+
+							$PictureSizeType = (getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 3, 2))) >> 7;
+							$PictureSizeType = $PictureSizeType & 0x0007;
+							$info['flv']['header']['videoSizeType'] = $PictureSizeType;
+							switch ($PictureSizeType) {
+								case 0:
+									//$PictureSizeEnc = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 5, 2));
+									//$PictureSizeEnc <<= 1;
+									//$info['video']['resolution_x'] = ($PictureSizeEnc & 0xFF00) >> 8;
+									//$PictureSizeEnc = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 6, 2));
+									//$PictureSizeEnc <<= 1;
+									//$info['video']['resolution_y'] = ($PictureSizeEnc & 0xFF00) >> 8;
+
+									$PictureSizeEnc['x'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 4, 2));
+									$PictureSizeEnc['y'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 5, 2));
+									$PictureSizeEnc['x'] >>= 7;
+									$PictureSizeEnc['y'] >>= 7;
+									$info['video']['resolution_x'] = $PictureSizeEnc['x'] & 0xFF;
+									$info['video']['resolution_y'] = $PictureSizeEnc['y'] & 0xFF;
+									break;
+
+								case 1:
+									$PictureSizeEnc['x'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 4, 3));
+									$PictureSizeEnc['y'] = getid3_lib::BigEndian2Int(substr($FLVvideoHeader, 6, 3));
+									$PictureSizeEnc['x'] >>= 7;
+									$PictureSizeEnc['y'] >>= 7;
+									$info['video']['resolution_x'] = $PictureSizeEnc['x'] & 0xFFFF;
+									$info['video']['resolution_y'] = $PictureSizeEnc['y'] & 0xFFFF;
+									break;
+
+								case 2:
+									$info['video']['resolution_x'] = 352;
+									$info['video']['resolution_y'] = 288;
+									break;
+
+								case 3:
+									$info['video']['resolution_x'] = 176;
+									$info['video']['resolution_y'] = 144;
+									break;
+
+								case 4:
+									$info['video']['resolution_x'] = 128;
+									$info['video']['resolution_y'] = 96;
+									break;
+
+								case 5:
+									$info['video']['resolution_x'] = 320;
+									$info['video']['resolution_y'] = 240;
+									break;
+
+								case 6:
+									$info['video']['resolution_x'] = 160;
+									$info['video']['resolution_y'] = 120;
+									break;
+
+								default:
+									$info['video']['resolution_x'] = 0;
+									$info['video']['resolution_y'] = 0;
+									break;
+
+							}
+						}
+						$info['video']['pixel_aspect_ratio'] = $info['video']['resolution_x'] / $info['video']['resolution_y'];
+					}
+					break;
+
+				// Meta tag
+				case GETID3_FLV_TAG_META:
+					if (!$found_meta) {
+						$found_meta = true;
+						fseek($this->getid3->fp, -1, SEEK_CUR);
+						$datachunk = fread($this->getid3->fp, $DataLength);
+						$AMFstream = new AMFStream($datachunk);
+						$reader = new AMFReader($AMFstream);
+						$eventName = $reader->readData();
+						$info['flv']['meta'][$eventName] = $reader->readData();
+						unset($reader);
+
+						$copykeys = array('framerate'=>'frame_rate', 'width'=>'resolution_x', 'height'=>'resolution_y', 'audiodatarate'=>'bitrate', 'videodatarate'=>'bitrate');
+						foreach ($copykeys as $sourcekey => $destkey) {
+							if (isset($info['flv']['meta']['onMetaData'][$sourcekey])) {
+								switch ($sourcekey) {
+									case 'width':
+									case 'height':
+										$info['video'][$destkey] = intval(round($info['flv']['meta']['onMetaData'][$sourcekey]));
+										break;
+									case 'audiodatarate':
+										$info['audio'][$destkey] = getid3_lib::CastAsInt(round($info['flv']['meta']['onMetaData'][$sourcekey] * 1000));
+										break;
+									case 'videodatarate':
+									case 'frame_rate':
+									default:
+										$info['video'][$destkey] = $info['flv']['meta']['onMetaData'][$sourcekey];
+										break;
+								}
+							}
+						}
+						if (!empty($info['flv']['meta']['onMetaData']['duration'])) {
+							$found_valid_meta_playtime = true;
+						}
+					}
+					break;
+
+				default:
+					// noop
+					break;
+			}
+			fseek($this->getid3->fp, $NextOffset, SEEK_SET);
+		}
+
+		$info['playtime_seconds'] = $Duration / 1000;
+		if ($info['playtime_seconds'] > 0) {
+			$info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds'];
+		}
+
+		if ($info['flv']['header']['hasAudio']) {
+			$info['audio']['codec']           =   $this->FLVaudioFormat($info['flv']['audio']['audioFormat']);
+			$info['audio']['sample_rate']     =     $this->FLVaudioRate($info['flv']['audio']['audioRate']);
+			$info['audio']['bits_per_sample'] = $this->FLVaudioBitDepth($info['flv']['audio']['audioSampleSize']);
+
+			$info['audio']['channels']   =  $info['flv']['audio']['audioType'] + 1; // 0=mono,1=stereo
+			$info['audio']['lossless']   = ($info['flv']['audio']['audioFormat'] ? false : true); // 0=uncompressed
+			$info['audio']['dataformat'] = 'flv';
+		}
+		if (!empty($info['flv']['header']['hasVideo'])) {
+			$info['video']['codec']      = $this->FLVvideoCodec($info['flv']['video']['videoCodec']);
+			$info['video']['dataformat'] = 'flv';
+			$info['video']['lossless']   = false;
+		}
+
+		// Set information from meta
+		if (!empty($info['flv']['meta']['onMetaData']['duration'])) {
+			$info['playtime_seconds'] = $info['flv']['meta']['onMetaData']['duration'];
+			$info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds'];
+		}
+		if (isset($info['flv']['meta']['onMetaData']['audiocodecid'])) {
+			$info['audio']['codec'] = $this->FLVaudioFormat($info['flv']['meta']['onMetaData']['audiocodecid']);
+		}
+		if (isset($info['flv']['meta']['onMetaData']['videocodecid'])) {
+			$info['video']['codec'] = $this->FLVvideoCodec($info['flv']['meta']['onMetaData']['videocodecid']);
+		}
+		return true;
+	}
+
+
+	public function FLVaudioFormat($id) {
+		$FLVaudioFormat = array(
+			0  => 'Linear PCM, platform endian',
+			1  => 'ADPCM',
+			2  => 'mp3',
+			3  => 'Linear PCM, little endian',
+			4  => 'Nellymoser 16kHz mono',
+			5  => 'Nellymoser 8kHz mono',
+			6  => 'Nellymoser',
+			7  => 'G.711A-law logarithmic PCM',
+			8  => 'G.711 mu-law logarithmic PCM',
+			9  => 'reserved',
+			10 => 'AAC',
+			11 => false, // unknown?
+			12 => false, // unknown?
+			13 => false, // unknown?
+			14 => 'mp3 8kHz',
+			15 => 'Device-specific sound',
+		);
+		return (isset($FLVaudioFormat[$id]) ? $FLVaudioFormat[$id] : false);
+	}
+
+	public function FLVaudioRate($id) {
+		$FLVaudioRate = array(
+			0 =>  5500,
+			1 => 11025,
+			2 => 22050,
+			3 => 44100,
+		);
+		return (isset($FLVaudioRate[$id]) ? $FLVaudioRate[$id] : false);
+	}
+
+	public function FLVaudioBitDepth($id) {
+		$FLVaudioBitDepth = array(
+			0 =>  8,
+			1 => 16,
+		);
+		return (isset($FLVaudioBitDepth[$id]) ? $FLVaudioBitDepth[$id] : false);
+	}
+
+	public function FLVvideoCodec($id) {
+		$FLVvideoCodec = array(
+			GETID3_FLV_VIDEO_H263         => 'Sorenson H.263',
+			GETID3_FLV_VIDEO_SCREEN       => 'Screen video',
+			GETID3_FLV_VIDEO_VP6FLV       => 'On2 VP6',
+			GETID3_FLV_VIDEO_VP6FLV_ALPHA => 'On2 VP6 with alpha channel',
+			GETID3_FLV_VIDEO_SCREENV2     => 'Screen video v2',
+			GETID3_FLV_VIDEO_H264         => 'Sorenson H.264',
+		);
+		return (isset($FLVvideoCodec[$id]) ? $FLVvideoCodec[$id] : false);
+	}
+}
+
+class AMFStream {
+	public $bytes;
+	public $pos;
+
+	public function AMFStream(&$bytes) {
+		$this->bytes =& $bytes;
+		$this->pos = 0;
+	}
+
+	public function readByte() {
+		return getid3_lib::BigEndian2Int(substr($this->bytes, $this->pos++, 1));
+	}
+
+	public function readInt() {
+		return ($this->readByte() << 8) + $this->readByte();
+	}
+
+	public function readLong() {
+		return ($this->readByte() << 24) + ($this->readByte() << 16) + ($this->readByte() << 8) + $this->readByte();
+	}
+
+	public function readDouble() {
+		return getid3_lib::BigEndian2Float($this->read(8));
+	}
+
+	public function readUTF() {
+		$length = $this->readInt();
+		return $this->read($length);
+	}
+
+	public function readLongUTF() {
+		$length = $this->readLong();
+		return $this->read($length);
+	}
+
+	public function read($length) {
+		$val = substr($this->bytes, $this->pos, $length);
+		$this->pos += $length;
+		return $val;
+	}
+
+	public function peekByte() {
+		$pos = $this->pos;
+		$val = $this->readByte();
+		$this->pos = $pos;
+		return $val;
+	}
+
+	public function peekInt() {
+		$pos = $this->pos;
+		$val = $this->readInt();
+		$this->pos = $pos;
+		return $val;
+	}
+
+	public function peekLong() {
+		$pos = $this->pos;
+		$val = $this->readLong();
+		$this->pos = $pos;
+		return $val;
+	}
+
+	public function peekDouble() {
+		$pos = $this->pos;
+		$val = $this->readDouble();
+		$this->pos = $pos;
+		return $val;
+	}
+
+	public function peekUTF() {
+		$pos = $this->pos;
+		$val = $this->readUTF();
+		$this->pos = $pos;
+		return $val;
+	}
+
+	public function peekLongUTF() {
+		$pos = $this->pos;
+		$val = $this->readLongUTF();
+		$this->pos = $pos;
+		return $val;
+	}
+}
+
+class AMFReader {
+	public $stream;
+
+	public function AMFReader(&$stream) {
+		$this->stream =& $stream;
+	}
+
+	public function readData() {
+		$value = null;
+
+		$type = $this->stream->readByte();
+		switch ($type) {
+
+			// Double
+			case 0:
+				$value = $this->readDouble();
+			break;
+
+			// Boolean
+			case 1:
+				$value = $this->readBoolean();
+				break;
+
+			// String
+			case 2:
+				$value = $this->readString();
+				break;
+
+			// Object
+			case 3:
+				$value = $this->readObject();
+				break;
+
+			// null
+			case 6:
+				return null;
+				break;
+
+			// Mixed array
+			case 8:
+				$value = $this->readMixedArray();
+				break;
+
+			// Array
+			case 10:
+				$value = $this->readArray();
+				break;
+
+			// Date
+			case 11:
+				$value = $this->readDate();
+				break;
+
+			// Long string
+			case 13:
+				$value = $this->readLongString();
+				break;
+
+			// XML (handled as string)
+			case 15:
+				$value = $this->readXML();
+				break;
+
+			// Typed object (handled as object)
+			case 16:
+				$value = $this->readTypedObject();
+				break;
+
+			// Long string
+			default:
+				$value = '(unknown or unsupported data type)';
+			break;
+		}
+
+		return $value;
+	}
+
+	public function readDouble() {
+		return $this->stream->readDouble();
+	}
+
+	public function readBoolean() {
+		return $this->stream->readByte() == 1;
+	}
+
+	public function readString() {
+		return $this->stream->readUTF();
+	}
+
+	public function readObject() {
+		// Get highest numerical index - ignored
+//		$highestIndex = $this->stream->readLong();
+
+		$data = array();
+
+		while ($key = $this->stream->readUTF()) {
+			$data[$key] = $this->readData();
+		}
+		// Mixed array record ends with empty string (0x00 0x00) and 0x09
+		if (($key == '') && ($this->stream->peekByte() == 0x09)) {
+			// Consume byte
+			$this->stream->readByte();
+		}
+		return $data;
+	}
+
+	public function readMixedArray() {
+		// Get highest numerical index - ignored
+		$highestIndex = $this->stream->readLong();
+
+		$data = array();
+
+		while ($key = $this->stream->readUTF()) {
+			if (is_numeric($key)) {
+				$key = (float) $key;
+			}
+			$data[$key] = $this->readData();
+		}
+		// Mixed array record ends with empty string (0x00 0x00) and 0x09
+		if (($key == '') && ($this->stream->peekByte() == 0x09)) {
+			// Consume byte
+			$this->stream->readByte();
+		}
+
+		return $data;
+	}
+
+	public function readArray() {
+		$length = $this->stream->readLong();
+		$data = array();
+
+		for ($i = 0; $i < $length; $i++) {
+			$data[] = $this->readData();
+		}
+		return $data;
+	}
+
+	public function readDate() {
+		$timestamp = $this->stream->readDouble();
+		$timezone = $this->stream->readInt();
+		return $timestamp;
+	}
+
+	public function readLongString() {
+		return $this->stream->readLongUTF();
+	}
+
+	public function readXML() {
+		return $this->stream->readLongUTF();
+	}
+
+	public function readTypedObject() {
+		$className = $this->stream->readUTF();
+		return $this->readObject();
+	}
+}
+
+class AVCSequenceParameterSetReader {
+	public $sps;
+	public $start = 0;
+	public $currentBytes = 0;
+	public $currentBits = 0;
+	public $width;
+	public $height;
+
+	public function AVCSequenceParameterSetReader($sps) {
+		$this->sps = $sps;
+	}
+
+	public function readData() {
+		$this->skipBits(8);
+		$this->skipBits(8);
+		$profile = $this->getBits(8);	//	read profile
+		$this->skipBits(16);
+		$this->expGolombUe();	//	read sps id
+		if (in_array($profile, array(H264_PROFILE_HIGH, H264_PROFILE_HIGH10, H264_PROFILE_HIGH422, H264_PROFILE_HIGH444, H264_PROFILE_HIGH444_PREDICTIVE))) {
+			if ($this->expGolombUe() == 3) {
+				$this->skipBits(1);
+			}
+			$this->expGolombUe();
+			$this->expGolombUe();
+			$this->skipBits(1);
+			if ($this->getBit()) {
+				for ($i = 0; $i < 8; $i++) {
+					if ($this->getBit()) {
+						$size = $i < 6 ? 16 : 64;
+						$lastScale = 8;
+						$nextScale = 8;
+						for ($j = 0; $j < $size; $j++) {
+							if ($nextScale != 0) {
+								$deltaScale = $this->expGolombUe();
+								$nextScale = ($lastScale + $deltaScale + 256) % 256;
+							}
+							if ($nextScale != 0) {
+								$lastScale = $nextScale;
+							}
+						}
+					}
+				}
+			}
+		}
+		$this->expGolombUe();
+		$pocType = $this->expGolombUe();
+		if ($pocType == 0) {
+			$this->expGolombUe();
+		} elseif ($pocType == 1) {
+			$this->skipBits(1);
+			$this->expGolombSe();
+			$this->expGolombSe();
+			$pocCycleLength = $this->expGolombUe();
+			for ($i = 0; $i < $pocCycleLength; $i++) {
+				$this->expGolombSe();
+			}
+		}
+		$this->expGolombUe();
+		$this->skipBits(1);
+		$this->width = ($this->expGolombUe() + 1) * 16;
+		$heightMap = $this->expGolombUe() + 1;
+		$this->height = (2 - $this->getBit()) * $heightMap * 16;
+	}
+
+	public function skipBits($bits) {
+		$newBits = $this->currentBits + $bits;
+		$this->currentBytes += (int)floor($newBits / 8);
+		$this->currentBits = $newBits % 8;
+	}
+
+	public function getBit() {
+		$result = (getid3_lib::BigEndian2Int(substr($this->sps, $this->currentBytes, 1)) >> (7 - $this->currentBits)) & 0x01;
+		$this->skipBits(1);
+		return $result;
+	}
+
+	public function getBits($bits) {
+		$result = 0;
+		for ($i = 0; $i < $bits; $i++) {
+			$result = ($result << 1) + $this->getBit();
+		}
+		return $result;
+	}
+
+	public function expGolombUe() {
+		$significantBits = 0;
+		$bit = $this->getBit();
+		while ($bit == 0) {
+			$significantBits++;
+			$bit = $this->getBit();
+
+			if ($significantBits > 31) {
+				// something is broken, this is an emergency escape to prevent infinite loops
+				return 0;
+			}
+		}
+		return (1 << $significantBits) + $this->getBits($significantBits) - 1;
+	}
+
+	public function expGolombSe() {
+		$result = $this->expGolombUe();
+		if (($result & 0x01) == 0) {
+			return -($result >> 1);
+		} else {
+			return ($result + 1) >> 1;
+		}
+	}
+
+	public function getWidth() {
+		return $this->width;
+	}
+
+	public function getHeight() {
+		return $this->height;
+	}
+}
diff --git a/wp-includes/ID3/module.audio-video.matroska.php b/wp-includes/ID3/module.audio-video.matroska.php
new file mode 100644
index 000000000..fb0af7221
--- /dev/null
+++ b/wp-includes/ID3/module.audio-video.matroska.php
@@ -0,0 +1,1765 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio-video.matriska.php                             //
+// module for analyzing Matroska containers                    //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+define('EBML_ID_CHAPTERS',                  0x0043A770); // [10][43][A7][70] -- A system to define basic menus and partition data. For more detailed information, look at the Chapters Explanation.
+define('EBML_ID_SEEKHEAD',                  0x014D9B74); // [11][4D][9B][74] -- Contains the position of other level 1 elements.
+define('EBML_ID_TAGS',                      0x0254C367); // [12][54][C3][67] -- Element containing elements specific to Tracks/Chapters. A list of valid tags can be found <http://www.matroska.org/technical/specs/tagging/index.html>.
+define('EBML_ID_INFO',                      0x0549A966); // [15][49][A9][66] -- Contains miscellaneous general information and statistics on the file.
+define('EBML_ID_TRACKS',                    0x0654AE6B); // [16][54][AE][6B] -- A top-level block of information with many tracks described.
+define('EBML_ID_SEGMENT',                   0x08538067); // [18][53][80][67] -- This element contains all other top-level (level 1) elements. Typically a Matroska file is composed of 1 segment.
+define('EBML_ID_ATTACHMENTS',               0x0941A469); // [19][41][A4][69] -- Contain attached files.
+define('EBML_ID_EBML',                      0x0A45DFA3); // [1A][45][DF][A3] -- Set the EBML characteristics of the data to follow. Each EBML document has to start with this.
+define('EBML_ID_CUES',                      0x0C53BB6B); // [1C][53][BB][6B] -- A top-level element to speed seeking access. All entries are local to the segment.
+define('EBML_ID_CLUSTER',                   0x0F43B675); // [1F][43][B6][75] -- The lower level element containing the (monolithic) Block structure.
+define('EBML_ID_LANGUAGE',                    0x02B59C); //     [22][B5][9C] -- Specifies the language of the track in the Matroska languages form.
+define('EBML_ID_TRACKTIMECODESCALE',          0x03314F); //     [23][31][4F] -- The scale to apply on this track to work at normal speed in relation with other tracks (mostly used to adjust video speed when the audio length differs).
+define('EBML_ID_DEFAULTDURATION',             0x03E383); //     [23][E3][83] -- Number of nanoseconds (i.e. not scaled) per frame.
+define('EBML_ID_CODECNAME',                   0x058688); //     [25][86][88] -- A human-readable string specifying the codec.
+define('EBML_ID_CODECDOWNLOADURL',            0x06B240); //     [26][B2][40] -- A URL to download about the codec used.
+define('EBML_ID_TIMECODESCALE',               0x0AD7B1); //     [2A][D7][B1] -- Timecode scale in nanoseconds (1.000.000 means all timecodes in the segment are expressed in milliseconds).
+define('EBML_ID_COLOURSPACE',                 0x0EB524); //     [2E][B5][24] -- Same value as in AVI (32 bits).
+define('EBML_ID_GAMMAVALUE',                  0x0FB523); //     [2F][B5][23] -- Gamma Value.
+define('EBML_ID_CODECSETTINGS',               0x1A9697); //     [3A][96][97] -- A string describing the encoding setting used.
+define('EBML_ID_CODECINFOURL',                0x1B4040); //     [3B][40][40] -- A URL to find information about the codec used.
+define('EBML_ID_PREVFILENAME',                0x1C83AB); //     [3C][83][AB] -- An escaped filename corresponding to the previous segment.
+define('EBML_ID_PREVUID',                     0x1CB923); //     [3C][B9][23] -- A unique ID to identify the previous chained segment (128 bits).
+define('EBML_ID_NEXTFILENAME',                0x1E83BB); //     [3E][83][BB] -- An escaped filename corresponding to the next segment.
+define('EBML_ID_NEXTUID',                     0x1EB923); //     [3E][B9][23] -- A unique ID to identify the next chained segment (128 bits).
+define('EBML_ID_CONTENTCOMPALGO',               0x0254); //         [42][54] -- The compression algorithm used. Algorithms that have been specified so far are:
+define('EBML_ID_CONTENTCOMPSETTINGS',           0x0255); //         [42][55] -- Settings that might be needed by the decompressor. For Header Stripping (ContentCompAlgo=3), the bytes that were removed from the beggining of each frames of the track.
+define('EBML_ID_DOCTYPE',                       0x0282); //         [42][82] -- A string that describes the type of document that follows this EBML header ('matroska' in our case).
+define('EBML_ID_DOCTYPEREADVERSION',            0x0285); //         [42][85] -- The minimum DocType version an interpreter has to support to read this file.
+define('EBML_ID_EBMLVERSION',                   0x0286); //         [42][86] -- The version of EBML parser used to create the file.
+define('EBML_ID_DOCTYPEVERSION',                0x0287); //         [42][87] -- The version of DocType interpreter used to create the file.
+define('EBML_ID_EBMLMAXIDLENGTH',               0x02F2); //         [42][F2] -- The maximum length of the IDs you'll find in this file (4 or less in Matroska).
+define('EBML_ID_EBMLMAXSIZELENGTH',             0x02F3); //         [42][F3] -- The maximum length of the sizes you'll find in this file (8 or less in Matroska). This does not override the element size indicated at the beginning of an element. Elements that have an indicated size which is larger than what is allowed by EBMLMaxSizeLength shall be considered invalid.
+define('EBML_ID_EBMLREADVERSION',               0x02F7); //         [42][F7] -- The minimum EBML version a parser has to support to read this file.
+define('EBML_ID_CHAPLANGUAGE',                  0x037C); //         [43][7C] -- The languages corresponding to the string, in the bibliographic ISO-639-2 form.
+define('EBML_ID_CHAPCOUNTRY',                   0x037E); //         [43][7E] -- The countries corresponding to the string, same 2 octets as in Internet domains.
+define('EBML_ID_SEGMENTFAMILY',                 0x0444); //         [44][44] -- A randomly generated unique ID that all segments related to each other must use (128 bits).
+define('EBML_ID_DATEUTC',                       0x0461); //         [44][61] -- Date of the origin of timecode (value 0), i.e. production date.
+define('EBML_ID_TAGLANGUAGE',                   0x047A); //         [44][7A] -- Specifies the language of the tag specified, in the Matroska languages form.
+define('EBML_ID_TAGDEFAULT',                    0x0484); //         [44][84] -- Indication to know if this is the default/original language to use for the given tag.
+define('EBML_ID_TAGBINARY',                     0x0485); //         [44][85] -- The values of the Tag if it is binary. Note that this cannot be used in the same SimpleTag as TagString.
+define('EBML_ID_TAGSTRING',                     0x0487); //         [44][87] -- The value of the Tag.
+define('EBML_ID_DURATION',                      0x0489); //         [44][89] -- Duration of the segment (based on TimecodeScale).
+define('EBML_ID_CHAPPROCESSPRIVATE',            0x050D); //         [45][0D] -- Some optional data attached to the ChapProcessCodecID information. For ChapProcessCodecID = 1, it is the "DVD level" equivalent.
+define('EBML_ID_CHAPTERFLAGENABLED',            0x0598); //         [45][98] -- Specify wether the chapter is enabled. It can be enabled/disabled by a Control Track. When disabled, the movie should skip all the content between the TimeStart and TimeEnd of this chapter.
+define('EBML_ID_TAGNAME',                       0x05A3); //         [45][A3] -- The name of the Tag that is going to be stored.
+define('EBML_ID_EDITIONENTRY',                  0x05B9); //         [45][B9] -- Contains all information about a segment edition.
+define('EBML_ID_EDITIONUID',                    0x05BC); //         [45][BC] -- A unique ID to identify the edition. It's useful for tagging an edition.
+define('EBML_ID_EDITIONFLAGHIDDEN',             0x05BD); //         [45][BD] -- If an edition is hidden (1), it should not be available to the user interface (but still to Control Tracks).
+define('EBML_ID_EDITIONFLAGDEFAULT',            0x05DB); //         [45][DB] -- If a flag is set (1) the edition should be used as the default one.
+define('EBML_ID_EDITIONFLAGORDERED',            0x05DD); //         [45][DD] -- Specify if the chapters can be defined multiple times and the order to play them is enforced.
+define('EBML_ID_FILEDATA',                      0x065C); //         [46][5C] -- The data of the file.
+define('EBML_ID_FILEMIMETYPE',                  0x0660); //         [46][60] -- MIME type of the file.
+define('EBML_ID_FILENAME',                      0x066E); //         [46][6E] -- Filename of the attached file.
+define('EBML_ID_FILEREFERRAL',                  0x0675); //         [46][75] -- A binary value that a track/codec can refer to when the attachment is needed.
+define('EBML_ID_FILEDESCRIPTION',               0x067E); //         [46][7E] -- A human-friendly name for the attached file.
+define('EBML_ID_FILEUID',                       0x06AE); //         [46][AE] -- Unique ID representing the file, as random as possible.
+define('EBML_ID_CONTENTENCALGO',                0x07E1); //         [47][E1] -- The encryption algorithm used. The value '0' means that the contents have not been encrypted but only signed. Predefined values:
+define('EBML_ID_CONTENTENCKEYID',               0x07E2); //         [47][E2] -- For public key algorithms this is the ID of the public key the the data was encrypted with.
+define('EBML_ID_CONTENTSIGNATURE',              0x07E3); //         [47][E3] -- A cryptographic signature of the contents.
+define('EBML_ID_CONTENTSIGKEYID',               0x07E4); //         [47][E4] -- This is the ID of the private key the data was signed with.
+define('EBML_ID_CONTENTSIGALGO',                0x07E5); //         [47][E5] -- The algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values:
+define('EBML_ID_CONTENTSIGHASHALGO',            0x07E6); //         [47][E6] -- The hash algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values:
+define('EBML_ID_MUXINGAPP',                     0x0D80); //         [4D][80] -- Muxing application or library ("libmatroska-0.4.3").
+define('EBML_ID_SEEK',                          0x0DBB); //         [4D][BB] -- Contains a single seek entry to an EBML element.
+define('EBML_ID_CONTENTENCODINGORDER',          0x1031); //         [50][31] -- Tells when this modification was used during encoding/muxing starting with 0 and counting upwards. The decoder/demuxer has to start with the highest order number it finds and work its way down. This value has to be unique over all ContentEncodingOrder elements in the segment.
+define('EBML_ID_CONTENTENCODINGSCOPE',          0x1032); //         [50][32] -- A bit field that describes which elements have been modified in this way. Values (big endian) can be OR'ed. Possible values:
+define('EBML_ID_CONTENTENCODINGTYPE',           0x1033); //         [50][33] -- A value describing what kind of transformation has been done. Possible values:
+define('EBML_ID_CONTENTCOMPRESSION',            0x1034); //         [50][34] -- Settings describing the compression used. Must be present if the value of ContentEncodingType is 0 and absent otherwise. Each block must be decompressable even if no previous block is available in order not to prevent seeking.
+define('EBML_ID_CONTENTENCRYPTION',             0x1035); //         [50][35] -- Settings describing the encryption used. Must be present if the value of ContentEncodingType is 1 and absent otherwise.
+define('EBML_ID_CUEREFNUMBER',                  0x135F); //         [53][5F] -- Number of the referenced Block of Track X in the specified Cluster.
+define('EBML_ID_NAME',                          0x136E); //         [53][6E] -- A human-readable track name.
+define('EBML_ID_CUEBLOCKNUMBER',                0x1378); //         [53][78] -- Number of the Block in the specified Cluster.
+define('EBML_ID_TRACKOFFSET',                   0x137F); //         [53][7F] -- A value to add to the Block's Timecode. This can be used to adjust the playback offset of a track.
+define('EBML_ID_SEEKID',                        0x13AB); //         [53][AB] -- The binary ID corresponding to the element name.
+define('EBML_ID_SEEKPOSITION',                  0x13AC); //         [53][AC] -- The position of the element in the segment in octets (0 = first level 1 element).
+define('EBML_ID_STEREOMODE',                    0x13B8); //         [53][B8] -- Stereo-3D video mode.
+define('EBML_ID_OLDSTEREOMODE',                 0x13B9); //         [53][B9] -- Bogus StereoMode value used in old versions of libmatroska. DO NOT USE. (0: mono, 1: right eye, 2: left eye, 3: both eyes).
+define('EBML_ID_PIXELCROPBOTTOM',               0x14AA); //         [54][AA] -- The number of video pixels to remove at the bottom of the image (for HDTV content).
+define('EBML_ID_DISPLAYWIDTH',                  0x14B0); //         [54][B0] -- Width of the video frames to display.
+define('EBML_ID_DISPLAYUNIT',                   0x14B2); //         [54][B2] -- Type of the unit for DisplayWidth/Height (0: pixels, 1: centimeters, 2: inches).
+define('EBML_ID_ASPECTRATIOTYPE',               0x14B3); //         [54][B3] -- Specify the possible modifications to the aspect ratio (0: free resizing, 1: keep aspect ratio, 2: fixed).
+define('EBML_ID_DISPLAYHEIGHT',                 0x14BA); //         [54][BA] -- Height of the video frames to display.
+define('EBML_ID_PIXELCROPTOP',                  0x14BB); //         [54][BB] -- The number of video pixels to remove at the top of the image.
+define('EBML_ID_PIXELCROPLEFT',                 0x14CC); //         [54][CC] -- The number of video pixels to remove on the left of the image.
+define('EBML_ID_PIXELCROPRIGHT',                0x14DD); //         [54][DD] -- The number of video pixels to remove on the right of the image.
+define('EBML_ID_FLAGFORCED',                    0x15AA); //         [55][AA] -- Set if that track MUST be used during playback. There can be many forced track for a kind (audio, video or subs), the player should select the one which language matches the user preference or the default + forced track. Overlay MAY happen between a forced and non-forced track of the same kind.
+define('EBML_ID_MAXBLOCKADDITIONID',            0x15EE); //         [55][EE] -- The maximum value of BlockAddID. A value 0 means there is no BlockAdditions for this track.
+define('EBML_ID_WRITINGAPP',                    0x1741); //         [57][41] -- Writing application ("mkvmerge-0.3.3").
+define('EBML_ID_CLUSTERSILENTTRACKS',           0x1854); //         [58][54] -- The list of tracks that are not used in that part of the stream. It is useful when using overlay tracks on seeking. Then you should decide what track to use.
+define('EBML_ID_CLUSTERSILENTTRACKNUMBER',      0x18D7); //         [58][D7] -- One of the track number that are not used from now on in the stream. It could change later if not specified as silent in a further Cluster.
+define('EBML_ID_ATTACHEDFILE',                  0x21A7); //         [61][A7] -- An attached file.
+define('EBML_ID_CONTENTENCODING',               0x2240); //         [62][40] -- Settings for one content encoding like compression or encryption.
+define('EBML_ID_BITDEPTH',                      0x2264); //         [62][64] -- Bits per sample, mostly used for PCM.
+define('EBML_ID_CODECPRIVATE',                  0x23A2); //         [63][A2] -- Private data only known to the codec.
+define('EBML_ID_TARGETS',                       0x23C0); //         [63][C0] -- Contain all UIDs where the specified meta data apply. It is void to describe everything in the segment.
+define('EBML_ID_CHAPTERPHYSICALEQUIV',          0x23C3); //         [63][C3] -- Specify the physical equivalent of this ChapterAtom like "DVD" (60) or "SIDE" (50), see complete list of values.
+define('EBML_ID_TAGCHAPTERUID',                 0x23C4); //         [63][C4] -- A unique ID to identify the Chapter(s) the tags belong to. If the value is 0 at this level, the tags apply to all chapters in the Segment.
+define('EBML_ID_TAGTRACKUID',                   0x23C5); //         [63][C5] -- A unique ID to identify the Track(s) the tags belong to. If the value is 0 at this level, the tags apply to all tracks in the Segment.
+define('EBML_ID_TAGATTACHMENTUID',              0x23C6); //         [63][C6] -- A unique ID to identify the Attachment(s) the tags belong to. If the value is 0 at this level, the tags apply to all the attachments in the Segment.
+define('EBML_ID_TAGEDITIONUID',                 0x23C9); //         [63][C9] -- A unique ID to identify the EditionEntry(s) the tags belong to. If the value is 0 at this level, the tags apply to all editions in the Segment.
+define('EBML_ID_TARGETTYPE',                    0x23CA); //         [63][CA] -- An informational string that can be used to display the logical level of the target like "ALBUM", "TRACK", "MOVIE", "CHAPTER", etc (see TargetType).
+define('EBML_ID_TRACKTRANSLATE',                0x2624); //         [66][24] -- The track identification for the given Chapter Codec.
+define('EBML_ID_TRACKTRANSLATETRACKID',         0x26A5); //         [66][A5] -- The binary value used to represent this track in the chapter codec data. The format depends on the ChapProcessCodecID used.
+define('EBML_ID_TRACKTRANSLATECODEC',           0x26BF); //         [66][BF] -- The chapter codec using this ID (0: Matroska Script, 1: DVD-menu).
+define('EBML_ID_TRACKTRANSLATEEDITIONUID',      0x26FC); //         [66][FC] -- Specify an edition UID on which this translation applies. When not specified, it means for all editions found in the segment.
+define('EBML_ID_SIMPLETAG',                     0x27C8); //         [67][C8] -- Contains general information about the target.
+define('EBML_ID_TARGETTYPEVALUE',               0x28CA); //         [68][CA] -- A number to indicate the logical level of the target (see TargetType).
+define('EBML_ID_CHAPPROCESSCOMMAND',            0x2911); //         [69][11] -- Contains all the commands associated to the Atom.
+define('EBML_ID_CHAPPROCESSTIME',               0x2922); //         [69][22] -- Defines when the process command should be handled (0: during the whole chapter, 1: before starting playback, 2: after playback of the chapter).
+define('EBML_ID_CHAPTERTRANSLATE',              0x2924); //         [69][24] -- A tuple of corresponding ID used by chapter codecs to represent this segment.
+define('EBML_ID_CHAPPROCESSDATA',               0x2933); //         [69][33] -- Contains the command information. The data should be interpreted depending on the ChapProcessCodecID value. For ChapProcessCodecID = 1, the data correspond to the binary DVD cell pre/post commands.
+define('EBML_ID_CHAPPROCESS',                   0x2944); //         [69][44] -- Contains all the commands associated to the Atom.
+define('EBML_ID_CHAPPROCESSCODECID',            0x2955); //         [69][55] -- Contains the type of the codec used for the processing. A value of 0 means native Matroska processing (to be defined), a value of 1 means the DVD command set is used. More codec IDs can be added later.
+define('EBML_ID_CHAPTERTRANSLATEID',            0x29A5); //         [69][A5] -- The binary value used to represent this segment in the chapter codec data. The format depends on the ChapProcessCodecID used.
+define('EBML_ID_CHAPTERTRANSLATECODEC',         0x29BF); //         [69][BF] -- The chapter codec using this ID (0: Matroska Script, 1: DVD-menu).
+define('EBML_ID_CHAPTERTRANSLATEEDITIONUID',    0x29FC); //         [69][FC] -- Specify an edition UID on which this correspondance applies. When not specified, it means for all editions found in the segment.
+define('EBML_ID_CONTENTENCODINGS',              0x2D80); //         [6D][80] -- Settings for several content encoding mechanisms like compression or encryption.
+define('EBML_ID_MINCACHE',                      0x2DE7); //         [6D][E7] -- The minimum number of frames a player should be able to cache during playback. If set to 0, the reference pseudo-cache system is not used.
+define('EBML_ID_MAXCACHE',                      0x2DF8); //         [6D][F8] -- The maximum cache size required to store referenced frames in and the current frame. 0 means no cache is needed.
+define('EBML_ID_CHAPTERSEGMENTUID',             0x2E67); //         [6E][67] -- A segment to play in place of this chapter. Edition ChapterSegmentEditionUID should be used for this segment, otherwise no edition is used.
+define('EBML_ID_CHAPTERSEGMENTEDITIONUID',      0x2EBC); //         [6E][BC] -- The edition to play from the segment linked in ChapterSegmentUID.
+define('EBML_ID_TRACKOVERLAY',                  0x2FAB); //         [6F][AB] -- Specify that this track is an overlay track for the Track specified (in the u-integer). That means when this track has a gap (see SilentTracks) the overlay track should be used instead. The order of multiple TrackOverlay matters, the first one is the one that should be used. If not found it should be the second, etc.
+define('EBML_ID_TAG',                           0x3373); //         [73][73] -- Element containing elements specific to Tracks/Chapters.
+define('EBML_ID_SEGMENTFILENAME',               0x3384); //         [73][84] -- A filename corresponding to this segment.
+define('EBML_ID_SEGMENTUID',                    0x33A4); //         [73][A4] -- A randomly generated unique ID to identify the current segment between many others (128 bits).
+define('EBML_ID_CHAPTERUID',                    0x33C4); //         [73][C4] -- A unique ID to identify the Chapter.
+define('EBML_ID_TRACKUID',                      0x33C5); //         [73][C5] -- A unique ID to identify the Track. This should be kept the same when making a direct stream copy of the Track to another file.
+define('EBML_ID_ATTACHMENTLINK',                0x3446); //         [74][46] -- The UID of an attachment that is used by this codec.
+define('EBML_ID_CLUSTERBLOCKADDITIONS',         0x35A1); //         [75][A1] -- Contain additional blocks to complete the main one. An EBML parser that has no knowledge of the Block structure could still see and use/skip these data.
+define('EBML_ID_CHANNELPOSITIONS',              0x347B); //         [7D][7B] -- Table of horizontal angles for each successive channel, see appendix.
+define('EBML_ID_OUTPUTSAMPLINGFREQUENCY',       0x38B5); //         [78][B5] -- Real output sampling frequency in Hz (used for SBR techniques).
+define('EBML_ID_TITLE',                         0x3BA9); //         [7B][A9] -- General name of the segment.
+define('EBML_ID_CHAPTERDISPLAY',                  0x00); //             [80] -- Contains all possible strings to use for the chapter display.
+define('EBML_ID_TRACKTYPE',                       0x03); //             [83] -- A set of track types coded on 8 bits (1: video, 2: audio, 3: complex, 0x10: logo, 0x11: subtitle, 0x12: buttons, 0x20: control).
+define('EBML_ID_CHAPSTRING',                      0x05); //             [85] -- Contains the string to use as the chapter atom.
+define('EBML_ID_CODECID',                         0x06); //             [86] -- An ID corresponding to the codec, see the codec page for more info.
+define('EBML_ID_FLAGDEFAULT',                     0x08); //             [88] -- Set if that track (audio, video or subs) SHOULD be used if no language found matches the user preference.
+define('EBML_ID_CHAPTERTRACKNUMBER',              0x09); //             [89] -- UID of the Track to apply this chapter too. In the absense of a control track, choosing this chapter will select the listed Tracks and deselect unlisted tracks. Absense of this element indicates that the Chapter should be applied to any currently used Tracks.
+define('EBML_ID_CLUSTERSLICES',                   0x0E); //             [8E] -- Contains slices description.
+define('EBML_ID_CHAPTERTRACK',                    0x0F); //             [8F] -- List of tracks on which the chapter applies. If this element is not present, all tracks apply
+define('EBML_ID_CHAPTERTIMESTART',                0x11); //             [91] -- Timecode of the start of Chapter (not scaled).
+define('EBML_ID_CHAPTERTIMEEND',                  0x12); //             [92] -- Timecode of the end of Chapter (timecode excluded, not scaled).
+define('EBML_ID_CUEREFTIME',                      0x16); //             [96] -- Timecode of the referenced Block.
+define('EBML_ID_CUEREFCLUSTER',                   0x17); //             [97] -- Position of the Cluster containing the referenced Block.
+define('EBML_ID_CHAPTERFLAGHIDDEN',               0x18); //             [98] -- If a chapter is hidden (1), it should not be available to the user interface (but still to Control Tracks).
+define('EBML_ID_FLAGINTERLACED',                  0x1A); //             [9A] -- Set if the video is interlaced.
+define('EBML_ID_CLUSTERBLOCKDURATION',            0x1B); //             [9B] -- The duration of the Block (based on TimecodeScale). This element is mandatory when DefaultDuration is set for the track. When not written and with no DefaultDuration, the value is assumed to be the difference between the timecode of this Block and the timecode of the next Block in "display" order (not coding order). This element can be useful at the end of a Track (as there is not other Block available), or when there is a break in a track like for subtitle tracks.
+define('EBML_ID_FLAGLACING',                      0x1C); //             [9C] -- Set if the track may contain blocks using lacing.
+define('EBML_ID_CHANNELS',                        0x1F); //             [9F] -- Numbers of channels in the track.
+define('EBML_ID_CLUSTERBLOCKGROUP',               0x20); //             [A0] -- Basic container of information containing a single Block or BlockVirtual, and information specific to that Block/VirtualBlock.
+define('EBML_ID_CLUSTERBLOCK',                    0x21); //             [A1] -- Block containing the actual data to be rendered and a timecode relative to the Cluster Timecode.
+define('EBML_ID_CLUSTERBLOCKVIRTUAL',             0x22); //             [A2] -- A Block with no data. It must be stored in the stream at the place the real Block should be in display order.
+define('EBML_ID_CLUSTERSIMPLEBLOCK',              0x23); //             [A3] -- Similar to Block but without all the extra information, mostly used to reduced overhead when no extra feature is needed.
+define('EBML_ID_CLUSTERCODECSTATE',               0x24); //             [A4] -- The new codec state to use. Data interpretation is private to the codec. This information should always be referenced by a seek entry.
+define('EBML_ID_CLUSTERBLOCKADDITIONAL',          0x25); //             [A5] -- Interpreted by the codec as it wishes (using the BlockAddID).
+define('EBML_ID_CLUSTERBLOCKMORE',                0x26); //             [A6] -- Contain the BlockAdditional and some parameters.
+define('EBML_ID_CLUSTERPOSITION',                 0x27); //             [A7] -- Position of the Cluster in the segment (0 in live broadcast streams). It might help to resynchronise offset on damaged streams.
+define('EBML_ID_CODECDECODEALL',                  0x2A); //             [AA] -- The codec can decode potentially damaged data.
+define('EBML_ID_CLUSTERPREVSIZE',                 0x2B); //             [AB] -- Size of the previous Cluster, in octets. Can be useful for backward playing.
+define('EBML_ID_TRACKENTRY',                      0x2E); //             [AE] -- Describes a track with all elements.
+define('EBML_ID_CLUSTERENCRYPTEDBLOCK',           0x2F); //             [AF] -- Similar to SimpleBlock but the data inside the Block are Transformed (encrypt and/or signed).
+define('EBML_ID_PIXELWIDTH',                      0x30); //             [B0] -- Width of the encoded video frames in pixels.
+define('EBML_ID_CUETIME',                         0x33); //             [B3] -- Absolute timecode according to the segment time base.
+define('EBML_ID_SAMPLINGFREQUENCY',               0x35); //             [B5] -- Sampling frequency in Hz.
+define('EBML_ID_CHAPTERATOM',                     0x36); //             [B6] -- Contains the atom information to use as the chapter atom (apply to all tracks).
+define('EBML_ID_CUETRACKPOSITIONS',               0x37); //             [B7] -- Contain positions for different tracks corresponding to the timecode.
+define('EBML_ID_FLAGENABLED',                     0x39); //             [B9] -- Set if the track is used.
+define('EBML_ID_PIXELHEIGHT',                     0x3A); //             [BA] -- Height of the encoded video frames in pixels.
+define('EBML_ID_CUEPOINT',                        0x3B); //             [BB] -- Contains all information relative to a seek point in the segment.
+define('EBML_ID_CRC32',                           0x3F); //             [BF] -- The CRC is computed on all the data of the Master element it's in, regardless of its position. It's recommended to put the CRC value at the beggining of the Master element for easier reading. All level 1 elements should include a CRC-32.
+define('EBML_ID_CLUSTERBLOCKADDITIONID',          0x4B); //             [CB] -- The ID of the BlockAdditional element (0 is the main Block).
+define('EBML_ID_CLUSTERLACENUMBER',               0x4C); //             [CC] -- The reverse number of the frame in the lace (0 is the last frame, 1 is the next to last, etc). While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback.
+define('EBML_ID_CLUSTERFRAMENUMBER',              0x4D); //             [CD] -- The number of the frame to generate from this lace with this delay (allow you to generate many frames from the same Block/Frame).
+define('EBML_ID_CLUSTERDELAY',                    0x4E); //             [CE] -- The (scaled) delay to apply to the element.
+define('EBML_ID_CLUSTERDURATION',                 0x4F); //             [CF] -- The (scaled) duration to apply to the element.
+define('EBML_ID_TRACKNUMBER',                     0x57); //             [D7] -- The track number as used in the Block Header (using more than 127 tracks is not encouraged, though the design allows an unlimited number).
+define('EBML_ID_CUEREFERENCE',                    0x5B); //             [DB] -- The Clusters containing the required referenced Blocks.
+define('EBML_ID_VIDEO',                           0x60); //             [E0] -- Video settings.
+define('EBML_ID_AUDIO',                           0x61); //             [E1] -- Audio settings.
+define('EBML_ID_CLUSTERTIMESLICE',                0x68); //             [E8] -- Contains extra time information about the data contained in the Block. While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback.
+define('EBML_ID_CUECODECSTATE',                   0x6A); //             [EA] -- The position of the Codec State corresponding to this Cue element. 0 means that the data is taken from the initial Track Entry.
+define('EBML_ID_CUEREFCODECSTATE',                0x6B); //             [EB] -- The position of the Codec State corresponding to this referenced element. 0 means that the data is taken from the initial Track Entry.
+define('EBML_ID_VOID',                            0x6C); //             [EC] -- Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is discarded. Also used to reserve space in a sub-element for later use.
+define('EBML_ID_CLUSTERTIMECODE',                 0x67); //             [E7] -- Absolute timecode of the cluster (based on TimecodeScale).
+define('EBML_ID_CLUSTERBLOCKADDID',               0x6E); //             [EE] -- An ID to identify the BlockAdditional level.
+define('EBML_ID_CUECLUSTERPOSITION',              0x71); //             [F1] -- The position of the Cluster containing the required Block.
+define('EBML_ID_CUETRACK',                        0x77); //             [F7] -- The track for which a position is given.
+define('EBML_ID_CLUSTERREFERENCEPRIORITY',        0x7A); //             [FA] -- This frame is referenced and has the specified cache priority. In cache only a frame of the same or higher priority can replace this frame. A value of 0 means the frame is not referenced.
+define('EBML_ID_CLUSTERREFERENCEBLOCK',           0x7B); //             [FB] -- Timecode of another frame used as a reference (ie: B or P frame). The timecode is relative to the block it's attached to.
+define('EBML_ID_CLUSTERREFERENCEVIRTUAL',         0x7D); //             [FD] -- Relative position of the data that should be in position of the virtual block.
+
+
+/**
+* @tutorial http://www.matroska.org/technical/specs/index.html
+*
+* @todo Rewrite EBML parser to reduce it's size and honor default element values
+* @todo After rewrite implement stream size calculation, that will provide additional useful info and enable AAC/FLAC audio bitrate detection
+*/
+class getid3_matroska extends getid3_handler
+{
+	// public options
+	public static $hide_clusters    = true;  // if true, do not return information about CLUSTER chunks, since there's a lot of them and they're not usually useful [default: TRUE]
+	public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE]
+
+	// private parser settings/placeholders
+	private $EBMLbuffer        = '';
+	private $EBMLbuffer_offset = 0;
+	private $EBMLbuffer_length = 0;
+	private $current_offset    = 0;
+	private $unuseful_elements = array(EBML_ID_CRC32, EBML_ID_VOID);
+
+	public function Analyze()
+	{
+		$info = &$this->getid3->info;
+
+		// parse container
+		try {
+			$this->parseEBML($info);
+		} catch (Exception $e) {
+			$info['error'][] = 'EBML parser: '.$e->getMessage();
+		}
+
+		// calculate playtime
+		if (isset($info['matroska']['info']) && is_array($info['matroska']['info'])) {
+			foreach ($info['matroska']['info'] as $key => $infoarray) {
+				if (isset($infoarray['Duration'])) {
+					// TimecodeScale is how many nanoseconds each Duration unit is
+					$info['playtime_seconds'] = $infoarray['Duration'] * ((isset($infoarray['TimecodeScale']) ? $infoarray['TimecodeScale'] : 1000000) / 1000000000);
+					break;
+				}
+			}
+		}
+
+		// extract tags
+		if (isset($info['matroska']['tags']) && is_array($info['matroska']['tags'])) {
+			foreach ($info['matroska']['tags'] as $key => $infoarray) {
+				$this->ExtractCommentsSimpleTag($infoarray);
+			}
+		}
+
+		// process tracks
+		if (isset($info['matroska']['tracks']['tracks']) && is_array($info['matroska']['tracks']['tracks'])) {
+			foreach ($info['matroska']['tracks']['tracks'] as $key => $trackarray) {
+
+				$track_info = array();
+				$track_info['dataformat'] = self::CodecIDtoCommonName($trackarray['CodecID']);
+				$track_info['default'] = (isset($trackarray['FlagDefault']) ? $trackarray['FlagDefault'] : true);
+				if (isset($trackarray['Name'])) { $track_info['name'] = $trackarray['Name']; }
+
+				switch ($trackarray['TrackType']) {
+
+					case 1: // Video
+						$track_info['resolution_x'] = $trackarray['PixelWidth'];
+						$track_info['resolution_y'] = $trackarray['PixelHeight'];
+						$track_info['display_unit'] = self::displayUnit(isset($trackarray['DisplayUnit']) ? $trackarray['DisplayUnit'] : 0);
+						$track_info['display_x']    = (isset($trackarray['DisplayWidth']) ? $trackarray['DisplayWidth'] : $trackarray['PixelWidth']);
+						$track_info['display_y']    = (isset($trackarray['DisplayHeight']) ? $trackarray['DisplayHeight'] : $trackarray['PixelHeight']);
+
+						if (isset($trackarray['PixelCropBottom'])) { $track_info['crop_bottom'] = $trackarray['PixelCropBottom']; }
+						if (isset($trackarray['PixelCropTop']))    { $track_info['crop_top']    = $trackarray['PixelCropTop']; }
+						if (isset($trackarray['PixelCropLeft']))   { $track_info['crop_left']   = $trackarray['PixelCropLeft']; }
+						if (isset($trackarray['PixelCropRight']))  { $track_info['crop_right']  = $trackarray['PixelCropRight']; }
+						if (isset($trackarray['DefaultDuration'])) { $track_info['frame_rate']  = round(1000000000 / $trackarray['DefaultDuration'], 3); }
+						if (isset($trackarray['CodecName']))       { $track_info['codec']       = $trackarray['CodecName']; }
+
+						switch ($trackarray['CodecID']) {
+							case 'V_MS/VFW/FOURCC':
+								if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, false)) {
+									$this->warning('Unable to parse codec private data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio-video.riff.php"');
+									break;
+								}
+								$parsed = getid3_riff::ParseBITMAPINFOHEADER($trackarray['CodecPrivate']);
+								$track_info['codec'] = getid3_riff::fourccLookup($parsed['fourcc']);
+								$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $parsed;
+								break;
+
+							/*case 'V_MPEG4/ISO/AVC':
+								$h264['profile']    = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 1, 1));
+								$h264['level']      = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 3, 1));
+								$rn                 = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 4, 1));
+								$h264['NALUlength'] = ($rn & 3) + 1;
+								$rn                 = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 5, 1));
+								$nsps               = ($rn & 31);
+								$offset             = 6;
+								for ($i = 0; $i < $nsps; $i ++) {
+									$length        = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 2));
+									$h264['SPS'][] = substr($trackarray['CodecPrivate'], $offset + 2, $length);
+									$offset       += 2 + $length;
+								}
+								$npps               = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 1));
+								$offset            += 1;
+								for ($i = 0; $i < $npps; $i ++) {
+									$length        = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 2));
+									$h264['PPS'][] = substr($trackarray['CodecPrivate'], $offset + 2, $length);
+									$offset       += 2 + $length;
+								}
+								$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $h264;
+								break;*/
+						}
+
+						$info['video']['streams'][] = $track_info;
+						break;
+
+					case 2: // Audio
+						$track_info['sample_rate'] = (isset($trackarray['SamplingFrequency']) ? $trackarray['SamplingFrequency'] : 8000.0);
+						$track_info['channels']    = (isset($trackarray['Channels']) ? $trackarray['Channels'] : 1);
+						$track_info['language']    = (isset($trackarray['Language']) ? $trackarray['Language'] : 'eng');
+						if (isset($trackarray['BitDepth']))  { $track_info['bits_per_sample'] = $trackarray['BitDepth']; }
+						if (isset($trackarray['CodecName'])) { $track_info['codec']           = $trackarray['CodecName']; }
+
+						switch ($trackarray['CodecID']) {
+							case 'A_PCM/INT/LIT':
+							case 'A_PCM/INT/BIG':
+								$track_info['bitrate'] = $trackarray['SamplingFrequency'] * $trackarray['Channels'] * $trackarray['BitDepth'];
+								break;
+
+							case 'A_AC3':
+							case 'A_DTS':
+							case 'A_MPEG/L3':
+							case 'A_MPEG/L2':
+							case 'A_FLAC':
+								if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']).'.php', __FILE__, false)) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio.'.$track_info['dataformat'].'.php"');
+									break;
+								}
+
+								if (!isset($info['matroska']['track_data_offsets'][$trackarray['TrackNumber']])) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because $info[matroska][track_data_offsets]['.$trackarray['TrackNumber'].'] not set');
+									break;
+								}
+
+								// create temp instance
+								$getid3_temp = new getID3();
+								if ($track_info['dataformat'] != 'flac') {
+									$getid3_temp->openfile($this->getid3->filename);
+								}
+								$getid3_temp->info['avdataoffset'] = $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['offset'];
+								if ($track_info['dataformat'][0] == 'm' || $track_info['dataformat'] == 'flac') {
+									$getid3_temp->info['avdataend'] = $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['offset'] + $info['matroska']['track_data_offsets'][$trackarray['TrackNumber']]['length'];
+								}
+
+								// analyze
+								$class = 'getid3_'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']);
+								$header_data_key = $track_info['dataformat'][0] == 'm' ? 'mpeg' : $track_info['dataformat'];
+								$getid3_audio = new $class($getid3_temp, __CLASS__);
+								if ($track_info['dataformat'] == 'flac') {
+									$getid3_audio->AnalyzeString($trackarray['CodecPrivate']);
+								}
+								else {
+									$getid3_audio->Analyze();
+								}
+								if (!empty($getid3_temp->info[$header_data_key])) {
+									$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info[$header_data_key];
+									if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) {
+										foreach ($getid3_temp->info['audio'] as $key => $value) {
+											$track_info[$key] = $value;
+										}
+									}
+								}
+								else {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because '.$class.'::Analyze() failed at offset '.$getid3_temp->info['avdataoffset']);
+								}
+
+								// copy errors and warnings
+								if (!empty($getid3_temp->info['error'])) {
+									foreach ($getid3_temp->info['error'] as $newerror) {
+										$this->warning($class.'() says: ['.$newerror.']');
+									}
+								}
+								if (!empty($getid3_temp->info['warning'])) {
+									foreach ($getid3_temp->info['warning'] as $newerror) {
+										if ($track_info['dataformat'] == 'mp3' && preg_match('/^Probable truncated file: expecting \d+ bytes of audio data, only found \d+ \(short by \d+ bytes\)$/', $newerror)) {
+											// LAME/Xing header is probably set, but audio data is chunked into Matroska file and near-impossible to verify if audio stream is complete, so ignore useless warning
+											continue;
+										}
+										$this->warning($class.'() says: ['.$newerror.']');
+									}
+								}
+								unset($getid3_temp, $getid3_audio);
+								break;
+
+							case 'A_AAC':
+							case 'A_AAC/MPEG2/LC':
+							case 'A_AAC/MPEG2/LC/SBR':
+							case 'A_AAC/MPEG4/LC':
+							case 'A_AAC/MPEG4/LC/SBR':
+							    $this->warning($trackarray['CodecID'].' audio data contains no header, audio/video bitrates can\'t be calculated');
+								break;
+
+							case 'A_VORBIS':
+								if (!isset($trackarray['CodecPrivate'])) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because CodecPrivate data not set');
+									break;
+								}
+								$vorbis_offset = strpos($trackarray['CodecPrivate'], 'vorbis', 1);
+								if ($vorbis_offset === false) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because CodecPrivate data does not contain "vorbis" keyword');
+									break;
+								}
+								$vorbis_offset -= 1;
+
+								if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ogg.php', __FILE__, false)) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio.ogg.php"');
+									break;
+								}
+
+								// create temp instance
+								$getid3_temp = new getID3();
+
+								// analyze
+								$getid3_ogg = new getid3_ogg($getid3_temp);
+								$oggpageinfo['page_seqno'] = 0;
+								$getid3_ogg->ParseVorbisPageHeader($trackarray['CodecPrivate'], $vorbis_offset, $oggpageinfo);
+								if (!empty($getid3_temp->info['ogg'])) {
+									$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info['ogg'];
+									if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) {
+										foreach ($getid3_temp->info['audio'] as $key => $value) {
+											$track_info[$key] = $value;
+										}
+									}
+								}
+
+								// copy errors and warnings
+								if (!empty($getid3_temp->info['error'])) {
+									foreach ($getid3_temp->info['error'] as $newerror) {
+										$this->warning('getid3_ogg() says: ['.$newerror.']');
+									}
+								}
+								if (!empty($getid3_temp->info['warning'])) {
+									foreach ($getid3_temp->info['warning'] as $newerror) {
+										$this->warning('getid3_ogg() says: ['.$newerror.']');
+									}
+								}
+
+								if (!empty($getid3_temp->info['ogg']['bitrate_nominal'])) {
+									$track_info['bitrate'] = $getid3_temp->info['ogg']['bitrate_nominal'];
+								}
+								unset($getid3_temp, $getid3_ogg, $oggpageinfo, $vorbis_offset);
+								break;
+
+							case 'A_MS/ACM':
+								if (!getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, false)) {
+									$this->warning('Unable to parse audio data ['.basename(__FILE__).':'.__LINE__.'] because cannot include "module.audio-video.riff.php"');
+									break;
+								}
+
+								$parsed = getid3_riff::parseWAVEFORMATex($trackarray['CodecPrivate']);
+								foreach ($parsed as $key => $value) {
+									if ($key != 'raw') {
+										$track_info[$key] = $value;
+									}
+								}
+								$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $parsed;
+								break;
+
+							default:
+								$this->warning('Unhandled audio type "'.(isset($trackarray['CodecID']) ? $trackarray['CodecID'] : '').'"');
+						}
+
+						$info['audio']['streams'][] = $track_info;
+						break;
+				}
+			}
+
+			if (!empty($info['video']['streams'])) {
+				$info['video'] = self::getDefaultStreamInfo($info['video']['streams']);
+			}
+			if (!empty($info['audio']['streams'])) {
+				$info['audio'] = self::getDefaultStreamInfo($info['audio']['streams']);
+			}
+		}
+
+		// process attachments
+		if (isset($info['matroska']['attachments']) && $this->getid3->option_save_attachments !== getID3::ATTACHMENTS_NONE) {
+			foreach ($info['matroska']['attachments'] as $i => $entry) {
+				if (strpos($entry['FileMimeType'], 'image/') === 0 && !empty($entry['FileData'])) {
+					$info['matroska']['comments']['picture'][] = array('data' => $entry['FileData'], 'image_mime' => $entry['FileMimeType'], 'filename' => $entry['FileName']);
+				}
+			}
+		}
+
+		// determine mime type
+		if (!empty($info['video']['streams'])) {
+			$info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'video/webm' : 'video/x-matroska');
+		} elseif (!empty($info['audio']['streams'])) {
+			$info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'audio/webm' : 'audio/x-matroska');
+		} elseif (isset($info['mime_type'])) {
+			unset($info['mime_type']);
+		}
+
+		return true;
+	}
+
+	private function parseEBML(&$info) {
+		// http://www.matroska.org/technical/specs/index.html#EBMLBasics
+		$this->current_offset = $info['avdataoffset'];
+
+		while ($this->getEBMLelement($top_element, $info['avdataend'])) {
+			switch ($top_element['id']) {
+
+				case EBML_ID_EBML:
+					$info['fileformat'] = 'matroska';
+					$info['matroska']['header']['offset'] = $top_element['offset'];
+					$info['matroska']['header']['length'] = $top_element['length'];
+
+					while ($this->getEBMLelement($element_data, $top_element['end'], true)) {
+						switch ($element_data['id']) {
+
+							case EBML_ID_EBMLVERSION:
+							case EBML_ID_EBMLREADVERSION:
+							case EBML_ID_EBMLMAXIDLENGTH:
+							case EBML_ID_EBMLMAXSIZELENGTH:
+							case EBML_ID_DOCTYPEVERSION:
+							case EBML_ID_DOCTYPEREADVERSION:
+								$element_data['data'] = getid3_lib::BigEndian2Int($element_data['data']);
+								break;
+
+							case EBML_ID_DOCTYPE:
+								$element_data['data'] = getid3_lib::trimNullByte($element_data['data']);
+								$info['matroska']['doctype'] = $element_data['data'];
+								break;
+
+							default:
+								$this->unhandledElement('header', __LINE__, $element_data);
+						}
+
+						unset($element_data['offset'], $element_data['end']);
+						$info['matroska']['header']['elements'][] = $element_data;
+					}
+					break;
+
+				case EBML_ID_SEGMENT:
+					$info['matroska']['segment'][0]['offset'] = $top_element['offset'];
+					$info['matroska']['segment'][0]['length'] = $top_element['length'];
+
+					while ($this->getEBMLelement($element_data, $top_element['end'])) {
+						if ($element_data['id'] != EBML_ID_CLUSTER || !self::$hide_clusters) { // collect clusters only if required
+							$info['matroska']['segments'][] = $element_data;
+						}
+						switch ($element_data['id']) {
+
+							case EBML_ID_SEEKHEAD: // Contains the position of other level 1 elements.
+
+								while ($this->getEBMLelement($seek_entry, $element_data['end'])) {
+									switch ($seek_entry['id']) {
+
+										case EBML_ID_SEEK: // Contains a single seek entry to an EBML element
+											while ($this->getEBMLelement($sub_seek_entry, $seek_entry['end'], true)) {
+
+												switch ($sub_seek_entry['id']) {
+
+													case EBML_ID_SEEKID:
+														$seek_entry['target_id']   = self::EBML2Int($sub_seek_entry['data']);
+														$seek_entry['target_name'] = self::EBMLidName($seek_entry['target_id']);
+														break;
+
+													case EBML_ID_SEEKPOSITION:
+														$seek_entry['target_offset'] = $element_data['offset'] + getid3_lib::BigEndian2Int($sub_seek_entry['data']);
+														break;
+
+													default:
+														$this->unhandledElement('seekhead.seek', __LINE__, $sub_seek_entry);												}
+											}
+
+											if ($seek_entry['target_id'] != EBML_ID_CLUSTER || !self::$hide_clusters) { // collect clusters only if required
+												$info['matroska']['seek'][] = $seek_entry;
+											}
+											break;
+
+										default:
+											$this->unhandledElement('seekhead', __LINE__, $seek_entry);
+									}
+								}
+								break;
+
+							case EBML_ID_TRACKS: // A top-level block of information with many tracks described.
+								$info['matroska']['tracks'] = $element_data;
+
+								while ($this->getEBMLelement($track_entry, $element_data['end'])) {
+									switch ($track_entry['id']) {
+
+										case EBML_ID_TRACKENTRY: //subelements: Describes a track with all elements.
+
+											while ($this->getEBMLelement($subelement, $track_entry['end'], array(EBML_ID_VIDEO, EBML_ID_AUDIO, EBML_ID_CONTENTENCODINGS, EBML_ID_CODECPRIVATE))) {
+												switch ($subelement['id']) {
+
+													case EBML_ID_TRACKNUMBER:
+													case EBML_ID_TRACKUID:
+													case EBML_ID_TRACKTYPE:
+													case EBML_ID_MINCACHE:
+													case EBML_ID_MAXCACHE:
+													case EBML_ID_MAXBLOCKADDITIONID:
+													case EBML_ID_DEFAULTDURATION: // nanoseconds per frame
+														$track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
+														break;
+
+													case EBML_ID_TRACKTIMECODESCALE:
+														$track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']);
+														break;
+
+													case EBML_ID_CODECID:
+													case EBML_ID_LANGUAGE:
+													case EBML_ID_NAME:
+													case EBML_ID_CODECNAME:
+														$track_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
+														break;
+
+													case EBML_ID_CODECPRIVATE:
+														$track_entry[$subelement['id_name']] = $this->readEBMLelementData($subelement['length'], true);
+														break;
+
+													case EBML_ID_FLAGENABLED:
+													case EBML_ID_FLAGDEFAULT:
+													case EBML_ID_FLAGFORCED:
+													case EBML_ID_FLAGLACING:
+													case EBML_ID_CODECDECODEALL:
+														$track_entry[$subelement['id_name']] = (bool) getid3_lib::BigEndian2Int($subelement['data']);
+														break;
+
+													case EBML_ID_VIDEO:
+
+														while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
+															switch ($sub_subelement['id']) {
+
+																case EBML_ID_PIXELWIDTH:
+																case EBML_ID_PIXELHEIGHT:
+																case EBML_ID_PIXELCROPBOTTOM:
+																case EBML_ID_PIXELCROPTOP:
+																case EBML_ID_PIXELCROPLEFT:
+																case EBML_ID_PIXELCROPRIGHT:
+																case EBML_ID_DISPLAYWIDTH:
+																case EBML_ID_DISPLAYHEIGHT:
+																case EBML_ID_DISPLAYUNIT:
+																case EBML_ID_ASPECTRATIOTYPE:
+																case EBML_ID_STEREOMODE:
+																case EBML_ID_OLDSTEREOMODE:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+																	break;
+
+																case EBML_ID_FLAGINTERLACED:
+																	$track_entry[$sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_subelement['data']);
+																	break;
+
+																case EBML_ID_GAMMAVALUE:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']);
+																	break;
+
+																case EBML_ID_COLOURSPACE:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
+																	break;
+
+																default:
+																	$this->unhandledElement('track.video', __LINE__, $sub_subelement);
+															}
+														}
+														break;
+
+													case EBML_ID_AUDIO:
+
+														while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
+															switch ($sub_subelement['id']) {
+
+																case EBML_ID_CHANNELS:
+																case EBML_ID_BITDEPTH:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+																	break;
+
+																case EBML_ID_SAMPLINGFREQUENCY:
+																case EBML_ID_OUTPUTSAMPLINGFREQUENCY:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']);
+																	break;
+
+																case EBML_ID_CHANNELPOSITIONS:
+																	$track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
+																	break;
+
+																default:
+																	$this->unhandledElement('track.audio', __LINE__, $sub_subelement);
+															}
+														}
+														break;
+
+													case EBML_ID_CONTENTENCODINGS:
+
+														while ($this->getEBMLelement($sub_subelement, $subelement['end'])) {
+															switch ($sub_subelement['id']) {
+
+																case EBML_ID_CONTENTENCODING:
+
+																	while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], array(EBML_ID_CONTENTCOMPRESSION, EBML_ID_CONTENTENCRYPTION))) {
+																		switch ($sub_sub_subelement['id']) {
+
+																			case EBML_ID_CONTENTENCODINGORDER:
+																			case EBML_ID_CONTENTENCODINGSCOPE:
+																			case EBML_ID_CONTENTENCODINGTYPE:
+																				$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																				break;
+
+																			case EBML_ID_CONTENTCOMPRESSION:
+
+																				while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
+																					switch ($sub_sub_sub_subelement['id']) {
+
+																						case EBML_ID_CONTENTCOMPALGO:
+																							$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']);
+																							break;
+
+																						case EBML_ID_CONTENTCOMPSETTINGS:
+																							$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data'];
+																							break;
+
+																						default:
+																							$this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement);
+																					}
+																				}
+																				break;
+
+																			case EBML_ID_CONTENTENCRYPTION:
+
+																				while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
+																					switch ($sub_sub_sub_subelement['id']) {
+
+																						case EBML_ID_CONTENTENCALGO:
+																						case EBML_ID_CONTENTSIGALGO:
+																						case EBML_ID_CONTENTSIGHASHALGO:
+																							$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']);
+																							break;
+
+																						case EBML_ID_CONTENTENCKEYID:
+																						case EBML_ID_CONTENTSIGNATURE:
+																						case EBML_ID_CONTENTSIGKEYID:
+																							$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data'];
+																							break;
+
+																						default:
+																							$this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement);
+																					}
+																				}
+																				break;
+
+																			default:
+																				$this->unhandledElement('track.contentencodings.contentencoding', __LINE__, $sub_sub_subelement);
+																		}
+																	}
+																	break;
+
+																default:
+																	$this->unhandledElement('track.contentencodings', __LINE__, $sub_subelement);
+															}
+														}
+														break;
+
+													default:
+														$this->unhandledElement('track', __LINE__, $subelement);
+												}
+											}
+
+											$info['matroska']['tracks']['tracks'][] = $track_entry;
+											break;
+
+										default:
+											$this->unhandledElement('tracks', __LINE__, $track_entry);
+									}
+								}
+								break;
+
+							case EBML_ID_INFO: // Contains miscellaneous general information and statistics on the file.
+								$info_entry = array();
+
+								while ($this->getEBMLelement($subelement, $element_data['end'], true)) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_TIMECODESCALE:
+											$info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
+											break;
+
+										case EBML_ID_DURATION:
+											$info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']);
+											break;
+
+										case EBML_ID_DATEUTC:
+											$info_entry[$subelement['id_name']]         = getid3_lib::BigEndian2Int($subelement['data']);
+											$info_entry[$subelement['id_name'].'_unix'] = self::EBMLdate2unix($info_entry[$subelement['id_name']]);
+											break;
+
+										case EBML_ID_SEGMENTUID:
+										case EBML_ID_PREVUID:
+										case EBML_ID_NEXTUID:
+											$info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
+											break;
+
+										case EBML_ID_SEGMENTFAMILY:
+											$info_entry[$subelement['id_name']][] = getid3_lib::trimNullByte($subelement['data']);
+											break;
+
+										case EBML_ID_SEGMENTFILENAME:
+										case EBML_ID_PREVFILENAME:
+										case EBML_ID_NEXTFILENAME:
+										case EBML_ID_TITLE:
+										case EBML_ID_MUXINGAPP:
+										case EBML_ID_WRITINGAPP:
+											$info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
+											$info['matroska']['comments'][strtolower($subelement['id_name'])][] = $info_entry[$subelement['id_name']];
+											break;
+
+										case EBML_ID_CHAPTERTRANSLATE:
+											$chaptertranslate_entry = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_CHAPTERTRANSLATEEDITIONUID:
+														$chaptertranslate_entry[$sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													case EBML_ID_CHAPTERTRANSLATECODEC:
+														$chaptertranslate_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													case EBML_ID_CHAPTERTRANSLATEID:
+														$chaptertranslate_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
+														break;
+
+													default:
+														$this->unhandledElement('info.chaptertranslate', __LINE__, $sub_subelement);
+												}
+											}
+											$info_entry[$subelement['id_name']] = $chaptertranslate_entry;
+											break;
+
+										default:
+											$this->unhandledElement('info', __LINE__, $subelement);
+									}
+								}
+								$info['matroska']['info'][] = $info_entry;
+								break;
+
+							case EBML_ID_CUES: // A top-level element to speed seeking access. All entries are local to the segment. Should be mandatory for non "live" streams.
+								if (self::$hide_clusters) { // do not parse cues if hide clusters is "ON" till they point to clusters anyway
+									$this->current_offset = $element_data['end'];
+									break;
+								}
+								$cues_entry = array();
+
+								while ($this->getEBMLelement($subelement, $element_data['end'])) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_CUEPOINT:
+											$cuepoint_entry = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CUETRACKPOSITIONS))) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_CUETRACKPOSITIONS:
+														$cuetrackpositions_entry = array();
+
+														while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) {
+															switch ($sub_sub_subelement['id']) {
+
+																case EBML_ID_CUETRACK:
+																case EBML_ID_CUECLUSTERPOSITION:
+																case EBML_ID_CUEBLOCKNUMBER:
+																case EBML_ID_CUECODECSTATE:
+																	$cuetrackpositions_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																	break;
+
+																default:
+																	$this->unhandledElement('cues.cuepoint.cuetrackpositions', __LINE__, $sub_sub_subelement);
+															}
+														}
+														$cuepoint_entry[$sub_subelement['id_name']][] = $cuetrackpositions_entry;
+														break;
+
+													case EBML_ID_CUETIME:
+														$cuepoint_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													default:
+														$this->unhandledElement('cues.cuepoint', __LINE__, $sub_subelement);
+												}
+											}
+											$cues_entry[] = $cuepoint_entry;
+											break;
+
+										default:
+											$this->unhandledElement('cues', __LINE__, $subelement);
+									}
+								}
+								$info['matroska']['cues'] = $cues_entry;
+								break;
+
+							case EBML_ID_TAGS: // Element containing elements specific to Tracks/Chapters.
+								$tags_entry = array();
+
+								while ($this->getEBMLelement($subelement, $element_data['end'], false)) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_TAG:
+											$tag_entry = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], false)) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_TARGETS:
+														$targets_entry = array();
+
+														while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) {
+															switch ($sub_sub_subelement['id']) {
+
+																case EBML_ID_TARGETTYPEVALUE:
+																	$targets_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																	$targets_entry[strtolower($sub_sub_subelement['id_name']).'_long'] = self::TargetTypeValue($targets_entry[$sub_sub_subelement['id_name']]);
+																	break;
+
+																case EBML_ID_TARGETTYPE:
+																	$targets_entry[$sub_sub_subelement['id_name']] = $sub_sub_subelement['data'];
+																	break;
+
+																case EBML_ID_TAGTRACKUID:
+																case EBML_ID_TAGEDITIONUID:
+																case EBML_ID_TAGCHAPTERUID:
+																case EBML_ID_TAGATTACHMENTUID:
+																	$targets_entry[$sub_sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																	break;
+
+																default:
+																	$this->unhandledElement('tags.tag.targets', __LINE__, $sub_sub_subelement);
+															}
+														}
+														$tag_entry[$sub_subelement['id_name']] = $targets_entry;
+														break;
+
+													case EBML_ID_SIMPLETAG:
+														$tag_entry[$sub_subelement['id_name']][] = $this->HandleEMBLSimpleTag($sub_subelement['end']);
+														break;
+
+													default:
+														$this->unhandledElement('tags.tag', __LINE__, $sub_subelement);
+												}
+											}
+											$tags_entry[] = $tag_entry;
+											break;
+
+										default:
+											$this->unhandledElement('tags', __LINE__, $subelement);
+									}
+								}
+								$info['matroska']['tags'] = $tags_entry;
+								break;
+
+							case EBML_ID_ATTACHMENTS: // Contain attached files.
+
+								while ($this->getEBMLelement($subelement, $element_data['end'])) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_ATTACHEDFILE:
+											$attachedfile_entry = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_FILEDATA))) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_FILEDESCRIPTION:
+													case EBML_ID_FILENAME:
+													case EBML_ID_FILEMIMETYPE:
+														$attachedfile_entry[$sub_subelement['id_name']] = $sub_subelement['data'];
+														break;
+
+													case EBML_ID_FILEDATA:
+														$attachedfile_entry['data_offset'] = $this->current_offset;
+														$attachedfile_entry['data_length'] = $sub_subelement['length'];
+
+														$attachedfile_entry[$sub_subelement['id_name']] = $this->saveAttachment(
+															$attachedfile_entry['FileName'],
+															$attachedfile_entry['data_offset'],
+															$attachedfile_entry['data_length']);
+
+														$this->current_offset = $sub_subelement['end'];
+														break;
+
+													case EBML_ID_FILEUID:
+														$attachedfile_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													default:
+														$this->unhandledElement('attachments.attachedfile', __LINE__, $sub_subelement);
+												}
+											}
+											$info['matroska']['attachments'][] = $attachedfile_entry;
+											break;
+
+										default:
+											$this->unhandledElement('attachments', __LINE__, $subelement);
+									}
+								}
+								break;
+
+							case EBML_ID_CHAPTERS:
+
+								while ($this->getEBMLelement($subelement, $element_data['end'])) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_EDITIONENTRY:
+											$editionentry_entry = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CHAPTERATOM))) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_EDITIONUID:
+														$editionentry_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													case EBML_ID_EDITIONFLAGHIDDEN:
+													case EBML_ID_EDITIONFLAGDEFAULT:
+													case EBML_ID_EDITIONFLAGORDERED:
+														$editionentry_entry[$sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													case EBML_ID_CHAPTERATOM:
+														$chapteratom_entry = array();
+
+														while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], array(EBML_ID_CHAPTERTRACK, EBML_ID_CHAPTERDISPLAY))) {
+															switch ($sub_sub_subelement['id']) {
+
+																case EBML_ID_CHAPTERSEGMENTUID:
+																case EBML_ID_CHAPTERSEGMENTEDITIONUID:
+																	$chapteratom_entry[$sub_sub_subelement['id_name']] = $sub_sub_subelement['data'];
+																	break;
+
+																case EBML_ID_CHAPTERFLAGENABLED:
+																case EBML_ID_CHAPTERFLAGHIDDEN:
+																	$chapteratom_entry[$sub_sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																	break;
+
+																case EBML_ID_CHAPTERUID:
+																case EBML_ID_CHAPTERTIMESTART:
+																case EBML_ID_CHAPTERTIMEEND:
+																	$chapteratom_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
+																	break;
+
+																case EBML_ID_CHAPTERTRACK:
+																	$chaptertrack_entry = array();
+
+																	while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
+																		switch ($sub_sub_sub_subelement['id']) {
+
+																			case EBML_ID_CHAPTERTRACKNUMBER:
+																				$chaptertrack_entry[$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']);
+																				break;
+
+																			default:
+																				$this->unhandledElement('chapters.editionentry.chapteratom.chaptertrack', __LINE__, $sub_sub_sub_subelement);
+																		}
+																	}
+																	$chapteratom_entry[$sub_sub_subelement['id_name']][] = $chaptertrack_entry;
+																	break;
+
+																case EBML_ID_CHAPTERDISPLAY:
+																	$chapterdisplay_entry = array();
+
+																	while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
+																		switch ($sub_sub_sub_subelement['id']) {
+
+																			case EBML_ID_CHAPSTRING:
+																			case EBML_ID_CHAPLANGUAGE:
+																			case EBML_ID_CHAPCOUNTRY:
+																				$chapterdisplay_entry[$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data'];
+																				break;
+
+																			default:
+																				$this->unhandledElement('chapters.editionentry.chapteratom.chapterdisplay', __LINE__, $sub_sub_sub_subelement);
+																		}
+																	}
+																	$chapteratom_entry[$sub_sub_subelement['id_name']][] = $chapterdisplay_entry;
+																	break;
+
+																default:
+																	$this->unhandledElement('chapters.editionentry.chapteratom', __LINE__, $sub_sub_subelement);
+															}
+														}
+														$editionentry_entry[$sub_subelement['id_name']][] = $chapteratom_entry;
+														break;
+
+													default:
+														$this->unhandledElement('chapters.editionentry', __LINE__, $sub_subelement);
+												}
+											}
+											$info['matroska']['chapters'][] = $editionentry_entry;
+											break;
+
+										default:
+											$this->unhandledElement('chapters', __LINE__, $subelement);
+									}
+								}
+								break;
+
+							case EBML_ID_CLUSTER: // The lower level element containing the (monolithic) Block structure.
+								$cluster_entry = array();
+
+								while ($this->getEBMLelement($subelement, $element_data['end'], array(EBML_ID_CLUSTERSILENTTRACKS, EBML_ID_CLUSTERBLOCKGROUP, EBML_ID_CLUSTERSIMPLEBLOCK))) {
+									switch ($subelement['id']) {
+
+										case EBML_ID_CLUSTERTIMECODE:
+										case EBML_ID_CLUSTERPOSITION:
+										case EBML_ID_CLUSTERPREVSIZE:
+											$cluster_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
+											break;
+
+										case EBML_ID_CLUSTERSILENTTRACKS:
+											$cluster_silent_tracks = array();
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_CLUSTERSILENTTRACKNUMBER:
+														$cluster_silent_tracks[] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													default:
+														$this->unhandledElement('cluster.silenttracks', __LINE__, $sub_subelement);
+												}
+											}
+											$cluster_entry[$subelement['id_name']][] = $cluster_silent_tracks;
+											break;
+
+										case EBML_ID_CLUSTERBLOCKGROUP:
+											$cluster_block_group = array('offset' => $this->current_offset);
+
+											while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CLUSTERBLOCK))) {
+												switch ($sub_subelement['id']) {
+
+													case EBML_ID_CLUSTERBLOCK:
+														$cluster_block_group[$sub_subelement['id_name']] = $this->HandleEMBLClusterBlock($sub_subelement, EBML_ID_CLUSTERBLOCK, $info);
+														break;
+
+													case EBML_ID_CLUSTERREFERENCEPRIORITY: // unsigned-int
+													case EBML_ID_CLUSTERBLOCKDURATION:     // unsigned-int
+														$cluster_block_group[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
+														break;
+
+													case EBML_ID_CLUSTERREFERENCEBLOCK:    // signed-int
+														$cluster_block_group[$sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_subelement['data'], false, true);
+														break;
+
+													case EBML_ID_CLUSTERCODECSTATE:
+														$cluster_block_group[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
+														break;
+
+													default:
+														$this->unhandledElement('clusters.blockgroup', __LINE__, $sub_subelement);
+												}
+											}
+											$cluster_entry[$subelement['id_name']][] = $cluster_block_group;
+											break;
+
+										case EBML_ID_CLUSTERSIMPLEBLOCK:
+											$cluster_entry[$subelement['id_name']][] = $this->HandleEMBLClusterBlock($subelement, EBML_ID_CLUSTERSIMPLEBLOCK, $info);
+											break;
+
+										default:
+											$this->unhandledElement('cluster', __LINE__, $subelement);
+									}
+									$this->current_offset = $subelement['end'];
+								}
+								if (!self::$hide_clusters) {
+									$info['matroska']['cluster'][] = $cluster_entry;
+								}
+
+								// check to see if all the data we need exists already, if so, break out of the loop
+								if (!self::$parse_whole_file) {
+									if (isset($info['matroska']['info']) && is_array($info['matroska']['info'])) {
+										if (isset($info['matroska']['tracks']['tracks']) && is_array($info['matroska']['tracks']['tracks'])) {
+											if (count($info['matroska']['track_data_offsets']) == count($info['matroska']['tracks']['tracks'])) {
+												return;
+											}
+										}
+									}
+								}
+								break;
+
+							default:
+								$this->unhandledElement('segment', __LINE__, $element_data);
+						}
+					}
+					break;
+
+				default:
+					$this->unhandledElement('root', __LINE__, $top_element);
+			}
+		}
+	}
+
+	private function EnsureBufferHasEnoughData($min_data=1024) {
+		if (($this->current_offset - $this->EBMLbuffer_offset) >= ($this->EBMLbuffer_length - $min_data)) {
+			$read_bytes = max($min_data, $this->getid3->fread_buffer_size());
+
+			try {
+				$this->fseek($this->current_offset);
+				$this->EBMLbuffer_offset = $this->current_offset;
+				$this->EBMLbuffer        = $this->fread($read_bytes);
+				$this->EBMLbuffer_length = strlen($this->EBMLbuffer);
+			} catch (getid3_exception $e) {
+				$this->warning('EBML parser: '.$e->getMessage());
+				return false;
+			}
+
+			if ($this->EBMLbuffer_length == 0 && $this->feof()) {
+				return $this->error('EBML parser: ran out of file at offset '.$this->current_offset);
+			}
+		}
+		return true;
+	}
+
+	private function readEBMLint() {
+		$actual_offset = $this->current_offset - $this->EBMLbuffer_offset;
+
+		// get length of integer
+		$first_byte_int = ord($this->EBMLbuffer[$actual_offset]);
+		if       (0x80 & $first_byte_int) {
+			$length = 1;
+		} elseif (0x40 & $first_byte_int) {
+			$length = 2;
+		} elseif (0x20 & $first_byte_int) {
+			$length = 3;
+		} elseif (0x10 & $first_byte_int) {
+			$length = 4;
+		} elseif (0x08 & $first_byte_int) {
+			$length = 5;
+		} elseif (0x04 & $first_byte_int) {
+			$length = 6;
+		} elseif (0x02 & $first_byte_int) {
+			$length = 7;
+		} elseif (0x01 & $first_byte_int) {
+			$length = 8;
+		} else {
+			throw new Exception('invalid EBML integer (leading 0x00) at '.$this->current_offset);
+		}
+
+		// read
+		$int_value = self::EBML2Int(substr($this->EBMLbuffer, $actual_offset, $length));
+		$this->current_offset += $length;
+
+		return $int_value;
+	}
+
+	private function readEBMLelementData($length, $check_buffer=false) {
+		if ($check_buffer && !$this->EnsureBufferHasEnoughData($length)) {
+			return false;
+		}
+		$data = substr($this->EBMLbuffer, $this->current_offset - $this->EBMLbuffer_offset, $length);
+		$this->current_offset += $length;
+		return $data;
+	}
+
+	private function getEBMLelement(&$element, $parent_end, $get_data=false) {
+		if ($this->current_offset >= $parent_end) {
+			return false;
+		}
+
+		if (!$this->EnsureBufferHasEnoughData()) {
+			$this->current_offset = PHP_INT_MAX; // do not exit parser right now, allow to finish current loop to gather maximum information
+			return false;
+		}
+
+		$element = array();
+
+		// set offset
+		$element['offset'] = $this->current_offset;
+
+		// get ID
+		$element['id'] = $this->readEBMLint();
+
+		// get name
+		$element['id_name'] = self::EBMLidName($element['id']);
+
+		// get length
+		$element['length'] = $this->readEBMLint();
+
+		// get end offset
+		$element['end'] = $this->current_offset + $element['length'];
+
+		// get raw data
+		$dont_parse = (in_array($element['id'], $this->unuseful_elements) || $element['id_name'] == dechex($element['id']));
+		if (($get_data === true || (is_array($get_data) && !in_array($element['id'], $get_data))) && !$dont_parse) {
+			$element['data'] = $this->readEBMLelementData($element['length'], $element);
+		}
+
+		return true;
+	}
+
+	private function unhandledElement($type, $line, $element) {
+		// warn only about unknown and missed elements, not about unuseful
+		if (!in_array($element['id'], $this->unuseful_elements)) {
+			$this->warning('Unhandled '.$type.' element ['.basename(__FILE__).':'.$line.'] ('.$element['id'].'::'.$element['id_name'].' ['.$element['length'].' bytes]) at '.$element['offset']);
+		}
+
+		// increase offset for unparsed elements
+		if (!isset($element['data'])) {
+			$this->current_offset = $element['end'];
+		}
+	}
+
+	private function ExtractCommentsSimpleTag($SimpleTagArray) {
+		if (!empty($SimpleTagArray['SimpleTag'])) {
+			foreach ($SimpleTagArray['SimpleTag'] as $SimpleTagKey => $SimpleTagData) {
+				if (!empty($SimpleTagData['TagName']) && !empty($SimpleTagData['TagString'])) {
+					$this->getid3->info['matroska']['comments'][strtolower($SimpleTagData['TagName'])][] = $SimpleTagData['TagString'];
+				}
+				if (!empty($SimpleTagData['SimpleTag'])) {
+					$this->ExtractCommentsSimpleTag($SimpleTagData);
+				}
+			}
+		}
+
+		return true;
+	}
+
+	private function HandleEMBLSimpleTag($parent_end) {
+		$simpletag_entry = array();
+
+		while ($this->getEBMLelement($element, $parent_end, array(EBML_ID_SIMPLETAG))) {
+			switch ($element['id']) {
+
+				case EBML_ID_TAGNAME:
+				case EBML_ID_TAGLANGUAGE:
+				case EBML_ID_TAGSTRING:
+				case EBML_ID_TAGBINARY:
+					$simpletag_entry[$element['id_name']] = $element['data'];
+					break;
+
+				case EBML_ID_SIMPLETAG:
+					$simpletag_entry[$element['id_name']][] = $this->HandleEMBLSimpleTag($element['end']);
+					break;
+
+				case EBML_ID_TAGDEFAULT:
+					$simpletag_entry[$element['id_name']] = (bool)getid3_lib::BigEndian2Int($element['data']);
+					break;
+
+				default:
+					$this->unhandledElement('tag.simpletag', __LINE__, $element);
+			}
+		}
+
+		return $simpletag_entry;
+	}
+
+	private function HandleEMBLClusterBlock($element, $block_type, &$info) {
+		// http://www.matroska.org/technical/specs/index.html#block_structure
+		// http://www.matroska.org/technical/specs/index.html#simpleblock_structure
+
+		$block_data = array();
+		$block_data['tracknumber'] = $this->readEBMLint();
+		$block_data['timecode']    = getid3_lib::BigEndian2Int($this->readEBMLelementData(2), false, true);
+		$block_data['flags_raw']   = getid3_lib::BigEndian2Int($this->readEBMLelementData(1));
+
+		if ($block_type == EBML_ID_CLUSTERSIMPLEBLOCK) {
+			$block_data['flags']['keyframe']  = (($block_data['flags_raw'] & 0x80) >> 7);
+			//$block_data['flags']['reserved1'] = (($block_data['flags_raw'] & 0x70) >> 4);
+		}
+		else {
+			//$block_data['flags']['reserved1'] = (($block_data['flags_raw'] & 0xF0) >> 4);
+		}
+		$block_data['flags']['invisible'] = (bool)(($block_data['flags_raw'] & 0x08) >> 3);
+		$block_data['flags']['lacing']    =       (($block_data['flags_raw'] & 0x06) >> 1);  // 00=no lacing; 01=Xiph lacing; 11=EBML lacing; 10=fixed-size lacing
+		if ($block_type == EBML_ID_CLUSTERSIMPLEBLOCK) {
+			$block_data['flags']['discardable'] = (($block_data['flags_raw'] & 0x01));
+		}
+		else {
+			//$block_data['flags']['reserved2'] = (($block_data['flags_raw'] & 0x01) >> 0);
+		}
+		$block_data['flags']['lacing_type'] = self::BlockLacingType($block_data['flags']['lacing']);
+
+		// Lace (when lacing bit is set)
+		if ($block_data['flags']['lacing'] > 0) {
+			$block_data['lace_frames'] = getid3_lib::BigEndian2Int($this->readEBMLelementData(1)) + 1; // Number of frames in the lace-1 (uint8)
+			if ($block_data['flags']['lacing'] != 0x02) {
+				for ($i = 1; $i < $block_data['lace_frames']; $i ++) { // Lace-coded size of each frame of the lace, except for the last one (multiple uint8). *This is not used with Fixed-size lacing as it is calculated automatically from (total size of lace) / (number of frames in lace).
+					if ($block_data['flags']['lacing'] == 0x03) { // EBML lacing
+						$block_data['lace_frames_size'][$i] = $this->readEBMLint(); // TODO: read size correctly, calc size for the last frame. For now offsets are deteminded OK with readEBMLint() and that's the most important thing.
+					}
+					else { // Xiph lacing
+						$block_data['lace_frames_size'][$i] = 0;
+						do {
+							$size = getid3_lib::BigEndian2Int($this->readEBMLelementData(1));
+							$block_data['lace_frames_size'][$i] += $size;
+						}
+						while ($size == 255);
+					}
+				}
+				if ($block_data['flags']['lacing'] == 0x01) { // calc size of the last frame only for Xiph lacing, till EBML sizes are now anyway determined incorrectly
+					$block_data['lace_frames_size'][] = $element['end'] - $this->current_offset - array_sum($block_data['lace_frames_size']);
+				}
+			}
+		}
+
+		if (!isset($info['matroska']['track_data_offsets'][$block_data['tracknumber']])) {
+			$info['matroska']['track_data_offsets'][$block_data['tracknumber']]['offset'] = $this->current_offset;
+			$info['matroska']['track_data_offsets'][$block_data['tracknumber']]['length'] = $element['end'] - $this->current_offset;
+			//$info['matroska']['track_data_offsets'][$block_data['tracknumber']]['total_length'] = 0;
+		}
+		//$info['matroska']['track_data_offsets'][$block_data['tracknumber']]['total_length'] += $info['matroska']['track_data_offsets'][$block_data['tracknumber']]['length'];
+		//$info['matroska']['track_data_offsets'][$block_data['tracknumber']]['duration']      = $block_data['timecode'] * ((isset($info['matroska']['info'][0]['TimecodeScale']) ? $info['matroska']['info'][0]['TimecodeScale'] : 1000000) / 1000000000);
+
+		// set offset manually
+		$this->current_offset = $element['end'];
+
+		return $block_data;
+	}
+
+	private static function EBML2Int($EBMLstring) {
+		// http://matroska.org/specs/
+
+		// Element ID coded with an UTF-8 like system:
+		// 1xxx xxxx                                  - Class A IDs (2^7 -2 possible values) (base 0x8X)
+		// 01xx xxxx  xxxx xxxx                       - Class B IDs (2^14-2 possible values) (base 0x4X 0xXX)
+		// 001x xxxx  xxxx xxxx  xxxx xxxx            - Class C IDs (2^21-2 possible values) (base 0x2X 0xXX 0xXX)
+		// 0001 xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx - Class D IDs (2^28-2 possible values) (base 0x1X 0xXX 0xXX 0xXX)
+		// Values with all x at 0 and 1 are reserved (hence the -2).
+
+		// Data size, in octets, is also coded with an UTF-8 like system :
+		// 1xxx xxxx                                                                              - value 0 to  2^7-2
+		// 01xx xxxx  xxxx xxxx                                                                   - value 0 to 2^14-2
+		// 001x xxxx  xxxx xxxx  xxxx xxxx                                                        - value 0 to 2^21-2
+		// 0001 xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx                                             - value 0 to 2^28-2
+		// 0000 1xxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx                                  - value 0 to 2^35-2
+		// 0000 01xx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx                       - value 0 to 2^42-2
+		// 0000 001x  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx            - value 0 to 2^49-2
+		// 0000 0001  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx - value 0 to 2^56-2
+
+		$first_byte_int = ord($EBMLstring[0]);
+		if (0x80 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x7F);
+		} elseif (0x40 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x3F);
+		} elseif (0x20 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x1F);
+		} elseif (0x10 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x0F);
+		} elseif (0x08 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x07);
+		} elseif (0x04 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x03);
+		} elseif (0x02 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x01);
+		} elseif (0x01 & $first_byte_int) {
+			$EBMLstring[0] = chr($first_byte_int & 0x00);
+		}
+
+		return getid3_lib::BigEndian2Int($EBMLstring);
+	}
+
+	private static function EBMLdate2unix($EBMLdatestamp) {
+		// Date - signed 8 octets integer in nanoseconds with 0 indicating the precise beginning of the millennium (at 2001-01-01T00:00:00,000000000 UTC)
+		// 978307200 == mktime(0, 0, 0, 1, 1, 2001) == January 1, 2001 12:00:00am UTC
+		return round(($EBMLdatestamp / 1000000000) + 978307200);
+	}
+
+	public static function TargetTypeValue($target_type) {
+		// http://www.matroska.org/technical/specs/tagging/index.html
+		static $TargetTypeValue = array();
+		if (empty($TargetTypeValue)) {
+			$TargetTypeValue[10] = 'A: ~ V:shot';                                           // the lowest hierarchy found in music or movies
+			$TargetTypeValue[20] = 'A:subtrack/part/movement ~ V:scene';                    // corresponds to parts of a track for audio (like a movement)
+			$TargetTypeValue[30] = 'A:track/song ~ V:chapter';                              // the common parts of an album or a movie
+			$TargetTypeValue[40] = 'A:part/session ~ V:part/session';                       // when an album or episode has different logical parts
+			$TargetTypeValue[50] = 'A:album/opera/concert ~ V:movie/episode/concert';       // the most common grouping level of music and video (equals to an episode for TV series)
+			$TargetTypeValue[60] = 'A:edition/issue/volume/opus ~ V:season/sequel/volume';  // a list of lower levels grouped together
+			$TargetTypeValue[70] = 'A:collection ~ V:collection';                           // the high hierarchy consisting of many different lower items
+		}
+		return (isset($TargetTypeValue[$target_type]) ? $TargetTypeValue[$target_type] : $target_type);
+	}
+
+	public static function BlockLacingType($lacingtype) {
+		// http://matroska.org/technical/specs/index.html#block_structure
+		static $BlockLacingType = array();
+		if (empty($BlockLacingType)) {
+			$BlockLacingType[0x00] = 'no lacing';
+			$BlockLacingType[0x01] = 'Xiph lacing';
+			$BlockLacingType[0x02] = 'fixed-size lacing';
+			$BlockLacingType[0x03] = 'EBML lacing';
+		}
+		return (isset($BlockLacingType[$lacingtype]) ? $BlockLacingType[$lacingtype] : $lacingtype);
+	}
+
+	public static function CodecIDtoCommonName($codecid) {
+		// http://www.matroska.org/technical/specs/codecid/index.html
+		static $CodecIDlist = array();
+		if (empty($CodecIDlist)) {
+			$CodecIDlist['A_AAC']            = 'aac';
+			$CodecIDlist['A_AAC/MPEG2/LC']   = 'aac';
+			$CodecIDlist['A_AC3']            = 'ac3';
+			$CodecIDlist['A_DTS']            = 'dts';
+			$CodecIDlist['A_FLAC']           = 'flac';
+			$CodecIDlist['A_MPEG/L1']        = 'mp1';
+			$CodecIDlist['A_MPEG/L2']        = 'mp2';
+			$CodecIDlist['A_MPEG/L3']        = 'mp3';
+			$CodecIDlist['A_PCM/INT/LIT']    = 'pcm';       // PCM Integer Little Endian
+			$CodecIDlist['A_PCM/INT/BIG']    = 'pcm';       // PCM Integer Big Endian
+			$CodecIDlist['A_QUICKTIME/QDMC'] = 'quicktime'; // Quicktime: QDesign Music
+			$CodecIDlist['A_QUICKTIME/QDM2'] = 'quicktime'; // Quicktime: QDesign Music v2
+			$CodecIDlist['A_VORBIS']         = 'vorbis';
+			$CodecIDlist['V_MPEG1']          = 'mpeg';
+			$CodecIDlist['V_THEORA']         = 'theora';
+			$CodecIDlist['V_REAL/RV40']      = 'real';
+			$CodecIDlist['V_REAL/RV10']      = 'real';
+			$CodecIDlist['V_REAL/RV20']      = 'real';
+			$CodecIDlist['V_REAL/RV30']      = 'real';
+			$CodecIDlist['V_QUICKTIME']      = 'quicktime'; // Quicktime
+			$CodecIDlist['V_MPEG4/ISO/AP']   = 'mpeg4';
+			$CodecIDlist['V_MPEG4/ISO/ASP']  = 'mpeg4';
+			$CodecIDlist['V_MPEG4/ISO/AVC']  = 'h264';
+			$CodecIDlist['V_MPEG4/ISO/SP']   = 'mpeg4';
+			$CodecIDlist['V_VP8']            = 'vp8';
+			$CodecIDlist['V_MS/VFW/FOURCC']  = 'riff';
+			$CodecIDlist['A_MS/ACM']         = 'riff';
+		}
+		return (isset($CodecIDlist[$codecid]) ? $CodecIDlist[$codecid] : $codecid);
+	}
+
+	private static function EBMLidName($value) {
+		static $EBMLidList = array();
+		if (empty($EBMLidList)) {
+			$EBMLidList[EBML_ID_ASPECTRATIOTYPE]            = 'AspectRatioType';
+			$EBMLidList[EBML_ID_ATTACHEDFILE]               = 'AttachedFile';
+			$EBMLidList[EBML_ID_ATTACHMENTLINK]             = 'AttachmentLink';
+			$EBMLidList[EBML_ID_ATTACHMENTS]                = 'Attachments';
+			$EBMLidList[EBML_ID_AUDIO]                      = 'Audio';
+			$EBMLidList[EBML_ID_BITDEPTH]                   = 'BitDepth';
+			$EBMLidList[EBML_ID_CHANNELPOSITIONS]           = 'ChannelPositions';
+			$EBMLidList[EBML_ID_CHANNELS]                   = 'Channels';
+			$EBMLidList[EBML_ID_CHAPCOUNTRY]                = 'ChapCountry';
+			$EBMLidList[EBML_ID_CHAPLANGUAGE]               = 'ChapLanguage';
+			$EBMLidList[EBML_ID_CHAPPROCESS]                = 'ChapProcess';
+			$EBMLidList[EBML_ID_CHAPPROCESSCODECID]         = 'ChapProcessCodecID';
+			$EBMLidList[EBML_ID_CHAPPROCESSCOMMAND]         = 'ChapProcessCommand';
+			$EBMLidList[EBML_ID_CHAPPROCESSDATA]            = 'ChapProcessData';
+			$EBMLidList[EBML_ID_CHAPPROCESSPRIVATE]         = 'ChapProcessPrivate';
+			$EBMLidList[EBML_ID_CHAPPROCESSTIME]            = 'ChapProcessTime';
+			$EBMLidList[EBML_ID_CHAPSTRING]                 = 'ChapString';
+			$EBMLidList[EBML_ID_CHAPTERATOM]                = 'ChapterAtom';
+			$EBMLidList[EBML_ID_CHAPTERDISPLAY]             = 'ChapterDisplay';
+			$EBMLidList[EBML_ID_CHAPTERFLAGENABLED]         = 'ChapterFlagEnabled';
+			$EBMLidList[EBML_ID_CHAPTERFLAGHIDDEN]          = 'ChapterFlagHidden';
+			$EBMLidList[EBML_ID_CHAPTERPHYSICALEQUIV]       = 'ChapterPhysicalEquiv';
+			$EBMLidList[EBML_ID_CHAPTERS]                   = 'Chapters';
+			$EBMLidList[EBML_ID_CHAPTERSEGMENTEDITIONUID]   = 'ChapterSegmentEditionUID';
+			$EBMLidList[EBML_ID_CHAPTERSEGMENTUID]          = 'ChapterSegmentUID';
+			$EBMLidList[EBML_ID_CHAPTERTIMEEND]             = 'ChapterTimeEnd';
+			$EBMLidList[EBML_ID_CHAPTERTIMESTART]           = 'ChapterTimeStart';
+			$EBMLidList[EBML_ID_CHAPTERTRACK]               = 'ChapterTrack';
+			$EBMLidList[EBML_ID_CHAPTERTRACKNUMBER]         = 'ChapterTrackNumber';
+			$EBMLidList[EBML_ID_CHAPTERTRANSLATE]           = 'ChapterTranslate';
+			$EBMLidList[EBML_ID_CHAPTERTRANSLATECODEC]      = 'ChapterTranslateCodec';
+			$EBMLidList[EBML_ID_CHAPTERTRANSLATEEDITIONUID] = 'ChapterTranslateEditionUID';
+			$EBMLidList[EBML_ID_CHAPTERTRANSLATEID]         = 'ChapterTranslateID';
+			$EBMLidList[EBML_ID_CHAPTERUID]                 = 'ChapterUID';
+			$EBMLidList[EBML_ID_CLUSTER]                    = 'Cluster';
+			$EBMLidList[EBML_ID_CLUSTERBLOCK]               = 'ClusterBlock';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKADDID]          = 'ClusterBlockAddID';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONAL]     = 'ClusterBlockAdditional';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONID]     = 'ClusterBlockAdditionID';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKADDITIONS]      = 'ClusterBlockAdditions';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKDURATION]       = 'ClusterBlockDuration';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKGROUP]          = 'ClusterBlockGroup';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKMORE]           = 'ClusterBlockMore';
+			$EBMLidList[EBML_ID_CLUSTERBLOCKVIRTUAL]        = 'ClusterBlockVirtual';
+			$EBMLidList[EBML_ID_CLUSTERCODECSTATE]          = 'ClusterCodecState';
+			$EBMLidList[EBML_ID_CLUSTERDELAY]               = 'ClusterDelay';
+			$EBMLidList[EBML_ID_CLUSTERDURATION]            = 'ClusterDuration';
+			$EBMLidList[EBML_ID_CLUSTERENCRYPTEDBLOCK]      = 'ClusterEncryptedBlock';
+			$EBMLidList[EBML_ID_CLUSTERFRAMENUMBER]         = 'ClusterFrameNumber';
+			$EBMLidList[EBML_ID_CLUSTERLACENUMBER]          = 'ClusterLaceNumber';
+			$EBMLidList[EBML_ID_CLUSTERPOSITION]            = 'ClusterPosition';
+			$EBMLidList[EBML_ID_CLUSTERPREVSIZE]            = 'ClusterPrevSize';
+			$EBMLidList[EBML_ID_CLUSTERREFERENCEBLOCK]      = 'ClusterReferenceBlock';
+			$EBMLidList[EBML_ID_CLUSTERREFERENCEPRIORITY]   = 'ClusterReferencePriority';
+			$EBMLidList[EBML_ID_CLUSTERREFERENCEVIRTUAL]    = 'ClusterReferenceVirtual';
+			$EBMLidList[EBML_ID_CLUSTERSILENTTRACKNUMBER]   = 'ClusterSilentTrackNumber';
+			$EBMLidList[EBML_ID_CLUSTERSILENTTRACKS]        = 'ClusterSilentTracks';
+			$EBMLidList[EBML_ID_CLUSTERSIMPLEBLOCK]         = 'ClusterSimpleBlock';
+			$EBMLidList[EBML_ID_CLUSTERTIMECODE]            = 'ClusterTimecode';
+			$EBMLidList[EBML_ID_CLUSTERTIMESLICE]           = 'ClusterTimeSlice';
+			$EBMLidList[EBML_ID_CODECDECODEALL]             = 'CodecDecodeAll';
+			$EBMLidList[EBML_ID_CODECDOWNLOADURL]           = 'CodecDownloadURL';
+			$EBMLidList[EBML_ID_CODECID]                    = 'CodecID';
+			$EBMLidList[EBML_ID_CODECINFOURL]               = 'CodecInfoURL';
+			$EBMLidList[EBML_ID_CODECNAME]                  = 'CodecName';
+			$EBMLidList[EBML_ID_CODECPRIVATE]               = 'CodecPrivate';
+			$EBMLidList[EBML_ID_CODECSETTINGS]              = 'CodecSettings';
+			$EBMLidList[EBML_ID_COLOURSPACE]                = 'ColourSpace';
+			$EBMLidList[EBML_ID_CONTENTCOMPALGO]            = 'ContentCompAlgo';
+			$EBMLidList[EBML_ID_CONTENTCOMPRESSION]         = 'ContentCompression';
+			$EBMLidList[EBML_ID_CONTENTCOMPSETTINGS]        = 'ContentCompSettings';
+			$EBMLidList[EBML_ID_CONTENTENCALGO]             = 'ContentEncAlgo';
+			$EBMLidList[EBML_ID_CONTENTENCKEYID]            = 'ContentEncKeyID';
+			$EBMLidList[EBML_ID_CONTENTENCODING]            = 'ContentEncoding';
+			$EBMLidList[EBML_ID_CONTENTENCODINGORDER]       = 'ContentEncodingOrder';
+			$EBMLidList[EBML_ID_CONTENTENCODINGS]           = 'ContentEncodings';
+			$EBMLidList[EBML_ID_CONTENTENCODINGSCOPE]       = 'ContentEncodingScope';
+			$EBMLidList[EBML_ID_CONTENTENCODINGTYPE]        = 'ContentEncodingType';
+			$EBMLidList[EBML_ID_CONTENTENCRYPTION]          = 'ContentEncryption';
+			$EBMLidList[EBML_ID_CONTENTSIGALGO]             = 'ContentSigAlgo';
+			$EBMLidList[EBML_ID_CONTENTSIGHASHALGO]         = 'ContentSigHashAlgo';
+			$EBMLidList[EBML_ID_CONTENTSIGKEYID]            = 'ContentSigKeyID';
+			$EBMLidList[EBML_ID_CONTENTSIGNATURE]           = 'ContentSignature';
+			$EBMLidList[EBML_ID_CRC32]                      = 'CRC32';
+			$EBMLidList[EBML_ID_CUEBLOCKNUMBER]             = 'CueBlockNumber';
+			$EBMLidList[EBML_ID_CUECLUSTERPOSITION]         = 'CueClusterPosition';
+			$EBMLidList[EBML_ID_CUECODECSTATE]              = 'CueCodecState';
+			$EBMLidList[EBML_ID_CUEPOINT]                   = 'CuePoint';
+			$EBMLidList[EBML_ID_CUEREFCLUSTER]              = 'CueRefCluster';
+			$EBMLidList[EBML_ID_CUEREFCODECSTATE]           = 'CueRefCodecState';
+			$EBMLidList[EBML_ID_CUEREFERENCE]               = 'CueReference';
+			$EBMLidList[EBML_ID_CUEREFNUMBER]               = 'CueRefNumber';
+			$EBMLidList[EBML_ID_CUEREFTIME]                 = 'CueRefTime';
+			$EBMLidList[EBML_ID_CUES]                       = 'Cues';
+			$EBMLidList[EBML_ID_CUETIME]                    = 'CueTime';
+			$EBMLidList[EBML_ID_CUETRACK]                   = 'CueTrack';
+			$EBMLidList[EBML_ID_CUETRACKPOSITIONS]          = 'CueTrackPositions';
+			$EBMLidList[EBML_ID_DATEUTC]                    = 'DateUTC';
+			$EBMLidList[EBML_ID_DEFAULTDURATION]            = 'DefaultDuration';
+			$EBMLidList[EBML_ID_DISPLAYHEIGHT]              = 'DisplayHeight';
+			$EBMLidList[EBML_ID_DISPLAYUNIT]                = 'DisplayUnit';
+			$EBMLidList[EBML_ID_DISPLAYWIDTH]               = 'DisplayWidth';
+			$EBMLidList[EBML_ID_DOCTYPE]                    = 'DocType';
+			$EBMLidList[EBML_ID_DOCTYPEREADVERSION]         = 'DocTypeReadVersion';
+			$EBMLidList[EBML_ID_DOCTYPEVERSION]             = 'DocTypeVersion';
+			$EBMLidList[EBML_ID_DURATION]                   = 'Duration';
+			$EBMLidList[EBML_ID_EBML]                       = 'EBML';
+			$EBMLidList[EBML_ID_EBMLMAXIDLENGTH]            = 'EBMLMaxIDLength';
+			$EBMLidList[EBML_ID_EBMLMAXSIZELENGTH]          = 'EBMLMaxSizeLength';
+			$EBMLidList[EBML_ID_EBMLREADVERSION]            = 'EBMLReadVersion';
+			$EBMLidList[EBML_ID_EBMLVERSION]                = 'EBMLVersion';
+			$EBMLidList[EBML_ID_EDITIONENTRY]               = 'EditionEntry';
+			$EBMLidList[EBML_ID_EDITIONFLAGDEFAULT]         = 'EditionFlagDefault';
+			$EBMLidList[EBML_ID_EDITIONFLAGHIDDEN]          = 'EditionFlagHidden';
+			$EBMLidList[EBML_ID_EDITIONFLAGORDERED]         = 'EditionFlagOrdered';
+			$EBMLidList[EBML_ID_EDITIONUID]                 = 'EditionUID';
+			$EBMLidList[EBML_ID_FILEDATA]                   = 'FileData';
+			$EBMLidList[EBML_ID_FILEDESCRIPTION]            = 'FileDescription';
+			$EBMLidList[EBML_ID_FILEMIMETYPE]               = 'FileMimeType';
+			$EBMLidList[EBML_ID_FILENAME]                   = 'FileName';
+			$EBMLidList[EBML_ID_FILEREFERRAL]               = 'FileReferral';
+			$EBMLidList[EBML_ID_FILEUID]                    = 'FileUID';
+			$EBMLidList[EBML_ID_FLAGDEFAULT]                = 'FlagDefault';
+			$EBMLidList[EBML_ID_FLAGENABLED]                = 'FlagEnabled';
+			$EBMLidList[EBML_ID_FLAGFORCED]                 = 'FlagForced';
+			$EBMLidList[EBML_ID_FLAGINTERLACED]             = 'FlagInterlaced';
+			$EBMLidList[EBML_ID_FLAGLACING]                 = 'FlagLacing';
+			$EBMLidList[EBML_ID_GAMMAVALUE]                 = 'GammaValue';
+			$EBMLidList[EBML_ID_INFO]                       = 'Info';
+			$EBMLidList[EBML_ID_LANGUAGE]                   = 'Language';
+			$EBMLidList[EBML_ID_MAXBLOCKADDITIONID]         = 'MaxBlockAdditionID';
+			$EBMLidList[EBML_ID_MAXCACHE]                   = 'MaxCache';
+			$EBMLidList[EBML_ID_MINCACHE]                   = 'MinCache';
+			$EBMLidList[EBML_ID_MUXINGAPP]                  = 'MuxingApp';
+			$EBMLidList[EBML_ID_NAME]                       = 'Name';
+			$EBMLidList[EBML_ID_NEXTFILENAME]               = 'NextFilename';
+			$EBMLidList[EBML_ID_NEXTUID]                    = 'NextUID';
+			$EBMLidList[EBML_ID_OUTPUTSAMPLINGFREQUENCY]    = 'OutputSamplingFrequency';
+			$EBMLidList[EBML_ID_PIXELCROPBOTTOM]            = 'PixelCropBottom';
+			$EBMLidList[EBML_ID_PIXELCROPLEFT]              = 'PixelCropLeft';
+			$EBMLidList[EBML_ID_PIXELCROPRIGHT]             = 'PixelCropRight';
+			$EBMLidList[EBML_ID_PIXELCROPTOP]               = 'PixelCropTop';
+			$EBMLidList[EBML_ID_PIXELHEIGHT]                = 'PixelHeight';
+			$EBMLidList[EBML_ID_PIXELWIDTH]                 = 'PixelWidth';
+			$EBMLidList[EBML_ID_PREVFILENAME]               = 'PrevFilename';
+			$EBMLidList[EBML_ID_PREVUID]                    = 'PrevUID';
+			$EBMLidList[EBML_ID_SAMPLINGFREQUENCY]          = 'SamplingFrequency';
+			$EBMLidList[EBML_ID_SEEK]                       = 'Seek';
+			$EBMLidList[EBML_ID_SEEKHEAD]                   = 'SeekHead';
+			$EBMLidList[EBML_ID_SEEKID]                     = 'SeekID';
+			$EBMLidList[EBML_ID_SEEKPOSITION]               = 'SeekPosition';
+			$EBMLidList[EBML_ID_SEGMENT]                    = 'Segment';
+			$EBMLidList[EBML_ID_SEGMENTFAMILY]              = 'SegmentFamily';
+			$EBMLidList[EBML_ID_SEGMENTFILENAME]            = 'SegmentFilename';
+			$EBMLidList[EBML_ID_SEGMENTUID]                 = 'SegmentUID';
+			$EBMLidList[EBML_ID_SIMPLETAG]                  = 'SimpleTag';
+			$EBMLidList[EBML_ID_CLUSTERSLICES]              = 'ClusterSlices';
+			$EBMLidList[EBML_ID_STEREOMODE]                 = 'StereoMode';
+			$EBMLidList[EBML_ID_OLDSTEREOMODE]              = 'OldStereoMode';
+			$EBMLidList[EBML_ID_TAG]                        = 'Tag';
+			$EBMLidList[EBML_ID_TAGATTACHMENTUID]           = 'TagAttachmentUID';
+			$EBMLidList[EBML_ID_TAGBINARY]                  = 'TagBinary';
+			$EBMLidList[EBML_ID_TAGCHAPTERUID]              = 'TagChapterUID';
+			$EBMLidList[EBML_ID_TAGDEFAULT]                 = 'TagDefault';
+			$EBMLidList[EBML_ID_TAGEDITIONUID]              = 'TagEditionUID';
+			$EBMLidList[EBML_ID_TAGLANGUAGE]                = 'TagLanguage';
+			$EBMLidList[EBML_ID_TAGNAME]                    = 'TagName';
+			$EBMLidList[EBML_ID_TAGTRACKUID]                = 'TagTrackUID';
+			$EBMLidList[EBML_ID_TAGS]                       = 'Tags';
+			$EBMLidList[EBML_ID_TAGSTRING]                  = 'TagString';
+			$EBMLidList[EBML_ID_TARGETS]                    = 'Targets';
+			$EBMLidList[EBML_ID_TARGETTYPE]                 = 'TargetType';
+			$EBMLidList[EBML_ID_TARGETTYPEVALUE]            = 'TargetTypeValue';
+			$EBMLidList[EBML_ID_TIMECODESCALE]              = 'TimecodeScale';
+			$EBMLidList[EBML_ID_TITLE]                      = 'Title';
+			$EBMLidList[EBML_ID_TRACKENTRY]                 = 'TrackEntry';
+			$EBMLidList[EBML_ID_TRACKNUMBER]                = 'TrackNumber';
+			$EBMLidList[EBML_ID_TRACKOFFSET]                = 'TrackOffset';
+			$EBMLidList[EBML_ID_TRACKOVERLAY]               = 'TrackOverlay';
+			$EBMLidList[EBML_ID_TRACKS]                     = 'Tracks';
+			$EBMLidList[EBML_ID_TRACKTIMECODESCALE]         = 'TrackTimecodeScale';
+			$EBMLidList[EBML_ID_TRACKTRANSLATE]             = 'TrackTranslate';
+			$EBMLidList[EBML_ID_TRACKTRANSLATECODEC]        = 'TrackTranslateCodec';
+			$EBMLidList[EBML_ID_TRACKTRANSLATEEDITIONUID]   = 'TrackTranslateEditionUID';
+			$EBMLidList[EBML_ID_TRACKTRANSLATETRACKID]      = 'TrackTranslateTrackID';
+			$EBMLidList[EBML_ID_TRACKTYPE]                  = 'TrackType';
+			$EBMLidList[EBML_ID_TRACKUID]                   = 'TrackUID';
+			$EBMLidList[EBML_ID_VIDEO]                      = 'Video';
+			$EBMLidList[EBML_ID_VOID]                       = 'Void';
+			$EBMLidList[EBML_ID_WRITINGAPP]                 = 'WritingApp';
+		}
+
+		return (isset($EBMLidList[$value]) ? $EBMLidList[$value] : dechex($value));
+	}
+
+	public static function displayUnit($value) {
+		// http://www.matroska.org/technical/specs/index.html#DisplayUnit
+		static $units = array(
+			0 => 'pixels',
+			1 => 'centimeters',
+			2 => 'inches',
+			3 => 'Display Aspect Ratio');
+
+		return (isset($units[$value]) ? $units[$value] : 'unknown');
+	}
+
+	private static function getDefaultStreamInfo($streams)
+	{
+		foreach (array_reverse($streams) as $stream) {
+			if ($stream['default']) {
+				break;
+			}
+		}
+
+		$unset = array('default', 'name');
+		foreach ($unset as $u) {
+			if (isset($stream[$u])) {
+				unset($stream[$u]);
+			}
+		}
+
+		$info = $stream;
+		$info['streams'] = $streams;
+
+		return $info;
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio-video.quicktime.php b/wp-includes/ID3/module.audio-video.quicktime.php
new file mode 100644
index 000000000..1b5ad5f04
--- /dev/null
+++ b/wp-includes/ID3/module.audio-video.quicktime.php
@@ -0,0 +1,2221 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio-video.quicktime.php                            //
+// module for analyzing Quicktime and MP3-in-MP4 files         //
+// dependencies: module.audio.mp3.php                          //
+// dependencies: module.tag.id3v2.php                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true);
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); // needed for ISO 639-2 language code lookup
+
+class getid3_quicktime extends getid3_handler
+{
+
+	public $ReturnAtomData        = true;
+	public $ParseAllPossibleAtoms = false;
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		$info['fileformat'] = 'quicktime';
+		$info['quicktime']['hinting']    = false;
+		$info['quicktime']['controller'] = 'standard'; // may be overridden if 'ctyp' atom is present
+
+		fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET);
+
+		$offset      = 0;
+		$atomcounter = 0;
+
+		while ($offset < $info['avdataend']) {
+			if (!getid3_lib::intValueSupported($offset)) {
+				$info['error'][] = 'Unable to parse atom at offset '.$offset.' because beyond '.round(PHP_INT_MAX / 1073741824).'GB limit of PHP filesystem functions';
+				break;
+			}
+			fseek($this->getid3->fp, $offset, SEEK_SET);
+			$AtomHeader = fread($this->getid3->fp, 8);
+
+			$atomsize = getid3_lib::BigEndian2Int(substr($AtomHeader, 0, 4));
+			$atomname = substr($AtomHeader, 4, 4);
+
+			// 64-bit MOV patch by jlegateØktnc*com
+			if ($atomsize == 1) {
+				$atomsize = getid3_lib::BigEndian2Int(fread($this->getid3->fp, 8));
+			}
+
+			$info['quicktime'][$atomname]['name']   = $atomname;
+			$info['quicktime'][$atomname]['size']   = $atomsize;
+			$info['quicktime'][$atomname]['offset'] = $offset;
+
+			if (($offset + $atomsize) > $info['avdataend']) {
+				$info['error'][] = 'Atom at offset '.$offset.' claims to go beyond end-of-file (length: '.$atomsize.' bytes)';
+				return false;
+			}
+
+			if ($atomsize == 0) {
+				// Furthermore, for historical reasons the list of atoms is optionally
+				// terminated by a 32-bit integer set to 0. If you are writing a program
+				// to read user data atoms, you should allow for the terminating 0.
+				break;
+			}
+			switch ($atomname) {
+				case 'mdat': // Media DATa atom
+					// 'mdat' contains the actual data for the audio/video
+					if (($atomsize > 8) && (!isset($info['avdataend_tmp']) || ($info['quicktime'][$atomname]['size'] > ($info['avdataend_tmp'] - $info['avdataoffset'])))) {
+
+						$info['avdataoffset'] = $info['quicktime'][$atomname]['offset'] + 8;
+						$OldAVDataEnd         = $info['avdataend'];
+						$info['avdataend']    = $info['quicktime'][$atomname]['offset'] + $info['quicktime'][$atomname]['size'];
+
+						$getid3_temp = new getID3();
+						$getid3_temp->openfile($this->getid3->filename);
+						$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
+						$getid3_temp->info['avdataend']    = $info['avdataend'];
+						$getid3_mp3 = new getid3_mp3($getid3_temp);
+						if ($getid3_mp3->MPEGaudioHeaderValid($getid3_mp3->MPEGaudioHeaderDecode(fread($this->getid3->fp, 4)))) {
+							$getid3_mp3->getOnlyMPEGaudioInfo($getid3_temp->info['avdataoffset'], false);
+							if (!empty($getid3_temp->info['warning'])) {
+								foreach ($getid3_temp->info['warning'] as $value) {
+									$info['warning'][] = $value;
+								}
+							}
+							if (!empty($getid3_temp->info['mpeg'])) {
+								$info['mpeg'] = $getid3_temp->info['mpeg'];
+								if (isset($info['mpeg']['audio'])) {
+									$info['audio']['dataformat']   = 'mp3';
+									$info['audio']['codec']        = (!empty($info['mpeg']['audio']['encoder']) ? $info['mpeg']['audio']['encoder'] : (!empty($info['mpeg']['audio']['codec']) ? $info['mpeg']['audio']['codec'] : (!empty($info['mpeg']['audio']['LAME']) ? 'LAME' :'mp3')));
+									$info['audio']['sample_rate']  = $info['mpeg']['audio']['sample_rate'];
+									$info['audio']['channels']     = $info['mpeg']['audio']['channels'];
+									$info['audio']['bitrate']      = $info['mpeg']['audio']['bitrate'];
+									$info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']);
+									$info['bitrate']               = $info['audio']['bitrate'];
+								}
+							}
+						}
+						unset($getid3_mp3, $getid3_temp);
+						$info['avdataend'] = $OldAVDataEnd;
+						unset($OldAVDataEnd);
+
+					}
+					break;
+
+				case 'free': // FREE space atom
+				case 'skip': // SKIP atom
+				case 'wide': // 64-bit expansion placeholder atom
+					// 'free', 'skip' and 'wide' are just padding, contains no useful data at all
+					break;
+
+				default:
+					$atomHierarchy = array();
+					$info['quicktime'][$atomname] = $this->QuicktimeParseAtom($atomname, $atomsize, fread($this->getid3->fp, $atomsize), $offset, $atomHierarchy, $this->ParseAllPossibleAtoms);
+					break;
+			}
+
+			$offset += $atomsize;
+			$atomcounter++;
+		}
+
+		if (!empty($info['avdataend_tmp'])) {
+			// this value is assigned to a temp value and then erased because
+			// otherwise any atoms beyond the 'mdat' atom would not get parsed
+			$info['avdataend'] = $info['avdataend_tmp'];
+			unset($info['avdataend_tmp']);
+		}
+
+		if (!isset($info['bitrate']) && isset($info['playtime_seconds'])) {
+			$info['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds'];
+		}
+		if (isset($info['bitrate']) && !isset($info['audio']['bitrate']) && !isset($info['quicktime']['video'])) {
+			$info['audio']['bitrate'] = $info['bitrate'];
+		}
+		if (!empty($info['playtime_seconds']) && !isset($info['video']['frame_rate']) && !empty($info['quicktime']['stts_framecount'])) {
+			foreach ($info['quicktime']['stts_framecount'] as $key => $samples_count) {
+				$samples_per_second = $samples_count / $info['playtime_seconds'];
+				if ($samples_per_second > 240) {
+					// has to be audio samples
+				} else {
+					$info['video']['frame_rate'] = $samples_per_second;
+					break;
+				}
+			}
+		}
+		if (($info['audio']['dataformat'] == 'mp4') && empty($info['video']['resolution_x'])) {
+			$info['fileformat'] = 'mp4';
+			$info['mime_type']  = 'audio/mp4';
+			unset($info['video']['dataformat']);
+		}
+
+		if (!$this->ReturnAtomData) {
+			unset($info['quicktime']['moov']);
+		}
+
+		if (empty($info['audio']['dataformat']) && !empty($info['quicktime']['audio'])) {
+			$info['audio']['dataformat'] = 'quicktime';
+		}
+		if (empty($info['video']['dataformat']) && !empty($info['quicktime']['video'])) {
+			$info['video']['dataformat'] = 'quicktime';
+		}
+
+		return true;
+	}
+
+	public function QuicktimeParseAtom($atomname, $atomsize, $atom_data, $baseoffset, &$atomHierarchy, $ParseAllPossibleAtoms) {
+		// http://developer.apple.com/techpubs/quicktime/qtdevdocs/APIREF/INDEX/atomalphaindex.htm
+
+		$info = &$this->getid3->info;
+
+		//$atom_parent = array_pop($atomHierarchy);
+		$atom_parent = end($atomHierarchy); // http://www.getid3.org/phpBB3/viewtopic.php?t=1717
+		array_push($atomHierarchy, $atomname);
+		$atom_structure['hierarchy'] = implode(' ', $atomHierarchy);
+		$atom_structure['name']      = $atomname;
+		$atom_structure['size']      = $atomsize;
+		$atom_structure['offset']    = $baseoffset;
+//echo getid3_lib::PrintHexBytes(substr($atom_data, 0, 8)).'<br>';
+//echo getid3_lib::PrintHexBytes(substr($atom_data, 0, 8), false).'<br><br>';
+		switch ($atomname) {
+			case 'moov': // MOVie container atom
+			case 'trak': // TRAcK container atom
+			case 'clip': // CLIPping container atom
+			case 'matt': // track MATTe container atom
+			case 'edts': // EDiTS container atom
+			case 'tref': // Track REFerence container atom
+			case 'mdia': // MeDIA container atom
+			case 'minf': // Media INFormation container atom
+			case 'dinf': // Data INFormation container atom
+			case 'udta': // User DaTA container atom
+			case 'cmov': // Compressed MOVie container atom
+			case 'rmra': // Reference Movie Record Atom
+			case 'rmda': // Reference Movie Descriptor Atom
+			case 'gmhd': // Generic Media info HeaDer atom (seen on QTVR)
+				$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+				break;
+
+			case 'ilst': // Item LiST container atom
+				$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+
+				// some "ilst" atoms contain data atoms that have a numeric name, and the data is far more accessible if the returned array is compacted
+				$allnumericnames = true;
+				foreach ($atom_structure['subatoms'] as $subatomarray) {
+					if (!is_integer($subatomarray['name']) || (count($subatomarray['subatoms']) != 1)) {
+						$allnumericnames = false;
+						break;
+					}
+				}
+				if ($allnumericnames) {
+					$newData = array();
+					foreach ($atom_structure['subatoms'] as $subatomarray) {
+						foreach ($subatomarray['subatoms'] as $newData_subatomarray) {
+							unset($newData_subatomarray['hierarchy'], $newData_subatomarray['name']);
+							$newData[$subatomarray['name']] = $newData_subatomarray;
+							break;
+						}
+					}
+					$atom_structure['data'] = $newData;
+					unset($atom_structure['subatoms']);
+				}
+				break;
+
+			case "\x00\x00\x00\x01":
+			case "\x00\x00\x00\x02":
+			case "\x00\x00\x00\x03":
+			case "\x00\x00\x00\x04":
+			case "\x00\x00\x00\x05":
+				$atomname = getid3_lib::BigEndian2Int($atomname);
+				$atom_structure['name'] = $atomname;
+				$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+				break;
+
+			case 'stbl': // Sample TaBLe container atom
+				$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+				$isVideo = false;
+				$framerate  = 0;
+				$framecount = 0;
+				foreach ($atom_structure['subatoms'] as $key => $value_array) {
+					if (isset($value_array['sample_description_table'])) {
+						foreach ($value_array['sample_description_table'] as $key2 => $value_array2) {
+							if (isset($value_array2['data_format'])) {
+								switch ($value_array2['data_format']) {
+									case 'avc1':
+									case 'mp4v':
+										// video data
+										$isVideo = true;
+										break;
+									case 'mp4a':
+										// audio data
+										break;
+								}
+							}
+						}
+					} elseif (isset($value_array['time_to_sample_table'])) {
+						foreach ($value_array['time_to_sample_table'] as $key2 => $value_array2) {
+							if (isset($value_array2['sample_count']) && isset($value_array2['sample_duration']) && ($value_array2['sample_duration'] > 0)) {
+								$framerate  = round($info['quicktime']['time_scale'] / $value_array2['sample_duration'], 3);
+								$framecount = $value_array2['sample_count'];
+							}
+						}
+					}
+				}
+				if ($isVideo && $framerate) {
+					$info['quicktime']['video']['frame_rate'] = $framerate;
+					$info['video']['frame_rate'] = $info['quicktime']['video']['frame_rate'];
+				}
+				if ($isVideo && $framecount) {
+					$info['quicktime']['video']['frame_count'] = $framecount;
+				}
+				break;
+
+
+			case 'aART': // Album ARTist
+			case 'catg': // CaTeGory
+			case 'covr': // COVeR artwork
+			case 'cpil': // ComPILation
+			case 'cprt': // CoPyRighT
+			case 'desc': // DESCription
+			case 'disk': // DISK number
+			case 'egid': // Episode Global ID
+			case 'gnre': // GeNRE
+			case 'keyw': // KEYWord
+			case 'ldes':
+			case 'pcst': // PodCaST
+			case 'pgap': // GAPless Playback
+			case 'purd': // PURchase Date
+			case 'purl': // Podcast URL
+			case 'rati':
+			case 'rndu':
+			case 'rpdu':
+			case 'rtng': // RaTiNG
+			case 'stik':
+			case 'tmpo': // TeMPO (BPM)
+			case 'trkn': // TRacK Number
+			case 'tves': // TV EpiSode
+			case 'tvnn': // TV Network Name
+			case 'tvsh': // TV SHow Name
+			case 'tvsn': // TV SeasoN
+			case 'akID': // iTunes store account type
+			case 'apID':
+			case 'atID':
+			case 'cmID':
+			case 'cnID':
+			case 'geID':
+			case 'plID':
+			case 'sfID': // iTunes store country
+			case '©alb': // ALBum
+			case '©art': // ARTist
+			case '©ART':
+			case '©aut':
+			case '©cmt': // CoMmenT
+			case '©com': // COMposer
+			case '©cpy':
+			case '©day': // content created year
+			case '©dir':
+			case '©ed1':
+			case '©ed2':
+			case '©ed3':
+			case '©ed4':
+			case '©ed5':
+			case '©ed6':
+			case '©ed7':
+			case '©ed8':
+			case '©ed9':
+			case '©enc':
+			case '©fmt':
+			case '©gen': // GENre
+			case '©grp': // GRouPing
+			case '©hst':
+			case '©inf':
+			case '©lyr': // LYRics
+			case '©mak':
+			case '©mod':
+			case '©nam': // full NAMe
+			case '©ope':
+			case '©PRD':
+			case '©prd':
+			case '©prf':
+			case '©req':
+			case '©src':
+			case '©swr':
+			case '©too': // encoder
+			case '©trk': // TRacK
+			case '©url':
+			case '©wrn':
+			case '©wrt': // WRiTer
+			case '----': // itunes specific
+				if ($atom_parent == 'udta') {
+					// User data atom handler
+					$atom_structure['data_length'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2));
+					$atom_structure['language_id'] = getid3_lib::BigEndian2Int(substr($atom_data, 2, 2));
+					$atom_structure['data']        =                           substr($atom_data, 4);
+
+					$atom_structure['language']    = $this->QuicktimeLanguageLookup($atom_structure['language_id']);
+					if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) {
+						$info['comments']['language'][] = $atom_structure['language'];
+					}
+				} else {
+					// Apple item list box atom handler
+					$atomoffset = 0;
+					if (substr($atom_data, 2, 2) == "\x10\xB5") {
+						// not sure what it means, but observed on iPhone4 data.
+						// Each $atom_data has 2 bytes of datasize, plus 0x10B5, then data
+						while ($atomoffset < strlen($atom_data)) {
+							$boxsmallsize = getid3_lib::BigEndian2Int(substr($atom_data, $atomoffset,     2));
+							$boxsmalltype =                           substr($atom_data, $atomoffset + 2, 2);
+							$boxsmalldata =                           substr($atom_data, $atomoffset + 4, $boxsmallsize);
+							if ($boxsmallsize <= 1) {
+								$info['warning'][] = 'Invalid QuickTime atom smallbox size "'.$boxsmallsize.'" in atom "'.$atomname.'" at offset: '.($atom_structure['offset'] + $atomoffset);
+								$atom_structure['data'] = null;
+								$atomoffset = strlen($atom_data);
+								break;
+							}
+							switch ($boxsmalltype) {
+								case "\x10\xB5":
+									$atom_structure['data'] = $boxsmalldata;
+									break;
+								default:
+									$info['warning'][] = 'Unknown QuickTime smallbox type: "'.getid3_lib::PrintHexBytes($boxsmalltype).'" at offset '.$baseoffset;
+									$atom_structure['data'] = $atom_data;
+									break;
+							}
+							$atomoffset += (4 + $boxsmallsize);
+						}
+					} else {
+						while ($atomoffset < strlen($atom_data)) {
+							$boxsize = getid3_lib::BigEndian2Int(substr($atom_data, $atomoffset, 4));
+							$boxtype =                           substr($atom_data, $atomoffset + 4, 4);
+							$boxdata =                           substr($atom_data, $atomoffset + 8, $boxsize - 8);
+							if ($boxsize <= 1) {
+								$info['warning'][] = 'Invalid QuickTime atom box size "'.$boxsize.'" in atom "'.$atomname.'" at offset: '.($atom_structure['offset'] + $atomoffset);
+								$atom_structure['data'] = null;
+								$atomoffset = strlen($atom_data);
+								break;
+							}
+							$atomoffset += $boxsize;
+
+							switch ($boxtype) {
+								case 'mean':
+								case 'name':
+									$atom_structure[$boxtype] = substr($boxdata, 4);
+									break;
+
+								case 'data':
+									$atom_structure['version']   = getid3_lib::BigEndian2Int(substr($boxdata,  0, 1));
+									$atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($boxdata,  1, 3));
+									switch ($atom_structure['flags_raw']) {
+										case 0:  // data flag
+										case 21: // tmpo/cpil flag
+											switch ($atomname) {
+												case 'cpil':
+												case 'pcst':
+												case 'pgap':
+													$atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1));
+													break;
+
+												case 'tmpo':
+													$atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 2));
+													break;
+
+												case 'disk':
+												case 'trkn':
+													$num       = getid3_lib::BigEndian2Int(substr($boxdata, 10, 2));
+													$num_total = getid3_lib::BigEndian2Int(substr($boxdata, 12, 2));
+													$atom_structure['data']  = empty($num) ? '' : $num;
+													$atom_structure['data'] .= empty($num_total) ? '' : '/'.$num_total;
+													break;
+
+												case 'gnre':
+													$GenreID = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4));
+													$atom_structure['data']    = getid3_id3v1::LookupGenreName($GenreID - 1);
+													break;
+
+												case 'rtng':
+													$atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1));
+													$atom_structure['data']    = $this->QuicktimeContentRatingLookup($atom_structure[$atomname]);
+													break;
+
+												case 'stik':
+													$atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 1));
+													$atom_structure['data']    = $this->QuicktimeSTIKLookup($atom_structure[$atomname]);
+													break;
+
+												case 'sfID':
+													$atom_structure[$atomname] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4));
+													$atom_structure['data']    = $this->QuicktimeStoreFrontCodeLookup($atom_structure[$atomname]);
+													break;
+
+												case 'egid':
+												case 'purl':
+													$atom_structure['data'] = substr($boxdata, 8);
+													break;
+
+												default:
+													$atom_structure['data'] = getid3_lib::BigEndian2Int(substr($boxdata, 8, 4));
+											}
+											break;
+
+										case 1:  // text flag
+										case 13: // image flag
+										default:
+											$atom_structure['data'] = substr($boxdata, 8);
+											break;
+
+									}
+									break;
+
+								default:
+									$info['warning'][] = 'Unknown QuickTime box type: "'.getid3_lib::PrintHexBytes($boxtype).'" at offset '.$baseoffset;
+									$atom_structure['data'] = $atom_data;
+
+							}
+						}
+					}
+				}
+				$this->CopyToAppropriateCommentsSection($atomname, $atom_structure['data'], $atom_structure['name']);
+				break;
+
+
+			case 'play': // auto-PLAY atom
+				$atom_structure['autoplay'] = (bool) getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+
+				$info['quicktime']['autoplay'] = $atom_structure['autoplay'];
+				break;
+
+
+			case 'WLOC': // Window LOCation atom
+				$atom_structure['location_x']  = getid3_lib::BigEndian2Int(substr($atom_data,  0, 2));
+				$atom_structure['location_y']  = getid3_lib::BigEndian2Int(substr($atom_data,  2, 2));
+				break;
+
+
+			case 'LOOP': // LOOPing atom
+			case 'SelO': // play SELection Only atom
+			case 'AllF': // play ALL Frames atom
+				$atom_structure['data'] = getid3_lib::BigEndian2Int($atom_data);
+				break;
+
+
+			case 'name': //
+			case 'MCPS': // Media Cleaner PRo
+			case '@PRM': // adobe PReMiere version
+			case '@PRQ': // adobe PRemiere Quicktime version
+				$atom_structure['data'] = $atom_data;
+				break;
+
+
+			case 'cmvd': // Compressed MooV Data atom
+				// Code by ubergeekØubergeek*tv based on information from
+				// http://developer.apple.com/quicktime/icefloe/dispatch012.html
+				$atom_structure['unCompressedSize'] = getid3_lib::BigEndian2Int(substr($atom_data, 0, 4));
+
+				$CompressedFileData = substr($atom_data, 4);
+				if ($UncompressedHeader = @gzuncompress($CompressedFileData)) {
+					$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($UncompressedHeader, 0, $atomHierarchy, $ParseAllPossibleAtoms);
+				} else {
+					$info['warning'][] = 'Error decompressing compressed MOV atom at offset '.$atom_structure['offset'];
+				}
+				break;
+
+
+			case 'dcom': // Data COMpression atom
+				$atom_structure['compression_id']   = $atom_data;
+				$atom_structure['compression_text'] = $this->QuicktimeDCOMLookup($atom_data);
+				break;
+
+
+			case 'rdrf': // Reference movie Data ReFerence atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3));
+				$atom_structure['flags']['internal_data'] = (bool) ($atom_structure['flags_raw'] & 0x000001);
+
+				$atom_structure['reference_type_name']    =                           substr($atom_data,  4, 4);
+				$atom_structure['reference_length']       = getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				switch ($atom_structure['reference_type_name']) {
+					case 'url ':
+						$atom_structure['url']            =       $this->NoNullString(substr($atom_data, 12));
+						break;
+
+					case 'alis':
+						$atom_structure['file_alias']     =                           substr($atom_data, 12);
+						break;
+
+					case 'rsrc':
+						$atom_structure['resource_alias'] =                           substr($atom_data, 12);
+						break;
+
+					default:
+						$atom_structure['data']           =                           substr($atom_data, 12);
+						break;
+				}
+				break;
+
+
+			case 'rmqu': // Reference Movie QUality atom
+				$atom_structure['movie_quality'] = getid3_lib::BigEndian2Int($atom_data);
+				break;
+
+
+			case 'rmcs': // Reference Movie Cpu Speed atom
+				$atom_structure['version']          = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']        = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['cpu_speed_rating'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+				break;
+
+
+			case 'rmvc': // Reference Movie Version Check atom
+				$atom_structure['version']            = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']          = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['gestalt_selector']   =                           substr($atom_data,  4, 4);
+				$atom_structure['gestalt_value_mask'] = getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				$atom_structure['gestalt_value']      = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4));
+				$atom_structure['gestalt_check_type'] = getid3_lib::BigEndian2Int(substr($atom_data, 14, 2));
+				break;
+
+
+			case 'rmcd': // Reference Movie Component check atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['component_type']         =                           substr($atom_data,  4, 4);
+				$atom_structure['component_subtype']      =                           substr($atom_data,  8, 4);
+				$atom_structure['component_manufacturer'] =                           substr($atom_data, 12, 4);
+				$atom_structure['component_flags_raw']    = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4));
+				$atom_structure['component_flags_mask']   = getid3_lib::BigEndian2Int(substr($atom_data, 20, 4));
+				$atom_structure['component_min_version']  = getid3_lib::BigEndian2Int(substr($atom_data, 24, 4));
+				break;
+
+
+			case 'rmdr': // Reference Movie Data Rate atom
+				$atom_structure['version']       = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']     = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['data_rate']     = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+
+				$atom_structure['data_rate_bps'] = $atom_structure['data_rate'] * 10;
+				break;
+
+
+			case 'rmla': // Reference Movie Language Atom
+				$atom_structure['version']     = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']   = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['language_id'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+
+				$atom_structure['language']    = $this->QuicktimeLanguageLookup($atom_structure['language_id']);
+				if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) {
+					$info['comments']['language'][] = $atom_structure['language'];
+				}
+				break;
+
+
+			case 'rmla': // Reference Movie Language Atom
+				$atom_structure['version']   = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw'] = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['track_id']  = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+				break;
+
+
+			case 'ptv ': // Print To Video - defines a movie's full screen mode
+				// http://developer.apple.com/documentation/QuickTime/APIREF/SOURCESIV/at_ptv-_pg.htm
+				$atom_structure['display_size_raw']  = getid3_lib::BigEndian2Int(substr($atom_data, 0, 2));
+				$atom_structure['reserved_1']        = getid3_lib::BigEndian2Int(substr($atom_data, 2, 2)); // hardcoded: 0x0000
+				$atom_structure['reserved_2']        = getid3_lib::BigEndian2Int(substr($atom_data, 4, 2)); // hardcoded: 0x0000
+				$atom_structure['slide_show_flag']   = getid3_lib::BigEndian2Int(substr($atom_data, 6, 1));
+				$atom_structure['play_on_open_flag'] = getid3_lib::BigEndian2Int(substr($atom_data, 7, 1));
+
+				$atom_structure['flags']['play_on_open'] = (bool) $atom_structure['play_on_open_flag'];
+				$atom_structure['flags']['slide_show']   = (bool) $atom_structure['slide_show_flag'];
+
+				$ptv_lookup[0] = 'normal';
+				$ptv_lookup[1] = 'double';
+				$ptv_lookup[2] = 'half';
+				$ptv_lookup[3] = 'full';
+				$ptv_lookup[4] = 'current';
+				if (isset($ptv_lookup[$atom_structure['display_size_raw']])) {
+					$atom_structure['display_size'] = $ptv_lookup[$atom_structure['display_size_raw']];
+				} else {
+					$info['warning'][] = 'unknown "ptv " display constant ('.$atom_structure['display_size_raw'].')';
+				}
+				break;
+
+
+			case 'stsd': // Sample Table Sample Description atom
+				$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$stsdEntriesDataOffset = 8;
+				for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+					$atom_structure['sample_description_table'][$i]['size']             = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 4));
+					$stsdEntriesDataOffset += 4;
+					$atom_structure['sample_description_table'][$i]['data_format']      =                           substr($atom_data, $stsdEntriesDataOffset, 4);
+					$stsdEntriesDataOffset += 4;
+					$atom_structure['sample_description_table'][$i]['reserved']         = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 6));
+					$stsdEntriesDataOffset += 6;
+					$atom_structure['sample_description_table'][$i]['reference_index']  = getid3_lib::BigEndian2Int(substr($atom_data, $stsdEntriesDataOffset, 2));
+					$stsdEntriesDataOffset += 2;
+					$atom_structure['sample_description_table'][$i]['data']             =                           substr($atom_data, $stsdEntriesDataOffset, ($atom_structure['sample_description_table'][$i]['size'] - 4 - 4 - 6 - 2));
+					$stsdEntriesDataOffset += ($atom_structure['sample_description_table'][$i]['size'] - 4 - 4 - 6 - 2);
+
+					$atom_structure['sample_description_table'][$i]['encoder_version']  = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'],  0, 2));
+					$atom_structure['sample_description_table'][$i]['encoder_revision'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'],  2, 2));
+					$atom_structure['sample_description_table'][$i]['encoder_vendor']   =                           substr($atom_structure['sample_description_table'][$i]['data'],  4, 4);
+
+					switch ($atom_structure['sample_description_table'][$i]['encoder_vendor']) {
+
+						case "\x00\x00\x00\x00":
+							// audio tracks
+							$atom_structure['sample_description_table'][$i]['audio_channels']       =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'],  8,  2));
+							$atom_structure['sample_description_table'][$i]['audio_bit_depth']      =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 10,  2));
+							$atom_structure['sample_description_table'][$i]['audio_compression_id'] =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12,  2));
+							$atom_structure['sample_description_table'][$i]['audio_packet_size']    =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 14,  2));
+							$atom_structure['sample_description_table'][$i]['audio_sample_rate']    = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 16,  4));
+
+							// video tracks
+							// http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap3/qtff3.html
+							$atom_structure['sample_description_table'][$i]['temporal_quality'] =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'],  8,  4));
+							$atom_structure['sample_description_table'][$i]['spatial_quality']  =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12,  4));
+							$atom_structure['sample_description_table'][$i]['width']            =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 16,  2));
+							$atom_structure['sample_description_table'][$i]['height']           =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 18,  2));
+							$atom_structure['sample_description_table'][$i]['resolution_x']     = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 24,  4));
+							$atom_structure['sample_description_table'][$i]['resolution_y']     = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 28,  4));
+							$atom_structure['sample_description_table'][$i]['data_size']        =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 32,  4));
+							$atom_structure['sample_description_table'][$i]['frame_count']      =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 36,  2));
+							$atom_structure['sample_description_table'][$i]['compressor_name']  =                             substr($atom_structure['sample_description_table'][$i]['data'], 38,  4);
+							$atom_structure['sample_description_table'][$i]['pixel_depth']      =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 42,  2));
+							$atom_structure['sample_description_table'][$i]['color_table_id']   =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 44,  2));
+
+							switch ($atom_structure['sample_description_table'][$i]['data_format']) {
+								case '2vuY':
+								case 'avc1':
+								case 'cvid':
+								case 'dvc ':
+								case 'dvcp':
+								case 'gif ':
+								case 'h263':
+								case 'jpeg':
+								case 'kpcd':
+								case 'mjpa':
+								case 'mjpb':
+								case 'mp4v':
+								case 'png ':
+								case 'raw ':
+								case 'rle ':
+								case 'rpza':
+								case 'smc ':
+								case 'SVQ1':
+								case 'SVQ3':
+								case 'tiff':
+								case 'v210':
+								case 'v216':
+								case 'v308':
+								case 'v408':
+								case 'v410':
+								case 'yuv2':
+									$info['fileformat'] = 'mp4';
+									$info['video']['fourcc'] = $atom_structure['sample_description_table'][$i]['data_format'];
+// http://www.getid3.org/phpBB3/viewtopic.php?t=1550
+//if ((!empty($atom_structure['sample_description_table'][$i]['width']) && !empty($atom_structure['sample_description_table'][$i]['width'])) && (empty($info['video']['resolution_x']) || empty($info['video']['resolution_y']) || (number_format($info['video']['resolution_x'], 6) != number_format(round($info['video']['resolution_x']), 6)) || (number_format($info['video']['resolution_y'], 6) != number_format(round($info['video']['resolution_y']), 6)))) { // ugly check for floating point numbers
+if (!empty($atom_structure['sample_description_table'][$i]['width']) && !empty($atom_structure['sample_description_table'][$i]['height'])) {
+	// assume that values stored here are more important than values stored in [tkhd] atom
+	$info['video']['resolution_x'] = $atom_structure['sample_description_table'][$i]['width'];
+	$info['video']['resolution_y'] = $atom_structure['sample_description_table'][$i]['height'];
+	$info['quicktime']['video']['resolution_x'] = $info['video']['resolution_x'];
+	$info['quicktime']['video']['resolution_y'] = $info['video']['resolution_y'];
+}
+									break;
+
+								case 'qtvr':
+									$info['video']['dataformat'] = 'quicktimevr';
+									break;
+
+								case 'mp4a':
+								default:
+									$info['quicktime']['audio']['codec']       = $this->QuicktimeAudioCodecLookup($atom_structure['sample_description_table'][$i]['data_format']);
+									$info['quicktime']['audio']['sample_rate'] = $atom_structure['sample_description_table'][$i]['audio_sample_rate'];
+									$info['quicktime']['audio']['channels']    = $atom_structure['sample_description_table'][$i]['audio_channels'];
+									$info['quicktime']['audio']['bit_depth']   = $atom_structure['sample_description_table'][$i]['audio_bit_depth'];
+									$info['audio']['codec']                    = $info['quicktime']['audio']['codec'];
+									$info['audio']['sample_rate']              = $info['quicktime']['audio']['sample_rate'];
+									$info['audio']['channels']                 = $info['quicktime']['audio']['channels'];
+									$info['audio']['bits_per_sample']          = $info['quicktime']['audio']['bit_depth'];
+									switch ($atom_structure['sample_description_table'][$i]['data_format']) {
+										case 'raw ': // PCM
+										case 'alac': // Apple Lossless Audio Codec
+											$info['audio']['lossless'] = true;
+											break;
+										default:
+											$info['audio']['lossless'] = false;
+											break;
+									}
+									break;
+							}
+							break;
+
+						default:
+							switch ($atom_structure['sample_description_table'][$i]['data_format']) {
+								case 'mp4s':
+									$info['fileformat'] = 'mp4';
+									break;
+
+								default:
+									// video atom
+									$atom_structure['sample_description_table'][$i]['video_temporal_quality']  =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'],  8,  4));
+									$atom_structure['sample_description_table'][$i]['video_spatial_quality']   =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12,  4));
+									$atom_structure['sample_description_table'][$i]['video_frame_width']       =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 16,  2));
+									$atom_structure['sample_description_table'][$i]['video_frame_height']      =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 18,  2));
+									$atom_structure['sample_description_table'][$i]['video_resolution_x']      = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 20,  4));
+									$atom_structure['sample_description_table'][$i]['video_resolution_y']      = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 24,  4));
+									$atom_structure['sample_description_table'][$i]['video_data_size']         =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 28,  4));
+									$atom_structure['sample_description_table'][$i]['video_frame_count']       =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 32,  2));
+									$atom_structure['sample_description_table'][$i]['video_encoder_name_len']  =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 34,  1));
+									$atom_structure['sample_description_table'][$i]['video_encoder_name']      =                             substr($atom_structure['sample_description_table'][$i]['data'], 35, $atom_structure['sample_description_table'][$i]['video_encoder_name_len']);
+									$atom_structure['sample_description_table'][$i]['video_pixel_color_depth'] =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 66,  2));
+									$atom_structure['sample_description_table'][$i]['video_color_table_id']    =   getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 68,  2));
+
+									$atom_structure['sample_description_table'][$i]['video_pixel_color_type']  = (($atom_structure['sample_description_table'][$i]['video_pixel_color_depth'] > 32) ? 'grayscale' : 'color');
+									$atom_structure['sample_description_table'][$i]['video_pixel_color_name']  = $this->QuicktimeColorNameLookup($atom_structure['sample_description_table'][$i]['video_pixel_color_depth']);
+
+									if ($atom_structure['sample_description_table'][$i]['video_pixel_color_name'] != 'invalid') {
+										$info['quicktime']['video']['codec_fourcc']        = $atom_structure['sample_description_table'][$i]['data_format'];
+										$info['quicktime']['video']['codec_fourcc_lookup'] = $this->QuicktimeVideoCodecLookup($atom_structure['sample_description_table'][$i]['data_format']);
+										$info['quicktime']['video']['codec']               = (($atom_structure['sample_description_table'][$i]['video_encoder_name_len'] > 0) ? $atom_structure['sample_description_table'][$i]['video_encoder_name'] : $atom_structure['sample_description_table'][$i]['data_format']);
+										$info['quicktime']['video']['color_depth']         = $atom_structure['sample_description_table'][$i]['video_pixel_color_depth'];
+										$info['quicktime']['video']['color_depth_name']    = $atom_structure['sample_description_table'][$i]['video_pixel_color_name'];
+
+										$info['video']['codec']           = $info['quicktime']['video']['codec'];
+										$info['video']['bits_per_sample'] = $info['quicktime']['video']['color_depth'];
+									}
+									$info['video']['lossless']           = false;
+									$info['video']['pixel_aspect_ratio'] = (float) 1;
+									break;
+							}
+							break;
+					}
+					switch (strtolower($atom_structure['sample_description_table'][$i]['data_format'])) {
+						case 'mp4a':
+							$info['audio']['dataformat']         = 'mp4';
+							$info['quicktime']['audio']['codec'] = 'mp4';
+							break;
+
+						case '3ivx':
+						case '3iv1':
+						case '3iv2':
+							$info['video']['dataformat'] = '3ivx';
+							break;
+
+						case 'xvid':
+							$info['video']['dataformat'] = 'xvid';
+							break;
+
+						case 'mp4v':
+							$info['video']['dataformat'] = 'mpeg4';
+							break;
+
+						case 'divx':
+						case 'div1':
+						case 'div2':
+						case 'div3':
+						case 'div4':
+						case 'div5':
+						case 'div6':
+							$info['video']['dataformat'] = 'divx';
+							break;
+
+						default:
+							// do nothing
+							break;
+					}
+					unset($atom_structure['sample_description_table'][$i]['data']);
+				}
+				break;
+
+
+			case 'stts': // Sample Table Time-to-Sample atom
+				$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$sttsEntriesDataOffset = 8;
+				//$FrameRateCalculatorArray = array();
+				$frames_count = 0;
+				for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+					$atom_structure['time_to_sample_table'][$i]['sample_count']    = getid3_lib::BigEndian2Int(substr($atom_data, $sttsEntriesDataOffset, 4));
+					$sttsEntriesDataOffset += 4;
+					$atom_structure['time_to_sample_table'][$i]['sample_duration'] = getid3_lib::BigEndian2Int(substr($atom_data, $sttsEntriesDataOffset, 4));
+					$sttsEntriesDataOffset += 4;
+
+					$frames_count += $atom_structure['time_to_sample_table'][$i]['sample_count'];
+
+					// THIS SECTION REPLACED WITH CODE IN "stbl" ATOM
+					//if (!empty($info['quicktime']['time_scale']) && ($atom_structure['time_to_sample_table'][$i]['sample_duration'] > 0)) {
+					//	$stts_new_framerate = $info['quicktime']['time_scale'] / $atom_structure['time_to_sample_table'][$i]['sample_duration'];
+					//	if ($stts_new_framerate <= 60) {
+					//		// some atoms have durations of "1" giving a very large framerate, which probably is not right
+					//		$info['video']['frame_rate'] = max($info['video']['frame_rate'], $stts_new_framerate);
+					//	}
+					//}
+					//
+					//$FrameRateCalculatorArray[($info['quicktime']['time_scale'] / $atom_structure['time_to_sample_table'][$i]['sample_duration'])] += $atom_structure['time_to_sample_table'][$i]['sample_count'];
+				}
+				$info['quicktime']['stts_framecount'][] = $frames_count;
+				//$sttsFramesTotal  = 0;
+				//$sttsSecondsTotal = 0;
+				//foreach ($FrameRateCalculatorArray as $frames_per_second => $frame_count) {
+				//	if (($frames_per_second > 60) || ($frames_per_second < 1)) {
+				//		// not video FPS information, probably audio information
+				//		$sttsFramesTotal  = 0;
+				//		$sttsSecondsTotal = 0;
+				//		break;
+				//	}
+				//	$sttsFramesTotal  += $frame_count;
+				//	$sttsSecondsTotal += $frame_count / $frames_per_second;
+				//}
+				//if (($sttsFramesTotal > 0) && ($sttsSecondsTotal > 0)) {
+				//	if (($sttsFramesTotal / $sttsSecondsTotal) > $info['video']['frame_rate']) {
+				//		$info['video']['frame_rate'] = $sttsFramesTotal / $sttsSecondsTotal;
+				//	}
+				//}
+				break;
+
+
+			case 'stss': // Sample Table Sync Sample (key frames) atom
+				if ($ParseAllPossibleAtoms) {
+					$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+					$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+					$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+					$stssEntriesDataOffset = 8;
+					for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+						$atom_structure['time_to_sample_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stssEntriesDataOffset, 4));
+						$stssEntriesDataOffset += 4;
+					}
+				}
+				break;
+
+
+			case 'stsc': // Sample Table Sample-to-Chunk atom
+				if ($ParseAllPossibleAtoms) {
+					$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+					$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+					$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+					$stscEntriesDataOffset = 8;
+					for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+						$atom_structure['sample_to_chunk_table'][$i]['first_chunk']        = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4));
+						$stscEntriesDataOffset += 4;
+						$atom_structure['sample_to_chunk_table'][$i]['samples_per_chunk']  = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4));
+						$stscEntriesDataOffset += 4;
+						$atom_structure['sample_to_chunk_table'][$i]['sample_description'] = getid3_lib::BigEndian2Int(substr($atom_data, $stscEntriesDataOffset, 4));
+						$stscEntriesDataOffset += 4;
+					}
+				}
+				break;
+
+
+			case 'stsz': // Sample Table SiZe atom
+				if ($ParseAllPossibleAtoms) {
+					$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+					$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+					$atom_structure['sample_size']    = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+					$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+					$stszEntriesDataOffset = 12;
+					if ($atom_structure['sample_size'] == 0) {
+						for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+							$atom_structure['sample_size_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stszEntriesDataOffset, 4));
+							$stszEntriesDataOffset += 4;
+						}
+					}
+				}
+				break;
+
+
+			case 'stco': // Sample Table Chunk Offset atom
+				if ($ParseAllPossibleAtoms) {
+					$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+					$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+					$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+					$stcoEntriesDataOffset = 8;
+					for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+						$atom_structure['chunk_offset_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stcoEntriesDataOffset, 4));
+						$stcoEntriesDataOffset += 4;
+					}
+				}
+				break;
+
+
+			case 'co64': // Chunk Offset 64-bit (version of "stco" that supports > 2GB files)
+				if ($ParseAllPossibleAtoms) {
+					$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+					$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+					$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+					$stcoEntriesDataOffset = 8;
+					for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+						$atom_structure['chunk_offset_table'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $stcoEntriesDataOffset, 8));
+						$stcoEntriesDataOffset += 8;
+					}
+				}
+				break;
+
+
+			case 'dref': // Data REFerence atom
+				$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$drefDataOffset = 8;
+				for ($i = 0; $i < $atom_structure['number_entries']; $i++) {
+					$atom_structure['data_references'][$i]['size']                    = getid3_lib::BigEndian2Int(substr($atom_data, $drefDataOffset, 4));
+					$drefDataOffset += 4;
+					$atom_structure['data_references'][$i]['type']                    =               substr($atom_data, $drefDataOffset, 4);
+					$drefDataOffset += 4;
+					$atom_structure['data_references'][$i]['version']                 = getid3_lib::BigEndian2Int(substr($atom_data,  $drefDataOffset, 1));
+					$drefDataOffset += 1;
+					$atom_structure['data_references'][$i]['flags_raw']               = getid3_lib::BigEndian2Int(substr($atom_data,  $drefDataOffset, 3)); // hardcoded: 0x0000
+					$drefDataOffset += 3;
+					$atom_structure['data_references'][$i]['data']                    =               substr($atom_data, $drefDataOffset, ($atom_structure['data_references'][$i]['size'] - 4 - 4 - 1 - 3));
+					$drefDataOffset += ($atom_structure['data_references'][$i]['size'] - 4 - 4 - 1 - 3);
+
+					$atom_structure['data_references'][$i]['flags']['self_reference'] = (bool) ($atom_structure['data_references'][$i]['flags_raw'] & 0x001);
+				}
+				break;
+
+
+			case 'gmin': // base Media INformation atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['graphics_mode']          = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+				$atom_structure['opcolor_red']            = getid3_lib::BigEndian2Int(substr($atom_data,  6, 2));
+				$atom_structure['opcolor_green']          = getid3_lib::BigEndian2Int(substr($atom_data,  8, 2));
+				$atom_structure['opcolor_blue']           = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2));
+				$atom_structure['balance']                = getid3_lib::BigEndian2Int(substr($atom_data, 12, 2));
+				$atom_structure['reserved']               = getid3_lib::BigEndian2Int(substr($atom_data, 14, 2));
+				break;
+
+
+			case 'smhd': // Sound Media information HeaDer atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['balance']                = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+				$atom_structure['reserved']               = getid3_lib::BigEndian2Int(substr($atom_data,  6, 2));
+				break;
+
+
+			case 'vmhd': // Video Media information HeaDer atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3));
+				$atom_structure['graphics_mode']          = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2));
+				$atom_structure['opcolor_red']            = getid3_lib::BigEndian2Int(substr($atom_data,  6, 2));
+				$atom_structure['opcolor_green']          = getid3_lib::BigEndian2Int(substr($atom_data,  8, 2));
+				$atom_structure['opcolor_blue']           = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2));
+
+				$atom_structure['flags']['no_lean_ahead'] = (bool) ($atom_structure['flags_raw'] & 0x001);
+				break;
+
+
+			case 'hdlr': // HanDLeR reference atom
+				$atom_structure['version']                = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']              = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['component_type']         =                           substr($atom_data,  4, 4);
+				$atom_structure['component_subtype']      =                           substr($atom_data,  8, 4);
+				$atom_structure['component_manufacturer'] =                           substr($atom_data, 12, 4);
+				$atom_structure['component_flags_raw']    = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4));
+				$atom_structure['component_flags_mask']   = getid3_lib::BigEndian2Int(substr($atom_data, 20, 4));
+				$atom_structure['component_name']         =      $this->Pascal2String(substr($atom_data, 24));
+
+				if (($atom_structure['component_subtype'] == 'STpn') && ($atom_structure['component_manufacturer'] == 'zzzz')) {
+					$info['video']['dataformat'] = 'quicktimevr';
+				}
+				break;
+
+
+			case 'mdhd': // MeDia HeaDer atom
+				$atom_structure['version']               = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']             = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['creation_time']         = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$atom_structure['modify_time']           = getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				$atom_structure['time_scale']            = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4));
+				$atom_structure['duration']              = getid3_lib::BigEndian2Int(substr($atom_data, 16, 4));
+				$atom_structure['language_id']           = getid3_lib::BigEndian2Int(substr($atom_data, 20, 2));
+				$atom_structure['quality']               = getid3_lib::BigEndian2Int(substr($atom_data, 22, 2));
+
+				if ($atom_structure['time_scale'] == 0) {
+					$info['error'][] = 'Corrupt Quicktime file: mdhd.time_scale == zero';
+					return false;
+				}
+				$info['quicktime']['time_scale'] = (isset($info['quicktime']['time_scale']) ? max($info['quicktime']['time_scale'], $atom_structure['time_scale']) : $atom_structure['time_scale']);
+
+				$atom_structure['creation_time_unix']    = getid3_lib::DateMac2Unix($atom_structure['creation_time']);
+				$atom_structure['modify_time_unix']      = getid3_lib::DateMac2Unix($atom_structure['modify_time']);
+				$atom_structure['playtime_seconds']      = $atom_structure['duration'] / $atom_structure['time_scale'];
+				$atom_structure['language']              = $this->QuicktimeLanguageLookup($atom_structure['language_id']);
+				if (empty($info['comments']['language']) || (!in_array($atom_structure['language'], $info['comments']['language']))) {
+					$info['comments']['language'][] = $atom_structure['language'];
+				}
+				break;
+
+
+			case 'pnot': // Preview atom
+				$atom_structure['modification_date']      = getid3_lib::BigEndian2Int(substr($atom_data,  0, 4)); // "standard Macintosh format"
+				$atom_structure['version_number']         = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2)); // hardcoded: 0x00
+				$atom_structure['atom_type']              =               substr($atom_data,  6, 4);        // usually: 'PICT'
+				$atom_structure['atom_index']             = getid3_lib::BigEndian2Int(substr($atom_data, 10, 2)); // usually: 0x01
+
+				$atom_structure['modification_date_unix'] = getid3_lib::DateMac2Unix($atom_structure['modification_date']);
+				break;
+
+
+			case 'crgn': // Clipping ReGioN atom
+				$atom_structure['region_size']   = getid3_lib::BigEndian2Int(substr($atom_data,  0, 2)); // The Region size, Region boundary box,
+				$atom_structure['boundary_box']  = getid3_lib::BigEndian2Int(substr($atom_data,  2, 8)); // and Clipping region data fields
+				$atom_structure['clipping_data'] =               substr($atom_data, 10);           // constitute a QuickDraw region.
+				break;
+
+
+			case 'load': // track LOAD settings atom
+				$atom_structure['preload_start_time'] = getid3_lib::BigEndian2Int(substr($atom_data,  0, 4));
+				$atom_structure['preload_duration']   = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$atom_structure['preload_flags_raw']  = getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				$atom_structure['default_hints_raw']  = getid3_lib::BigEndian2Int(substr($atom_data, 12, 4));
+
+				$atom_structure['default_hints']['double_buffer'] = (bool) ($atom_structure['default_hints_raw'] & 0x0020);
+				$atom_structure['default_hints']['high_quality']  = (bool) ($atom_structure['default_hints_raw'] & 0x0100);
+				break;
+
+
+			case 'tmcd': // TiMe CoDe atom
+			case 'chap': // CHAPter list atom
+			case 'sync': // SYNChronization atom
+			case 'scpt': // tranSCriPT atom
+			case 'ssrc': // non-primary SouRCe atom
+				for ($i = 0; $i < (strlen($atom_data) % 4); $i++) {
+					$atom_structure['track_id'][$i] = getid3_lib::BigEndian2Int(substr($atom_data, $i * 4, 4));
+				}
+				break;
+
+
+			case 'elst': // Edit LiST atom
+				$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['number_entries'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				for ($i = 0; $i < $atom_structure['number_entries']; $i++ ) {
+					$atom_structure['edit_list'][$i]['track_duration'] =   getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($i * 12) + 0, 4));
+					$atom_structure['edit_list'][$i]['media_time']     =   getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($i * 12) + 4, 4));
+					$atom_structure['edit_list'][$i]['media_rate']     = getid3_lib::FixedPoint16_16(substr($atom_data, 8 + ($i * 12) + 8, 4));
+				}
+				break;
+
+
+			case 'kmat': // compressed MATte atom
+				$atom_structure['version']        = getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']      = getid3_lib::BigEndian2Int(substr($atom_data,  1, 3)); // hardcoded: 0x0000
+				$atom_structure['matte_data_raw'] =               substr($atom_data,  4);
+				break;
+
+
+			case 'ctab': // Color TABle atom
+				$atom_structure['color_table_seed']   = getid3_lib::BigEndian2Int(substr($atom_data,  0, 4)); // hardcoded: 0x00000000
+				$atom_structure['color_table_flags']  = getid3_lib::BigEndian2Int(substr($atom_data,  4, 2)); // hardcoded: 0x8000
+				$atom_structure['color_table_size']   = getid3_lib::BigEndian2Int(substr($atom_data,  6, 2)) + 1;
+				for ($colortableentry = 0; $colortableentry < $atom_structure['color_table_size']; $colortableentry++) {
+					$atom_structure['color_table'][$colortableentry]['alpha'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 0, 2));
+					$atom_structure['color_table'][$colortableentry]['red']   = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 2, 2));
+					$atom_structure['color_table'][$colortableentry]['green'] = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 4, 2));
+					$atom_structure['color_table'][$colortableentry]['blue']  = getid3_lib::BigEndian2Int(substr($atom_data, 8 + ($colortableentry * 8) + 6, 2));
+				}
+				break;
+
+
+			case 'mvhd': // MoVie HeaDer atom
+				$atom_structure['version']            =   getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']          =   getid3_lib::BigEndian2Int(substr($atom_data,  1, 3));
+				$atom_structure['creation_time']      =   getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$atom_structure['modify_time']        =   getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				$atom_structure['time_scale']         =   getid3_lib::BigEndian2Int(substr($atom_data, 12, 4));
+				$atom_structure['duration']           =   getid3_lib::BigEndian2Int(substr($atom_data, 16, 4));
+				$atom_structure['preferred_rate']     = getid3_lib::FixedPoint16_16(substr($atom_data, 20, 4));
+				$atom_structure['preferred_volume']   =   getid3_lib::FixedPoint8_8(substr($atom_data, 24, 2));
+				$atom_structure['reserved']           =                             substr($atom_data, 26, 10);
+				$atom_structure['matrix_a']           = getid3_lib::FixedPoint16_16(substr($atom_data, 36, 4));
+				$atom_structure['matrix_b']           = getid3_lib::FixedPoint16_16(substr($atom_data, 40, 4));
+				$atom_structure['matrix_u']           =  getid3_lib::FixedPoint2_30(substr($atom_data, 44, 4));
+				$atom_structure['matrix_c']           = getid3_lib::FixedPoint16_16(substr($atom_data, 48, 4));
+				$atom_structure['matrix_d']           = getid3_lib::FixedPoint16_16(substr($atom_data, 52, 4));
+				$atom_structure['matrix_v']           =  getid3_lib::FixedPoint2_30(substr($atom_data, 56, 4));
+				$atom_structure['matrix_x']           = getid3_lib::FixedPoint16_16(substr($atom_data, 60, 4));
+				$atom_structure['matrix_y']           = getid3_lib::FixedPoint16_16(substr($atom_data, 64, 4));
+				$atom_structure['matrix_w']           =  getid3_lib::FixedPoint2_30(substr($atom_data, 68, 4));
+				$atom_structure['preview_time']       =   getid3_lib::BigEndian2Int(substr($atom_data, 72, 4));
+				$atom_structure['preview_duration']   =   getid3_lib::BigEndian2Int(substr($atom_data, 76, 4));
+				$atom_structure['poster_time']        =   getid3_lib::BigEndian2Int(substr($atom_data, 80, 4));
+				$atom_structure['selection_time']     =   getid3_lib::BigEndian2Int(substr($atom_data, 84, 4));
+				$atom_structure['selection_duration'] =   getid3_lib::BigEndian2Int(substr($atom_data, 88, 4));
+				$atom_structure['current_time']       =   getid3_lib::BigEndian2Int(substr($atom_data, 92, 4));
+				$atom_structure['next_track_id']      =   getid3_lib::BigEndian2Int(substr($atom_data, 96, 4));
+
+				if ($atom_structure['time_scale'] == 0) {
+					$info['error'][] = 'Corrupt Quicktime file: mvhd.time_scale == zero';
+					return false;
+				}
+				$atom_structure['creation_time_unix']        = getid3_lib::DateMac2Unix($atom_structure['creation_time']);
+				$atom_structure['modify_time_unix']          = getid3_lib::DateMac2Unix($atom_structure['modify_time']);
+				$info['quicktime']['time_scale']    = (isset($info['quicktime']['time_scale']) ? max($info['quicktime']['time_scale'], $atom_structure['time_scale']) : $atom_structure['time_scale']);
+				$info['quicktime']['display_scale'] = $atom_structure['matrix_a'];
+				$info['playtime_seconds']           = $atom_structure['duration'] / $atom_structure['time_scale'];
+				break;
+
+
+			case 'tkhd': // TracK HeaDer atom
+				$atom_structure['version']             =   getid3_lib::BigEndian2Int(substr($atom_data,  0, 1));
+				$atom_structure['flags_raw']           =   getid3_lib::BigEndian2Int(substr($atom_data,  1, 3));
+				$atom_structure['creation_time']       =   getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$atom_structure['modify_time']         =   getid3_lib::BigEndian2Int(substr($atom_data,  8, 4));
+				$atom_structure['trackid']             =   getid3_lib::BigEndian2Int(substr($atom_data, 12, 4));
+				$atom_structure['reserved1']           =   getid3_lib::BigEndian2Int(substr($atom_data, 16, 4));
+				$atom_structure['duration']            =   getid3_lib::BigEndian2Int(substr($atom_data, 20, 4));
+				$atom_structure['reserved2']           =   getid3_lib::BigEndian2Int(substr($atom_data, 24, 8));
+				$atom_structure['layer']               =   getid3_lib::BigEndian2Int(substr($atom_data, 32, 2));
+				$atom_structure['alternate_group']     =   getid3_lib::BigEndian2Int(substr($atom_data, 34, 2));
+				$atom_structure['volume']              =   getid3_lib::FixedPoint8_8(substr($atom_data, 36, 2));
+				$atom_structure['reserved3']           =   getid3_lib::BigEndian2Int(substr($atom_data, 38, 2));
+// http://developer.apple.com/library/mac/#documentation/QuickTime/RM/MovieBasics/MTEditing/K-Chapter/11MatrixFunctions.html
+// http://developer.apple.com/library/mac/#documentation/QuickTime/qtff/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-18737
+				$atom_structure['matrix_a']            = getid3_lib::FixedPoint16_16(substr($atom_data, 40, 4));
+				$atom_structure['matrix_b']            = getid3_lib::FixedPoint16_16(substr($atom_data, 44, 4));
+				$atom_structure['matrix_u']            =  getid3_lib::FixedPoint2_30(substr($atom_data, 48, 4));
+				$atom_structure['matrix_c']            = getid3_lib::FixedPoint16_16(substr($atom_data, 52, 4));
+				$atom_structure['matrix_d']            = getid3_lib::FixedPoint16_16(substr($atom_data, 56, 4));
+				$atom_structure['matrix_v']            =  getid3_lib::FixedPoint2_30(substr($atom_data, 60, 4));
+				$atom_structure['matrix_x']            = getid3_lib::FixedPoint16_16(substr($atom_data, 64, 4));
+				$atom_structure['matrix_y']            = getid3_lib::FixedPoint16_16(substr($atom_data, 68, 4));
+				$atom_structure['matrix_w']            =  getid3_lib::FixedPoint2_30(substr($atom_data, 72, 4));
+				$atom_structure['width']               = getid3_lib::FixedPoint16_16(substr($atom_data, 76, 4));
+				$atom_structure['height']              = getid3_lib::FixedPoint16_16(substr($atom_data, 80, 4));
+				$atom_structure['flags']['enabled']    = (bool) ($atom_structure['flags_raw'] & 0x0001);
+				$atom_structure['flags']['in_movie']   = (bool) ($atom_structure['flags_raw'] & 0x0002);
+				$atom_structure['flags']['in_preview'] = (bool) ($atom_structure['flags_raw'] & 0x0004);
+				$atom_structure['flags']['in_poster']  = (bool) ($atom_structure['flags_raw'] & 0x0008);
+				$atom_structure['creation_time_unix']  = getid3_lib::DateMac2Unix($atom_structure['creation_time']);
+				$atom_structure['modify_time_unix']    = getid3_lib::DateMac2Unix($atom_structure['modify_time']);
+
+				if ($atom_structure['flags']['enabled'] == 1) {
+					if (!isset($info['video']['resolution_x']) || !isset($info['video']['resolution_y'])) {
+						$info['video']['resolution_x'] = $atom_structure['width'];
+						$info['video']['resolution_y'] = $atom_structure['height'];
+					}
+					$info['video']['resolution_x'] = max($info['video']['resolution_x'], $atom_structure['width']);
+					$info['video']['resolution_y'] = max($info['video']['resolution_y'], $atom_structure['height']);
+					$info['quicktime']['video']['resolution_x'] = $info['video']['resolution_x'];
+					$info['quicktime']['video']['resolution_y'] = $info['video']['resolution_y'];
+				} else {
+					// see: http://www.getid3.org/phpBB3/viewtopic.php?t=1295
+					//if (isset($info['video']['resolution_x'])) { unset($info['video']['resolution_x']); }
+					//if (isset($info['video']['resolution_y'])) { unset($info['video']['resolution_y']); }
+					//if (isset($info['quicktime']['video']))    { unset($info['quicktime']['video']);    }
+				}
+				break;
+
+
+			case 'iods': // Initial Object DeScriptor atom
+				// http://www.koders.com/c/fid1FAB3E762903DC482D8A246D4A4BF9F28E049594.aspx?s=windows.h
+				// http://libquicktime.sourcearchive.com/documentation/1.0.2plus-pdebian/iods_8c-source.html
+				$offset = 0;
+				$atom_structure['version']                =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['flags_raw']              =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 3));
+				$offset += 3;
+				$atom_structure['mp4_iod_tag']            =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['length']                 = $this->quicktime_read_mp4_descr_length($atom_data, $offset);
+				//$offset already adjusted by quicktime_read_mp4_descr_length()
+				$atom_structure['object_descriptor_id']   =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2));
+				$offset += 2;
+				$atom_structure['od_profile_level']       =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['scene_profile_level']    =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['audio_profile_id']       =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['video_profile_id']       =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+				$atom_structure['graphics_profile_level'] =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+				$offset += 1;
+
+				$atom_structure['num_iods_tracks'] = ($atom_structure['length'] - 7) / 6; // 6 bytes would only be right if all tracks use 1-byte length fields
+				for ($i = 0; $i < $atom_structure['num_iods_tracks']; $i++) {
+					$atom_structure['track'][$i]['ES_ID_IncTag'] =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 1));
+					$offset += 1;
+					$atom_structure['track'][$i]['length']       = $this->quicktime_read_mp4_descr_length($atom_data, $offset);
+					//$offset already adjusted by quicktime_read_mp4_descr_length()
+					$atom_structure['track'][$i]['track_id']     =       getid3_lib::BigEndian2Int(substr($atom_data, $offset, 4));
+					$offset += 4;
+				}
+
+				$atom_structure['audio_profile_name'] = $this->QuicktimeIODSaudioProfileName($atom_structure['audio_profile_id']);
+				$atom_structure['video_profile_name'] = $this->QuicktimeIODSvideoProfileName($atom_structure['video_profile_id']);
+				break;
+
+			case 'ftyp': // FileTYPe (?) atom (for MP4 it seems)
+				$atom_structure['signature'] =                           substr($atom_data,  0, 4);
+				$atom_structure['unknown_1'] = getid3_lib::BigEndian2Int(substr($atom_data,  4, 4));
+				$atom_structure['fourcc']    =                           substr($atom_data,  8, 4);
+				break;
+
+			case 'mdat': // Media DATa atom
+			case 'free': // FREE space atom
+			case 'skip': // SKIP atom
+			case 'wide': // 64-bit expansion placeholder atom
+				// 'mdat' data is too big to deal with, contains no useful metadata
+				// 'free', 'skip' and 'wide' are just padding, contains no useful data at all
+
+				// When writing QuickTime files, it is sometimes necessary to update an atom's size.
+				// It is impossible to update a 32-bit atom to a 64-bit atom since the 32-bit atom
+				// is only 8 bytes in size, and the 64-bit atom requires 16 bytes. Therefore, QuickTime
+				// puts an 8-byte placeholder atom before any atoms it may have to update the size of.
+				// In this way, if the atom needs to be converted from a 32-bit to a 64-bit atom, the
+				// placeholder atom can be overwritten to obtain the necessary 8 extra bytes.
+				// The placeholder atom has a type of kWideAtomPlaceholderType ( 'wide' ).
+				break;
+
+
+			case 'nsav': // NoSAVe atom
+				// http://developer.apple.com/technotes/tn/tn2038.html
+				$atom_structure['data'] = getid3_lib::BigEndian2Int(substr($atom_data,  0, 4));
+				break;
+
+			case 'ctyp': // Controller TYPe atom (seen on QTVR)
+				// http://homepages.slingshot.co.nz/~helmboy/quicktime/formats/qtm-layout.txt
+				// some controller names are:
+				//   0x00 + 'std' for linear movie
+				//   'none' for no controls
+				$atom_structure['ctyp'] = substr($atom_data, 0, 4);
+				$info['quicktime']['controller'] = $atom_structure['ctyp'];
+				switch ($atom_structure['ctyp']) {
+					case 'qtvr':
+						$info['video']['dataformat'] = 'quicktimevr';
+						break;
+				}
+				break;
+
+			case 'pano': // PANOrama track (seen on QTVR)
+				$atom_structure['pano'] = getid3_lib::BigEndian2Int(substr($atom_data,  0, 4));
+				break;
+
+			case 'hint': // HINT track
+			case 'hinf': //
+			case 'hinv': //
+			case 'hnti': //
+				$info['quicktime']['hinting'] = true;
+				break;
+
+			case 'imgt': // IMaGe Track reference (kQTVRImageTrackRefType) (seen on QTVR)
+				for ($i = 0; $i < ($atom_structure['size'] - 8); $i += 4) {
+					$atom_structure['imgt'][] = getid3_lib::BigEndian2Int(substr($atom_data, $i, 4));
+				}
+				break;
+
+
+			// Observed-but-not-handled atom types are just listed here to prevent warnings being generated
+			case 'FXTC': // Something to do with Adobe After Effects (?)
+			case 'PrmA':
+			case 'code':
+			case 'FIEL': // this is NOT "fiel" (Field Ordering) as describe here: http://developer.apple.com/documentation/QuickTime/QTFF/QTFFChap3/chapter_4_section_2.html
+			case 'tapt': // TrackApertureModeDimensionsAID - http://developer.apple.com/documentation/QuickTime/Reference/QT7-1_Update_Reference/Constants/Constants.html
+						// tapt seems to be used to compute the video size [http://www.getid3.org/phpBB3/viewtopic.php?t=838]
+						// * http://lists.apple.com/archives/quicktime-api/2006/Aug/msg00014.html
+						// * http://handbrake.fr/irclogs/handbrake-dev/handbrake-dev20080128_pg2.html
+			case 'ctts'://  STCompositionOffsetAID             - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html
+			case 'cslg'://  STCompositionShiftLeastGreatestAID - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html
+			case 'sdtp'://  STSampleDependencyAID              - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html
+			case 'stps'://  STPartialSyncSampleAID             - http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Constants/Reference/reference.html
+				//$atom_structure['data'] = $atom_data;
+				break;
+
+			case '©xyz':  // GPS latitude+longitude+altitude
+				$atom_structure['data'] = $atom_data;
+				if (preg_match('#([\\+\\-][0-9\\.]+)([\\+\\-][0-9\\.]+)([\\+\\-][0-9\\.]+)?/$#i', $atom_data, $matches)) {
+					@list($all, $latitude, $longitude, $altitude) = $matches;
+					$info['quicktime']['comments']['gps_latitude'][]  = floatval($latitude);
+					$info['quicktime']['comments']['gps_longitude'][] = floatval($longitude);
+					if (!empty($altitude)) {
+						$info['quicktime']['comments']['gps_altitude'][] = floatval($altitude);
+					}
+				} else {
+					$info['warning'][] = 'QuickTime atom "©xyz" data does not match expected data pattern at offset '.$baseoffset.'. Please report as getID3() bug.';
+				}
+				break;
+
+			case 'NCDT':
+				// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
+				// Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some Nikon cameras such as the Coolpix S8000 and D5100
+				$atom_structure['subatoms'] = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 4, $atomHierarchy, $ParseAllPossibleAtoms);
+				break;
+			case 'NCTH': // Nikon Camera THumbnail image
+			case 'NCVW': // Nikon Camera preVieW image
+				// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
+				if (preg_match('/^\xFF\xD8\xFF/', $atom_data)) {
+					$atom_structure['data'] = $atom_data;
+					$atom_structure['image_mime'] = 'image/jpeg';
+					$atom_structure['description'] = (($atomname == 'NCTH') ? 'Nikon Camera Thumbnail Image' : (($atomname == 'NCVW') ? 'Nikon Camera Preview Image' : 'Nikon preview image'));
+					$info['quicktime']['comments']['picture'][] = array('image_mime'=>$atom_structure['image_mime'], 'data'=>$atom_data, 'description'=>$atom_structure['description']);
+				}
+				break;
+			case 'NCHD': // MakerNoteVersion
+				// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
+				$atom_structure['data'] = $atom_data;
+				break;
+			case 'NCTG': // NikonTags
+				// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#NCTG
+				$atom_structure['data'] = $this->QuicktimeParseNikonNCTG($atom_data);
+				break;
+			case 'NCDB': // NikonTags
+				// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
+				$atom_structure['data'] = $atom_data;
+				break;
+
+			case "\x00\x00\x00\x00":
+			case 'meta': // METAdata atom
+				// some kind of metacontainer, may contain a big data dump such as:
+				// mdta keys  mdtacom.apple.quicktime.make (mdtacom.apple.quicktime.creationdate ,mdtacom.apple.quicktime.location.ISO6709 $mdtacom.apple.quicktime.software !mdtacom.apple.quicktime.model ilst   data DEApple 0  (data DE2011-05-11T17:54:04+0200 2  *data DE+52.4936+013.3897+040.247/   data DE4.3.1  data DEiPhone 4
+				// http://www.geocities.com/xhelmboyx/quicktime/formats/qti-layout.txt
+
+	            $atom_structure['version']   =          getid3_lib::BigEndian2Int(substr($atom_data, 0, 1));
+	            $atom_structure['flags_raw'] =          getid3_lib::BigEndian2Int(substr($atom_data, 1, 3));
+	            $atom_structure['subatoms']  = $this->QuicktimeParseContainerAtom(substr($atom_data, 4), $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+				//$atom_structure['subatoms']  = $this->QuicktimeParseContainerAtom($atom_data, $baseoffset + 8, $atomHierarchy, $ParseAllPossibleAtoms);
+				break;
+
+			case 'data': // metaDATA atom
+				// seems to be 2 bytes language code (ASCII), 2 bytes unknown (set to 0x10B5 in sample I have), remainder is useful data
+				$atom_structure['language'] =                           substr($atom_data, 4 + 0, 2);
+				$atom_structure['unknown']  = getid3_lib::BigEndian2Int(substr($atom_data, 4 + 2, 2));
+				$atom_structure['data']     =                           substr($atom_data, 4 + 4);
+				break;
+
+			default:
+				$info['warning'][] = 'Unknown QuickTime atom type: "'.$atomname.'" ('.trim(getid3_lib::PrintHexBytes($atomname)).') at offset '.$baseoffset;
+				$atom_structure['data'] = $atom_data;
+				break;
+		}
+		array_pop($atomHierarchy);
+		return $atom_structure;
+	}
+
+	public function QuicktimeParseContainerAtom($atom_data, $baseoffset, &$atomHierarchy, $ParseAllPossibleAtoms) {
+//echo 'QuicktimeParseContainerAtom('.substr($atom_data, 4, 4).') @ '.$baseoffset.'<br><br>';
+		$atom_structure  = false;
+		$subatomoffset  = 0;
+		$subatomcounter = 0;
+		if ((strlen($atom_data) == 4) && (getid3_lib::BigEndian2Int($atom_data) == 0x00000000)) {
+			return false;
+		}
+		while ($subatomoffset < strlen($atom_data)) {
+			$subatomsize = getid3_lib::BigEndian2Int(substr($atom_data, $subatomoffset + 0, 4));
+			$subatomname =                           substr($atom_data, $subatomoffset + 4, 4);
+			$subatomdata =                           substr($atom_data, $subatomoffset + 8, $subatomsize - 8);
+			if ($subatomsize == 0) {
+				// Furthermore, for historical reasons the list of atoms is optionally
+				// terminated by a 32-bit integer set to 0. If you are writing a program
+				// to read user data atoms, you should allow for the terminating 0.
+				return $atom_structure;
+			}
+
+			$atom_structure[$subatomcounter] = $this->QuicktimeParseAtom($subatomname, $subatomsize, $subatomdata, $baseoffset + $subatomoffset, $atomHierarchy, $ParseAllPossibleAtoms);
+
+			$subatomoffset += $subatomsize;
+			$subatomcounter++;
+		}
+		return $atom_structure;
+	}
+
+
+	public function quicktime_read_mp4_descr_length($data, &$offset) {
+		// http://libquicktime.sourcearchive.com/documentation/2:1.0.2plus-pdebian-2build1/esds_8c-source.html
+		$num_bytes = 0;
+		$length    = 0;
+		do {
+			$b = ord(substr($data, $offset++, 1));
+			$length = ($length << 7) | ($b & 0x7F);
+		} while (($b & 0x80) && ($num_bytes++ < 4));
+		return $length;
+	}
+
+
+	public function QuicktimeLanguageLookup($languageid) {
+		// http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-34353
+		static $QuicktimeLanguageLookup = array();
+		if (empty($QuicktimeLanguageLookup)) {
+			$QuicktimeLanguageLookup[0]     = 'English';
+			$QuicktimeLanguageLookup[1]     = 'French';
+			$QuicktimeLanguageLookup[2]     = 'German';
+			$QuicktimeLanguageLookup[3]     = 'Italian';
+			$QuicktimeLanguageLookup[4]     = 'Dutch';
+			$QuicktimeLanguageLookup[5]     = 'Swedish';
+			$QuicktimeLanguageLookup[6]     = 'Spanish';
+			$QuicktimeLanguageLookup[7]     = 'Danish';
+			$QuicktimeLanguageLookup[8]     = 'Portuguese';
+			$QuicktimeLanguageLookup[9]     = 'Norwegian';
+			$QuicktimeLanguageLookup[10]    = 'Hebrew';
+			$QuicktimeLanguageLookup[11]    = 'Japanese';
+			$QuicktimeLanguageLookup[12]    = 'Arabic';
+			$QuicktimeLanguageLookup[13]    = 'Finnish';
+			$QuicktimeLanguageLookup[14]    = 'Greek';
+			$QuicktimeLanguageLookup[15]    = 'Icelandic';
+			$QuicktimeLanguageLookup[16]    = 'Maltese';
+			$QuicktimeLanguageLookup[17]    = 'Turkish';
+			$QuicktimeLanguageLookup[18]    = 'Croatian';
+			$QuicktimeLanguageLookup[19]    = 'Chinese (Traditional)';
+			$QuicktimeLanguageLookup[20]    = 'Urdu';
+			$QuicktimeLanguageLookup[21]    = 'Hindi';
+			$QuicktimeLanguageLookup[22]    = 'Thai';
+			$QuicktimeLanguageLookup[23]    = 'Korean';
+			$QuicktimeLanguageLookup[24]    = 'Lithuanian';
+			$QuicktimeLanguageLookup[25]    = 'Polish';
+			$QuicktimeLanguageLookup[26]    = 'Hungarian';
+			$QuicktimeLanguageLookup[27]    = 'Estonian';
+			$QuicktimeLanguageLookup[28]    = 'Lettish';
+			$QuicktimeLanguageLookup[28]    = 'Latvian';
+			$QuicktimeLanguageLookup[29]    = 'Saamisk';
+			$QuicktimeLanguageLookup[29]    = 'Lappish';
+			$QuicktimeLanguageLookup[30]    = 'Faeroese';
+			$QuicktimeLanguageLookup[31]    = 'Farsi';
+			$QuicktimeLanguageLookup[31]    = 'Persian';
+			$QuicktimeLanguageLookup[32]    = 'Russian';
+			$QuicktimeLanguageLookup[33]    = 'Chinese (Simplified)';
+			$QuicktimeLanguageLookup[34]    = 'Flemish';
+			$QuicktimeLanguageLookup[35]    = 'Irish';
+			$QuicktimeLanguageLookup[36]    = 'Albanian';
+			$QuicktimeLanguageLookup[37]    = 'Romanian';
+			$QuicktimeLanguageLookup[38]    = 'Czech';
+			$QuicktimeLanguageLookup[39]    = 'Slovak';
+			$QuicktimeLanguageLookup[40]    = 'Slovenian';
+			$QuicktimeLanguageLookup[41]    = 'Yiddish';
+			$QuicktimeLanguageLookup[42]    = 'Serbian';
+			$QuicktimeLanguageLookup[43]    = 'Macedonian';
+			$QuicktimeLanguageLookup[44]    = 'Bulgarian';
+			$QuicktimeLanguageLookup[45]    = 'Ukrainian';
+			$QuicktimeLanguageLookup[46]    = 'Byelorussian';
+			$QuicktimeLanguageLookup[47]    = 'Uzbek';
+			$QuicktimeLanguageLookup[48]    = 'Kazakh';
+			$QuicktimeLanguageLookup[49]    = 'Azerbaijani';
+			$QuicktimeLanguageLookup[50]    = 'AzerbaijanAr';
+			$QuicktimeLanguageLookup[51]    = 'Armenian';
+			$QuicktimeLanguageLookup[52]    = 'Georgian';
+			$QuicktimeLanguageLookup[53]    = 'Moldavian';
+			$QuicktimeLanguageLookup[54]    = 'Kirghiz';
+			$QuicktimeLanguageLookup[55]    = 'Tajiki';
+			$QuicktimeLanguageLookup[56]    = 'Turkmen';
+			$QuicktimeLanguageLookup[57]    = 'Mongolian';
+			$QuicktimeLanguageLookup[58]    = 'MongolianCyr';
+			$QuicktimeLanguageLookup[59]    = 'Pashto';
+			$QuicktimeLanguageLookup[60]    = 'Kurdish';
+			$QuicktimeLanguageLookup[61]    = 'Kashmiri';
+			$QuicktimeLanguageLookup[62]    = 'Sindhi';
+			$QuicktimeLanguageLookup[63]    = 'Tibetan';
+			$QuicktimeLanguageLookup[64]    = 'Nepali';
+			$QuicktimeLanguageLookup[65]    = 'Sanskrit';
+			$QuicktimeLanguageLookup[66]    = 'Marathi';
+			$QuicktimeLanguageLookup[67]    = 'Bengali';
+			$QuicktimeLanguageLookup[68]    = 'Assamese';
+			$QuicktimeLanguageLookup[69]    = 'Gujarati';
+			$QuicktimeLanguageLookup[70]    = 'Punjabi';
+			$QuicktimeLanguageLookup[71]    = 'Oriya';
+			$QuicktimeLanguageLookup[72]    = 'Malayalam';
+			$QuicktimeLanguageLookup[73]    = 'Kannada';
+			$QuicktimeLanguageLookup[74]    = 'Tamil';
+			$QuicktimeLanguageLookup[75]    = 'Telugu';
+			$QuicktimeLanguageLookup[76]    = 'Sinhalese';
+			$QuicktimeLanguageLookup[77]    = 'Burmese';
+			$QuicktimeLanguageLookup[78]    = 'Khmer';
+			$QuicktimeLanguageLookup[79]    = 'Lao';
+			$QuicktimeLanguageLookup[80]    = 'Vietnamese';
+			$QuicktimeLanguageLookup[81]    = 'Indonesian';
+			$QuicktimeLanguageLookup[82]    = 'Tagalog';
+			$QuicktimeLanguageLookup[83]    = 'MalayRoman';
+			$QuicktimeLanguageLookup[84]    = 'MalayArabic';
+			$QuicktimeLanguageLookup[85]    = 'Amharic';
+			$QuicktimeLanguageLookup[86]    = 'Tigrinya';
+			$QuicktimeLanguageLookup[87]    = 'Galla';
+			$QuicktimeLanguageLookup[87]    = 'Oromo';
+			$QuicktimeLanguageLookup[88]    = 'Somali';
+			$QuicktimeLanguageLookup[89]    = 'Swahili';
+			$QuicktimeLanguageLookup[90]    = 'Ruanda';
+			$QuicktimeLanguageLookup[91]    = 'Rundi';
+			$QuicktimeLanguageLookup[92]    = 'Chewa';
+			$QuicktimeLanguageLookup[93]    = 'Malagasy';
+			$QuicktimeLanguageLookup[94]    = 'Esperanto';
+			$QuicktimeLanguageLookup[128]   = 'Welsh';
+			$QuicktimeLanguageLookup[129]   = 'Basque';
+			$QuicktimeLanguageLookup[130]   = 'Catalan';
+			$QuicktimeLanguageLookup[131]   = 'Latin';
+			$QuicktimeLanguageLookup[132]   = 'Quechua';
+			$QuicktimeLanguageLookup[133]   = 'Guarani';
+			$QuicktimeLanguageLookup[134]   = 'Aymara';
+			$QuicktimeLanguageLookup[135]   = 'Tatar';
+			$QuicktimeLanguageLookup[136]   = 'Uighur';
+			$QuicktimeLanguageLookup[137]   = 'Dzongkha';
+			$QuicktimeLanguageLookup[138]   = 'JavaneseRom';
+			$QuicktimeLanguageLookup[32767] = 'Unspecified';
+		}
+		if (($languageid > 138) && ($languageid < 32767)) {
+			/*
+			ISO Language Codes - http://www.loc.gov/standards/iso639-2/php/code_list.php
+			Because the language codes specified by ISO 639-2/T are three characters long, they must be packed to fit into a 16-bit field.
+			The packing algorithm must map each of the three characters, which are always lowercase, into a 5-bit integer and then concatenate
+			these integers into the least significant 15 bits of a 16-bit integer, leaving the 16-bit integer's most significant bit set to zero.
+
+			One algorithm for performing this packing is to treat each ISO character as a 16-bit integer. Subtract 0x60 from the first character
+			and multiply by 2^10 (0x400), subtract 0x60 from the second character and multiply by 2^5 (0x20), subtract 0x60 from the third character,
+			and add the three 16-bit values. This will result in a single 16-bit value with the three codes correctly packed into the 15 least
+			significant bits and the most significant bit set to zero.
+			*/
+			$iso_language_id  = '';
+			$iso_language_id .= chr((($languageid & 0x7C00) >> 10) + 0x60);
+			$iso_language_id .= chr((($languageid & 0x03E0) >>  5) + 0x60);
+			$iso_language_id .= chr((($languageid & 0x001F) >>  0) + 0x60);
+			$QuicktimeLanguageLookup[$languageid] = getid3_id3v2::LanguageLookup($iso_language_id);
+		}
+		return (isset($QuicktimeLanguageLookup[$languageid]) ? $QuicktimeLanguageLookup[$languageid] : 'invalid');
+	}
+
+	public function QuicktimeVideoCodecLookup($codecid) {
+		static $QuicktimeVideoCodecLookup = array();
+		if (empty($QuicktimeVideoCodecLookup)) {
+			$QuicktimeVideoCodecLookup['.SGI'] = 'SGI';
+			$QuicktimeVideoCodecLookup['3IV1'] = '3ivx MPEG-4 v1';
+			$QuicktimeVideoCodecLookup['3IV2'] = '3ivx MPEG-4 v2';
+			$QuicktimeVideoCodecLookup['3IVX'] = '3ivx MPEG-4';
+			$QuicktimeVideoCodecLookup['8BPS'] = 'Planar RGB';
+			$QuicktimeVideoCodecLookup['avc1'] = 'H.264/MPEG-4 AVC';
+			$QuicktimeVideoCodecLookup['avr '] = 'AVR-JPEG';
+			$QuicktimeVideoCodecLookup['b16g'] = '16Gray';
+			$QuicktimeVideoCodecLookup['b32a'] = '32AlphaGray';
+			$QuicktimeVideoCodecLookup['b48r'] = '48RGB';
+			$QuicktimeVideoCodecLookup['b64a'] = '64ARGB';
+			$QuicktimeVideoCodecLookup['base'] = 'Base';
+			$QuicktimeVideoCodecLookup['clou'] = 'Cloud';
+			$QuicktimeVideoCodecLookup['cmyk'] = 'CMYK';
+			$QuicktimeVideoCodecLookup['cvid'] = 'Cinepak';
+			$QuicktimeVideoCodecLookup['dmb1'] = 'OpenDML JPEG';
+			$QuicktimeVideoCodecLookup['dvc '] = 'DVC-NTSC';
+			$QuicktimeVideoCodecLookup['dvcp'] = 'DVC-PAL';
+			$QuicktimeVideoCodecLookup['dvpn'] = 'DVCPro-NTSC';
+			$QuicktimeVideoCodecLookup['dvpp'] = 'DVCPro-PAL';
+			$QuicktimeVideoCodecLookup['fire'] = 'Fire';
+			$QuicktimeVideoCodecLookup['flic'] = 'FLC';
+			$QuicktimeVideoCodecLookup['gif '] = 'GIF';
+			$QuicktimeVideoCodecLookup['h261'] = 'H261';
+			$QuicktimeVideoCodecLookup['h263'] = 'H263';
+			$QuicktimeVideoCodecLookup['IV41'] = 'Indeo4';
+			$QuicktimeVideoCodecLookup['jpeg'] = 'JPEG';
+			$QuicktimeVideoCodecLookup['kpcd'] = 'PhotoCD';
+			$QuicktimeVideoCodecLookup['mjpa'] = 'Motion JPEG-A';
+			$QuicktimeVideoCodecLookup['mjpb'] = 'Motion JPEG-B';
+			$QuicktimeVideoCodecLookup['msvc'] = 'Microsoft Video1';
+			$QuicktimeVideoCodecLookup['myuv'] = 'MPEG YUV420';
+			$QuicktimeVideoCodecLookup['path'] = 'Vector';
+			$QuicktimeVideoCodecLookup['png '] = 'PNG';
+			$QuicktimeVideoCodecLookup['PNTG'] = 'MacPaint';
+			$QuicktimeVideoCodecLookup['qdgx'] = 'QuickDrawGX';
+			$QuicktimeVideoCodecLookup['qdrw'] = 'QuickDraw';
+			$QuicktimeVideoCodecLookup['raw '] = 'RAW';
+			$QuicktimeVideoCodecLookup['ripl'] = 'WaterRipple';
+			$QuicktimeVideoCodecLookup['rpza'] = 'Video';
+			$QuicktimeVideoCodecLookup['smc '] = 'Graphics';
+			$QuicktimeVideoCodecLookup['SVQ1'] = 'Sorenson Video 1';
+			$QuicktimeVideoCodecLookup['SVQ1'] = 'Sorenson Video 3';
+			$QuicktimeVideoCodecLookup['syv9'] = 'Sorenson YUV9';
+			$QuicktimeVideoCodecLookup['tga '] = 'Targa';
+			$QuicktimeVideoCodecLookup['tiff'] = 'TIFF';
+			$QuicktimeVideoCodecLookup['WRAW'] = 'Windows RAW';
+			$QuicktimeVideoCodecLookup['WRLE'] = 'BMP';
+			$QuicktimeVideoCodecLookup['y420'] = 'YUV420';
+			$QuicktimeVideoCodecLookup['yuv2'] = 'ComponentVideo';
+			$QuicktimeVideoCodecLookup['yuvs'] = 'ComponentVideoUnsigned';
+			$QuicktimeVideoCodecLookup['yuvu'] = 'ComponentVideoSigned';
+		}
+		return (isset($QuicktimeVideoCodecLookup[$codecid]) ? $QuicktimeVideoCodecLookup[$codecid] : '');
+	}
+
+	public function QuicktimeAudioCodecLookup($codecid) {
+		static $QuicktimeAudioCodecLookup = array();
+		if (empty($QuicktimeAudioCodecLookup)) {
+			$QuicktimeAudioCodecLookup['.mp3']          = 'Fraunhofer MPEG Layer-III alias';
+			$QuicktimeAudioCodecLookup['aac ']          = 'ISO/IEC 14496-3 AAC';
+			$QuicktimeAudioCodecLookup['agsm']          = 'Apple GSM 10:1';
+			$QuicktimeAudioCodecLookup['alac']          = 'Apple Lossless Audio Codec';
+			$QuicktimeAudioCodecLookup['alaw']          = 'A-law 2:1';
+			$QuicktimeAudioCodecLookup['conv']          = 'Sample Format';
+			$QuicktimeAudioCodecLookup['dvca']          = 'DV';
+			$QuicktimeAudioCodecLookup['dvi ']          = 'DV 4:1';
+			$QuicktimeAudioCodecLookup['eqal']          = 'Frequency Equalizer';
+			$QuicktimeAudioCodecLookup['fl32']          = '32-bit Floating Point';
+			$QuicktimeAudioCodecLookup['fl64']          = '64-bit Floating Point';
+			$QuicktimeAudioCodecLookup['ima4']          = 'Interactive Multimedia Association 4:1';
+			$QuicktimeAudioCodecLookup['in24']          = '24-bit Integer';
+			$QuicktimeAudioCodecLookup['in32']          = '32-bit Integer';
+			$QuicktimeAudioCodecLookup['lpc ']          = 'LPC 23:1';
+			$QuicktimeAudioCodecLookup['MAC3']          = 'Macintosh Audio Compression/Expansion (MACE) 3:1';
+			$QuicktimeAudioCodecLookup['MAC6']          = 'Macintosh Audio Compression/Expansion (MACE) 6:1';
+			$QuicktimeAudioCodecLookup['mixb']          = '8-bit Mixer';
+			$QuicktimeAudioCodecLookup['mixw']          = '16-bit Mixer';
+			$QuicktimeAudioCodecLookup['mp4a']          = 'ISO/IEC 14496-3 AAC';
+			$QuicktimeAudioCodecLookup['MS'."\x00\x02"] = 'Microsoft ADPCM';
+			$QuicktimeAudioCodecLookup['MS'."\x00\x11"] = 'DV IMA';
+			$QuicktimeAudioCodecLookup['MS'."\x00\x55"] = 'Fraunhofer MPEG Layer III';
+			$QuicktimeAudioCodecLookup['NONE']          = 'No Encoding';
+			$QuicktimeAudioCodecLookup['Qclp']          = 'Qualcomm PureVoice';
+			$QuicktimeAudioCodecLookup['QDM2']          = 'QDesign Music 2';
+			$QuicktimeAudioCodecLookup['QDMC']          = 'QDesign Music 1';
+			$QuicktimeAudioCodecLookup['ratb']          = '8-bit Rate';
+			$QuicktimeAudioCodecLookup['ratw']          = '16-bit Rate';
+			$QuicktimeAudioCodecLookup['raw ']          = 'raw PCM';
+			$QuicktimeAudioCodecLookup['sour']          = 'Sound Source';
+			$QuicktimeAudioCodecLookup['sowt']          = 'signed/two\'s complement (Little Endian)';
+			$QuicktimeAudioCodecLookup['str1']          = 'Iomega MPEG layer II';
+			$QuicktimeAudioCodecLookup['str2']          = 'Iomega MPEG *layer II';
+			$QuicktimeAudioCodecLookup['str3']          = 'Iomega MPEG **layer II';
+			$QuicktimeAudioCodecLookup['str4']          = 'Iomega MPEG ***layer II';
+			$QuicktimeAudioCodecLookup['twos']          = 'signed/two\'s complement (Big Endian)';
+			$QuicktimeAudioCodecLookup['ulaw']          = 'mu-law 2:1';
+		}
+		return (isset($QuicktimeAudioCodecLookup[$codecid]) ? $QuicktimeAudioCodecLookup[$codecid] : '');
+	}
+
+	public function QuicktimeDCOMLookup($compressionid) {
+		static $QuicktimeDCOMLookup = array();
+		if (empty($QuicktimeDCOMLookup)) {
+			$QuicktimeDCOMLookup['zlib'] = 'ZLib Deflate';
+			$QuicktimeDCOMLookup['adec'] = 'Apple Compression';
+		}
+		return (isset($QuicktimeDCOMLookup[$compressionid]) ? $QuicktimeDCOMLookup[$compressionid] : '');
+	}
+
+	public function QuicktimeColorNameLookup($colordepthid) {
+		static $QuicktimeColorNameLookup = array();
+		if (empty($QuicktimeColorNameLookup)) {
+			$QuicktimeColorNameLookup[1]  = '2-color (monochrome)';
+			$QuicktimeColorNameLookup[2]  = '4-color';
+			$QuicktimeColorNameLookup[4]  = '16-color';
+			$QuicktimeColorNameLookup[8]  = '256-color';
+			$QuicktimeColorNameLookup[16] = 'thousands (16-bit color)';
+			$QuicktimeColorNameLookup[24] = 'millions (24-bit color)';
+			$QuicktimeColorNameLookup[32] = 'millions+ (32-bit color)';
+			$QuicktimeColorNameLookup[33] = 'black & white';
+			$QuicktimeColorNameLookup[34] = '4-gray';
+			$QuicktimeColorNameLookup[36] = '16-gray';
+			$QuicktimeColorNameLookup[40] = '256-gray';
+		}
+		return (isset($QuicktimeColorNameLookup[$colordepthid]) ? $QuicktimeColorNameLookup[$colordepthid] : 'invalid');
+	}
+
+	public function QuicktimeSTIKLookup($stik) {
+		static $QuicktimeSTIKLookup = array();
+		if (empty($QuicktimeSTIKLookup)) {
+			$QuicktimeSTIKLookup[0]  = 'Movie';
+			$QuicktimeSTIKLookup[1]  = 'Normal';
+			$QuicktimeSTIKLookup[2]  = 'Audiobook';
+			$QuicktimeSTIKLookup[5]  = 'Whacked Bookmark';
+			$QuicktimeSTIKLookup[6]  = 'Music Video';
+			$QuicktimeSTIKLookup[9]  = 'Short Film';
+			$QuicktimeSTIKLookup[10] = 'TV Show';
+			$QuicktimeSTIKLookup[11] = 'Booklet';
+			$QuicktimeSTIKLookup[14] = 'Ringtone';
+			$QuicktimeSTIKLookup[21] = 'Podcast';
+		}
+		return (isset($QuicktimeSTIKLookup[$stik]) ? $QuicktimeSTIKLookup[$stik] : 'invalid');
+	}
+
+	public function QuicktimeIODSaudioProfileName($audio_profile_id) {
+		static $QuicktimeIODSaudioProfileNameLookup = array();
+		if (empty($QuicktimeIODSaudioProfileNameLookup)) {
+			$QuicktimeIODSaudioProfileNameLookup = array(
+			    0x00 => 'ISO Reserved (0x00)',
+			    0x01 => 'Main Audio Profile @ Level 1',
+			    0x02 => 'Main Audio Profile @ Level 2',
+			    0x03 => 'Main Audio Profile @ Level 3',
+			    0x04 => 'Main Audio Profile @ Level 4',
+			    0x05 => 'Scalable Audio Profile @ Level 1',
+			    0x06 => 'Scalable Audio Profile @ Level 2',
+			    0x07 => 'Scalable Audio Profile @ Level 3',
+			    0x08 => 'Scalable Audio Profile @ Level 4',
+			    0x09 => 'Speech Audio Profile @ Level 1',
+			    0x0A => 'Speech Audio Profile @ Level 2',
+			    0x0B => 'Synthetic Audio Profile @ Level 1',
+			    0x0C => 'Synthetic Audio Profile @ Level 2',
+			    0x0D => 'Synthetic Audio Profile @ Level 3',
+			    0x0E => 'High Quality Audio Profile @ Level 1',
+			    0x0F => 'High Quality Audio Profile @ Level 2',
+			    0x10 => 'High Quality Audio Profile @ Level 3',
+			    0x11 => 'High Quality Audio Profile @ Level 4',
+			    0x12 => 'High Quality Audio Profile @ Level 5',
+			    0x13 => 'High Quality Audio Profile @ Level 6',
+			    0x14 => 'High Quality Audio Profile @ Level 7',
+			    0x15 => 'High Quality Audio Profile @ Level 8',
+			    0x16 => 'Low Delay Audio Profile @ Level 1',
+			    0x17 => 'Low Delay Audio Profile @ Level 2',
+			    0x18 => 'Low Delay Audio Profile @ Level 3',
+			    0x19 => 'Low Delay Audio Profile @ Level 4',
+			    0x1A => 'Low Delay Audio Profile @ Level 5',
+			    0x1B => 'Low Delay Audio Profile @ Level 6',
+			    0x1C => 'Low Delay Audio Profile @ Level 7',
+			    0x1D => 'Low Delay Audio Profile @ Level 8',
+			    0x1E => 'Natural Audio Profile @ Level 1',
+			    0x1F => 'Natural Audio Profile @ Level 2',
+			    0x20 => 'Natural Audio Profile @ Level 3',
+			    0x21 => 'Natural Audio Profile @ Level 4',
+			    0x22 => 'Mobile Audio Internetworking Profile @ Level 1',
+			    0x23 => 'Mobile Audio Internetworking Profile @ Level 2',
+			    0x24 => 'Mobile Audio Internetworking Profile @ Level 3',
+			    0x25 => 'Mobile Audio Internetworking Profile @ Level 4',
+			    0x26 => 'Mobile Audio Internetworking Profile @ Level 5',
+			    0x27 => 'Mobile Audio Internetworking Profile @ Level 6',
+			    0x28 => 'AAC Profile @ Level 1',
+			    0x29 => 'AAC Profile @ Level 2',
+			    0x2A => 'AAC Profile @ Level 4',
+			    0x2B => 'AAC Profile @ Level 5',
+			    0x2C => 'High Efficiency AAC Profile @ Level 2',
+			    0x2D => 'High Efficiency AAC Profile @ Level 3',
+			    0x2E => 'High Efficiency AAC Profile @ Level 4',
+			    0x2F => 'High Efficiency AAC Profile @ Level 5',
+			    0xFE => 'Not part of MPEG-4 audio profiles',
+			    0xFF => 'No audio capability required',
+			);
+		}
+		return (isset($QuicktimeIODSaudioProfileNameLookup[$audio_profile_id]) ? $QuicktimeIODSaudioProfileNameLookup[$audio_profile_id] : 'ISO Reserved / User Private');
+	}
+
+
+	public function QuicktimeIODSvideoProfileName($video_profile_id) {
+		static $QuicktimeIODSvideoProfileNameLookup = array();
+		if (empty($QuicktimeIODSvideoProfileNameLookup)) {
+			$QuicktimeIODSvideoProfileNameLookup = array(
+				0x00 => 'Reserved (0x00) Profile',
+				0x01 => 'Simple Profile @ Level 1',
+				0x02 => 'Simple Profile @ Level 2',
+				0x03 => 'Simple Profile @ Level 3',
+				0x08 => 'Simple Profile @ Level 0',
+				0x10 => 'Simple Scalable Profile @ Level 0',
+				0x11 => 'Simple Scalable Profile @ Level 1',
+				0x12 => 'Simple Scalable Profile @ Level 2',
+				0x15 => 'AVC/H264 Profile',
+				0x21 => 'Core Profile @ Level 1',
+				0x22 => 'Core Profile @ Level 2',
+				0x32 => 'Main Profile @ Level 2',
+				0x33 => 'Main Profile @ Level 3',
+				0x34 => 'Main Profile @ Level 4',
+				0x42 => 'N-bit Profile @ Level 2',
+				0x51 => 'Scalable Texture Profile @ Level 1',
+				0x61 => 'Simple Face Animation Profile @ Level 1',
+				0x62 => 'Simple Face Animation Profile @ Level 2',
+				0x63 => 'Simple FBA Profile @ Level 1',
+				0x64 => 'Simple FBA Profile @ Level 2',
+				0x71 => 'Basic Animated Texture Profile @ Level 1',
+				0x72 => 'Basic Animated Texture Profile @ Level 2',
+				0x81 => 'Hybrid Profile @ Level 1',
+				0x82 => 'Hybrid Profile @ Level 2',
+				0x91 => 'Advanced Real Time Simple Profile @ Level 1',
+				0x92 => 'Advanced Real Time Simple Profile @ Level 2',
+				0x93 => 'Advanced Real Time Simple Profile @ Level 3',
+				0x94 => 'Advanced Real Time Simple Profile @ Level 4',
+				0xA1 => 'Core Scalable Profile @ Level1',
+				0xA2 => 'Core Scalable Profile @ Level2',
+				0xA3 => 'Core Scalable Profile @ Level3',
+				0xB1 => 'Advanced Coding Efficiency Profile @ Level 1',
+				0xB2 => 'Advanced Coding Efficiency Profile @ Level 2',
+				0xB3 => 'Advanced Coding Efficiency Profile @ Level 3',
+				0xB4 => 'Advanced Coding Efficiency Profile @ Level 4',
+				0xC1 => 'Advanced Core Profile @ Level 1',
+				0xC2 => 'Advanced Core Profile @ Level 2',
+				0xD1 => 'Advanced Scalable Texture @ Level1',
+				0xD2 => 'Advanced Scalable Texture @ Level2',
+				0xE1 => 'Simple Studio Profile @ Level 1',
+				0xE2 => 'Simple Studio Profile @ Level 2',
+				0xE3 => 'Simple Studio Profile @ Level 3',
+				0xE4 => 'Simple Studio Profile @ Level 4',
+				0xE5 => 'Core Studio Profile @ Level 1',
+				0xE6 => 'Core Studio Profile @ Level 2',
+				0xE7 => 'Core Studio Profile @ Level 3',
+				0xE8 => 'Core Studio Profile @ Level 4',
+				0xF0 => 'Advanced Simple Profile @ Level 0',
+				0xF1 => 'Advanced Simple Profile @ Level 1',
+				0xF2 => 'Advanced Simple Profile @ Level 2',
+				0xF3 => 'Advanced Simple Profile @ Level 3',
+				0xF4 => 'Advanced Simple Profile @ Level 4',
+				0xF5 => 'Advanced Simple Profile @ Level 5',
+				0xF7 => 'Advanced Simple Profile @ Level 3b',
+				0xF8 => 'Fine Granularity Scalable Profile @ Level 0',
+				0xF9 => 'Fine Granularity Scalable Profile @ Level 1',
+				0xFA => 'Fine Granularity Scalable Profile @ Level 2',
+				0xFB => 'Fine Granularity Scalable Profile @ Level 3',
+				0xFC => 'Fine Granularity Scalable Profile @ Level 4',
+				0xFD => 'Fine Granularity Scalable Profile @ Level 5',
+				0xFE => 'Not part of MPEG-4 Visual profiles',
+				0xFF => 'No visual capability required',
+			);
+		}
+		return (isset($QuicktimeIODSvideoProfileNameLookup[$video_profile_id]) ? $QuicktimeIODSvideoProfileNameLookup[$video_profile_id] : 'ISO Reserved Profile');
+	}
+
+
+	public function QuicktimeContentRatingLookup($rtng) {
+		static $QuicktimeContentRatingLookup = array();
+		if (empty($QuicktimeContentRatingLookup)) {
+			$QuicktimeContentRatingLookup[0]  = 'None';
+			$QuicktimeContentRatingLookup[2]  = 'Clean';
+			$QuicktimeContentRatingLookup[4]  = 'Explicit';
+		}
+		return (isset($QuicktimeContentRatingLookup[$rtng]) ? $QuicktimeContentRatingLookup[$rtng] : 'invalid');
+	}
+
+	public function QuicktimeStoreAccountTypeLookup($akid) {
+		static $QuicktimeStoreAccountTypeLookup = array();
+		if (empty($QuicktimeStoreAccountTypeLookup)) {
+			$QuicktimeStoreAccountTypeLookup[0] = 'iTunes';
+			$QuicktimeStoreAccountTypeLookup[1] = 'AOL';
+		}
+		return (isset($QuicktimeStoreAccountTypeLookup[$akid]) ? $QuicktimeStoreAccountTypeLookup[$akid] : 'invalid');
+	}
+
+	public function QuicktimeStoreFrontCodeLookup($sfid) {
+		static $QuicktimeStoreFrontCodeLookup = array();
+		if (empty($QuicktimeStoreFrontCodeLookup)) {
+			$QuicktimeStoreFrontCodeLookup[143460] = 'Australia';
+			$QuicktimeStoreFrontCodeLookup[143445] = 'Austria';
+			$QuicktimeStoreFrontCodeLookup[143446] = 'Belgium';
+			$QuicktimeStoreFrontCodeLookup[143455] = 'Canada';
+			$QuicktimeStoreFrontCodeLookup[143458] = 'Denmark';
+			$QuicktimeStoreFrontCodeLookup[143447] = 'Finland';
+			$QuicktimeStoreFrontCodeLookup[143442] = 'France';
+			$QuicktimeStoreFrontCodeLookup[143443] = 'Germany';
+			$QuicktimeStoreFrontCodeLookup[143448] = 'Greece';
+			$QuicktimeStoreFrontCodeLookup[143449] = 'Ireland';
+			$QuicktimeStoreFrontCodeLookup[143450] = 'Italy';
+			$QuicktimeStoreFrontCodeLookup[143462] = 'Japan';
+			$QuicktimeStoreFrontCodeLookup[143451] = 'Luxembourg';
+			$QuicktimeStoreFrontCodeLookup[143452] = 'Netherlands';
+			$QuicktimeStoreFrontCodeLookup[143461] = 'New Zealand';
+			$QuicktimeStoreFrontCodeLookup[143457] = 'Norway';
+			$QuicktimeStoreFrontCodeLookup[143453] = 'Portugal';
+			$QuicktimeStoreFrontCodeLookup[143454] = 'Spain';
+			$QuicktimeStoreFrontCodeLookup[143456] = 'Sweden';
+			$QuicktimeStoreFrontCodeLookup[143459] = 'Switzerland';
+			$QuicktimeStoreFrontCodeLookup[143444] = 'United Kingdom';
+			$QuicktimeStoreFrontCodeLookup[143441] = 'United States';
+		}
+		return (isset($QuicktimeStoreFrontCodeLookup[$sfid]) ? $QuicktimeStoreFrontCodeLookup[$sfid] : 'invalid');
+	}
+
+	public function QuicktimeParseNikonNCTG($atom_data) {
+		// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#NCTG
+		// Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some Nikon cameras such as the Coolpix S8000 and D5100
+		// Data is stored as records of:
+		// * 4 bytes record type
+		// * 2 bytes size of data field type:
+		//     0x0001 = flag   (size field *= 1-byte)
+		//     0x0002 = char   (size field *= 1-byte)
+		//     0x0003 = DWORD+ (size field *= 2-byte), values are stored CDAB
+		//     0x0004 = QWORD+ (size field *= 4-byte), values are stored EFGHABCD
+		//     0x0005 = float  (size field *= 8-byte), values are stored aaaabbbb where value is aaaa/bbbb; possibly multiple sets of values appended together
+		//     0x0007 = bytes  (size field *= 1-byte), values are stored as ??????
+		//     0x0008 = ?????  (size field *= 2-byte), values are stored as ??????
+		// * 2 bytes data size field
+		// * ? bytes data (string data may be null-padded; datestamp fields are in the format "2011:05:25 20:24:15")
+		// all integers are stored BigEndian
+
+		$NCTGtagName = array(
+			0x00000001 => 'Make',
+			0x00000002 => 'Model',
+			0x00000003 => 'Software',
+			0x00000011 => 'CreateDate',
+			0x00000012 => 'DateTimeOriginal',
+			0x00000013 => 'FrameCount',
+			0x00000016 => 'FrameRate',
+			0x00000022 => 'FrameWidth',
+			0x00000023 => 'FrameHeight',
+			0x00000032 => 'AudioChannels',
+			0x00000033 => 'AudioBitsPerSample',
+			0x00000034 => 'AudioSampleRate',
+			0x02000001 => 'MakerNoteVersion',
+			0x02000005 => 'WhiteBalance',
+			0x0200000b => 'WhiteBalanceFineTune',
+			0x0200001e => 'ColorSpace',
+			0x02000023 => 'PictureControlData',
+			0x02000024 => 'WorldTime',
+			0x02000032 => 'UnknownInfo',
+			0x02000083 => 'LensType',
+			0x02000084 => 'Lens',
+		);
+
+		$offset = 0;
+		$datalength = strlen($atom_data);
+		$parsed = array();
+		while ($offset < $datalength) {
+//echo getid3_lib::PrintHexBytes(substr($atom_data, $offset, 4)).'<br>';
+			$record_type       = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 4));  $offset += 4;
+			$data_size_type    = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2));  $offset += 2;
+			$data_size         = getid3_lib::BigEndian2Int(substr($atom_data, $offset, 2));  $offset += 2;
+			switch ($data_size_type) {
+				case 0x0001: // 0x0001 = flag   (size field *= 1-byte)
+					$data = getid3_lib::BigEndian2Int(substr($atom_data, $offset, $data_size * 1));
+					$offset += ($data_size * 1);
+					break;
+				case 0x0002: // 0x0002 = char   (size field *= 1-byte)
+					$data = substr($atom_data, $offset, $data_size * 1);
+					$offset += ($data_size * 1);
+					$data = rtrim($data, "\x00");
+					break;
+				case 0x0003: // 0x0003 = DWORD+ (size field *= 2-byte), values are stored CDAB
+					$data = '';
+					for ($i = $data_size - 1; $i >= 0; $i--) {
+						$data .= substr($atom_data, $offset + ($i * 2), 2);
+					}
+					$data = getid3_lib::BigEndian2Int($data);
+					$offset += ($data_size * 2);
+					break;
+				case 0x0004: // 0x0004 = QWORD+ (size field *= 4-byte), values are stored EFGHABCD
+					$data = '';
+					for ($i = $data_size - 1; $i >= 0; $i--) {
+						$data .= substr($atom_data, $offset + ($i * 4), 4);
+					}
+					$data = getid3_lib::BigEndian2Int($data);
+					$offset += ($data_size * 4);
+					break;
+				case 0x0005: // 0x0005 = float  (size field *= 8-byte), values are stored aaaabbbb where value is aaaa/bbbb; possibly multiple sets of values appended together
+					$data = array();
+					for ($i = 0; $i < $data_size; $i++) {
+						$numerator    = getid3_lib::BigEndian2Int(substr($atom_data, $offset + ($i * 8) + 0, 4));
+						$denomninator = getid3_lib::BigEndian2Int(substr($atom_data, $offset + ($i * 8) + 4, 4));
+						if ($denomninator == 0) {
+							$data[$i] = false;
+						} else {
+							$data[$i] = (double) $numerator / $denomninator;
+						}
+					}
+					$offset += (8 * $data_size);
+					if (count($data) == 1) {
+						$data = $data[0];
+					}
+					break;
+				case 0x0007: // 0x0007 = bytes  (size field *= 1-byte), values are stored as ??????
+					$data = substr($atom_data, $offset, $data_size * 1);
+					$offset += ($data_size * 1);
+					break;
+				case 0x0008: // 0x0008 = ?????  (size field *= 2-byte), values are stored as ??????
+					$data = substr($atom_data, $offset, $data_size * 2);
+					$offset += ($data_size * 2);
+					break;
+				default:
+echo 'QuicktimeParseNikonNCTG()::unknown $data_size_type: '.$data_size_type.'<br>';
+					break 2;
+			}
+
+			switch ($record_type) {
+				case 0x00000011: // CreateDate
+				case 0x00000012: // DateTimeOriginal
+					$data = strtotime($data);
+					break;
+				case 0x0200001e: // ColorSpace
+					switch ($data) {
+						case 1:
+							$data = 'sRGB';
+							break;
+						case 2:
+							$data = 'Adobe RGB';
+							break;
+					}
+					break;
+				case 0x02000023: // PictureControlData
+					$PictureControlAdjust = array(0=>'default', 1=>'quick', 2=>'full');
+					$FilterEffect = array(0x80=>'off', 0x81=>'yellow', 0x82=>'orange',    0x83=>'red', 0x84=>'green',  0xff=>'n/a');
+					$ToningEffect = array(0x80=>'b&w', 0x81=>'sepia',  0x82=>'cyanotype', 0x83=>'red', 0x84=>'yellow', 0x85=>'green', 0x86=>'blue-green', 0x87=>'blue', 0x88=>'purple-blue', 0x89=>'red-purple', 0xff=>'n/a');
+					$data = array(
+						'PictureControlVersion'     =>                           substr($data,  0,  4),
+						'PictureControlName'        =>                     rtrim(substr($data,  4, 20), "\x00"),
+						'PictureControlBase'        =>                     rtrim(substr($data, 24, 20), "\x00"),
+						//'?'                       =>                           substr($data, 44,  4),
+						'PictureControlAdjust'      => $PictureControlAdjust[ord(substr($data, 48,  1))],
+						'PictureControlQuickAdjust' =>                       ord(substr($data, 49,  1)),
+						'Sharpness'                 =>                       ord(substr($data, 50,  1)),
+						'Contrast'                  =>                       ord(substr($data, 51,  1)),
+						'Brightness'                =>                       ord(substr($data, 52,  1)),
+						'Saturation'                =>                       ord(substr($data, 53,  1)),
+						'HueAdjustment'             =>                       ord(substr($data, 54,  1)),
+						'FilterEffect'              =>         $FilterEffect[ord(substr($data, 55,  1))],
+						'ToningEffect'              =>         $ToningEffect[ord(substr($data, 56,  1))],
+						'ToningSaturation'          =>                       ord(substr($data, 57,  1)),
+					);
+					break;
+				case 0x02000024: // WorldTime
+					// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html#WorldTime
+					// timezone is stored as offset from GMT in minutes
+					$timezone = getid3_lib::BigEndian2Int(substr($data, 0, 2));
+					if ($timezone & 0x8000) {
+						$timezone = 0 - (0x10000 - $timezone);
+					}
+					$timezone /= 60;
+
+					$dst = (bool) getid3_lib::BigEndian2Int(substr($data, 2, 1));
+					switch (getid3_lib::BigEndian2Int(substr($data, 3, 1))) {
+						case 2:
+							$datedisplayformat = 'D/M/Y'; break;
+						case 1:
+							$datedisplayformat = 'M/D/Y'; break;
+						case 0:
+						default:
+							$datedisplayformat = 'Y/M/D'; break;
+					}
+
+					$data = array('timezone'=>floatval($timezone), 'dst'=>$dst, 'display'=>$datedisplayformat);
+					break;
+				case 0x02000083: // LensType
+					$data = array(
+						//'_'  => $data,
+						'mf' => (bool) ($data & 0x01),
+						'd'  => (bool) ($data & 0x02),
+						'g'  => (bool) ($data & 0x04),
+						'vr' => (bool) ($data & 0x08),
+					);
+					break;
+			}
+			$tag_name = (isset($NCTGtagName[$record_type]) ? $NCTGtagName[$record_type] : '0x'.str_pad(dechex($record_type), 8, '0', STR_PAD_LEFT));
+			$parsed[$tag_name] = $data;
+		}
+		return $parsed;
+	}
+
+
+	public function CopyToAppropriateCommentsSection($keyname, $data, $boxname='') {
+		static $handyatomtranslatorarray = array();
+		if (empty($handyatomtranslatorarray)) {
+			$handyatomtranslatorarray['©cpy'] = 'copyright';
+			$handyatomtranslatorarray['©day'] = 'creation_date';    // iTunes 4.0
+			$handyatomtranslatorarray['©dir'] = 'director';
+			$handyatomtranslatorarray['©ed1'] = 'edit1';
+			$handyatomtranslatorarray['©ed2'] = 'edit2';
+			$handyatomtranslatorarray['©ed3'] = 'edit3';
+			$handyatomtranslatorarray['©ed4'] = 'edit4';
+			$handyatomtranslatorarray['©ed5'] = 'edit5';
+			$handyatomtranslatorarray['©ed6'] = 'edit6';
+			$handyatomtranslatorarray['©ed7'] = 'edit7';
+			$handyatomtranslatorarray['©ed8'] = 'edit8';
+			$handyatomtranslatorarray['©ed9'] = 'edit9';
+			$handyatomtranslatorarray['©fmt'] = 'format';
+			$handyatomtranslatorarray['©inf'] = 'information';
+			$handyatomtranslatorarray['©prd'] = 'producer';
+			$handyatomtranslatorarray['©prf'] = 'performers';
+			$handyatomtranslatorarray['©req'] = 'system_requirements';
+			$handyatomtranslatorarray['©src'] = 'source_credit';
+			$handyatomtranslatorarray['©wrt'] = 'writer';
+
+			// http://www.geocities.com/xhelmboyx/quicktime/formats/qtm-layout.txt
+			$handyatomtranslatorarray['©nam'] = 'title';           // iTunes 4.0
+			$handyatomtranslatorarray['©cmt'] = 'comment';         // iTunes 4.0
+			$handyatomtranslatorarray['©wrn'] = 'warning';
+			$handyatomtranslatorarray['©hst'] = 'host_computer';
+			$handyatomtranslatorarray['©mak'] = 'make';
+			$handyatomtranslatorarray['©mod'] = 'model';
+			$handyatomtranslatorarray['©PRD'] = 'product';
+			$handyatomtranslatorarray['©swr'] = 'software';
+			$handyatomtranslatorarray['©aut'] = 'author';
+			$handyatomtranslatorarray['©ART'] = 'artist';
+			$handyatomtranslatorarray['©trk'] = 'track';
+			$handyatomtranslatorarray['©alb'] = 'album';           // iTunes 4.0
+			$handyatomtranslatorarray['©com'] = 'comment';
+			$handyatomtranslatorarray['©gen'] = 'genre';           // iTunes 4.0
+			$handyatomtranslatorarray['©ope'] = 'composer';
+			$handyatomtranslatorarray['©url'] = 'url';
+			$handyatomtranslatorarray['©enc'] = 'encoder';
+
+			// http://atomicparsley.sourceforge.net/mpeg-4files.html
+			$handyatomtranslatorarray['©art'] = 'artist';           // iTunes 4.0
+			$handyatomtranslatorarray['aART'] = 'album_artist';
+			$handyatomtranslatorarray['trkn'] = 'track_number';     // iTunes 4.0
+			$handyatomtranslatorarray['disk'] = 'disc_number';      // iTunes 4.0
+			$handyatomtranslatorarray['gnre'] = 'genre';            // iTunes 4.0
+			$handyatomtranslatorarray['©too'] = 'encoder';          // iTunes 4.0
+			$handyatomtranslatorarray['tmpo'] = 'bpm';              // iTunes 4.0
+			$handyatomtranslatorarray['cprt'] = 'copyright';        // iTunes 4.0?
+			$handyatomtranslatorarray['cpil'] = 'compilation';      // iTunes 4.0
+			$handyatomtranslatorarray['covr'] = 'picture';          // iTunes 4.0
+			$handyatomtranslatorarray['rtng'] = 'rating';           // iTunes 4.0
+			$handyatomtranslatorarray['©grp'] = 'grouping';         // iTunes 4.2
+			$handyatomtranslatorarray['stik'] = 'stik';             // iTunes 4.9
+			$handyatomtranslatorarray['pcst'] = 'podcast';          // iTunes 4.9
+			$handyatomtranslatorarray['catg'] = 'category';         // iTunes 4.9
+			$handyatomtranslatorarray['keyw'] = 'keyword';          // iTunes 4.9
+			$handyatomtranslatorarray['purl'] = 'podcast_url';      // iTunes 4.9
+			$handyatomtranslatorarray['egid'] = 'episode_guid';     // iTunes 4.9
+			$handyatomtranslatorarray['desc'] = 'description';      // iTunes 5.0
+			$handyatomtranslatorarray['©lyr'] = 'lyrics';           // iTunes 5.0
+			$handyatomtranslatorarray['tvnn'] = 'tv_network_name';  // iTunes 6.0
+			$handyatomtranslatorarray['tvsh'] = 'tv_show_name';     // iTunes 6.0
+			$handyatomtranslatorarray['tvsn'] = 'tv_season';        // iTunes 6.0
+			$handyatomtranslatorarray['tves'] = 'tv_episode';       // iTunes 6.0
+			$handyatomtranslatorarray['purd'] = 'purchase_date';    // iTunes 6.0.2
+			$handyatomtranslatorarray['pgap'] = 'gapless_playback'; // iTunes 7.0
+
+			// http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt
+
+
+
+			// boxnames:
+			/*
+			$handyatomtranslatorarray['iTunSMPB']                    = 'iTunSMPB';
+			$handyatomtranslatorarray['iTunNORM']                    = 'iTunNORM';
+			$handyatomtranslatorarray['Encoding Params']             = 'Encoding Params';
+			$handyatomtranslatorarray['replaygain_track_gain']       = 'replaygain_track_gain';
+			$handyatomtranslatorarray['replaygain_track_peak']       = 'replaygain_track_peak';
+			$handyatomtranslatorarray['replaygain_track_minmax']     = 'replaygain_track_minmax';
+			$handyatomtranslatorarray['MusicIP PUID']                = 'MusicIP PUID';
+			$handyatomtranslatorarray['MusicBrainz Artist Id']       = 'MusicBrainz Artist Id';
+			$handyatomtranslatorarray['MusicBrainz Album Id']        = 'MusicBrainz Album Id';
+			$handyatomtranslatorarray['MusicBrainz Album Artist Id'] = 'MusicBrainz Album Artist Id';
+			$handyatomtranslatorarray['MusicBrainz Track Id']        = 'MusicBrainz Track Id';
+			$handyatomtranslatorarray['MusicBrainz Disc Id']         = 'MusicBrainz Disc Id';
+
+			// http://age.hobba.nl/audio/tag_frame_reference.html
+			$handyatomtranslatorarray['PLAY_COUNTER']                = 'play_counter'; // Foobar2000 - http://www.getid3.org/phpBB3/viewtopic.php?t=1355
+			$handyatomtranslatorarray['MEDIATYPE']                   = 'mediatype';    // Foobar2000 - http://www.getid3.org/phpBB3/viewtopic.php?t=1355
+			*/
+		}
+		$info = &$this->getid3->info;
+		$comment_key = '';
+		if ($boxname && ($boxname != $keyname)) {
+			$comment_key = (isset($handyatomtranslatorarray[$boxname]) ? $handyatomtranslatorarray[$boxname] : $boxname);
+		} elseif (isset($handyatomtranslatorarray[$keyname])) {
+			$comment_key = $handyatomtranslatorarray[$keyname];
+		}
+		if ($comment_key) {
+			if ($comment_key == 'picture') {
+				if (!is_array($data)) {
+					$image_mime = '';
+					if (preg_match('#^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A#', $data)) {
+						$image_mime = 'image/png';
+					} elseif (preg_match('#^\xFF\xD8\xFF#', $data)) {
+						$image_mime = 'image/jpeg';
+					} elseif (preg_match('#^GIF#', $data)) {
+						$image_mime = 'image/gif';
+					} elseif (preg_match('#^BM#', $data)) {
+						$image_mime = 'image/bmp';
+					}
+					$data = array('data'=>$data, 'image_mime'=>$image_mime);
+				}
+			}
+			$info['quicktime']['comments'][$comment_key][] = $data;
+		}
+		return true;
+	}
+
+	public function NoNullString($nullterminatedstring) {
+		// remove the single null terminator on null terminated strings
+		if (substr($nullterminatedstring, strlen($nullterminatedstring) - 1, 1) === "\x00") {
+			return substr($nullterminatedstring, 0, strlen($nullterminatedstring) - 1);
+		}
+		return $nullterminatedstring;
+	}
+
+	public function Pascal2String($pascalstring) {
+		// Pascal strings have 1 unsigned byte at the beginning saying how many chars (1-255) are in the string
+		return substr($pascalstring, 1);
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio-video.riff.php b/wp-includes/ID3/module.audio-video.riff.php
new file mode 100644
index 000000000..8f431009c
--- /dev/null
+++ b/wp-includes/ID3/module.audio-video.riff.php
@@ -0,0 +1,2435 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio-video.riff.php                                 //
+// module for analyzing RIFF files                             //
+// multiple formats supported by this module:                  //
+//    Wave, AVI, AIFF/AIFC, (MP3,AC3)/RIFF, Wavpack v3, 8SVX   //
+// dependencies: module.audio.mp3.php                          //
+//               module.audio.ac3.php                          //
+//               module.audio.dts.php                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+/**
+* @todo Parse AC-3/DTS audio inside WAVE correctly
+* @todo Rewrite RIFF parser totally
+*/
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true);
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, true);
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.dts.php', __FILE__, true);
+
+class getid3_riff extends getid3_handler
+{
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		// initialize these values to an empty array, otherwise they default to NULL
+		// and you can't append array values to a NULL value
+		$info['riff'] = array('raw'=>array());
+
+		// Shortcuts
+		$thisfile_riff             = &$info['riff'];
+		$thisfile_riff_raw         = &$thisfile_riff['raw'];
+		$thisfile_audio            = &$info['audio'];
+		$thisfile_video            = &$info['video'];
+		$thisfile_audio_dataformat = &$thisfile_audio['dataformat'];
+		$thisfile_riff_audio       = &$thisfile_riff['audio'];
+		$thisfile_riff_video       = &$thisfile_riff['video'];
+
+		$Original['avdataoffset'] = $info['avdataoffset'];
+		$Original['avdataend']    = $info['avdataend'];
+
+		$this->fseek($info['avdataoffset']);
+		$RIFFheader = $this->fread(12);
+		$offset = $this->ftell();
+		$RIFFtype    = substr($RIFFheader, 0, 4);
+		$RIFFsize    = substr($RIFFheader, 4, 4);
+		$RIFFsubtype = substr($RIFFheader, 8, 4);
+
+		switch ($RIFFtype) {
+
+			case 'FORM':  // AIFF, AIFC
+				$info['fileformat']   = 'aiff';
+				$thisfile_riff['header_size'] = $this->EitherEndian2Int($RIFFsize);
+				$thisfile_riff[$RIFFsubtype]  = $this->ParseRIFF($offset, ($offset + $thisfile_riff['header_size'] - 4));
+				break;
+
+			case 'RIFF':  // AVI, WAV, etc
+			case 'SDSS':  // SDSS is identical to RIFF, just renamed. Used by SmartSound QuickTracks (www.smartsound.com)
+			case 'RMP3':  // RMP3 is identical to RIFF, just renamed. Used by [unknown program] when creating RIFF-MP3s
+				$info['fileformat']   = 'riff';
+				$thisfile_riff['header_size'] = $this->EitherEndian2Int($RIFFsize);
+				if ($RIFFsubtype == 'RMP3') {
+					// RMP3 is identical to WAVE, just renamed. Used by [unknown program] when creating RIFF-MP3s
+					$RIFFsubtype = 'WAVE';
+				}
+				$thisfile_riff[$RIFFsubtype]  = $this->ParseRIFF($offset, ($offset + $thisfile_riff['header_size'] - 4));
+				if (($info['avdataend'] - $info['filesize']) == 1) {
+					// LiteWave appears to incorrectly *not* pad actual output file
+					// to nearest WORD boundary so may appear to be short by one
+					// byte, in which case - skip warning
+					$info['avdataend'] = $info['filesize'];
+				}
+
+				$nextRIFFoffset = $Original['avdataoffset'] + 8 + $thisfile_riff['header_size']; // 8 = "RIFF" + 32-bit offset
+				while ($nextRIFFoffset < min($info['filesize'], $info['avdataend'])) {
+					try {
+						$this->fseek($nextRIFFoffset);
+					} catch (getid3_exception $e) {
+						if ($e->getCode() == 10) {
+							//$this->warning('RIFF parser: '.$e->getMessage());
+							$this->error('AVI extends beyond '.round(PHP_INT_MAX / 1073741824).'GB and PHP filesystem functions cannot read that far, playtime may be wrong');
+							$this->warning('[avdataend] value may be incorrect, multiple AVIX chunks may be present');
+							break;
+						} else {
+							throw $e;
+						}
+					}
+					$nextRIFFheader = $this->fread(12);
+					if ($nextRIFFoffset == ($info['avdataend'] - 1)) {
+						if (substr($nextRIFFheader, 0, 1) == "\x00") {
+							// RIFF padded to WORD boundary, we're actually already at the end
+							break;
+						}
+					}
+					$nextRIFFheaderID =                         substr($nextRIFFheader, 0, 4);
+					$nextRIFFsize     = $this->EitherEndian2Int(substr($nextRIFFheader, 4, 4));
+					$nextRIFFtype     =                         substr($nextRIFFheader, 8, 4);
+					$chunkdata = array();
+					$chunkdata['offset'] = $nextRIFFoffset + 8;
+					$chunkdata['size']   = $nextRIFFsize;
+					$nextRIFFoffset = $chunkdata['offset'] + $chunkdata['size'];
+
+					switch ($nextRIFFheaderID) {
+
+						case 'RIFF':
+							$chunkdata['chunks'] = $this->ParseRIFF($chunkdata['offset'] + 4, $nextRIFFoffset);
+
+							if (!isset($thisfile_riff[$nextRIFFtype])) {
+								$thisfile_riff[$nextRIFFtype] = array();
+							}
+							$thisfile_riff[$nextRIFFtype][] = $chunkdata;
+							break;
+
+						case 'JUNK':
+							// ignore
+							$thisfile_riff[$nextRIFFheaderID][] = $chunkdata;
+							break;
+
+						case 'IDVX':
+							$info['divxtag']['comments'] = self::ParseDIVXTAG($this->fread($chunkdata['size']));
+							break;
+
+						default:
+							if ($info['filesize'] == ($chunkdata['offset'] - 8 + 128)) {
+								$DIVXTAG = $nextRIFFheader.$this->fread(128 - 12);
+								if (substr($DIVXTAG, -7) == 'DIVXTAG') {
+									// DIVXTAG is supposed to be inside an IDVX chunk in a LIST chunk, but some bad encoders just slap it on the end of a file
+									$this->warning('Found wrongly-structured DIVXTAG at offset '.($this->ftell() - 128).', parsing anyway');
+									$info['divxtag']['comments'] = self::ParseDIVXTAG($DIVXTAG);
+									break 2;
+								}
+							}
+							$this->warning('Expecting "RIFF|JUNK|IDVX" at '.$nextRIFFoffset.', found "'.$nextRIFFheaderID.'" ('.getid3_lib::PrintHexBytes($nextRIFFheaderID).') - skipping rest of file');
+							break 2;
+
+					}
+
+				}
+				if ($RIFFsubtype == 'WAVE') {
+					$thisfile_riff_WAVE = &$thisfile_riff['WAVE'];
+				}
+				break;
+
+			default:
+				$this->error('Cannot parse RIFF (this is maybe not a RIFF / WAV / AVI file?) - expecting "FORM|RIFF|SDSS|RMP3" found "'.$RIFFsubtype.'" instead');
+				unset($info['fileformat']);
+				return false;
+		}
+
+		$streamindex = 0;
+		switch ($RIFFsubtype) {
+			case 'WAVE':
+				if (empty($thisfile_audio['bitrate_mode'])) {
+					$thisfile_audio['bitrate_mode'] = 'cbr';
+				}
+				if (empty($thisfile_audio_dataformat)) {
+					$thisfile_audio_dataformat = 'wav';
+				}
+
+				if (isset($thisfile_riff_WAVE['data'][0]['offset'])) {
+					$info['avdataoffset'] = $thisfile_riff_WAVE['data'][0]['offset'] + 8;
+					$info['avdataend']    = $info['avdataoffset'] + $thisfile_riff_WAVE['data'][0]['size'];
+				}
+				if (isset($thisfile_riff_WAVE['fmt '][0]['data'])) {
+
+					$thisfile_riff_audio[$streamindex] = self::parseWAVEFORMATex($thisfile_riff_WAVE['fmt '][0]['data']);
+					$thisfile_audio['wformattag'] = $thisfile_riff_audio[$streamindex]['raw']['wFormatTag'];
+					if (!isset($thisfile_riff_audio[$streamindex]['bitrate']) || ($thisfile_riff_audio[$streamindex]['bitrate'] == 0)) {
+						$info['error'][] = 'Corrupt RIFF file: bitrate_audio == zero';
+						return false;
+					}
+					$thisfile_riff_raw['fmt '] = $thisfile_riff_audio[$streamindex]['raw'];
+					unset($thisfile_riff_audio[$streamindex]['raw']);
+					$thisfile_audio['streams'][$streamindex] = $thisfile_riff_audio[$streamindex];
+
+					$thisfile_audio = getid3_lib::array_merge_noclobber($thisfile_audio, $thisfile_riff_audio[$streamindex]);
+					if (substr($thisfile_audio['codec'], 0, strlen('unknown: 0x')) == 'unknown: 0x') {
+						$info['warning'][] = 'Audio codec = '.$thisfile_audio['codec'];
+					}
+					$thisfile_audio['bitrate'] = $thisfile_riff_audio[$streamindex]['bitrate'];
+
+					if (empty($info['playtime_seconds'])) { // may already be set (e.g. DTS-WAV)
+						$info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $thisfile_audio['bitrate']);
+					}
+
+					$thisfile_audio['lossless'] = false;
+					if (isset($thisfile_riff_WAVE['data'][0]['offset']) && isset($thisfile_riff_raw['fmt ']['wFormatTag'])) {
+						switch ($thisfile_riff_raw['fmt ']['wFormatTag']) {
+
+							case 0x0001:  // PCM
+								$thisfile_audio['lossless'] = true;
+								break;
+
+							case 0x2000:  // AC-3
+								$thisfile_audio_dataformat = 'ac3';
+								break;
+
+							default:
+								// do nothing
+								break;
+
+						}
+					}
+					$thisfile_audio['streams'][$streamindex]['wformattag']   = $thisfile_audio['wformattag'];
+					$thisfile_audio['streams'][$streamindex]['bitrate_mode'] = $thisfile_audio['bitrate_mode'];
+					$thisfile_audio['streams'][$streamindex]['lossless']     = $thisfile_audio['lossless'];
+					$thisfile_audio['streams'][$streamindex]['dataformat']   = $thisfile_audio_dataformat;
+				}
+
+				if (isset($thisfile_riff_WAVE['rgad'][0]['data'])) {
+
+					// shortcuts
+					$rgadData = &$thisfile_riff_WAVE['rgad'][0]['data'];
+					$thisfile_riff_raw['rgad']    = array('track'=>array(), 'album'=>array());
+					$thisfile_riff_raw_rgad       = &$thisfile_riff_raw['rgad'];
+					$thisfile_riff_raw_rgad_track = &$thisfile_riff_raw_rgad['track'];
+					$thisfile_riff_raw_rgad_album = &$thisfile_riff_raw_rgad['album'];
+
+					$thisfile_riff_raw_rgad['fPeakAmplitude']      = getid3_lib::LittleEndian2Float(substr($rgadData, 0, 4));
+					$thisfile_riff_raw_rgad['nRadioRgAdjust']      =        $this->EitherEndian2Int(substr($rgadData, 4, 2));
+					$thisfile_riff_raw_rgad['nAudiophileRgAdjust'] =        $this->EitherEndian2Int(substr($rgadData, 6, 2));
+
+					$nRadioRgAdjustBitstring      = str_pad(getid3_lib::Dec2Bin($thisfile_riff_raw_rgad['nRadioRgAdjust']), 16, '0', STR_PAD_LEFT);
+					$nAudiophileRgAdjustBitstring = str_pad(getid3_lib::Dec2Bin($thisfile_riff_raw_rgad['nAudiophileRgAdjust']), 16, '0', STR_PAD_LEFT);
+					$thisfile_riff_raw_rgad_track['name']       = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 0, 3));
+					$thisfile_riff_raw_rgad_track['originator'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 3, 3));
+					$thisfile_riff_raw_rgad_track['signbit']    = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 6, 1));
+					$thisfile_riff_raw_rgad_track['adjustment'] = getid3_lib::Bin2Dec(substr($nRadioRgAdjustBitstring, 7, 9));
+					$thisfile_riff_raw_rgad_album['name']       = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 0, 3));
+					$thisfile_riff_raw_rgad_album['originator'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 3, 3));
+					$thisfile_riff_raw_rgad_album['signbit']    = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 6, 1));
+					$thisfile_riff_raw_rgad_album['adjustment'] = getid3_lib::Bin2Dec(substr($nAudiophileRgAdjustBitstring, 7, 9));
+
+					$thisfile_riff['rgad']['peakamplitude'] = $thisfile_riff_raw_rgad['fPeakAmplitude'];
+					if (($thisfile_riff_raw_rgad_track['name'] != 0) && ($thisfile_riff_raw_rgad_track['originator'] != 0)) {
+						$thisfile_riff['rgad']['track']['name']            = getid3_lib::RGADnameLookup($thisfile_riff_raw_rgad_track['name']);
+						$thisfile_riff['rgad']['track']['originator']      = getid3_lib::RGADoriginatorLookup($thisfile_riff_raw_rgad_track['originator']);
+						$thisfile_riff['rgad']['track']['adjustment']      = getid3_lib::RGADadjustmentLookup($thisfile_riff_raw_rgad_track['adjustment'], $thisfile_riff_raw_rgad_track['signbit']);
+					}
+					if (($thisfile_riff_raw_rgad_album['name'] != 0) && ($thisfile_riff_raw_rgad_album['originator'] != 0)) {
+						$thisfile_riff['rgad']['album']['name']       = getid3_lib::RGADnameLookup($thisfile_riff_raw_rgad_album['name']);
+						$thisfile_riff['rgad']['album']['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_riff_raw_rgad_album['originator']);
+						$thisfile_riff['rgad']['album']['adjustment'] = getid3_lib::RGADadjustmentLookup($thisfile_riff_raw_rgad_album['adjustment'], $thisfile_riff_raw_rgad_album['signbit']);
+					}
+				}
+
+				if (isset($thisfile_riff_WAVE['fact'][0]['data'])) {
+					$thisfile_riff_raw['fact']['NumberOfSamples'] = $this->EitherEndian2Int(substr($thisfile_riff_WAVE['fact'][0]['data'], 0, 4));
+
+					// This should be a good way of calculating exact playtime,
+					// but some sample files have had incorrect number of samples,
+					// so cannot use this method
+
+					// if (!empty($thisfile_riff_raw['fmt ']['nSamplesPerSec'])) {
+					//     $info['playtime_seconds'] = (float) $thisfile_riff_raw['fact']['NumberOfSamples'] / $thisfile_riff_raw['fmt ']['nSamplesPerSec'];
+					// }
+				}
+				if (!empty($thisfile_riff_raw['fmt ']['nAvgBytesPerSec'])) {
+					$thisfile_audio['bitrate'] = getid3_lib::CastAsInt($thisfile_riff_raw['fmt ']['nAvgBytesPerSec'] * 8);
+				}
+
+				if (isset($thisfile_riff_WAVE['bext'][0]['data'])) {
+					// shortcut
+					$thisfile_riff_WAVE_bext_0 = &$thisfile_riff_WAVE['bext'][0];
+
+					$thisfile_riff_WAVE_bext_0['title']          =                         trim(substr($thisfile_riff_WAVE_bext_0['data'],   0, 256));
+					$thisfile_riff_WAVE_bext_0['author']         =                         trim(substr($thisfile_riff_WAVE_bext_0['data'], 256,  32));
+					$thisfile_riff_WAVE_bext_0['reference']      =                         trim(substr($thisfile_riff_WAVE_bext_0['data'], 288,  32));
+					$thisfile_riff_WAVE_bext_0['origin_date']    =                              substr($thisfile_riff_WAVE_bext_0['data'], 320,  10);
+					$thisfile_riff_WAVE_bext_0['origin_time']    =                              substr($thisfile_riff_WAVE_bext_0['data'], 330,   8);
+					$thisfile_riff_WAVE_bext_0['time_reference'] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_bext_0['data'], 338,   8));
+					$thisfile_riff_WAVE_bext_0['bwf_version']    = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_bext_0['data'], 346,   1));
+					$thisfile_riff_WAVE_bext_0['reserved']       =                              substr($thisfile_riff_WAVE_bext_0['data'], 347, 254);
+					$thisfile_riff_WAVE_bext_0['coding_history'] =         explode("\r\n", trim(substr($thisfile_riff_WAVE_bext_0['data'], 601)));
+					if (preg_match('#^([0-9]{4}).([0-9]{2}).([0-9]{2})$#', $thisfile_riff_WAVE_bext_0['origin_date'], $matches_bext_date)) {
+						if (preg_match('#^([0-9]{2}).([0-9]{2}).([0-9]{2})$#', $thisfile_riff_WAVE_bext_0['origin_time'], $matches_bext_time)) {
+							list($dummy, $bext_timestamp['year'], $bext_timestamp['month'],  $bext_timestamp['day'])    = $matches_bext_date;
+							list($dummy, $bext_timestamp['hour'], $bext_timestamp['minute'], $bext_timestamp['second']) = $matches_bext_time;
+							$thisfile_riff_WAVE_bext_0['origin_date_unix'] = gmmktime($bext_timestamp['hour'], $bext_timestamp['minute'], $bext_timestamp['second'], $bext_timestamp['month'], $bext_timestamp['day'], $bext_timestamp['year']);
+						} else {
+							$info['warning'][] = 'RIFF.WAVE.BEXT.origin_time is invalid';
+						}
+					} else {
+						$info['warning'][] = 'RIFF.WAVE.BEXT.origin_date is invalid';
+					}
+					$thisfile_riff['comments']['author'][] = $thisfile_riff_WAVE_bext_0['author'];
+					$thisfile_riff['comments']['title'][]  = $thisfile_riff_WAVE_bext_0['title'];
+				}
+
+				if (isset($thisfile_riff_WAVE['MEXT'][0]['data'])) {
+					// shortcut
+					$thisfile_riff_WAVE_MEXT_0 = &$thisfile_riff_WAVE['MEXT'][0];
+
+					$thisfile_riff_WAVE_MEXT_0['raw']['sound_information']      = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 0, 2));
+					$thisfile_riff_WAVE_MEXT_0['flags']['homogenous']           = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0001);
+					if ($thisfile_riff_WAVE_MEXT_0['flags']['homogenous']) {
+						$thisfile_riff_WAVE_MEXT_0['flags']['padding']          = ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0002) ? false : true;
+						$thisfile_riff_WAVE_MEXT_0['flags']['22_or_44']         =        (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0004);
+						$thisfile_riff_WAVE_MEXT_0['flags']['free_format']      =        (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['sound_information'] & 0x0008);
+
+						$thisfile_riff_WAVE_MEXT_0['nominal_frame_size']        = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 2, 2));
+					}
+					$thisfile_riff_WAVE_MEXT_0['anciliary_data_length']         = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 6, 2));
+					$thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def']     = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_MEXT_0['data'], 8, 2));
+					$thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_left']  = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0001);
+					$thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_free']  = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0002);
+					$thisfile_riff_WAVE_MEXT_0['flags']['anciliary_data_right'] = (bool) ($thisfile_riff_WAVE_MEXT_0['raw']['anciliary_data_def'] & 0x0004);
+				}
+
+				if (isset($thisfile_riff_WAVE['cart'][0]['data'])) {
+					// shortcut
+					$thisfile_riff_WAVE_cart_0 = &$thisfile_riff_WAVE['cart'][0];
+
+					$thisfile_riff_WAVE_cart_0['version']              =                              substr($thisfile_riff_WAVE_cart_0['data'],   0,  4);
+					$thisfile_riff_WAVE_cart_0['title']                =                         trim(substr($thisfile_riff_WAVE_cart_0['data'],   4, 64));
+					$thisfile_riff_WAVE_cart_0['artist']               =                         trim(substr($thisfile_riff_WAVE_cart_0['data'],  68, 64));
+					$thisfile_riff_WAVE_cart_0['cut_id']               =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 132, 64));
+					$thisfile_riff_WAVE_cart_0['client_id']            =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 196, 64));
+					$thisfile_riff_WAVE_cart_0['category']             =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 260, 64));
+					$thisfile_riff_WAVE_cart_0['classification']       =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 324, 64));
+					$thisfile_riff_WAVE_cart_0['out_cue']              =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 388, 64));
+					$thisfile_riff_WAVE_cart_0['start_date']           =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 452, 10));
+					$thisfile_riff_WAVE_cart_0['start_time']           =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 462,  8));
+					$thisfile_riff_WAVE_cart_0['end_date']             =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 470, 10));
+					$thisfile_riff_WAVE_cart_0['end_time']             =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 480,  8));
+					$thisfile_riff_WAVE_cart_0['producer_app_id']      =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 488, 64));
+					$thisfile_riff_WAVE_cart_0['producer_app_version'] =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 552, 64));
+					$thisfile_riff_WAVE_cart_0['user_defined_text']    =                         trim(substr($thisfile_riff_WAVE_cart_0['data'], 616, 64));
+					$thisfile_riff_WAVE_cart_0['zero_db_reference']    = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_cart_0['data'], 680,  4), true);
+					for ($i = 0; $i < 8; $i++) {
+						$thisfile_riff_WAVE_cart_0['post_time'][$i]['usage_fourcc'] =                  substr($thisfile_riff_WAVE_cart_0['data'], 684 + ($i * 8), 4);
+						$thisfile_riff_WAVE_cart_0['post_time'][$i]['timer_value']  = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE_cart_0['data'], 684 + ($i * 8) + 4, 4));
+					}
+					$thisfile_riff_WAVE_cart_0['url']              =                 trim(substr($thisfile_riff_WAVE_cart_0['data'],  748, 1024));
+					$thisfile_riff_WAVE_cart_0['tag_text']         = explode("\r\n", trim(substr($thisfile_riff_WAVE_cart_0['data'], 1772)));
+
+					$thisfile_riff['comments']['artist'][] = $thisfile_riff_WAVE_cart_0['artist'];
+					$thisfile_riff['comments']['title'][]  = $thisfile_riff_WAVE_cart_0['title'];
+				}
+
+				if (isset($thisfile_riff_WAVE['SNDM'][0]['data'])) {
+					// SoundMiner metadata
+
+					// shortcuts
+					$thisfile_riff_WAVE_SNDM_0      = &$thisfile_riff_WAVE['SNDM'][0];
+					$thisfile_riff_WAVE_SNDM_0_data = &$thisfile_riff_WAVE_SNDM_0['data'];
+					$SNDM_startoffset = 0;
+					$SNDM_endoffset   = $thisfile_riff_WAVE_SNDM_0['size'];
+
+					while ($SNDM_startoffset < $SNDM_endoffset) {
+						$SNDM_thisTagOffset = 0;
+						$SNDM_thisTagSize      = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 4));
+						$SNDM_thisTagOffset += 4;
+						$SNDM_thisTagKey       =                           substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 4);
+						$SNDM_thisTagOffset += 4;
+						$SNDM_thisTagDataSize  = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 2));
+						$SNDM_thisTagOffset += 2;
+						$SNDM_thisTagDataFlags = getid3_lib::BigEndian2Int(substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, 2));
+						$SNDM_thisTagOffset += 2;
+						$SNDM_thisTagDataText =                            substr($thisfile_riff_WAVE_SNDM_0_data, $SNDM_startoffset + $SNDM_thisTagOffset, $SNDM_thisTagDataSize);
+						$SNDM_thisTagOffset += $SNDM_thisTagDataSize;
+
+						if ($SNDM_thisTagSize != (4 + 4 + 2 + 2 + $SNDM_thisTagDataSize)) {
+							$info['warning'][] = 'RIFF.WAVE.SNDM.data contains tag not expected length (expected: '.$SNDM_thisTagSize.', found: '.(4 + 4 + 2 + 2 + $SNDM_thisTagDataSize).') at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
+							break;
+						} elseif ($SNDM_thisTagSize <= 0) {
+							$info['warning'][] = 'RIFF.WAVE.SNDM.data contains zero-size tag at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
+							break;
+						}
+						$SNDM_startoffset += $SNDM_thisTagSize;
+
+						$thisfile_riff_WAVE_SNDM_0['parsed_raw'][$SNDM_thisTagKey] = $SNDM_thisTagDataText;
+						if ($parsedkey = self::waveSNDMtagLookup($SNDM_thisTagKey)) {
+							$thisfile_riff_WAVE_SNDM_0['parsed'][$parsedkey] = $SNDM_thisTagDataText;
+						} else {
+							$info['warning'][] = 'RIFF.WAVE.SNDM contains unknown tag "'.$SNDM_thisTagKey.'" at offset '.$SNDM_startoffset.' (file offset '.($thisfile_riff_WAVE_SNDM_0['offset'] + $SNDM_startoffset).')';
+						}
+					}
+
+					$tagmapping = array(
+						'tracktitle'=>'title',
+						'category'  =>'genre',
+						'cdtitle'   =>'album',
+						'tracktitle'=>'title',
+					);
+					foreach ($tagmapping as $fromkey => $tokey) {
+						if (isset($thisfile_riff_WAVE_SNDM_0['parsed'][$fromkey])) {
+							$thisfile_riff['comments'][$tokey][] = $thisfile_riff_WAVE_SNDM_0['parsed'][$fromkey];
+						}
+					}
+				}
+
+				if (isset($thisfile_riff_WAVE['iXML'][0]['data'])) {
+					// requires functions simplexml_load_string and get_object_vars
+					if ($parsedXML = getid3_lib::XML2array($thisfile_riff_WAVE['iXML'][0]['data'])) {
+						$thisfile_riff_WAVE['iXML'][0]['parsed'] = $parsedXML;
+						if (isset($parsedXML['SPEED']['MASTER_SPEED'])) {
+							@list($numerator, $denominator) = explode('/', $parsedXML['SPEED']['MASTER_SPEED']);
+							$thisfile_riff_WAVE['iXML'][0]['master_speed'] = $numerator / ($denominator ? $denominator : 1000);
+						}
+						if (isset($parsedXML['SPEED']['TIMECODE_RATE'])) {
+							@list($numerator, $denominator) = explode('/', $parsedXML['SPEED']['TIMECODE_RATE']);
+							$thisfile_riff_WAVE['iXML'][0]['timecode_rate'] = $numerator / ($denominator ? $denominator : 1000);
+						}
+						if (isset($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO']) && !empty($parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE']) && !empty($thisfile_riff_WAVE['iXML'][0]['timecode_rate'])) {
+							$samples_since_midnight = floatval(ltrim($parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_HI'].$parsedXML['SPEED']['TIMESTAMP_SAMPLES_SINCE_MIDNIGHT_LO'], '0'));
+							$thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] = $samples_since_midnight / $parsedXML['SPEED']['TIMESTAMP_SAMPLE_RATE'];
+							$h = floor( $thisfile_riff_WAVE['iXML'][0]['timecode_seconds']       / 3600);
+							$m = floor(($thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600))      / 60);
+							$s = floor( $thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600) - ($m * 60));
+							$f =       ($thisfile_riff_WAVE['iXML'][0]['timecode_seconds'] - ($h * 3600) - ($m * 60) - $s) * $thisfile_riff_WAVE['iXML'][0]['timecode_rate'];
+							$thisfile_riff_WAVE['iXML'][0]['timecode_string']       = sprintf('%02d:%02d:%02d:%05.2f', $h, $m, $s,       $f);
+							$thisfile_riff_WAVE['iXML'][0]['timecode_string_round'] = sprintf('%02d:%02d:%02d:%02d',   $h, $m, $s, round($f));
+						}
+						unset($parsedXML);
+					}
+				}
+
+
+
+				if (!isset($thisfile_audio['bitrate']) && isset($thisfile_riff_audio[$streamindex]['bitrate'])) {
+					$thisfile_audio['bitrate'] = $thisfile_riff_audio[$streamindex]['bitrate'];
+					$info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $thisfile_audio['bitrate']);
+				}
+
+				if (!empty($info['wavpack'])) {
+					$thisfile_audio_dataformat = 'wavpack';
+					$thisfile_audio['bitrate_mode'] = 'vbr';
+					$thisfile_audio['encoder']      = 'WavPack v'.$info['wavpack']['version'];
+
+					// Reset to the way it was - RIFF parsing will have messed this up
+					$info['avdataend']        = $Original['avdataend'];
+					$thisfile_audio['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds'];
+
+					$this->fseek($info['avdataoffset'] - 44);
+					$RIFFdata = $this->fread(44);
+					$OrignalRIFFheaderSize = getid3_lib::LittleEndian2Int(substr($RIFFdata,  4, 4)) +  8;
+					$OrignalRIFFdataSize   = getid3_lib::LittleEndian2Int(substr($RIFFdata, 40, 4)) + 44;
+
+					if ($OrignalRIFFheaderSize > $OrignalRIFFdataSize) {
+						$info['avdataend'] -= ($OrignalRIFFheaderSize - $OrignalRIFFdataSize);
+						$this->fseek($info['avdataend']);
+						$RIFFdata .= $this->fread($OrignalRIFFheaderSize - $OrignalRIFFdataSize);
+					}
+
+					// move the data chunk after all other chunks (if any)
+					// so that the RIFF parser doesn't see EOF when trying
+					// to skip over the data chunk
+					$RIFFdata = substr($RIFFdata, 0, 36).substr($RIFFdata, 44).substr($RIFFdata, 36, 8);
+					$getid3_riff = new getid3_riff($this->getid3);
+					$getid3_riff->ParseRIFFdata($RIFFdata);
+					unset($getid3_riff);
+				}
+
+				if (isset($thisfile_riff_raw['fmt ']['wFormatTag'])) {
+					switch ($thisfile_riff_raw['fmt ']['wFormatTag']) {
+						case 0x0001: // PCM
+							if (!empty($info['ac3'])) {
+								// Dolby Digital WAV files masquerade as PCM-WAV, but they're not
+								$thisfile_audio['wformattag']  = 0x2000;
+								$thisfile_audio['codec']       = self::wFormatTagLookup($thisfile_audio['wformattag']);
+								$thisfile_audio['lossless']    = false;
+								$thisfile_audio['bitrate']     = $info['ac3']['bitrate'];
+								$thisfile_audio['sample_rate'] = $info['ac3']['sample_rate'];
+							}
+							if (!empty($info['dts'])) {
+								// Dolby DTS files masquerade as PCM-WAV, but they're not
+								$thisfile_audio['wformattag']  = 0x2001;
+								$thisfile_audio['codec']       = self::wFormatTagLookup($thisfile_audio['wformattag']);
+								$thisfile_audio['lossless']    = false;
+								$thisfile_audio['bitrate']     = $info['dts']['bitrate'];
+								$thisfile_audio['sample_rate'] = $info['dts']['sample_rate'];
+							}
+							break;
+						case 0x08AE: // ClearJump LiteWave
+							$thisfile_audio['bitrate_mode'] = 'vbr';
+							$thisfile_audio_dataformat   = 'litewave';
+
+							//typedef struct tagSLwFormat {
+							//  WORD    m_wCompFormat;     // low byte defines compression method, high byte is compression flags
+							//  DWORD   m_dwScale;         // scale factor for lossy compression
+							//  DWORD   m_dwBlockSize;     // number of samples in encoded blocks
+							//  WORD    m_wQuality;        // alias for the scale factor
+							//  WORD    m_wMarkDistance;   // distance between marks in bytes
+							//  WORD    m_wReserved;
+							//
+							//  //following paramters are ignored if CF_FILESRC is not set
+							//  DWORD   m_dwOrgSize;       // original file size in bytes
+							//  WORD    m_bFactExists;     // indicates if 'fact' chunk exists in the original file
+							//  DWORD   m_dwRiffChunkSize; // riff chunk size in the original file
+							//
+							//  PCMWAVEFORMAT m_OrgWf;     // original wave format
+							// }SLwFormat, *PSLwFormat;
+
+							// shortcut
+							$thisfile_riff['litewave']['raw'] = array();
+							$riff_litewave     = &$thisfile_riff['litewave'];
+							$riff_litewave_raw = &$riff_litewave['raw'];
+
+							$flags = array(
+								'compression_method' => 1,
+								'compression_flags'  => 1,
+								'm_dwScale'          => 4,
+								'm_dwBlockSize'      => 4,
+								'm_wQuality'         => 2,
+								'm_wMarkDistance'    => 2,
+								'm_wReserved'        => 2,
+								'm_dwOrgSize'        => 4,
+								'm_bFactExists'      => 2,
+								'm_dwRiffChunkSize'  => 4,
+							);
+							$litewave_offset = 18;
+							foreach ($flags as $flag => $length) {
+								$riff_litewave_raw[$flag] = getid3_lib::LittleEndian2Int(substr($thisfile_riff_WAVE['fmt '][0]['data'], $litewave_offset, $length));
+								$litewave_offset += $length;
+							}
+
+							//$riff_litewave['quality_factor'] = intval(round((2000 - $riff_litewave_raw['m_dwScale']) / 20));
+							$riff_litewave['quality_factor'] = $riff_litewave_raw['m_wQuality'];
+
+							$riff_litewave['flags']['raw_source']    = ($riff_litewave_raw['compression_flags'] & 0x01) ? false : true;
+							$riff_litewave['flags']['vbr_blocksize'] = ($riff_litewave_raw['compression_flags'] & 0x02) ? false : true;
+							$riff_litewave['flags']['seekpoints']    =        (bool) ($riff_litewave_raw['compression_flags'] & 0x04);
+
+							$thisfile_audio['lossless']        = (($riff_litewave_raw['m_wQuality'] == 100) ? true : false);
+							$thisfile_audio['encoder_options'] = '-q'.$riff_litewave['quality_factor'];
+							break;
+
+						default:
+							break;
+					}
+				}
+				if ($info['avdataend'] > $info['filesize']) {
+					switch (!empty($thisfile_audio_dataformat) ? $thisfile_audio_dataformat : '') {
+						case 'wavpack': // WavPack
+						case 'lpac':    // LPAC
+						case 'ofr':     // OptimFROG
+						case 'ofs':     // OptimFROG DualStream
+							// lossless compressed audio formats that keep original RIFF headers - skip warning
+							break;
+
+						case 'litewave':
+							if (($info['avdataend'] - $info['filesize']) == 1) {
+								// LiteWave appears to incorrectly *not* pad actual output file
+								// to nearest WORD boundary so may appear to be short by one
+								// byte, in which case - skip warning
+							} else {
+								// Short by more than one byte, throw warning
+								$info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
+								$info['avdataend'] = $info['filesize'];
+							}
+							break;
+
+						default:
+							if ((($info['avdataend'] - $info['filesize']) == 1) && (($thisfile_riff[$RIFFsubtype]['data'][0]['size'] % 2) == 0) && ((($info['filesize'] - $info['avdataoffset']) % 2) == 1)) {
+								// output file appears to be incorrectly *not* padded to nearest WORD boundary
+								// Output less severe warning
+								$info['warning'][] = 'File should probably be padded to nearest WORD boundary, but it is not (expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' therefore short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
+								$info['avdataend'] = $info['filesize'];
+							} else {
+								// Short by more than one byte, throw warning
+								$info['warning'][] = 'Probably truncated file - expecting '.$thisfile_riff[$RIFFsubtype]['data'][0]['size'].' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($thisfile_riff[$RIFFsubtype]['data'][0]['size'] - ($info['filesize'] - $info['avdataoffset'])).' bytes)';
+								$info['avdataend'] = $info['filesize'];
+							}
+							break;
+					}
+				}
+				if (!empty($info['mpeg']['audio']['LAME']['audio_bytes'])) {
+					if ((($info['avdataend'] - $info['avdataoffset']) - $info['mpeg']['audio']['LAME']['audio_bytes']) == 1) {
+						$info['avdataend']--;
+						$info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored';
+					}
+				}
+				if (isset($thisfile_audio_dataformat) && ($thisfile_audio_dataformat == 'ac3')) {
+					unset($thisfile_audio['bits_per_sample']);
+					if (!empty($info['ac3']['bitrate']) && ($info['ac3']['bitrate'] != $thisfile_audio['bitrate'])) {
+						$thisfile_audio['bitrate'] = $info['ac3']['bitrate'];
+					}
+				}
+				break;
+
+			case 'AVI ':
+				$thisfile_video['bitrate_mode'] = 'vbr'; // maybe not, but probably
+				$thisfile_video['dataformat']   = 'avi';
+				$info['mime_type']      = 'video/avi';
+
+				if (isset($thisfile_riff[$RIFFsubtype]['movi']['offset'])) {
+					$info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['movi']['offset'] + 8;
+					if (isset($thisfile_riff['AVIX'])) {
+						$info['avdataend'] = $thisfile_riff['AVIX'][(count($thisfile_riff['AVIX']) - 1)]['chunks']['movi']['offset'] + $thisfile_riff['AVIX'][(count($thisfile_riff['AVIX']) - 1)]['chunks']['movi']['size'];
+					} else {
+						$info['avdataend'] = $thisfile_riff['AVI ']['movi']['offset'] + $thisfile_riff['AVI ']['movi']['size'];
+					}
+					if ($info['avdataend'] > $info['filesize']) {
+						$info['warning'][] = 'Probably truncated file - expecting '.($info['avdataend'] - $info['avdataoffset']).' bytes of data, only found '.($info['filesize'] - $info['avdataoffset']).' (short by '.($info['avdataend'] - $info['filesize']).' bytes)';
+						$info['avdataend'] = $info['filesize'];
+					}
+				}
+
+				if (isset($thisfile_riff['AVI ']['hdrl']['strl']['indx'])) {
+					//$bIndexType = array(
+					//	0x00 => 'AVI_INDEX_OF_INDEXES',
+					//	0x01 => 'AVI_INDEX_OF_CHUNKS',
+					//	0x80 => 'AVI_INDEX_IS_DATA',
+					//);
+					//$bIndexSubtype = array(
+					//	0x01 => array(
+					//		0x01 => 'AVI_INDEX_2FIELD',
+					//	),
+					//);
+					foreach ($thisfile_riff['AVI ']['hdrl']['strl']['indx'] as $streamnumber => $steamdataarray) {
+						$ahsisd = &$thisfile_riff['AVI ']['hdrl']['strl']['indx'][$streamnumber]['data'];
+
+						$thisfile_riff_raw['indx'][$streamnumber]['wLongsPerEntry'] = $this->EitherEndian2Int(substr($ahsisd,  0, 2));
+						$thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType']  = $this->EitherEndian2Int(substr($ahsisd,  2, 1));
+						$thisfile_riff_raw['indx'][$streamnumber]['bIndexType']     = $this->EitherEndian2Int(substr($ahsisd,  3, 1));
+						$thisfile_riff_raw['indx'][$streamnumber]['nEntriesInUse']  = $this->EitherEndian2Int(substr($ahsisd,  4, 4));
+						$thisfile_riff_raw['indx'][$streamnumber]['dwChunkId']      =                         substr($ahsisd,  8, 4);
+						$thisfile_riff_raw['indx'][$streamnumber]['dwReserved']     = $this->EitherEndian2Int(substr($ahsisd, 12, 4));
+
+						//$thisfile_riff_raw['indx'][$streamnumber]['bIndexType_name']    =    $bIndexType[$thisfile_riff_raw['indx'][$streamnumber]['bIndexType']];
+						//$thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType_name'] = $bIndexSubtype[$thisfile_riff_raw['indx'][$streamnumber]['bIndexType']][$thisfile_riff_raw['indx'][$streamnumber]['bIndexSubType']];
+
+						unset($ahsisd);
+					}
+				}
+				if (isset($thisfile_riff['AVI ']['hdrl']['avih'][$streamindex]['data'])) {
+					$avihData = $thisfile_riff['AVI ']['hdrl']['avih'][$streamindex]['data'];
+
+					// shortcut
+					$thisfile_riff_raw['avih'] = array();
+					$thisfile_riff_raw_avih = &$thisfile_riff_raw['avih'];
+
+					$thisfile_riff_raw_avih['dwMicroSecPerFrame']    = $this->EitherEndian2Int(substr($avihData,  0, 4)); // frame display rate (or 0L)
+					if ($thisfile_riff_raw_avih['dwMicroSecPerFrame'] == 0) {
+						$info['error'][] = 'Corrupt RIFF file: avih.dwMicroSecPerFrame == zero';
+						return false;
+					}
+
+					$flags = array(
+						'dwMaxBytesPerSec',       // max. transfer rate
+						'dwPaddingGranularity',   // pad to multiples of this size; normally 2K.
+						'dwFlags',                // the ever-present flags
+						'dwTotalFrames',          // # frames in file
+						'dwInitialFrames',        //
+						'dwStreams',              //
+						'dwSuggestedBufferSize',  //
+						'dwWidth',                //
+						'dwHeight',               //
+						'dwScale',                //
+						'dwRate',                 //
+						'dwStart',                //
+						'dwLength',               //
+					);
+					$avih_offset = 4;
+					foreach ($flags as $flag) {
+						$thisfile_riff_raw_avih[$flag] = $this->EitherEndian2Int(substr($avihData, $avih_offset, 4));
+						$avih_offset += 4;
+					}
+
+					$flags = array(
+						'hasindex'     => 0x00000010,
+						'mustuseindex' => 0x00000020,
+						'interleaved'  => 0x00000100,
+						'trustcktype'  => 0x00000800,
+						'capturedfile' => 0x00010000,
+						'copyrighted'  => 0x00020010,
+					);
+                    foreach ($flags as $flag => $value) {
+						$thisfile_riff_raw_avih['flags'][$flag] = (bool) ($thisfile_riff_raw_avih['dwFlags'] & $value);
+					}
+
+					// shortcut
+					$thisfile_riff_video[$streamindex] = array();
+					$thisfile_riff_video_current = &$thisfile_riff_video[$streamindex];
+
+					if ($thisfile_riff_raw_avih['dwWidth'] > 0) {
+						$thisfile_riff_video_current['frame_width'] = $thisfile_riff_raw_avih['dwWidth'];
+						$thisfile_video['resolution_x']             = $thisfile_riff_video_current['frame_width'];
+					}
+					if ($thisfile_riff_raw_avih['dwHeight'] > 0) {
+						$thisfile_riff_video_current['frame_height'] = $thisfile_riff_raw_avih['dwHeight'];
+						$thisfile_video['resolution_y']              = $thisfile_riff_video_current['frame_height'];
+					}
+					if ($thisfile_riff_raw_avih['dwTotalFrames'] > 0) {
+						$thisfile_riff_video_current['total_frames'] = $thisfile_riff_raw_avih['dwTotalFrames'];
+						$thisfile_video['total_frames']              = $thisfile_riff_video_current['total_frames'];
+					}
+
+					$thisfile_riff_video_current['frame_rate'] = round(1000000 / $thisfile_riff_raw_avih['dwMicroSecPerFrame'], 3);
+					$thisfile_video['frame_rate'] = $thisfile_riff_video_current['frame_rate'];
+				}
+				if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strh'][0]['data'])) {
+					if (is_array($thisfile_riff['AVI ']['hdrl']['strl']['strh'])) {
+						for ($i = 0; $i < count($thisfile_riff['AVI ']['hdrl']['strl']['strh']); $i++) {
+							if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strh'][$i]['data'])) {
+								$strhData = $thisfile_riff['AVI ']['hdrl']['strl']['strh'][$i]['data'];
+								$strhfccType = substr($strhData,  0, 4);
+
+								if (isset($thisfile_riff['AVI ']['hdrl']['strl']['strf'][$i]['data'])) {
+									$strfData = $thisfile_riff['AVI ']['hdrl']['strl']['strf'][$i]['data'];
+
+									// shortcut
+									$thisfile_riff_raw_strf_strhfccType_streamindex = &$thisfile_riff_raw['strf'][$strhfccType][$streamindex];
+
+									switch ($strhfccType) {
+										case 'auds':
+											$thisfile_audio['bitrate_mode'] = 'cbr';
+											$thisfile_audio_dataformat      = 'wav';
+											if (isset($thisfile_riff_audio) && is_array($thisfile_riff_audio)) {
+												$streamindex = count($thisfile_riff_audio);
+											}
+
+											$thisfile_riff_audio[$streamindex] = self::parseWAVEFORMATex($strfData);
+											$thisfile_audio['wformattag'] = $thisfile_riff_audio[$streamindex]['raw']['wFormatTag'];
+
+											// shortcut
+											$thisfile_audio['streams'][$streamindex] = $thisfile_riff_audio[$streamindex];
+											$thisfile_audio_streams_currentstream = &$thisfile_audio['streams'][$streamindex];
+
+											if ($thisfile_audio_streams_currentstream['bits_per_sample'] == 0) {
+												unset($thisfile_audio_streams_currentstream['bits_per_sample']);
+											}
+											$thisfile_audio_streams_currentstream['wformattag'] = $thisfile_audio_streams_currentstream['raw']['wFormatTag'];
+											unset($thisfile_audio_streams_currentstream['raw']);
+
+											// shortcut
+											$thisfile_riff_raw['strf'][$strhfccType][$streamindex] = $thisfile_riff_audio[$streamindex]['raw'];
+
+											unset($thisfile_riff_audio[$streamindex]['raw']);
+											$thisfile_audio = getid3_lib::array_merge_noclobber($thisfile_audio, $thisfile_riff_audio[$streamindex]);
+
+											$thisfile_audio['lossless'] = false;
+											switch ($thisfile_riff_raw_strf_strhfccType_streamindex['wFormatTag']) {
+												case 0x0001:  // PCM
+													$thisfile_audio_dataformat  = 'wav';
+													$thisfile_audio['lossless'] = true;
+													break;
+
+												case 0x0050: // MPEG Layer 2 or Layer 1
+													$thisfile_audio_dataformat = 'mp2'; // Assume Layer-2
+													break;
+
+												case 0x0055: // MPEG Layer 3
+													$thisfile_audio_dataformat = 'mp3';
+													break;
+
+												case 0x00FF: // AAC
+													$thisfile_audio_dataformat = 'aac';
+													break;
+
+												case 0x0161: // Windows Media v7 / v8 / v9
+												case 0x0162: // Windows Media Professional v9
+												case 0x0163: // Windows Media Lossess v9
+													$thisfile_audio_dataformat = 'wma';
+													break;
+
+												case 0x2000: // AC-3
+													$thisfile_audio_dataformat = 'ac3';
+													break;
+
+												case 0x2001: // DTS
+													$thisfile_audio_dataformat = 'dts';
+													break;
+
+												default:
+													$thisfile_audio_dataformat = 'wav';
+													break;
+											}
+											$thisfile_audio_streams_currentstream['dataformat']   = $thisfile_audio_dataformat;
+											$thisfile_audio_streams_currentstream['lossless']     = $thisfile_audio['lossless'];
+											$thisfile_audio_streams_currentstream['bitrate_mode'] = $thisfile_audio['bitrate_mode'];
+											break;
+
+
+										case 'iavs':
+										case 'vids':
+											// shortcut
+											$thisfile_riff_raw['strh'][$i]                  = array();
+											$thisfile_riff_raw_strh_current                 = &$thisfile_riff_raw['strh'][$i];
+
+											$thisfile_riff_raw_strh_current['fccType']               =                         substr($strhData,  0, 4);  // same as $strhfccType;
+											$thisfile_riff_raw_strh_current['fccHandler']            =                         substr($strhData,  4, 4);
+											$thisfile_riff_raw_strh_current['dwFlags']               = $this->EitherEndian2Int(substr($strhData,  8, 4)); // Contains AVITF_* flags
+											$thisfile_riff_raw_strh_current['wPriority']             = $this->EitherEndian2Int(substr($strhData, 12, 2));
+											$thisfile_riff_raw_strh_current['wLanguage']             = $this->EitherEndian2Int(substr($strhData, 14, 2));
+											$thisfile_riff_raw_strh_current['dwInitialFrames']       = $this->EitherEndian2Int(substr($strhData, 16, 4));
+											$thisfile_riff_raw_strh_current['dwScale']               = $this->EitherEndian2Int(substr($strhData, 20, 4));
+											$thisfile_riff_raw_strh_current['dwRate']                = $this->EitherEndian2Int(substr($strhData, 24, 4));
+											$thisfile_riff_raw_strh_current['dwStart']               = $this->EitherEndian2Int(substr($strhData, 28, 4));
+											$thisfile_riff_raw_strh_current['dwLength']              = $this->EitherEndian2Int(substr($strhData, 32, 4));
+											$thisfile_riff_raw_strh_current['dwSuggestedBufferSize'] = $this->EitherEndian2Int(substr($strhData, 36, 4));
+											$thisfile_riff_raw_strh_current['dwQuality']             = $this->EitherEndian2Int(substr($strhData, 40, 4));
+											$thisfile_riff_raw_strh_current['dwSampleSize']          = $this->EitherEndian2Int(substr($strhData, 44, 4));
+											$thisfile_riff_raw_strh_current['rcFrame']               = $this->EitherEndian2Int(substr($strhData, 48, 4));
+
+											$thisfile_riff_video_current['codec'] = self::fourccLookup($thisfile_riff_raw_strh_current['fccHandler']);
+											$thisfile_video['fourcc']             = $thisfile_riff_raw_strh_current['fccHandler'];
+											if (!$thisfile_riff_video_current['codec'] && isset($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']) && self::fourccLookup($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'])) {
+												$thisfile_riff_video_current['codec'] = self::fourccLookup($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']);
+												$thisfile_video['fourcc']             = $thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'];
+											}
+											$thisfile_video['codec']              = $thisfile_riff_video_current['codec'];
+											$thisfile_video['pixel_aspect_ratio'] = (float) 1;
+											switch ($thisfile_riff_raw_strh_current['fccHandler']) {
+												case 'HFYU': // Huffman Lossless Codec
+												case 'IRAW': // Intel YUV Uncompressed
+												case 'YUY2': // Uncompressed YUV 4:2:2
+													$thisfile_video['lossless'] = true;
+													break;
+
+												default:
+													$thisfile_video['lossless'] = false;
+													break;
+											}
+
+											switch ($strhfccType) {
+												case 'vids':
+													$thisfile_riff_raw_strf_strhfccType_streamindex = self::ParseBITMAPINFOHEADER(substr($strfData, 0, 40), ($info['fileformat'] == 'riff'));
+													$thisfile_video['bits_per_sample'] = $thisfile_riff_raw_strf_strhfccType_streamindex['biBitCount'];
+
+													if ($thisfile_riff_video_current['codec'] == 'DV') {
+														$thisfile_riff_video_current['dv_type'] = 2;
+													}
+													break;
+
+												case 'iavs':
+													$thisfile_riff_video_current['dv_type'] = 1;
+													break;
+											}
+											break;
+
+										default:
+											$info['warning'][] = 'Unhandled fccType for stream ('.$i.'): "'.$strhfccType.'"';
+											break;
+
+									}
+								}
+							}
+
+							if (isset($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'])) {
+
+								$thisfile_video['fourcc'] = $thisfile_riff_raw_strf_strhfccType_streamindex['fourcc'];
+								if (self::fourccLookup($thisfile_video['fourcc'])) {
+									$thisfile_riff_video_current['codec'] = self::fourccLookup($thisfile_video['fourcc']);
+									$thisfile_video['codec']              = $thisfile_riff_video_current['codec'];
+								}
+
+								switch ($thisfile_riff_raw_strf_strhfccType_streamindex['fourcc']) {
+									case 'HFYU': // Huffman Lossless Codec
+									case 'IRAW': // Intel YUV Uncompressed
+									case 'YUY2': // Uncompressed YUV 4:2:2
+										$thisfile_video['lossless']        = true;
+										//$thisfile_video['bits_per_sample'] = 24;
+										break;
+
+									default:
+										$thisfile_video['lossless']        = false;
+										//$thisfile_video['bits_per_sample'] = 24;
+										break;
+								}
+
+							}
+						}
+					}
+				}
+				break;
+
+			case 'CDDA':
+				$thisfile_audio['bitrate_mode'] = 'cbr';
+				$thisfile_audio_dataformat      = 'cda';
+				$thisfile_audio['lossless']     = true;
+				unset($info['mime_type']);
+
+				$info['avdataoffset'] = 44;
+
+				if (isset($thisfile_riff['CDDA']['fmt '][0]['data'])) {
+					// shortcut
+					$thisfile_riff_CDDA_fmt_0 = &$thisfile_riff['CDDA']['fmt '][0];
+
+					$thisfile_riff_CDDA_fmt_0['unknown1']           = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'],  0, 2));
+					$thisfile_riff_CDDA_fmt_0['track_num']          = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'],  2, 2));
+					$thisfile_riff_CDDA_fmt_0['disc_id']            = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'],  4, 4));
+					$thisfile_riff_CDDA_fmt_0['start_offset_frame'] = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'],  8, 4));
+					$thisfile_riff_CDDA_fmt_0['playtime_frames']    = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 12, 4));
+					$thisfile_riff_CDDA_fmt_0['unknown6']           = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 16, 4));
+					$thisfile_riff_CDDA_fmt_0['unknown7']           = $this->EitherEndian2Int(substr($thisfile_riff_CDDA_fmt_0['data'], 20, 4));
+
+					$thisfile_riff_CDDA_fmt_0['start_offset_seconds'] = (float) $thisfile_riff_CDDA_fmt_0['start_offset_frame'] / 75;
+					$thisfile_riff_CDDA_fmt_0['playtime_seconds']     = (float) $thisfile_riff_CDDA_fmt_0['playtime_frames'] / 75;
+					$info['comments']['track']                = $thisfile_riff_CDDA_fmt_0['track_num'];
+					$info['playtime_seconds']                 = $thisfile_riff_CDDA_fmt_0['playtime_seconds'];
+
+					// hardcoded data for CD-audio
+					$thisfile_audio['sample_rate']     = 44100;
+					$thisfile_audio['channels']        = 2;
+					$thisfile_audio['bits_per_sample'] = 16;
+					$thisfile_audio['bitrate']         = $thisfile_audio['sample_rate'] * $thisfile_audio['channels'] * $thisfile_audio['bits_per_sample'];
+					$thisfile_audio['bitrate_mode']    = 'cbr';
+				}
+				break;
+
+
+			case 'AIFF':
+			case 'AIFC':
+				$thisfile_audio['bitrate_mode'] = 'cbr';
+				$thisfile_audio_dataformat      = 'aiff';
+				$thisfile_audio['lossless']     = true;
+				$info['mime_type']      = 'audio/x-aiff';
+
+				if (isset($thisfile_riff[$RIFFsubtype]['SSND'][0]['offset'])) {
+					$info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['SSND'][0]['offset'] + 8;
+					$info['avdataend']    = $info['avdataoffset'] + $thisfile_riff[$RIFFsubtype]['SSND'][0]['size'];
+					if ($info['avdataend'] > $info['filesize']) {
+						if (($info['avdataend'] == ($info['filesize'] + 1)) && (($info['filesize'] % 2) == 1)) {
+							// structures rounded to 2-byte boundary, but dumb encoders
+							// forget to pad end of file to make this actually work
+						} else {
+							$info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['SSND'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found';
+						}
+						$info['avdataend'] = $info['filesize'];
+					}
+				}
+
+				if (isset($thisfile_riff[$RIFFsubtype]['COMM'][0]['data'])) {
+
+					// shortcut
+					$thisfile_riff_RIFFsubtype_COMM_0_data = &$thisfile_riff[$RIFFsubtype]['COMM'][0]['data'];
+
+					$thisfile_riff_audio['channels']         =         getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data,  0,  2), true);
+					$thisfile_riff_audio['total_samples']    =         getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data,  2,  4), false);
+					$thisfile_riff_audio['bits_per_sample']  =         getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data,  6,  2), true);
+					$thisfile_riff_audio['sample_rate']      = (int) getid3_lib::BigEndian2Float(substr($thisfile_riff_RIFFsubtype_COMM_0_data,  8, 10));
+
+					if ($thisfile_riff[$RIFFsubtype]['COMM'][0]['size'] > 18) {
+						$thisfile_riff_audio['codec_fourcc'] =                                   substr($thisfile_riff_RIFFsubtype_COMM_0_data, 18,  4);
+						$CodecNameSize                       =         getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_COMM_0_data, 22,  1), false);
+						$thisfile_riff_audio['codec_name']   =                                   substr($thisfile_riff_RIFFsubtype_COMM_0_data, 23,  $CodecNameSize);
+						switch ($thisfile_riff_audio['codec_name']) {
+							case 'NONE':
+								$thisfile_audio['codec']    = 'Pulse Code Modulation (PCM)';
+								$thisfile_audio['lossless'] = true;
+								break;
+
+							case '':
+								switch ($thisfile_riff_audio['codec_fourcc']) {
+									// http://developer.apple.com/qa/snd/snd07.html
+									case 'sowt':
+										$thisfile_riff_audio['codec_name'] = 'Two\'s Compliment Little-Endian PCM';
+										$thisfile_audio['lossless'] = true;
+										break;
+
+									case 'twos':
+										$thisfile_riff_audio['codec_name'] = 'Two\'s Compliment Big-Endian PCM';
+										$thisfile_audio['lossless'] = true;
+										break;
+
+									default:
+										break;
+								}
+								break;
+
+							default:
+								$thisfile_audio['codec']    = $thisfile_riff_audio['codec_name'];
+								$thisfile_audio['lossless'] = false;
+								break;
+						}
+					}
+
+					$thisfile_audio['channels']        = $thisfile_riff_audio['channels'];
+					if ($thisfile_riff_audio['bits_per_sample'] > 0) {
+						$thisfile_audio['bits_per_sample'] = $thisfile_riff_audio['bits_per_sample'];
+					}
+					$thisfile_audio['sample_rate']     = $thisfile_riff_audio['sample_rate'];
+					if ($thisfile_audio['sample_rate'] == 0) {
+						$info['error'][] = 'Corrupted AIFF file: sample_rate == zero';
+						return false;
+					}
+					$info['playtime_seconds'] = $thisfile_riff_audio['total_samples'] / $thisfile_audio['sample_rate'];
+				}
+
+				if (isset($thisfile_riff[$RIFFsubtype]['COMT'])) {
+					$offset = 0;
+					$CommentCount                                   = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), false);
+					$offset += 2;
+					for ($i = 0; $i < $CommentCount; $i++) {
+						$info['comments_raw'][$i]['timestamp']      = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 4), false);
+						$offset += 4;
+						$info['comments_raw'][$i]['marker_id']      = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), true);
+						$offset += 2;
+						$CommentLength                              = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, 2), false);
+						$offset += 2;
+						$info['comments_raw'][$i]['comment']        =                           substr($thisfile_riff[$RIFFsubtype]['COMT'][0]['data'], $offset, $CommentLength);
+						$offset += $CommentLength;
+
+						$info['comments_raw'][$i]['timestamp_unix'] = getid3_lib::DateMac2Unix($info['comments_raw'][$i]['timestamp']);
+						$thisfile_riff['comments']['comment'][] = $info['comments_raw'][$i]['comment'];
+					}
+				}
+
+				$CommentsChunkNames = array('NAME'=>'title', 'author'=>'artist', '(c) '=>'copyright', 'ANNO'=>'comment');
+				foreach ($CommentsChunkNames as $key => $value) {
+					if (isset($thisfile_riff[$RIFFsubtype][$key][0]['data'])) {
+						$thisfile_riff['comments'][$value][] = $thisfile_riff[$RIFFsubtype][$key][0]['data'];
+					}
+				}
+/*
+				if (isset($thisfile_riff[$RIFFsubtype]['ID3 '])) {
+					getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true);
+					$getid3_temp = new getID3();
+					$getid3_temp->openfile($this->getid3->filename);
+					$getid3_id3v2 = new getid3_id3v2($getid3_temp);
+					$getid3_id3v2->StartingOffset = $thisfile_riff[$RIFFsubtype]['ID3 '][0]['offset'] + 8;
+					if ($thisfile_riff[$RIFFsubtype]['ID3 '][0]['valid'] = $getid3_id3v2->Analyze()) {
+						$info['id3v2'] = $getid3_temp->info['id3v2'];
+					}
+					unset($getid3_temp, $getid3_id3v2);
+				}
+*/
+				break;
+
+			case '8SVX':
+				$thisfile_audio['bitrate_mode']    = 'cbr';
+				$thisfile_audio_dataformat         = '8svx';
+				$thisfile_audio['bits_per_sample'] = 8;
+				$thisfile_audio['channels']        = 1; // overridden below, if need be
+				$info['mime_type']                = 'audio/x-aiff';
+
+				if (isset($thisfile_riff[$RIFFsubtype]['BODY'][0]['offset'])) {
+					$info['avdataoffset'] = $thisfile_riff[$RIFFsubtype]['BODY'][0]['offset'] + 8;
+					$info['avdataend']    = $info['avdataoffset'] + $thisfile_riff[$RIFFsubtype]['BODY'][0]['size'];
+					if ($info['avdataend'] > $info['filesize']) {
+						$info['warning'][] = 'Probable truncated AIFF file: expecting '.$thisfile_riff[$RIFFsubtype]['BODY'][0]['size'].' bytes of audio data, only '.($info['filesize'] - $info['avdataoffset']).' bytes found';
+					}
+				}
+
+				if (isset($thisfile_riff[$RIFFsubtype]['VHDR'][0]['offset'])) {
+					// shortcut
+					$thisfile_riff_RIFFsubtype_VHDR_0 = &$thisfile_riff[$RIFFsubtype]['VHDR'][0];
+
+					$thisfile_riff_RIFFsubtype_VHDR_0['oneShotHiSamples']  =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'],  0, 4));
+					$thisfile_riff_RIFFsubtype_VHDR_0['repeatHiSamples']   =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'],  4, 4));
+					$thisfile_riff_RIFFsubtype_VHDR_0['samplesPerHiCycle'] =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'],  8, 4));
+					$thisfile_riff_RIFFsubtype_VHDR_0['samplesPerSec']     =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 12, 2));
+					$thisfile_riff_RIFFsubtype_VHDR_0['ctOctave']          =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 14, 1));
+					$thisfile_riff_RIFFsubtype_VHDR_0['sCompression']      =   getid3_lib::BigEndian2Int(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 15, 1));
+					$thisfile_riff_RIFFsubtype_VHDR_0['Volume']            = getid3_lib::FixedPoint16_16(substr($thisfile_riff_RIFFsubtype_VHDR_0['data'], 16, 4));
+
+					$thisfile_audio['sample_rate'] = $thisfile_riff_RIFFsubtype_VHDR_0['samplesPerSec'];
+
+					switch ($thisfile_riff_RIFFsubtype_VHDR_0['sCompression']) {
+						case 0:
+							$thisfile_audio['codec']    = 'Pulse Code Modulation (PCM)';
+							$thisfile_audio['lossless'] = true;
+							$ActualBitsPerSample        = 8;
+							break;
+
+						case 1:
+							$thisfile_audio['codec']    = 'Fibonacci-delta encoding';
+							$thisfile_audio['lossless'] = false;
+							$ActualBitsPerSample        = 4;
+							break;
+
+						default:
+							$info['warning'][] = 'Unexpected sCompression value in 8SVX.VHDR chunk - expecting 0 or 1, found "'.sCompression.'"';
+							break;
+					}
+				}
+
+				if (isset($thisfile_riff[$RIFFsubtype]['CHAN'][0]['data'])) {
+					$ChannelsIndex = getid3_lib::BigEndian2Int(substr($thisfile_riff[$RIFFsubtype]['CHAN'][0]['data'], 0, 4));
+					switch ($ChannelsIndex) {
+						case 6: // Stereo
+							$thisfile_audio['channels'] = 2;
+							break;
+
+						case 2: // Left channel only
+						case 4: // Right channel only
+							$thisfile_audio['channels'] = 1;
+							break;
+
+						default:
+							$info['warning'][] = 'Unexpected value in 8SVX.CHAN chunk - expecting 2 or 4 or 6, found "'.$ChannelsIndex.'"';
+							break;
+					}
+
+				}
+
+				$CommentsChunkNames = array('NAME'=>'title', 'author'=>'artist', '(c) '=>'copyright', 'ANNO'=>'comment');
+				foreach ($CommentsChunkNames as $key => $value) {
+					if (isset($thisfile_riff[$RIFFsubtype][$key][0]['data'])) {
+						$thisfile_riff['comments'][$value][] = $thisfile_riff[$RIFFsubtype][$key][0]['data'];
+					}
+				}
+
+				$thisfile_audio['bitrate'] = $thisfile_audio['sample_rate'] * $ActualBitsPerSample * $thisfile_audio['channels'];
+				if (!empty($thisfile_audio['bitrate'])) {
+					$info['playtime_seconds'] = ($info['avdataend'] - $info['avdataoffset']) / ($thisfile_audio['bitrate'] / 8);
+				}
+				break;
+
+
+			case 'CDXA':
+				$info['mime_type'] = 'video/mpeg';
+				if (!empty($thisfile_riff['CDXA']['data'][0]['size'])) {
+					if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.mpeg.php', __FILE__, false)) {
+						$getid3_temp = new getID3();
+						$getid3_temp->openfile($this->getid3->filename);
+						$getid3_mpeg = new getid3_mpeg($getid3_temp);
+						$getid3_mpeg->Analyze();
+						if (empty($getid3_temp->info['error'])) {
+							$info['audio']   = $getid3_temp->info['audio'];
+							$info['video']   = $getid3_temp->info['video'];
+							$info['mpeg']    = $getid3_temp->info['mpeg'];
+							$info['warning'] = $getid3_temp->info['warning'];
+						}
+						unset($getid3_temp, $getid3_mpeg);
+					}
+				}
+				break;
+
+
+			default:
+				$info['error'][] = 'Unknown RIFF type: expecting one of (WAVE|RMP3|AVI |CDDA|AIFF|AIFC|8SVX|CDXA), found "'.$RIFFsubtype.'" instead';
+				unset($info['fileformat']);
+				break;
+		}
+
+		switch ($RIFFsubtype) {
+			case 'WAVE':
+			case 'AIFF':
+			case 'AIFC':
+				$ID3v2_key_good = 'id3 ';
+				$ID3v2_keys_bad = array('ID3 ', 'tag ');
+				foreach ($ID3v2_keys_bad as $ID3v2_key_bad) {
+					if (isset($thisfile_riff[$RIFFsubtype][$ID3v2_key_bad]) && !array_key_exists($ID3v2_key_good, $thisfile_riff[$RIFFsubtype])) {
+						$thisfile_riff[$RIFFsubtype][$ID3v2_key_good] = $thisfile_riff[$RIFFsubtype][$ID3v2_key_bad];
+						$info['warning'][] = 'mapping "'.$ID3v2_key_bad.'" chunk to "'.$ID3v2_key_good.'"';
+					}
+				}
+
+				if (isset($thisfile_riff[$RIFFsubtype]['id3 '])) {
+					getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true);
+					$getid3_temp = new getID3();
+					$getid3_temp->openfile($this->getid3->filename);
+					$getid3_id3v2 = new getid3_id3v2($getid3_temp);
+					$getid3_id3v2->StartingOffset = $thisfile_riff[$RIFFsubtype]['id3 '][0]['offset'] + 8;
+					if ($thisfile_riff[$RIFFsubtype]['id3 '][0]['valid'] = $getid3_id3v2->Analyze()) {
+						$info['id3v2'] = $getid3_temp->info['id3v2'];
+					}
+					unset($getid3_temp, $getid3_id3v2);
+				}
+				break;
+		}
+
+		if (isset($thisfile_riff_WAVE['DISP']) && is_array($thisfile_riff_WAVE['DISP'])) {
+			$thisfile_riff['comments']['title'][] = trim(substr($thisfile_riff_WAVE['DISP'][count($thisfile_riff_WAVE['DISP']) - 1]['data'], 4));
+		}
+		if (isset($thisfile_riff_WAVE['INFO']) && is_array($thisfile_riff_WAVE['INFO'])) {
+			self::parseComments($thisfile_riff_WAVE['INFO'], $thisfile_riff['comments']);
+		}
+		if (isset($thisfile_riff['AVI ']['INFO']) && is_array($thisfile_riff['AVI ']['INFO'])) {
+			self::parseComments($thisfile_riff['AVI ']['INFO'], $thisfile_riff['comments']);
+		}
+
+		if (empty($thisfile_audio['encoder']) && !empty($info['mpeg']['audio']['LAME']['short_version'])) {
+			$thisfile_audio['encoder'] = $info['mpeg']['audio']['LAME']['short_version'];
+		}
+
+		if (!isset($info['playtime_seconds'])) {
+			$info['playtime_seconds'] = 0;
+		}
+		if (isset($thisfile_riff_raw['strh'][0]['dwLength']) && isset($thisfile_riff_raw['avih']['dwMicroSecPerFrame'])) {
+			// needed for >2GB AVIs where 'avih' chunk only lists number of frames in that chunk, not entire movie
+			$info['playtime_seconds'] = $thisfile_riff_raw['strh'][0]['dwLength'] * ($thisfile_riff_raw['avih']['dwMicroSecPerFrame'] / 1000000);
+		} elseif (isset($thisfile_riff_raw['avih']['dwTotalFrames']) && isset($thisfile_riff_raw['avih']['dwMicroSecPerFrame'])) {
+			$info['playtime_seconds'] = $thisfile_riff_raw['avih']['dwTotalFrames'] * ($thisfile_riff_raw['avih']['dwMicroSecPerFrame'] / 1000000);
+		}
+
+		if ($info['playtime_seconds'] > 0) {
+			if (isset($thisfile_riff_audio) && isset($thisfile_riff_video)) {
+
+				if (!isset($info['bitrate'])) {
+					$info['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8);
+				}
+
+			} elseif (isset($thisfile_riff_audio) && !isset($thisfile_riff_video)) {
+
+				if (!isset($thisfile_audio['bitrate'])) {
+					$thisfile_audio['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8);
+				}
+
+			} elseif (!isset($thisfile_riff_audio) && isset($thisfile_riff_video)) {
+
+				if (!isset($thisfile_video['bitrate'])) {
+					$thisfile_video['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8);
+				}
+
+			}
+		}
+
+
+		if (isset($thisfile_riff_video) && isset($thisfile_audio['bitrate']) && ($thisfile_audio['bitrate'] > 0) && ($info['playtime_seconds'] > 0)) {
+
+			$info['bitrate'] = ((($info['avdataend'] - $info['avdataoffset']) / $info['playtime_seconds']) * 8);
+			$thisfile_audio['bitrate'] = 0;
+			$thisfile_video['bitrate'] = $info['bitrate'];
+			foreach ($thisfile_riff_audio as $channelnumber => $audioinfoarray) {
+				$thisfile_video['bitrate'] -= $audioinfoarray['bitrate'];
+				$thisfile_audio['bitrate'] += $audioinfoarray['bitrate'];
+			}
+			if ($thisfile_video['bitrate'] <= 0) {
+				unset($thisfile_video['bitrate']);
+			}
+			if ($thisfile_audio['bitrate'] <= 0) {
+				unset($thisfile_audio['bitrate']);
+			}
+		}
+
+		if (isset($info['mpeg']['audio'])) {
+			$thisfile_audio_dataformat      = 'mp'.$info['mpeg']['audio']['layer'];
+			$thisfile_audio['sample_rate']  = $info['mpeg']['audio']['sample_rate'];
+			$thisfile_audio['channels']     = $info['mpeg']['audio']['channels'];
+			$thisfile_audio['bitrate']      = $info['mpeg']['audio']['bitrate'];
+			$thisfile_audio['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']);
+			if (!empty($info['mpeg']['audio']['codec'])) {
+				$thisfile_audio['codec'] = $info['mpeg']['audio']['codec'].' '.$thisfile_audio['codec'];
+			}
+			if (!empty($thisfile_audio['streams'])) {
+				foreach ($thisfile_audio['streams'] as $streamnumber => $streamdata) {
+					if ($streamdata['dataformat'] == $thisfile_audio_dataformat) {
+						$thisfile_audio['streams'][$streamnumber]['sample_rate']  = $thisfile_audio['sample_rate'];
+						$thisfile_audio['streams'][$streamnumber]['channels']     = $thisfile_audio['channels'];
+						$thisfile_audio['streams'][$streamnumber]['bitrate']      = $thisfile_audio['bitrate'];
+						$thisfile_audio['streams'][$streamnumber]['bitrate_mode'] = $thisfile_audio['bitrate_mode'];
+						$thisfile_audio['streams'][$streamnumber]['codec']        = $thisfile_audio['codec'];
+					}
+				}
+			}
+			$getid3_mp3 = new getid3_mp3($this->getid3);
+			$thisfile_audio['encoder_options'] = $getid3_mp3->GuessEncoderOptions();
+			unset($getid3_mp3);
+		}
+
+
+		if (!empty($thisfile_riff_raw['fmt ']['wBitsPerSample']) && ($thisfile_riff_raw['fmt ']['wBitsPerSample'] > 0)) {
+			switch ($thisfile_audio_dataformat) {
+				case 'ac3':
+					// ignore bits_per_sample
+					break;
+
+				default:
+					$thisfile_audio['bits_per_sample'] = $thisfile_riff_raw['fmt ']['wBitsPerSample'];
+					break;
+			}
+		}
+
+
+		if (empty($thisfile_riff_raw)) {
+			unset($thisfile_riff['raw']);
+		}
+		if (empty($thisfile_riff_audio)) {
+			unset($thisfile_riff['audio']);
+		}
+		if (empty($thisfile_riff_video)) {
+			unset($thisfile_riff['video']);
+		}
+
+		return true;
+	}
+
+	public function ParseRIFF($startoffset, $maxoffset) {
+		$info = &$this->getid3->info;
+
+		$RIFFchunk = false;
+		$FoundAllChunksWeNeed = false;
+
+		try {
+			$this->fseek($startoffset);
+			$maxoffset = min($maxoffset, $info['avdataend']);
+			while ($this->ftell() < $maxoffset) {
+				$chunknamesize = $this->fread(8);
+				//$chunkname =                          substr($chunknamesize, 0, 4);
+				$chunkname = str_replace("\x00", '_', substr($chunknamesize, 0, 4));  // note: chunk names of 4 null bytes do appear to be legal (has been observed inside INFO and PRMI chunks, for example), but makes traversing array keys more difficult
+				$chunksize =  $this->EitherEndian2Int(substr($chunknamesize, 4, 4));
+				//if (strlen(trim($chunkname, "\x00")) < 4) {
+				if (strlen($chunkname) < 4) {
+					$this->error('Expecting chunk name at offset '.($this->ftell() - 8).' but found nothing. Aborting RIFF parsing.');
+					break;
+				}
+				if (($chunksize == 0) && ($chunkname != 'JUNK')) {
+					$this->warning('Chunk ('.$chunkname.') size at offset '.($this->ftell() - 4).' is zero. Aborting RIFF parsing.');
+					break;
+				}
+				if (($chunksize % 2) != 0) {
+					// all structures are packed on word boundaries
+					$chunksize++;
+				}
+
+				switch ($chunkname) {
+					case 'LIST':
+						$listname = $this->fread(4);
+						if (preg_match('#^(movi|rec )$#i', $listname)) {
+							$RIFFchunk[$listname]['offset'] = $this->ftell() - 4;
+							$RIFFchunk[$listname]['size']   = $chunksize;
+
+							if (!$FoundAllChunksWeNeed) {
+								$WhereWeWere      = $this->ftell();
+								$AudioChunkHeader = $this->fread(12);
+								$AudioChunkStreamNum  =                              substr($AudioChunkHeader, 0, 2);
+								$AudioChunkStreamType =                              substr($AudioChunkHeader, 2, 2);
+								$AudioChunkSize       = getid3_lib::LittleEndian2Int(substr($AudioChunkHeader, 4, 4));
+
+								if ($AudioChunkStreamType == 'wb') {
+									$FirstFourBytes = substr($AudioChunkHeader, 8, 4);
+									if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', $FirstFourBytes)) {
+										// MP3
+										if (getid3_mp3::MPEGaudioHeaderBytesValid($FirstFourBytes)) {
+											$getid3_temp = new getID3();
+											$getid3_temp->openfile($this->getid3->filename);
+											$getid3_temp->info['avdataoffset'] = $this->ftell() - 4;
+											$getid3_temp->info['avdataend']    = $this->ftell() + $AudioChunkSize;
+											$getid3_mp3 = new getid3_mp3($getid3_temp);
+											$getid3_mp3->getOnlyMPEGaudioInfo($getid3_temp->info['avdataoffset'], false);
+											if (isset($getid3_temp->info['mpeg']['audio'])) {
+												$info['mpeg']['audio']         = $getid3_temp->info['mpeg']['audio'];
+												$info['audio']                 = $getid3_temp->info['audio'];
+												$info['audio']['dataformat']   = 'mp'.$info['mpeg']['audio']['layer'];
+												$info['audio']['sample_rate']  = $info['mpeg']['audio']['sample_rate'];
+												$info['audio']['channels']     = $info['mpeg']['audio']['channels'];
+												$info['audio']['bitrate']      = $info['mpeg']['audio']['bitrate'];
+												$info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']);
+												//$info['bitrate']               = $info['audio']['bitrate'];
+											}
+											unset($getid3_temp, $getid3_mp3);
+										}
+
+									} elseif (strpos($FirstFourBytes, getid3_ac3::syncword) === 0) {
+
+										// AC3
+										$getid3_temp = new getID3();
+										$getid3_temp->openfile($this->getid3->filename);
+										$getid3_temp->info['avdataoffset'] = $this->ftell() - 4;
+										$getid3_temp->info['avdataend']    = $this->ftell() + $AudioChunkSize;
+										$getid3_ac3 = new getid3_ac3($getid3_temp);
+										$getid3_ac3->Analyze();
+										if (empty($getid3_temp->info['error'])) {
+											$info['audio']   = $getid3_temp->info['audio'];
+											$info['ac3']     = $getid3_temp->info['ac3'];
+											if (!empty($getid3_temp->info['warning'])) {
+												foreach ($getid3_temp->info['warning'] as $key => $value) {
+													$info['warning'][] = $value;
+												}
+											}
+										}
+										unset($getid3_temp, $getid3_ac3);
+									}
+								}
+								$FoundAllChunksWeNeed = true;
+								$this->fseek($WhereWeWere);
+							}
+							$this->fseek($chunksize - 4, SEEK_CUR);
+
+						} else {
+
+							if (!isset($RIFFchunk[$listname])) {
+								$RIFFchunk[$listname] = array();
+							}
+							$LISTchunkParent    = $listname;
+							$LISTchunkMaxOffset = $this->ftell() - 4 + $chunksize;
+							if ($parsedChunk = $this->ParseRIFF($this->ftell(), $LISTchunkMaxOffset)) {
+								$RIFFchunk[$listname] = array_merge_recursive($RIFFchunk[$listname], $parsedChunk);
+							}
+
+						}
+						break;
+
+					default:
+						if (preg_match('#^[0-9]{2}(wb|pc|dc|db)$#', $chunkname)) {
+							$this->fseek($chunksize, SEEK_CUR);
+							break;
+						}
+						$thisindex = 0;
+						if (isset($RIFFchunk[$chunkname]) && is_array($RIFFchunk[$chunkname])) {
+							$thisindex = count($RIFFchunk[$chunkname]);
+						}
+						$RIFFchunk[$chunkname][$thisindex]['offset'] = $this->ftell() - 8;
+						$RIFFchunk[$chunkname][$thisindex]['size']   = $chunksize;
+						switch ($chunkname) {
+							case 'data':
+								$info['avdataoffset'] = $this->ftell();
+								$info['avdataend']    = $info['avdataoffset'] + $chunksize;
+
+								$testData = $this->fread(36);
+								if ($testData === '') {
+									break;
+								}
+								if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', substr($testData, 0, 4))) {
+
+									// Probably is MP3 data
+									if (getid3_mp3::MPEGaudioHeaderBytesValid(substr($testData, 0, 4))) {
+										$getid3_temp = new getID3();
+										$getid3_temp->openfile($this->getid3->filename);
+										$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
+										$getid3_temp->info['avdataend']    = $info['avdataend'];
+										$getid3_mp3 = new getid3_mp3($getid3_temp);
+										$getid3_mp3->getOnlyMPEGaudioInfo($info['avdataoffset'], false);
+										if (empty($getid3_temp->info['error'])) {
+											$info['audio'] = $getid3_temp->info['audio'];
+											$info['mpeg']  = $getid3_temp->info['mpeg'];
+										}
+										unset($getid3_temp, $getid3_mp3);
+									}
+
+								} elseif (($isRegularAC3 = (substr($testData, 0, 2) == getid3_ac3::syncword)) || substr($testData, 8, 2) == strrev(getid3_ac3::syncword)) {
+
+									// This is probably AC-3 data
+									$getid3_temp = new getID3();
+									if ($isRegularAC3) {
+										$getid3_temp->openfile($this->getid3->filename);
+										$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
+										$getid3_temp->info['avdataend']    = $info['avdataend'];
+									}
+									$getid3_ac3 = new getid3_ac3($getid3_temp);
+									if ($isRegularAC3) {
+										$getid3_ac3->Analyze();
+									} else {
+										// Dolby Digital WAV
+										// AC-3 content, but not encoded in same format as normal AC-3 file
+										// For one thing, byte order is swapped
+										$ac3_data = '';
+										for ($i = 0; $i < 28; $i += 2) {
+											$ac3_data .= substr($testData, 8 + $i + 1, 1);
+											$ac3_data .= substr($testData, 8 + $i + 0, 1);
+										}
+										$getid3_ac3->AnalyzeString($ac3_data);
+									}
+
+									if (empty($getid3_temp->info['error'])) {
+										$info['audio'] = $getid3_temp->info['audio'];
+										$info['ac3']   = $getid3_temp->info['ac3'];
+										if (!empty($getid3_temp->info['warning'])) {
+											foreach ($getid3_temp->info['warning'] as $newerror) {
+												$this->warning('getid3_ac3() says: ['.$newerror.']');
+											}
+										}
+									}
+									unset($getid3_temp, $getid3_ac3);
+
+								} elseif (preg_match('/^('.implode('|', array_map('preg_quote', getid3_dts::$syncwords)).')/', $testData)) {
+
+									// This is probably DTS data
+									$getid3_temp = new getID3();
+									$getid3_temp->openfile($this->getid3->filename);
+									$getid3_temp->info['avdataoffset'] = $info['avdataoffset'];
+									$getid3_dts = new getid3_dts($getid3_temp);
+									$getid3_dts->Analyze();
+									if (empty($getid3_temp->info['error'])) {
+										$info['audio']            = $getid3_temp->info['audio'];
+										$info['dts']              = $getid3_temp->info['dts'];
+										$info['playtime_seconds'] = $getid3_temp->info['playtime_seconds']; // may not match RIFF calculations since DTS-WAV often used 14/16 bit-word packing
+										if (!empty($getid3_temp->info['warning'])) {
+											foreach ($getid3_temp->info['warning'] as $newerror) {
+												$this->warning('getid3_dts() says: ['.$newerror.']');
+											}
+										}
+									}
+
+									unset($getid3_temp, $getid3_dts);
+
+								} elseif (substr($testData, 0, 4) == 'wvpk') {
+
+									// This is WavPack data
+									$info['wavpack']['offset'] = $info['avdataoffset'];
+									$info['wavpack']['size']   = getid3_lib::LittleEndian2Int(substr($testData, 4, 4));
+									$this->parseWavPackHeader(substr($testData, 8, 28));
+
+								} else {
+									// This is some other kind of data (quite possibly just PCM)
+									// do nothing special, just skip it
+								}
+								$nextoffset = $info['avdataend'];
+								$this->fseek($nextoffset);
+								break;
+
+							case 'iXML':
+							case 'bext':
+							case 'cart':
+							case 'fmt ':
+							case 'strh':
+							case 'strf':
+							case 'indx':
+							case 'MEXT':
+							case 'DISP':
+								// always read data in
+							case 'JUNK':
+								// should be: never read data in
+								// but some programs write their version strings in a JUNK chunk (e.g. VirtualDub, AVIdemux, etc)
+								if ($chunksize < 1048576) {
+									if ($chunksize > 0) {
+										$RIFFchunk[$chunkname][$thisindex]['data'] = $this->fread($chunksize);
+										if ($chunkname == 'JUNK') {
+											if (preg_match('#^([\\x20-\\x7F]+)#', $RIFFchunk[$chunkname][$thisindex]['data'], $matches)) {
+												// only keep text characters [chr(32)-chr(127)]
+												$info['riff']['comments']['junk'][] = trim($matches[1]);
+											}
+											// but if nothing there, ignore
+											// remove the key in either case
+											unset($RIFFchunk[$chunkname][$thisindex]['data']);
+										}
+									}
+								} else {
+									$this->warning('Chunk "'.$chunkname.'" at offset '.$this->ftell().' is unexpectedly larger than 1MB (claims to be '.number_format($chunksize).' bytes), skipping data');
+									$this->fseek($chunksize, SEEK_CUR);
+								}
+								break;
+
+							//case 'IDVX':
+							//	$info['divxtag']['comments'] = self::ParseDIVXTAG($this->fread($chunksize));
+							//	break;
+
+							default:
+								if (!empty($LISTchunkParent) && (($RIFFchunk[$chunkname][$thisindex]['offset'] + $RIFFchunk[$chunkname][$thisindex]['size']) <= $LISTchunkMaxOffset)) {
+									$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['offset'] = $RIFFchunk[$chunkname][$thisindex]['offset'];
+									$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['size']   = $RIFFchunk[$chunkname][$thisindex]['size'];
+									unset($RIFFchunk[$chunkname][$thisindex]['offset']);
+									unset($RIFFchunk[$chunkname][$thisindex]['size']);
+									if (isset($RIFFchunk[$chunkname][$thisindex]) && empty($RIFFchunk[$chunkname][$thisindex])) {
+										unset($RIFFchunk[$chunkname][$thisindex]);
+									}
+									if (isset($RIFFchunk[$chunkname]) && empty($RIFFchunk[$chunkname])) {
+										unset($RIFFchunk[$chunkname]);
+									}
+									$RIFFchunk[$LISTchunkParent][$chunkname][$thisindex]['data'] = $this->fread($chunksize);
+								} elseif ($chunksize < 2048) {
+									// only read data in if smaller than 2kB
+									$RIFFchunk[$chunkname][$thisindex]['data'] = $this->fread($chunksize);
+								} else {
+									$this->fseek($chunksize, SEEK_CUR);
+								}
+								break;
+						}
+						break;
+				}
+			}
+
+		} catch (getid3_exception $e) {
+			if ($e->getCode() == 10) {
+				$this->warning('RIFF parser: '.$e->getMessage());
+			} else {
+				throw $e;
+			}
+		}
+
+		return $RIFFchunk;
+	}
+
+	public function ParseRIFFdata(&$RIFFdata) {
+		$info = &$this->getid3->info;
+		if ($RIFFdata) {
+			$tempfile = tempnam(GETID3_TEMP_DIR, 'getID3');
+			$fp_temp  = fopen($tempfile, 'wb');
+			$RIFFdataLength = strlen($RIFFdata);
+			$NewLengthString = getid3_lib::LittleEndian2String($RIFFdataLength, 4);
+			for ($i = 0; $i < 4; $i++) {
+				$RIFFdata[($i + 4)] = $NewLengthString[$i];
+			}
+			fwrite($fp_temp, $RIFFdata);
+			fclose($fp_temp);
+
+			$getid3_temp = new getID3();
+			$getid3_temp->openfile($tempfile);
+			$getid3_temp->info['filesize']     = $RIFFdataLength;
+			$getid3_temp->info['filenamepath'] = $info['filenamepath'];
+			$getid3_temp->info['tags']         = $info['tags'];
+			$getid3_temp->info['warning']      = $info['warning'];
+			$getid3_temp->info['error']        = $info['error'];
+			$getid3_temp->info['comments']     = $info['comments'];
+			$getid3_temp->info['audio']        = (isset($info['audio']) ? $info['audio'] : array());
+			$getid3_temp->info['video']        = (isset($info['video']) ? $info['video'] : array());
+			$getid3_riff = new getid3_riff($getid3_temp);
+			$getid3_riff->Analyze();
+
+			$info['riff']     = $getid3_temp->info['riff'];
+			$info['warning']  = $getid3_temp->info['warning'];
+			$info['error']    = $getid3_temp->info['error'];
+			$info['tags']     = $getid3_temp->info['tags'];
+			$info['comments'] = $getid3_temp->info['comments'];
+			unset($getid3_riff, $getid3_temp);
+			unlink($tempfile);
+		}
+		return false;
+	}
+
+	public static function parseComments(&$RIFFinfoArray, &$CommentsTargetArray) {
+		$RIFFinfoKeyLookup = array(
+			'IARL'=>'archivallocation',
+			'IART'=>'artist',
+			'ICDS'=>'costumedesigner',
+			'ICMS'=>'commissionedby',
+			'ICMT'=>'comment',
+			'ICNT'=>'country',
+			'ICOP'=>'copyright',
+			'ICRD'=>'creationdate',
+			'IDIM'=>'dimensions',
+			'IDIT'=>'digitizationdate',
+			'IDPI'=>'resolution',
+			'IDST'=>'distributor',
+			'IEDT'=>'editor',
+			'IENG'=>'engineers',
+			'IFRM'=>'accountofparts',
+			'IGNR'=>'genre',
+			'IKEY'=>'keywords',
+			'ILGT'=>'lightness',
+			'ILNG'=>'language',
+			'IMED'=>'orignalmedium',
+			'IMUS'=>'composer',
+			'INAM'=>'title',
+			'IPDS'=>'productiondesigner',
+			'IPLT'=>'palette',
+			'IPRD'=>'product',
+			'IPRO'=>'producer',
+			'IPRT'=>'part',
+			'IRTD'=>'rating',
+			'ISBJ'=>'subject',
+			'ISFT'=>'software',
+			'ISGN'=>'secondarygenre',
+			'ISHP'=>'sharpness',
+			'ISRC'=>'sourcesupplier',
+			'ISRF'=>'digitizationsource',
+			'ISTD'=>'productionstudio',
+			'ISTR'=>'starring',
+			'ITCH'=>'encoded_by',
+			'IWEB'=>'url',
+			'IWRI'=>'writer',
+			'____'=>'comment',
+		);
+		foreach ($RIFFinfoKeyLookup as $key => $value) {
+			if (isset($RIFFinfoArray[$key])) {
+				foreach ($RIFFinfoArray[$key] as $commentid => $commentdata) {
+					if (trim($commentdata['data']) != '') {
+						if (isset($CommentsTargetArray[$value])) {
+							$CommentsTargetArray[$value][] =     trim($commentdata['data']);
+						} else {
+							$CommentsTargetArray[$value] = array(trim($commentdata['data']));
+						}
+					}
+				}
+			}
+		}
+		return true;
+	}
+
+	public static function parseWAVEFORMATex($WaveFormatExData) {
+		// shortcut
+		$WaveFormatEx['raw'] = array();
+		$WaveFormatEx_raw    = &$WaveFormatEx['raw'];
+
+		$WaveFormatEx_raw['wFormatTag']      = substr($WaveFormatExData,  0, 2);
+		$WaveFormatEx_raw['nChannels']       = substr($WaveFormatExData,  2, 2);
+		$WaveFormatEx_raw['nSamplesPerSec']  = substr($WaveFormatExData,  4, 4);
+		$WaveFormatEx_raw['nAvgBytesPerSec'] = substr($WaveFormatExData,  8, 4);
+		$WaveFormatEx_raw['nBlockAlign']     = substr($WaveFormatExData, 12, 2);
+		$WaveFormatEx_raw['wBitsPerSample']  = substr($WaveFormatExData, 14, 2);
+		if (strlen($WaveFormatExData) > 16) {
+			$WaveFormatEx_raw['cbSize']      = substr($WaveFormatExData, 16, 2);
+		}
+		$WaveFormatEx_raw = array_map('getid3_lib::LittleEndian2Int', $WaveFormatEx_raw);
+
+		$WaveFormatEx['codec']           = self::wFormatTagLookup($WaveFormatEx_raw['wFormatTag']);
+		$WaveFormatEx['channels']        = $WaveFormatEx_raw['nChannels'];
+		$WaveFormatEx['sample_rate']     = $WaveFormatEx_raw['nSamplesPerSec'];
+		$WaveFormatEx['bitrate']         = $WaveFormatEx_raw['nAvgBytesPerSec'] * 8;
+		$WaveFormatEx['bits_per_sample'] = $WaveFormatEx_raw['wBitsPerSample'];
+
+		return $WaveFormatEx;
+	}
+
+	public function parseWavPackHeader($WavPackChunkData) {
+		// typedef struct {
+		//     char ckID [4];
+		//     long ckSize;
+		//     short version;
+		//     short bits;                // added for version 2.00
+		//     short flags, shift;        // added for version 3.00
+		//     long total_samples, crc, crc2;
+		//     char extension [4], extra_bc, extras [3];
+		// } WavpackHeader;
+
+		// shortcut
+		$info = &$this->getid3->info;
+		$info['wavpack']  = array();
+		$thisfile_wavpack = &$info['wavpack'];
+
+		$thisfile_wavpack['version']           = getid3_lib::LittleEndian2Int(substr($WavPackChunkData,  0, 2));
+		if ($thisfile_wavpack['version'] >= 2) {
+			$thisfile_wavpack['bits']          = getid3_lib::LittleEndian2Int(substr($WavPackChunkData,  2, 2));
+		}
+		if ($thisfile_wavpack['version'] >= 3) {
+			$thisfile_wavpack['flags_raw']     = getid3_lib::LittleEndian2Int(substr($WavPackChunkData,  4, 2));
+			$thisfile_wavpack['shift']         = getid3_lib::LittleEndian2Int(substr($WavPackChunkData,  6, 2));
+			$thisfile_wavpack['total_samples'] = getid3_lib::LittleEndian2Int(substr($WavPackChunkData,  8, 4));
+			$thisfile_wavpack['crc1']          = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 12, 4));
+			$thisfile_wavpack['crc2']          = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 16, 4));
+			$thisfile_wavpack['extension']     =                              substr($WavPackChunkData, 20, 4);
+			$thisfile_wavpack['extra_bc']      = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 24, 1));
+			for ($i = 0; $i <= 2; $i++) {
+				$thisfile_wavpack['extras'][]  = getid3_lib::LittleEndian2Int(substr($WavPackChunkData, 25 + $i, 1));
+			}
+
+			// shortcut
+			$thisfile_wavpack['flags'] = array();
+			$thisfile_wavpack_flags = &$thisfile_wavpack['flags'];
+
+			$thisfile_wavpack_flags['mono']                 = (bool) ($thisfile_wavpack['flags_raw'] & 0x000001);
+			$thisfile_wavpack_flags['fast_mode']            = (bool) ($thisfile_wavpack['flags_raw'] & 0x000002);
+			$thisfile_wavpack_flags['raw_mode']             = (bool) ($thisfile_wavpack['flags_raw'] & 0x000004);
+			$thisfile_wavpack_flags['calc_noise']           = (bool) ($thisfile_wavpack['flags_raw'] & 0x000008);
+			$thisfile_wavpack_flags['high_quality']         = (bool) ($thisfile_wavpack['flags_raw'] & 0x000010);
+			$thisfile_wavpack_flags['3_byte_samples']       = (bool) ($thisfile_wavpack['flags_raw'] & 0x000020);
+			$thisfile_wavpack_flags['over_20_bits']         = (bool) ($thisfile_wavpack['flags_raw'] & 0x000040);
+			$thisfile_wavpack_flags['use_wvc']              = (bool) ($thisfile_wavpack['flags_raw'] & 0x000080);
+			$thisfile_wavpack_flags['noiseshaping']         = (bool) ($thisfile_wavpack['flags_raw'] & 0x000100);
+			$thisfile_wavpack_flags['very_fast_mode']       = (bool) ($thisfile_wavpack['flags_raw'] & 0x000200);
+			$thisfile_wavpack_flags['new_high_quality']     = (bool) ($thisfile_wavpack['flags_raw'] & 0x000400);
+			$thisfile_wavpack_flags['cancel_extreme']       = (bool) ($thisfile_wavpack['flags_raw'] & 0x000800);
+			$thisfile_wavpack_flags['cross_decorrelation']  = (bool) ($thisfile_wavpack['flags_raw'] & 0x001000);
+			$thisfile_wavpack_flags['new_decorrelation']    = (bool) ($thisfile_wavpack['flags_raw'] & 0x002000);
+			$thisfile_wavpack_flags['joint_stereo']         = (bool) ($thisfile_wavpack['flags_raw'] & 0x004000);
+			$thisfile_wavpack_flags['extra_decorrelation']  = (bool) ($thisfile_wavpack['flags_raw'] & 0x008000);
+			$thisfile_wavpack_flags['override_noiseshape']  = (bool) ($thisfile_wavpack['flags_raw'] & 0x010000);
+			$thisfile_wavpack_flags['override_jointstereo'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x020000);
+			$thisfile_wavpack_flags['copy_source_filetime'] = (bool) ($thisfile_wavpack['flags_raw'] & 0x040000);
+			$thisfile_wavpack_flags['create_exe']           = (bool) ($thisfile_wavpack['flags_raw'] & 0x080000);
+		}
+
+		return true;
+	}
+
+	public static function ParseBITMAPINFOHEADER($BITMAPINFOHEADER, $littleEndian=true) {
+
+		$parsed['biSize']          = substr($BITMAPINFOHEADER,  0, 4); // number of bytes required by the BITMAPINFOHEADER structure
+		$parsed['biWidth']         = substr($BITMAPINFOHEADER,  4, 4); // width of the bitmap in pixels
+		$parsed['biHeight']        = substr($BITMAPINFOHEADER,  8, 4); // height of the bitmap in pixels. If biHeight is positive, the bitmap is a 'bottom-up' DIB and its origin is the lower left corner. If biHeight is negative, the bitmap is a 'top-down' DIB and its origin is the upper left corner
+		$parsed['biPlanes']        = substr($BITMAPINFOHEADER, 12, 2); // number of color planes on the target device. In most cases this value must be set to 1
+		$parsed['biBitCount']      = substr($BITMAPINFOHEADER, 14, 2); // Specifies the number of bits per pixels
+		$parsed['biSizeImage']     = substr($BITMAPINFOHEADER, 20, 4); // size of the bitmap data section of the image (the actual pixel data, excluding BITMAPINFOHEADER and RGBQUAD structures)
+		$parsed['biXPelsPerMeter'] = substr($BITMAPINFOHEADER, 24, 4); // horizontal resolution, in pixels per metre, of the target device
+		$parsed['biYPelsPerMeter'] = substr($BITMAPINFOHEADER, 28, 4); // vertical resolution, in pixels per metre, of the target device
+		$parsed['biClrUsed']       = substr($BITMAPINFOHEADER, 32, 4); // actual number of color indices in the color table used by the bitmap. If this value is zero, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member for the compression mode specified by biCompression
+		$parsed['biClrImportant']  = substr($BITMAPINFOHEADER, 36, 4); // number of color indices that are considered important for displaying the bitmap. If this value is zero, all colors are important
+		$parsed = array_map('getid3_lib::'.($littleEndian ? 'Little' : 'Big').'Endian2Int', $parsed);
+
+		$parsed['fourcc']          = substr($BITMAPINFOHEADER, 16, 4);  // compression identifier
+
+		return $parsed;
+	}
+
+	public static function ParseDIVXTAG($DIVXTAG, $raw=false) {
+		// structure from "IDivX" source, Form1.frm, by "Greg Frazier of Daemonic Software Group", email: gfrazier@icestorm.net, web: http://dsg.cjb.net/
+		// source available at http://files.divx-digest.com/download/c663efe7ef8ad2e90bf4af4d3ea6188a/on0SWN2r/edit/IDivX.zip
+		// 'Byte Layout:                   '1111111111111111
+		// '32 for Movie - 1               '1111111111111111
+		// '28 for Author - 6              '6666666666666666
+		// '4  for year - 2                '6666666666662222
+		// '3  for genre - 3               '7777777777777777
+		// '48 for Comments - 7            '7777777777777777
+		// '1  for Rating - 4              '7777777777777777
+		// '5  for Future Additions - 0    '333400000DIVXTAG
+		// '128 bytes total
+
+		static $DIVXTAGgenre  = array(
+			 0 => 'Action',
+			 1 => 'Action/Adventure',
+			 2 => 'Adventure',
+			 3 => 'Adult',
+			 4 => 'Anime',
+			 5 => 'Cartoon',
+			 6 => 'Claymation',
+			 7 => 'Comedy',
+			 8 => 'Commercial',
+			 9 => 'Documentary',
+			10 => 'Drama',
+			11 => 'Home Video',
+			12 => 'Horror',
+			13 => 'Infomercial',
+			14 => 'Interactive',
+			15 => 'Mystery',
+			16 => 'Music Video',
+			17 => 'Other',
+			18 => 'Religion',
+			19 => 'Sci Fi',
+			20 => 'Thriller',
+			21 => 'Western',
+		),
+		$DIVXTAGrating = array(
+			 0 => 'Unrated',
+			 1 => 'G',
+			 2 => 'PG',
+			 3 => 'PG-13',
+			 4 => 'R',
+			 5 => 'NC-17',
+		);
+
+		$parsed['title']     =        trim(substr($DIVXTAG,   0, 32));
+		$parsed['artist']    =        trim(substr($DIVXTAG,  32, 28));
+		$parsed['year']      = intval(trim(substr($DIVXTAG,  60,  4)));
+		$parsed['comment']   =        trim(substr($DIVXTAG,  64, 48));
+		$parsed['genre_id']  = intval(trim(substr($DIVXTAG, 112,  3)));
+		$parsed['rating_id'] =         ord(substr($DIVXTAG, 115,  1));
+		//$parsed['padding'] =             substr($DIVXTAG, 116,  5);  // 5-byte null
+		//$parsed['magic']   =             substr($DIVXTAG, 121,  7);  // "DIVXTAG"
+
+		$parsed['genre']  = (isset($DIVXTAGgenre[$parsed['genre_id']])   ? $DIVXTAGgenre[$parsed['genre_id']]   : $parsed['genre_id']);
+		$parsed['rating'] = (isset($DIVXTAGrating[$parsed['rating_id']]) ? $DIVXTAGrating[$parsed['rating_id']] : $parsed['rating_id']);
+
+		if (!$raw) {
+			unset($parsed['genre_id'], $parsed['rating_id']);
+			foreach ($parsed as $key => $value) {
+				if (!$value === '') {
+					unset($parsed['key']);
+				}
+			}
+		}
+
+		foreach ($parsed as $tag => $value) {
+			$parsed[$tag] = array($value);
+		}
+
+		return $parsed;
+	}
+
+	public static function waveSNDMtagLookup($tagshortname) {
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			©kwd	keywords
+			©BPM	bpm
+			©trt	tracktitle
+			©des	description
+			©gen	category
+			©fin	featuredinstrument
+			©LID	longid
+			©bex	bwdescription
+			©pub	publisher
+			©cdt	cdtitle
+			©alb	library
+			©com	composer
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($tagshortname, $begin, __LINE__, __FILE__, 'riff-sndm');
+	}
+
+	public static function wFormatTagLookup($wFormatTag) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			0x0000	Microsoft Unknown Wave Format
+			0x0001	Pulse Code Modulation (PCM)
+			0x0002	Microsoft ADPCM
+			0x0003	IEEE Float
+			0x0004	Compaq Computer VSELP
+			0x0005	IBM CVSD
+			0x0006	Microsoft A-Law
+			0x0007	Microsoft mu-Law
+			0x0008	Microsoft DTS
+			0x0010	OKI ADPCM
+			0x0011	Intel DVI/IMA ADPCM
+			0x0012	Videologic MediaSpace ADPCM
+			0x0013	Sierra Semiconductor ADPCM
+			0x0014	Antex Electronics G.723 ADPCM
+			0x0015	DSP Solutions DigiSTD
+			0x0016	DSP Solutions DigiFIX
+			0x0017	Dialogic OKI ADPCM
+			0x0018	MediaVision ADPCM
+			0x0019	Hewlett-Packard CU
+			0x0020	Yamaha ADPCM
+			0x0021	Speech Compression Sonarc
+			0x0022	DSP Group TrueSpeech
+			0x0023	Echo Speech EchoSC1
+			0x0024	Audiofile AF36
+			0x0025	Audio Processing Technology APTX
+			0x0026	AudioFile AF10
+			0x0027	Prosody 1612
+			0x0028	LRC
+			0x0030	Dolby AC2
+			0x0031	Microsoft GSM 6.10
+			0x0032	MSNAudio
+			0x0033	Antex Electronics ADPCME
+			0x0034	Control Resources VQLPC
+			0x0035	DSP Solutions DigiREAL
+			0x0036	DSP Solutions DigiADPCM
+			0x0037	Control Resources CR10
+			0x0038	Natural MicroSystems VBXADPCM
+			0x0039	Crystal Semiconductor IMA ADPCM
+			0x003A	EchoSC3
+			0x003B	Rockwell ADPCM
+			0x003C	Rockwell Digit LK
+			0x003D	Xebec
+			0x0040	Antex Electronics G.721 ADPCM
+			0x0041	G.728 CELP
+			0x0042	MSG723
+			0x0050	MPEG Layer-2 or Layer-1
+			0x0052	RT24
+			0x0053	PAC
+			0x0055	MPEG Layer-3
+			0x0059	Lucent G.723
+			0x0060	Cirrus
+			0x0061	ESPCM
+			0x0062	Voxware
+			0x0063	Canopus Atrac
+			0x0064	G.726 ADPCM
+			0x0065	G.722 ADPCM
+			0x0066	DSAT
+			0x0067	DSAT Display
+			0x0069	Voxware Byte Aligned
+			0x0070	Voxware AC8
+			0x0071	Voxware AC10
+			0x0072	Voxware AC16
+			0x0073	Voxware AC20
+			0x0074	Voxware MetaVoice
+			0x0075	Voxware MetaSound
+			0x0076	Voxware RT29HW
+			0x0077	Voxware VR12
+			0x0078	Voxware VR18
+			0x0079	Voxware TQ40
+			0x0080	Softsound
+			0x0081	Voxware TQ60
+			0x0082	MSRT24
+			0x0083	G.729A
+			0x0084	MVI MV12
+			0x0085	DF G.726
+			0x0086	DF GSM610
+			0x0088	ISIAudio
+			0x0089	Onlive
+			0x0091	SBC24
+			0x0092	Dolby AC3 SPDIF
+			0x0093	MediaSonic G.723
+			0x0094	Aculab PLC    Prosody 8kbps
+			0x0097	ZyXEL ADPCM
+			0x0098	Philips LPCBB
+			0x0099	Packed
+			0x00FF	AAC
+			0x0100	Rhetorex ADPCM
+			0x0101	IBM mu-law
+			0x0102	IBM A-law
+			0x0103	IBM AVC Adaptive Differential Pulse Code Modulation (ADPCM)
+			0x0111	Vivo G.723
+			0x0112	Vivo Siren
+			0x0123	Digital G.723
+			0x0125	Sanyo LD ADPCM
+			0x0130	Sipro Lab Telecom ACELP NET
+			0x0131	Sipro Lab Telecom ACELP 4800
+			0x0132	Sipro Lab Telecom ACELP 8V3
+			0x0133	Sipro Lab Telecom G.729
+			0x0134	Sipro Lab Telecom G.729A
+			0x0135	Sipro Lab Telecom Kelvin
+			0x0140	Windows Media Video V8
+			0x0150	Qualcomm PureVoice
+			0x0151	Qualcomm HalfRate
+			0x0155	Ring Zero Systems TUB GSM
+			0x0160	Microsoft Audio 1
+			0x0161	Windows Media Audio V7 / V8 / V9
+			0x0162	Windows Media Audio Professional V9
+			0x0163	Windows Media Audio Lossless V9
+			0x0200	Creative Labs ADPCM
+			0x0202	Creative Labs Fastspeech8
+			0x0203	Creative Labs Fastspeech10
+			0x0210	UHER Informatic GmbH ADPCM
+			0x0220	Quarterdeck
+			0x0230	I-link Worldwide VC
+			0x0240	Aureal RAW Sport
+			0x0250	Interactive Products HSX
+			0x0251	Interactive Products RPELP
+			0x0260	Consistent Software CS2
+			0x0270	Sony SCX
+			0x0300	Fujitsu FM Towns Snd
+			0x0400	BTV Digital
+			0x0401	Intel Music Coder
+			0x0450	QDesign Music
+			0x0680	VME VMPCM
+			0x0681	AT&T Labs TPC
+			0x08AE	ClearJump LiteWave
+			0x1000	Olivetti GSM
+			0x1001	Olivetti ADPCM
+			0x1002	Olivetti CELP
+			0x1003	Olivetti SBC
+			0x1004	Olivetti OPR
+			0x1100	Lernout & Hauspie Codec (0x1100)
+			0x1101	Lernout & Hauspie CELP Codec (0x1101)
+			0x1102	Lernout & Hauspie SBC Codec (0x1102)
+			0x1103	Lernout & Hauspie SBC Codec (0x1103)
+			0x1104	Lernout & Hauspie SBC Codec (0x1104)
+			0x1400	Norris
+			0x1401	AT&T ISIAudio
+			0x1500	Soundspace Music Compression
+			0x181C	VoxWare RT24 Speech
+			0x1FC4	NCT Soft ALF2CD (www.nctsoft.com)
+			0x2000	Dolby AC3
+			0x2001	Dolby DTS
+			0x2002	WAVE_FORMAT_14_4
+			0x2003	WAVE_FORMAT_28_8
+			0x2004	WAVE_FORMAT_COOK
+			0x2005	WAVE_FORMAT_DNET
+			0x674F	Ogg Vorbis 1
+			0x6750	Ogg Vorbis 2
+			0x6751	Ogg Vorbis 3
+			0x676F	Ogg Vorbis 1+
+			0x6770	Ogg Vorbis 2+
+			0x6771	Ogg Vorbis 3+
+			0x7A21	GSM-AMR (CBR, no SID)
+			0x7A22	GSM-AMR (VBR, including SID)
+			0xFFFE	WAVE_FORMAT_EXTENSIBLE
+			0xFFFF	WAVE_FORMAT_DEVELOPMENT
+
+		*/
+
+		return getid3_lib::EmbeddedLookup('0x'.str_pad(strtoupper(dechex($wFormatTag)), 4, '0', STR_PAD_LEFT), $begin, __LINE__, __FILE__, 'riff-wFormatTag');
+	}
+
+	public static function fourccLookup($fourcc) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			swot	http://developer.apple.com/qa/snd/snd07.html
+			____	No Codec (____)
+			_BIT	BI_BITFIELDS (Raw RGB)
+			_JPG	JPEG compressed
+			_PNG	PNG compressed W3C/ISO/IEC (RFC-2083)
+			_RAW	Full Frames (Uncompressed)
+			_RGB	Raw RGB Bitmap
+			_RL4	RLE 4bpp RGB
+			_RL8	RLE 8bpp RGB
+			3IV1	3ivx MPEG-4 v1
+			3IV2	3ivx MPEG-4 v2
+			3IVX	3ivx MPEG-4
+			AASC	Autodesk Animator
+			ABYR	Kensington ?ABYR?
+			AEMI	Array Microsystems VideoONE MPEG1-I Capture
+			AFLC	Autodesk Animator FLC
+			AFLI	Autodesk Animator FLI
+			AMPG	Array Microsystems VideoONE MPEG
+			ANIM	Intel RDX (ANIM)
+			AP41	AngelPotion Definitive
+			ASV1	Asus Video v1
+			ASV2	Asus Video v2
+			ASVX	Asus Video 2.0 (audio)
+			AUR2	AuraVision Aura 2 Codec - YUV 4:2:2
+			AURA	AuraVision Aura 1 Codec - YUV 4:1:1
+			AVDJ	Independent JPEG Group\'s codec (AVDJ)
+			AVRN	Independent JPEG Group\'s codec (AVRN)
+			AYUV	4:4:4 YUV (AYUV)
+			AZPR	Quicktime Apple Video (AZPR)
+			BGR 	Raw RGB32
+			BLZ0	Blizzard DivX MPEG-4
+			BTVC	Conexant Composite Video
+			BINK	RAD Game Tools Bink Video
+			BT20	Conexant Prosumer Video
+			BTCV	Conexant Composite Video Codec
+			BW10	Data Translation Broadway MPEG Capture
+			CC12	Intel YUV12
+			CDVC	Canopus DV
+			CFCC	Digital Processing Systems DPS Perception
+			CGDI	Microsoft Office 97 Camcorder Video
+			CHAM	Winnov Caviara Champagne
+			CJPG	Creative WebCam JPEG
+			CLJR	Cirrus Logic YUV 4:1:1
+			CMYK	Common Data Format in Printing (Colorgraph)
+			CPLA	Weitek 4:2:0 YUV Planar
+			CRAM	Microsoft Video 1 (CRAM)
+			cvid	Radius Cinepak
+			CVID	Radius Cinepak
+			CWLT	Microsoft Color WLT DIB
+			CYUV	Creative Labs YUV
+			CYUY	ATI YUV
+			D261	H.261
+			D263	H.263
+			DIB 	Device Independent Bitmap
+			DIV1	FFmpeg OpenDivX
+			DIV2	Microsoft MPEG-4 v1/v2
+			DIV3	DivX ;-) MPEG-4 v3.x Low-Motion
+			DIV4	DivX ;-) MPEG-4 v3.x Fast-Motion
+			DIV5	DivX MPEG-4 v5.x
+			DIV6	DivX ;-) (MS MPEG-4 v3.x)
+			DIVX	DivX MPEG-4 v4 (OpenDivX / Project Mayo)
+			divx	DivX MPEG-4
+			DMB1	Matrox Rainbow Runner hardware MJPEG
+			DMB2	Paradigm MJPEG
+			DSVD	?DSVD?
+			DUCK	Duck TrueMotion 1.0
+			DPS0	DPS/Leitch Reality Motion JPEG
+			DPSC	DPS/Leitch PAR Motion JPEG
+			DV25	Matrox DVCPRO codec
+			DV50	Matrox DVCPRO50 codec
+			DVC 	IEC 61834 and SMPTE 314M (DVC/DV Video)
+			DVCP	IEC 61834 and SMPTE 314M (DVC/DV Video)
+			DVHD	IEC Standard DV 1125 lines @ 30fps / 1250 lines @ 25fps
+			DVMA	Darim Vision DVMPEG (dummy for MPEG compressor) (www.darvision.com)
+			DVSL	IEC Standard DV compressed in SD (SDL)
+			DVAN	?DVAN?
+			DVE2	InSoft DVE-2 Videoconferencing
+			dvsd	IEC 61834 and SMPTE 314M DVC/DV Video
+			DVSD	IEC 61834 and SMPTE 314M DVC/DV Video
+			DVX1	Lucent DVX1000SP Video Decoder
+			DVX2	Lucent DVX2000S Video Decoder
+			DVX3	Lucent DVX3000S Video Decoder
+			DX50	DivX v5
+			DXT1	Microsoft DirectX Compressed Texture (DXT1)
+			DXT2	Microsoft DirectX Compressed Texture (DXT2)
+			DXT3	Microsoft DirectX Compressed Texture (DXT3)
+			DXT4	Microsoft DirectX Compressed Texture (DXT4)
+			DXT5	Microsoft DirectX Compressed Texture (DXT5)
+			DXTC	Microsoft DirectX Compressed Texture (DXTC)
+			DXTn	Microsoft DirectX Compressed Texture (DXTn)
+			EM2V	Etymonix MPEG-2 I-frame (www.etymonix.com)
+			EKQ0	Elsa ?EKQ0?
+			ELK0	Elsa ?ELK0?
+			ESCP	Eidos Escape
+			ETV1	eTreppid Video ETV1
+			ETV2	eTreppid Video ETV2
+			ETVC	eTreppid Video ETVC
+			FLIC	Autodesk FLI/FLC Animation
+			FLV1	Sorenson Spark
+			FLV4	On2 TrueMotion VP6
+			FRWT	Darim Vision Forward Motion JPEG (www.darvision.com)
+			FRWU	Darim Vision Forward Uncompressed (www.darvision.com)
+			FLJP	D-Vision Field Encoded Motion JPEG
+			FPS1	FRAPS v1
+			FRWA	SoftLab-Nsk Forward Motion JPEG w/ alpha channel
+			FRWD	SoftLab-Nsk Forward Motion JPEG
+			FVF1	Iterated Systems Fractal Video Frame
+			GLZW	Motion LZW (gabest@freemail.hu)
+			GPEG	Motion JPEG (gabest@freemail.hu)
+			GWLT	Microsoft Greyscale WLT DIB
+			H260	Intel ITU H.260 Videoconferencing
+			H261	Intel ITU H.261 Videoconferencing
+			H262	Intel ITU H.262 Videoconferencing
+			H263	Intel ITU H.263 Videoconferencing
+			H264	Intel ITU H.264 Videoconferencing
+			H265	Intel ITU H.265 Videoconferencing
+			H266	Intel ITU H.266 Videoconferencing
+			H267	Intel ITU H.267 Videoconferencing
+			H268	Intel ITU H.268 Videoconferencing
+			H269	Intel ITU H.269 Videoconferencing
+			HFYU	Huffman Lossless Codec
+			HMCR	Rendition Motion Compensation Format (HMCR)
+			HMRR	Rendition Motion Compensation Format (HMRR)
+			I263	FFmpeg I263 decoder
+			IF09	Indeo YVU9 ("YVU9 with additional delta-frame info after the U plane")
+			IUYV	Interlaced version of UYVY (www.leadtools.com)
+			IY41	Interlaced version of Y41P (www.leadtools.com)
+			IYU1	12 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec    IEEE standard
+			IYU2	24 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec    IEEE standard
+			IYUV	Planar YUV format (8-bpp Y plane, followed by 8-bpp 2×2 U and V planes)
+			i263	Intel ITU H.263 Videoconferencing (i263)
+			I420	Intel Indeo 4
+			IAN 	Intel Indeo 4 (RDX)
+			ICLB	InSoft CellB Videoconferencing
+			IGOR	Power DVD
+			IJPG	Intergraph JPEG
+			ILVC	Intel Layered Video
+			ILVR	ITU-T H.263+
+			IPDV	I-O Data Device Giga AVI DV Codec
+			IR21	Intel Indeo 2.1
+			IRAW	Intel YUV Uncompressed
+			IV30	Intel Indeo 3.0
+			IV31	Intel Indeo 3.1
+			IV32	Ligos Indeo 3.2
+			IV33	Ligos Indeo 3.3
+			IV34	Ligos Indeo 3.4
+			IV35	Ligos Indeo 3.5
+			IV36	Ligos Indeo 3.6
+			IV37	Ligos Indeo 3.7
+			IV38	Ligos Indeo 3.8
+			IV39	Ligos Indeo 3.9
+			IV40	Ligos Indeo Interactive 4.0
+			IV41	Ligos Indeo Interactive 4.1
+			IV42	Ligos Indeo Interactive 4.2
+			IV43	Ligos Indeo Interactive 4.3
+			IV44	Ligos Indeo Interactive 4.4
+			IV45	Ligos Indeo Interactive 4.5
+			IV46	Ligos Indeo Interactive 4.6
+			IV47	Ligos Indeo Interactive 4.7
+			IV48	Ligos Indeo Interactive 4.8
+			IV49	Ligos Indeo Interactive 4.9
+			IV50	Ligos Indeo Interactive 5.0
+			JBYR	Kensington ?JBYR?
+			JPEG	Still Image JPEG DIB
+			JPGL	Pegasus Lossless Motion JPEG
+			KMVC	Team17 Software Karl Morton\'s Video Codec
+			LSVM	Vianet Lighting Strike Vmail (Streaming) (www.vianet.com)
+			LEAD	LEAD Video Codec
+			Ljpg	LEAD MJPEG Codec
+			MDVD	Alex MicroDVD Video (hacked MS MPEG-4) (www.tiasoft.de)
+			MJPA	Morgan Motion JPEG (MJPA) (www.morgan-multimedia.com)
+			MJPB	Morgan Motion JPEG (MJPB) (www.morgan-multimedia.com)
+			MMES	Matrox MPEG-2 I-frame
+			MP2v	Microsoft S-Mpeg 4 version 1 (MP2v)
+			MP42	Microsoft S-Mpeg 4 version 2 (MP42)
+			MP43	Microsoft S-Mpeg 4 version 3 (MP43)
+			MP4S	Microsoft S-Mpeg 4 version 3 (MP4S)
+			MP4V	FFmpeg MPEG-4
+			MPG1	FFmpeg MPEG 1/2
+			MPG2	FFmpeg MPEG 1/2
+			MPG3	FFmpeg DivX ;-) (MS MPEG-4 v3)
+			MPG4	Microsoft MPEG-4
+			MPGI	Sigma Designs MPEG
+			MPNG	PNG images decoder
+			MSS1	Microsoft Windows Screen Video
+			MSZH	LCL (Lossless Codec Library) (www.geocities.co.jp/Playtown-Denei/2837/LRC.htm)
+			M261	Microsoft H.261
+			M263	Microsoft H.263
+			M4S2	Microsoft Fully Compliant MPEG-4 v2 simple profile (M4S2)
+			m4s2	Microsoft Fully Compliant MPEG-4 v2 simple profile (m4s2)
+			MC12	ATI Motion Compensation Format (MC12)
+			MCAM	ATI Motion Compensation Format (MCAM)
+			MJ2C	Morgan Multimedia Motion JPEG2000
+			mJPG	IBM Motion JPEG w/ Huffman Tables
+			MJPG	Microsoft Motion JPEG DIB
+			MP42	Microsoft MPEG-4 (low-motion)
+			MP43	Microsoft MPEG-4 (fast-motion)
+			MP4S	Microsoft MPEG-4 (MP4S)
+			mp4s	Microsoft MPEG-4 (mp4s)
+			MPEG	Chromatic Research MPEG-1 Video I-Frame
+			MPG4	Microsoft MPEG-4 Video High Speed Compressor
+			MPGI	Sigma Designs MPEG
+			MRCA	FAST Multimedia Martin Regen Codec
+			MRLE	Microsoft Run Length Encoding
+			MSVC	Microsoft Video 1
+			MTX1	Matrox ?MTX1?
+			MTX2	Matrox ?MTX2?
+			MTX3	Matrox ?MTX3?
+			MTX4	Matrox ?MTX4?
+			MTX5	Matrox ?MTX5?
+			MTX6	Matrox ?MTX6?
+			MTX7	Matrox ?MTX7?
+			MTX8	Matrox ?MTX8?
+			MTX9	Matrox ?MTX9?
+			MV12	Motion Pixels Codec (old)
+			MWV1	Aware Motion Wavelets
+			nAVI	SMR Codec (hack of Microsoft MPEG-4) (IRC #shadowrealm)
+			NT00	NewTek LightWave HDTV YUV w/ Alpha (www.newtek.com)
+			NUV1	NuppelVideo
+			NTN1	Nogatech Video Compression 1
+			NVS0	nVidia GeForce Texture (NVS0)
+			NVS1	nVidia GeForce Texture (NVS1)
+			NVS2	nVidia GeForce Texture (NVS2)
+			NVS3	nVidia GeForce Texture (NVS3)
+			NVS4	nVidia GeForce Texture (NVS4)
+			NVS5	nVidia GeForce Texture (NVS5)
+			NVT0	nVidia GeForce Texture (NVT0)
+			NVT1	nVidia GeForce Texture (NVT1)
+			NVT2	nVidia GeForce Texture (NVT2)
+			NVT3	nVidia GeForce Texture (NVT3)
+			NVT4	nVidia GeForce Texture (NVT4)
+			NVT5	nVidia GeForce Texture (NVT5)
+			PIXL	MiroXL, Pinnacle PCTV
+			PDVC	I-O Data Device Digital Video Capture DV codec
+			PGVV	Radius Video Vision
+			PHMO	IBM Photomotion
+			PIM1	MPEG Realtime (Pinnacle Cards)
+			PIM2	Pegasus Imaging ?PIM2?
+			PIMJ	Pegasus Imaging Lossless JPEG
+			PVEZ	Horizons Technology PowerEZ
+			PVMM	PacketVideo Corporation MPEG-4
+			PVW2	Pegasus Imaging Wavelet Compression
+			Q1.0	Q-Team\'s QPEG 1.0 (www.q-team.de)
+			Q1.1	Q-Team\'s QPEG 1.1 (www.q-team.de)
+			QPEG	Q-Team QPEG 1.0
+			qpeq	Q-Team QPEG 1.1
+			RGB 	Raw BGR32
+			RGBA	Raw RGB w/ Alpha
+			RMP4	REALmagic MPEG-4 (unauthorized XVID copy) (www.sigmadesigns.com)
+			ROQV	Id RoQ File Video Decoder
+			RPZA	Quicktime Apple Video (RPZA)
+			RUD0	Rududu video codec (http://rududu.ifrance.com/rududu/)
+			RV10	RealVideo 1.0 (aka RealVideo 5.0)
+			RV13	RealVideo 1.0 (RV13)
+			RV20	RealVideo G2
+			RV30	RealVideo 8
+			RV40	RealVideo 9
+			RGBT	Raw RGB w/ Transparency
+			RLE 	Microsoft Run Length Encoder
+			RLE4	Run Length Encoded (4bpp, 16-color)
+			RLE8	Run Length Encoded (8bpp, 256-color)
+			RT21	Intel Indeo RealTime Video 2.1
+			rv20	RealVideo G2
+			rv30	RealVideo 8
+			RVX 	Intel RDX (RVX )
+			SMC 	Apple Graphics (SMC )
+			SP54	Logitech Sunplus Sp54 Codec for Mustek GSmart Mini 2
+			SPIG	Radius Spigot
+			SVQ3	Sorenson Video 3 (Apple Quicktime 5)
+			s422	Tekram VideoCap C210 YUV 4:2:2
+			SDCC	Sun Communication Digital Camera Codec
+			SFMC	CrystalNet Surface Fitting Method
+			SMSC	Radius SMSC
+			SMSD	Radius SMSD
+			smsv	WorldConnect Wavelet Video
+			SPIG	Radius Spigot
+			SPLC	Splash Studios ACM Audio Codec (www.splashstudios.net)
+			SQZ2	Microsoft VXTreme Video Codec V2
+			STVA	ST Microelectronics CMOS Imager Data (Bayer)
+			STVB	ST Microelectronics CMOS Imager Data (Nudged Bayer)
+			STVC	ST Microelectronics CMOS Imager Data (Bunched)
+			STVX	ST Microelectronics CMOS Imager Data (Extended CODEC Data Format)
+			STVY	ST Microelectronics CMOS Imager Data (Extended CODEC Data Format with Correction Data)
+			SV10	Sorenson Video R1
+			SVQ1	Sorenson Video
+			T420	Toshiba YUV 4:2:0
+			TM2A	Duck TrueMotion Archiver 2.0 (www.duck.com)
+			TVJP	Pinnacle/Truevision Targa 2000 board (TVJP)
+			TVMJ	Pinnacle/Truevision Targa 2000 board (TVMJ)
+			TY0N	Tecomac Low-Bit Rate Codec (www.tecomac.com)
+			TY2C	Trident Decompression Driver
+			TLMS	TeraLogic Motion Intraframe Codec (TLMS)
+			TLST	TeraLogic Motion Intraframe Codec (TLST)
+			TM20	Duck TrueMotion 2.0
+			TM2X	Duck TrueMotion 2X
+			TMIC	TeraLogic Motion Intraframe Codec (TMIC)
+			TMOT	Horizons Technology TrueMotion S
+			tmot	Horizons TrueMotion Video Compression
+			TR20	Duck TrueMotion RealTime 2.0
+			TSCC	TechSmith Screen Capture Codec
+			TV10	Tecomac Low-Bit Rate Codec
+			TY2N	Trident ?TY2N?
+			U263	UB Video H.263/H.263+/H.263++ Decoder
+			UMP4	UB Video MPEG 4 (www.ubvideo.com)
+			UYNV	Nvidia UYVY packed 4:2:2
+			UYVP	Evans & Sutherland YCbCr 4:2:2 extended precision
+			UCOD	eMajix.com ClearVideo
+			ULTI	IBM Ultimotion
+			UYVY	UYVY packed 4:2:2
+			V261	Lucent VX2000S
+			VIFP	VFAPI Reader Codec (www.yks.ne.jp/~hori/)
+			VIV1	FFmpeg H263+ decoder
+			VIV2	Vivo H.263
+			VQC2	Vector-quantised codec 2 (research) http://eprints.ecs.soton.ac.uk/archive/00001310/01/VTC97-js.pdf)
+			VTLP	Alaris VideoGramPiX
+			VYU9	ATI YUV (VYU9)
+			VYUY	ATI YUV (VYUY)
+			V261	Lucent VX2000S
+			V422	Vitec Multimedia 24-bit YUV 4:2:2 Format
+			V655	Vitec Multimedia 16-bit YUV 4:2:2 Format
+			VCR1	ATI Video Codec 1
+			VCR2	ATI Video Codec 2
+			VCR3	ATI VCR 3.0
+			VCR4	ATI VCR 4.0
+			VCR5	ATI VCR 5.0
+			VCR6	ATI VCR 6.0
+			VCR7	ATI VCR 7.0
+			VCR8	ATI VCR 8.0
+			VCR9	ATI VCR 9.0
+			VDCT	Vitec Multimedia Video Maker Pro DIB
+			VDOM	VDOnet VDOWave
+			VDOW	VDOnet VDOLive (H.263)
+			VDTZ	Darim Vison VideoTizer YUV
+			VGPX	Alaris VideoGramPiX
+			VIDS	Vitec Multimedia YUV 4:2:2 CCIR 601 for V422
+			VIVO	Vivo H.263 v2.00
+			vivo	Vivo H.263
+			VIXL	Miro/Pinnacle Video XL
+			VLV1	VideoLogic/PURE Digital Videologic Capture
+			VP30	On2 VP3.0
+			VP31	On2 VP3.1
+			VP6F	On2 TrueMotion VP6
+			VX1K	Lucent VX1000S Video Codec
+			VX2K	Lucent VX2000S Video Codec
+			VXSP	Lucent VX1000SP Video Codec
+			WBVC	Winbond W9960
+			WHAM	Microsoft Video 1 (WHAM)
+			WINX	Winnov Software Compression
+			WJPG	AverMedia Winbond JPEG
+			WMV1	Windows Media Video V7
+			WMV2	Windows Media Video V8
+			WMV3	Windows Media Video V9
+			WNV1	Winnov Hardware Compression
+			XYZP	Extended PAL format XYZ palette (www.riff.org)
+			x263	Xirlink H.263
+			XLV0	NetXL Video Decoder
+			XMPG	Xing MPEG (I-Frame only)
+			XVID	XviD MPEG-4 (www.xvid.org)
+			XXAN	?XXAN?
+			YU92	Intel YUV (YU92)
+			YUNV	Nvidia Uncompressed YUV 4:2:2
+			YUVP	Extended PAL format YUV palette (www.riff.org)
+			Y211	YUV 2:1:1 Packed
+			Y411	YUV 4:1:1 Packed
+			Y41B	Weitek YUV 4:1:1 Planar
+			Y41P	Brooktree PC1 YUV 4:1:1 Packed
+			Y41T	Brooktree PC1 YUV 4:1:1 with transparency
+			Y42B	Weitek YUV 4:2:2 Planar
+			Y42T	Brooktree UYUV 4:2:2 with transparency
+			Y422	ADS Technologies Copy of UYVY used in Pyro WebCam firewire camera
+			Y800	Simple, single Y plane for monochrome images
+			Y8  	Grayscale video
+			YC12	Intel YUV 12 codec
+			YUV8	Winnov Caviar YUV8
+			YUV9	Intel YUV9
+			YUY2	Uncompressed YUV 4:2:2
+			YUYV	Canopus YUV
+			YV12	YVU12 Planar
+			YVU9	Intel YVU9 Planar (8-bpp Y plane, followed by 8-bpp 4x4 U and V planes)
+			YVYU	YVYU 4:2:2 Packed
+			ZLIB	Lossless Codec Library zlib compression (www.geocities.co.jp/Playtown-Denei/2837/LRC.htm)
+			ZPEG	Metheus Video Zipper
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($fourcc, $begin, __LINE__, __FILE__, 'riff-fourcc');
+	}
+
+	private function EitherEndian2Int($byteword, $signed=false) {
+		if ($this->getid3->info['fileformat'] == 'riff') {
+			return getid3_lib::LittleEndian2Int($byteword, $signed);
+		}
+		return getid3_lib::BigEndian2Int($byteword, false, $signed);
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio.ac3.php b/wp-includes/ID3/module.audio.ac3.php
new file mode 100644
index 000000000..9834feb5b
--- /dev/null
+++ b/wp-includes/ID3/module.audio.ac3.php
@@ -0,0 +1,473 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio.ac3.php                                        //
+// module for analyzing AC-3 (aka Dolby Digital) audio files   //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+class getid3_ac3 extends getid3_handler
+{
+    private $AC3header = array();
+    private $BSIoffset = 0;
+
+    const syncword = "\x0B\x77";
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		///AH
+		$info['ac3']['raw']['bsi'] = array();
+		$thisfile_ac3              = &$info['ac3'];
+		$thisfile_ac3_raw          = &$thisfile_ac3['raw'];
+		$thisfile_ac3_raw_bsi      = &$thisfile_ac3_raw['bsi'];
+
+
+		// http://www.atsc.org/standards/a_52a.pdf
+
+		$info['fileformat'] = 'ac3';
+
+		// An AC-3 serial coded audio bit stream is made up of a sequence of synchronization frames
+		// Each synchronization frame contains 6 coded audio blocks (AB), each of which represent 256
+		// new audio samples per channel. A synchronization information (SI) header at the beginning
+		// of each frame contains information needed to acquire and maintain synchronization. A
+		// bit stream information (BSI) header follows SI, and contains parameters describing the coded
+		// audio service. The coded audio blocks may be followed by an auxiliary data (Aux) field. At the
+		// end of each frame is an error check field that includes a CRC word for error detection. An
+		// additional CRC word is located in the SI header, the use of which, by a decoder, is optional.
+		//
+		// syncinfo() | bsi() | AB0 | AB1 | AB2 | AB3 | AB4 | AB5 | Aux | CRC
+
+		// syncinfo() {
+		// 	 syncword    16
+		// 	 crc1        16
+		// 	 fscod        2
+		// 	 frmsizecod   6
+		// } /* end of syncinfo */
+
+		$this->fseek($info['avdataoffset']);
+		$this->AC3header['syncinfo'] = $this->fread(5);
+
+		if (strpos($this->AC3header['syncinfo'], self::syncword) === 0) {
+			$thisfile_ac3_raw['synchinfo']['synchword'] = self::syncword;
+			$offset = 2;
+		} else {
+			if (!$this->isDependencyFor('matroska')) {
+				unset($info['fileformat'], $info['ac3']);
+				return $this->error('Expecting "'.getid3_lib::PrintHexBytes(self::syncword).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes(substr($this->AC3header['syncinfo'], 0, 2)).'"');
+			}
+			$offset = 0;
+			$this->fseek(-2, SEEK_CUR);
+		}
+
+		$info['audio']['dataformat']   = 'ac3';
+		$info['audio']['bitrate_mode'] = 'cbr';
+		$info['audio']['lossless']     = false;
+
+		$thisfile_ac3_raw['synchinfo']['crc1']       = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], $offset, 2));
+		$ac3_synchinfo_fscod_frmsizecod              = getid3_lib::LittleEndian2Int(substr($this->AC3header['syncinfo'], ($offset + 2), 1));
+		$thisfile_ac3_raw['synchinfo']['fscod']      = ($ac3_synchinfo_fscod_frmsizecod & 0xC0) >> 6;
+		$thisfile_ac3_raw['synchinfo']['frmsizecod'] = ($ac3_synchinfo_fscod_frmsizecod & 0x3F);
+
+		$thisfile_ac3['sample_rate'] = self::sampleRateCodeLookup($thisfile_ac3_raw['synchinfo']['fscod']);
+		if ($thisfile_ac3_raw['synchinfo']['fscod'] <= 3) {
+			$info['audio']['sample_rate'] = $thisfile_ac3['sample_rate'];
+		}
+
+		$thisfile_ac3['frame_length'] = self::frameSizeLookup($thisfile_ac3_raw['synchinfo']['frmsizecod'], $thisfile_ac3_raw['synchinfo']['fscod']);
+		$thisfile_ac3['bitrate']      = self::bitrateLookup($thisfile_ac3_raw['synchinfo']['frmsizecod']);
+		$info['audio']['bitrate'] = $thisfile_ac3['bitrate'];
+
+		$this->AC3header['bsi'] = getid3_lib::BigEndian2Bin($this->fread(15));
+		$ac3_bsi_offset = 0;
+
+		$thisfile_ac3_raw_bsi['bsid'] = $this->readHeaderBSI(5);
+		if ($thisfile_ac3_raw_bsi['bsid'] > 8) {
+			// Decoders which can decode version 8 will thus be able to decode version numbers less than 8.
+			// If this standard is extended by the addition of additional elements or features, a value of bsid greater than 8 will be used.
+			// Decoders built to this version of the standard will not be able to decode versions with bsid greater than 8.
+			$this->error('Bit stream identification is version '.$thisfile_ac3_raw_bsi['bsid'].', but getID3() only understands up to version 8');
+		    unset($info['ac3']);
+			return false;
+		}
+
+		$thisfile_ac3_raw_bsi['bsmod'] = $this->readHeaderBSI(3);
+		$thisfile_ac3_raw_bsi['acmod'] = $this->readHeaderBSI(3);
+
+		$thisfile_ac3['service_type'] = self::serviceTypeLookup($thisfile_ac3_raw_bsi['bsmod'], $thisfile_ac3_raw_bsi['acmod']);
+		$ac3_coding_mode = self::audioCodingModeLookup($thisfile_ac3_raw_bsi['acmod']);
+		foreach($ac3_coding_mode as $key => $value) {
+			$thisfile_ac3[$key] = $value;
+		}
+		switch ($thisfile_ac3_raw_bsi['acmod']) {
+			case 0:
+			case 1:
+				$info['audio']['channelmode'] = 'mono';
+				break;
+			case 3:
+			case 4:
+				$info['audio']['channelmode'] = 'stereo';
+				break;
+			default:
+				$info['audio']['channelmode'] = 'surround';
+				break;
+		}
+		$info['audio']['channels'] = $thisfile_ac3['num_channels'];
+
+		if ($thisfile_ac3_raw_bsi['acmod'] & 0x01) {
+			// If the lsb of acmod is a 1, center channel is in use and cmixlev follows in the bit stream.
+			$thisfile_ac3_raw_bsi['cmixlev'] = $this->readHeaderBSI(2);
+			$thisfile_ac3['center_mix_level'] = self::centerMixLevelLookup($thisfile_ac3_raw_bsi['cmixlev']);
+		}
+
+		if ($thisfile_ac3_raw_bsi['acmod'] & 0x04) {
+			// If the msb of acmod is a 1, surround channels are in use and surmixlev follows in the bit stream.
+			$thisfile_ac3_raw_bsi['surmixlev'] = $this->readHeaderBSI(2);
+			$thisfile_ac3['surround_mix_level'] = self::surroundMixLevelLookup($thisfile_ac3_raw_bsi['surmixlev']);
+		}
+
+		if ($thisfile_ac3_raw_bsi['acmod'] == 0x02) {
+			// When operating in the two channel mode, this 2-bit code indicates whether or not the program has been encoded in Dolby Surround.
+			$thisfile_ac3_raw_bsi['dsurmod'] = $this->readHeaderBSI(2);
+			$thisfile_ac3['dolby_surround_mode'] = self::dolbySurroundModeLookup($thisfile_ac3_raw_bsi['dsurmod']);
+		}
+
+		$thisfile_ac3_raw_bsi['lfeon'] = (bool) $this->readHeaderBSI(1);
+		$thisfile_ac3['lfe_enabled'] = $thisfile_ac3_raw_bsi['lfeon'];
+		if ($thisfile_ac3_raw_bsi['lfeon']) {
+			//$info['audio']['channels']++;
+			$info['audio']['channels'] .= '.1';
+		}
+
+		$thisfile_ac3['channels_enabled'] = self::channelsEnabledLookup($thisfile_ac3_raw_bsi['acmod'], $thisfile_ac3_raw_bsi['lfeon']);
+
+		// This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31.
+		// The value of 0 is reserved. The values of 1 to 31 are interpreted as -1 dB to -31 dB with respect to digital 100 percent.
+		$thisfile_ac3_raw_bsi['dialnorm'] = $this->readHeaderBSI(5);
+		$thisfile_ac3['dialogue_normalization'] = '-'.$thisfile_ac3_raw_bsi['dialnorm'].'dB';
+
+		$thisfile_ac3_raw_bsi['compre_flag'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['compre_flag']) {
+			$thisfile_ac3_raw_bsi['compr'] = $this->readHeaderBSI(8);
+			$thisfile_ac3['heavy_compression'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr']);
+		}
+
+		$thisfile_ac3_raw_bsi['langcode_flag'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['langcode_flag']) {
+			$thisfile_ac3_raw_bsi['langcod'] = $this->readHeaderBSI(8);
+		}
+
+		$thisfile_ac3_raw_bsi['audprodie'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['audprodie']) {
+			$thisfile_ac3_raw_bsi['mixlevel'] = $this->readHeaderBSI(5);
+			$thisfile_ac3_raw_bsi['roomtyp']  = $this->readHeaderBSI(2);
+
+			$thisfile_ac3['mixing_level'] = (80 + $thisfile_ac3_raw_bsi['mixlevel']).'dB';
+			$thisfile_ac3['room_type']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp']);
+		}
+
+		if ($thisfile_ac3_raw_bsi['acmod'] == 0x00) {
+			// If acmod is 0, then two completely independent program channels (dual mono)
+			// are encoded into the bit stream, and are referenced as Ch1, Ch2. In this case,
+			// a number of additional items are present in BSI or audblk to fully describe Ch2.
+
+			// This indicates how far the average dialogue level is below digital 100 percent. Valid values are 1-31.
+			// The value of 0 is reserved. The values of 1 to 31 are interpreted as -1 dB to -31 dB with respect to digital 100 percent.
+			$thisfile_ac3_raw_bsi['dialnorm2'] = $this->readHeaderBSI(5);
+			$thisfile_ac3['dialogue_normalization2'] = '-'.$thisfile_ac3_raw_bsi['dialnorm2'].'dB';
+
+			$thisfile_ac3_raw_bsi['compre_flag2'] = (bool) $this->readHeaderBSI(1);
+			if ($thisfile_ac3_raw_bsi['compre_flag2']) {
+				$thisfile_ac3_raw_bsi['compr2'] = $this->readHeaderBSI(8);
+				$thisfile_ac3['heavy_compression2'] = self::heavyCompression($thisfile_ac3_raw_bsi['compr2']);
+			}
+
+			$thisfile_ac3_raw_bsi['langcode_flag2'] = (bool) $this->readHeaderBSI(1);
+			if ($thisfile_ac3_raw_bsi['langcode_flag2']) {
+				$thisfile_ac3_raw_bsi['langcod2'] = $this->readHeaderBSI(8);
+			}
+
+			$thisfile_ac3_raw_bsi['audprodie2'] = (bool) $this->readHeaderBSI(1);
+			if ($thisfile_ac3_raw_bsi['audprodie2']) {
+				$thisfile_ac3_raw_bsi['mixlevel2'] = $this->readHeaderBSI(5);
+				$thisfile_ac3_raw_bsi['roomtyp2']  = $this->readHeaderBSI(2);
+
+				$thisfile_ac3['mixing_level2'] = (80 + $thisfile_ac3_raw_bsi['mixlevel2']).'dB';
+				$thisfile_ac3['room_type2']    = self::roomTypeLookup($thisfile_ac3_raw_bsi['roomtyp2']);
+			}
+
+		}
+
+		$thisfile_ac3_raw_bsi['copyright'] = (bool) $this->readHeaderBSI(1);
+
+		$thisfile_ac3_raw_bsi['original']  = (bool) $this->readHeaderBSI(1);
+
+		$thisfile_ac3_raw_bsi['timecode1_flag'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['timecode1_flag']) {
+			$thisfile_ac3_raw_bsi['timecode1'] = $this->readHeaderBSI(14);
+		}
+
+		$thisfile_ac3_raw_bsi['timecode2_flag'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['timecode2_flag']) {
+			$thisfile_ac3_raw_bsi['timecode2'] = $this->readHeaderBSI(14);
+		}
+
+		$thisfile_ac3_raw_bsi['addbsi_flag'] = (bool) $this->readHeaderBSI(1);
+		if ($thisfile_ac3_raw_bsi['addbsi_flag']) {
+			$thisfile_ac3_raw_bsi['addbsi_length'] = $this->readHeaderBSI(6);
+
+			$this->AC3header['bsi'] .= getid3_lib::BigEndian2Bin($this->fread($thisfile_ac3_raw_bsi['addbsi_length']));
+
+			$thisfile_ac3_raw_bsi['addbsi_data'] = substr($this->AC3header['bsi'], $this->BSIoffset, $thisfile_ac3_raw_bsi['addbsi_length'] * 8);
+			$this->BSIoffset += $thisfile_ac3_raw_bsi['addbsi_length'] * 8;
+		}
+
+		return true;
+	}
+
+	private function readHeaderBSI($length) {
+		$data = substr($this->AC3header['bsi'], $this->BSIoffset, $length);
+		$this->BSIoffset += $length;
+
+		return bindec($data);
+	}
+
+	public static function sampleRateCodeLookup($fscod) {
+		static $sampleRateCodeLookup = array(
+			0 => 48000,
+			1 => 44100,
+			2 => 32000,
+			3 => 'reserved' // If the reserved code is indicated, the decoder should not attempt to decode audio and should mute.
+		);
+		return (isset($sampleRateCodeLookup[$fscod]) ? $sampleRateCodeLookup[$fscod] : false);
+	}
+
+	public static function serviceTypeLookup($bsmod, $acmod) {
+		static $serviceTypeLookup = array();
+		if (empty($serviceTypeLookup)) {
+			for ($i = 0; $i <= 7; $i++) {
+				$serviceTypeLookup[0][$i] = 'main audio service: complete main (CM)';
+				$serviceTypeLookup[1][$i] = 'main audio service: music and effects (ME)';
+				$serviceTypeLookup[2][$i] = 'associated service: visually impaired (VI)';
+				$serviceTypeLookup[3][$i] = 'associated service: hearing impaired (HI)';
+				$serviceTypeLookup[4][$i] = 'associated service: dialogue (D)';
+				$serviceTypeLookup[5][$i] = 'associated service: commentary (C)';
+				$serviceTypeLookup[6][$i] = 'associated service: emergency (E)';
+			}
+
+			$serviceTypeLookup[7][1]      = 'associated service: voice over (VO)';
+			for ($i = 2; $i <= 7; $i++) {
+				$serviceTypeLookup[7][$i] = 'main audio service: karaoke';
+			}
+		}
+		return (isset($serviceTypeLookup[$bsmod][$acmod]) ? $serviceTypeLookup[$bsmod][$acmod] : false);
+	}
+
+	public static function audioCodingModeLookup($acmod) {
+		// array(channel configuration, # channels (not incl LFE), channel order)
+		static $audioCodingModeLookup = array (
+			0 => array('channel_config'=>'1+1', 'num_channels'=>2, 'channel_order'=>'Ch1,Ch2'),
+			1 => array('channel_config'=>'1/0', 'num_channels'=>1, 'channel_order'=>'C'),
+			2 => array('channel_config'=>'2/0', 'num_channels'=>2, 'channel_order'=>'L,R'),
+			3 => array('channel_config'=>'3/0', 'num_channels'=>3, 'channel_order'=>'L,C,R'),
+			4 => array('channel_config'=>'2/1', 'num_channels'=>3, 'channel_order'=>'L,R,S'),
+			5 => array('channel_config'=>'3/1', 'num_channels'=>4, 'channel_order'=>'L,C,R,S'),
+			6 => array('channel_config'=>'2/2', 'num_channels'=>4, 'channel_order'=>'L,R,SL,SR'),
+			7 => array('channel_config'=>'3/2', 'num_channels'=>5, 'channel_order'=>'L,C,R,SL,SR'),
+		);
+		return (isset($audioCodingModeLookup[$acmod]) ? $audioCodingModeLookup[$acmod] : false);
+	}
+
+	public static function centerMixLevelLookup($cmixlev) {
+		static $centerMixLevelLookup;
+		if (empty($centerMixLevelLookup)) {
+			$centerMixLevelLookup = array(
+				0 => pow(2, -3.0 / 6), // 0.707 (-3.0 dB)
+				1 => pow(2, -4.5 / 6), // 0.595 (-4.5 dB)
+				2 => pow(2, -6.0 / 6), // 0.500 (-6.0 dB)
+				3 => 'reserved'
+			);
+		}
+		return (isset($centerMixLevelLookup[$cmixlev]) ? $centerMixLevelLookup[$cmixlev] : false);
+	}
+
+	public static function surroundMixLevelLookup($surmixlev) {
+		static $surroundMixLevelLookup;
+		if (empty($surroundMixLevelLookup)) {
+			$surroundMixLevelLookup = array(
+				0 => pow(2, -3.0 / 6),
+				1 => pow(2, -6.0 / 6),
+				2 => 0,
+				3 => 'reserved'
+			);
+		}
+		return (isset($surroundMixLevelLookup[$surmixlev]) ? $surroundMixLevelLookup[$surmixlev] : false);
+	}
+
+	public static function dolbySurroundModeLookup($dsurmod) {
+		static $dolbySurroundModeLookup = array(
+			0 => 'not indicated',
+			1 => 'Not Dolby Surround encoded',
+			2 => 'Dolby Surround encoded',
+			3 => 'reserved'
+		);
+		return (isset($dolbySurroundModeLookup[$dsurmod]) ? $dolbySurroundModeLookup[$dsurmod] : false);
+	}
+
+	public static function channelsEnabledLookup($acmod, $lfeon) {
+		$lookup = array(
+			'ch1'=>(bool) ($acmod == 0),
+			'ch2'=>(bool) ($acmod == 0),
+			'left'=>(bool) ($acmod > 1),
+			'right'=>(bool) ($acmod > 1),
+			'center'=>(bool) ($acmod & 0x01),
+			'surround_mono'=>false,
+			'surround_left'=>false,
+			'surround_right'=>false,
+			'lfe'=>$lfeon);
+		switch ($acmod) {
+			case 4:
+			case 5:
+				$lookup['surround_mono']  = true;
+				break;
+			case 6:
+			case 7:
+				$lookup['surround_left']  = true;
+				$lookup['surround_right'] = true;
+				break;
+		}
+		return $lookup;
+	}
+
+	public static function heavyCompression($compre) {
+		// The first four bits indicate gain changes in 6.02dB increments which can be
+		// implemented with an arithmetic shift operation. The following four bits
+		// indicate linear gain changes, and require a 5-bit multiply.
+		// We will represent the two 4-bit fields of compr as follows:
+		//   X0 X1 X2 X3 . Y4 Y5 Y6 Y7
+		// The meaning of the X values is most simply described by considering X to represent a 4-bit
+		// signed integer with values from -8 to +7. The gain indicated by X is then (X + 1) * 6.02 dB. The
+		// following table shows this in detail.
+
+		// Meaning of 4 msb of compr
+		//  7    +48.16 dB
+		//  6    +42.14 dB
+		//  5    +36.12 dB
+		//  4    +30.10 dB
+		//  3    +24.08 dB
+		//  2    +18.06 dB
+		//  1    +12.04 dB
+		//  0     +6.02 dB
+		// -1         0 dB
+		// -2     -6.02 dB
+		// -3    -12.04 dB
+		// -4    -18.06 dB
+		// -5    -24.08 dB
+		// -6    -30.10 dB
+		// -7    -36.12 dB
+		// -8    -42.14 dB
+
+		$fourbit = str_pad(decbin(($compre & 0xF0) >> 4), 4, '0', STR_PAD_LEFT);
+		if ($fourbit{0} == '1') {
+			$log_gain = -8 + bindec(substr($fourbit, 1));
+		} else {
+			$log_gain = bindec(substr($fourbit, 1));
+		}
+		$log_gain = ($log_gain + 1) * getid3_lib::RGADamplitude2dB(2);
+
+		// The value of Y is a linear representation of a gain change of up to -6 dB. Y is considered to
+		// be an unsigned fractional integer, with a leading value of 1, or: 0.1 Y4 Y5 Y6 Y7 (base 2). Y can
+		// represent values between 0.111112 (or 31/32) and 0.100002 (or 1/2). Thus, Y can represent gain
+		// changes from -0.28 dB to -6.02 dB.
+
+		$lin_gain = (16 + ($compre & 0x0F)) / 32;
+
+		// The combination of X and Y values allows compr to indicate gain changes from
+		//  48.16 - 0.28 = +47.89 dB, to
+		// -42.14 - 6.02 = -48.16 dB.
+
+		return $log_gain - $lin_gain;
+	}
+
+	public static function roomTypeLookup($roomtyp) {
+		static $roomTypeLookup = array(
+			0 => 'not indicated',
+			1 => 'large room, X curve monitor',
+			2 => 'small room, flat monitor',
+			3 => 'reserved'
+		);
+		return (isset($roomTypeLookup[$roomtyp]) ? $roomTypeLookup[$roomtyp] : false);
+	}
+
+	public static function frameSizeLookup($frmsizecod, $fscod) {
+		$padding     = (bool) ($frmsizecod % 2);
+		$framesizeid =   floor($frmsizecod / 2);
+
+		static $frameSizeLookup = array();
+		if (empty($frameSizeLookup)) {
+			$frameSizeLookup = array (
+				0  => array(128, 138, 192),
+				1  => array(40, 160, 174, 240),
+				2  => array(48, 192, 208, 288),
+				3  => array(56, 224, 242, 336),
+				4  => array(64, 256, 278, 384),
+				5  => array(80, 320, 348, 480),
+				6  => array(96, 384, 416, 576),
+				7  => array(112, 448, 486, 672),
+				8  => array(128, 512, 556, 768),
+				9  => array(160, 640, 696, 960),
+				10 => array(192, 768, 834, 1152),
+				11 => array(224, 896, 974, 1344),
+				12 => array(256, 1024, 1114, 1536),
+				13 => array(320, 1280, 1392, 1920),
+				14 => array(384, 1536, 1670, 2304),
+				15 => array(448, 1792, 1950, 2688),
+				16 => array(512, 2048, 2228, 3072),
+				17 => array(576, 2304, 2506, 3456),
+				18 => array(640, 2560, 2786, 3840)
+			);
+		}
+		if (($fscod == 1) && $padding) {
+			// frame lengths are padded by 1 word (16 bits) at 44100
+			$frameSizeLookup[$frmsizecod] += 2;
+		}
+		return (isset($frameSizeLookup[$framesizeid][$fscod]) ? $frameSizeLookup[$framesizeid][$fscod] : false);
+	}
+
+	public static function bitrateLookup($frmsizecod) {
+		$framesizeid =   floor($frmsizecod / 2);
+
+		static $bitrateLookup = array(
+			0  => 32000,
+			1  => 40000,
+			2  => 48000,
+			3  => 56000,
+			4  => 64000,
+			5  => 80000,
+			6  => 96000,
+			7  => 112000,
+			8  => 128000,
+			9  => 160000,
+			10 => 192000,
+			11 => 224000,
+			12 => 256000,
+			13 => 320000,
+			14 => 384000,
+			15 => 448000,
+			16 => 512000,
+			17 => 576000,
+			18 => 640000
+		);
+		return (isset($bitrateLookup[$framesizeid]) ? $bitrateLookup[$framesizeid] : false);
+	}
+
+
+}
diff --git a/wp-includes/ID3/module.audio.dts.php b/wp-includes/ID3/module.audio.dts.php
new file mode 100644
index 000000000..79982cccf
--- /dev/null
+++ b/wp-includes/ID3/module.audio.dts.php
@@ -0,0 +1,290 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio.dts.php                                        //
+// module for analyzing DTS Audio files                        //
+// dependencies: NONE                                          //
+//                                                             //
+/////////////////////////////////////////////////////////////////
+
+
+/**
+* @tutorial http://wiki.multimedia.cx/index.php?title=DTS
+*/
+class getid3_dts extends getid3_handler
+{
+	/**
+	* Default DTS syncword used in native .cpt or .dts formats
+	*/
+    const syncword = "\x7F\xFE\x80\x01";
+
+	private $readBinDataOffset = 0;
+
+    /**
+    * Possible syncwords indicating bitstream encoding
+    */
+    public static $syncwords = array(
+    	0 => "\x7F\xFE\x80\x01",  // raw big-endian
+    	1 => "\xFE\x7F\x01\x80",  // raw little-endian
+    	2 => "\x1F\xFF\xE8\x00",  // 14-bit big-endian
+    	3 => "\xFF\x1F\x00\xE8"); // 14-bit little-endian
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+		$info['fileformat'] = 'dts';
+
+		$this->fseek($info['avdataoffset']);
+		$DTSheader = $this->fread(20); // we only need 2 words magic + 6 words frame header, but these words may be normal 16-bit words OR 14-bit words with 2 highest bits set to zero, so 8 words can be either 8*16/8 = 16 bytes OR 8*16*(16/14)/8 = 18.3 bytes
+
+		// check syncword
+		$sync = substr($DTSheader, 0, 4);
+        if (($encoding = array_search($sync, self::$syncwords)) !== false) {
+
+        	$info['dts']['raw']['magic'] = $sync;
+			$this->readBinDataOffset = 32;
+
+        } elseif ($this->isDependencyFor('matroska')) {
+
+			// Matroska contains DTS without syncword encoded as raw big-endian format
+			$encoding = 0;
+			$this->readBinDataOffset = 0;
+
+        } else {
+
+			unset($info['fileformat']);
+			return $this->error('Expecting "'.implode('| ', array_map('getid3_lib::PrintHexBytes', self::$syncwords)).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($sync).'"');
+
+		}
+
+		// decode header
+		$fhBS = '';
+		for ($word_offset = 0; $word_offset <= strlen($DTSheader); $word_offset += 2) {
+			switch ($encoding) {
+				case 0: // raw big-endian
+					$fhBS .=        getid3_lib::BigEndian2Bin(       substr($DTSheader, $word_offset, 2) );
+					break;
+				case 1: // raw little-endian
+					$fhBS .=        getid3_lib::BigEndian2Bin(strrev(substr($DTSheader, $word_offset, 2)));
+					break;
+				case 2: // 14-bit big-endian
+					$fhBS .= substr(getid3_lib::BigEndian2Bin(       substr($DTSheader, $word_offset, 2) ), 2, 14);
+					break;
+				case 3: // 14-bit little-endian
+					$fhBS .= substr(getid3_lib::BigEndian2Bin(strrev(substr($DTSheader, $word_offset, 2))), 2, 14);
+					break;
+			}
+		}
+
+		$info['dts']['raw']['frame_type']             =        $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['deficit_samples']        =        $this->readBinData($fhBS,  5);
+		$info['dts']['flags']['crc_present']          = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['pcm_sample_blocks']      =        $this->readBinData($fhBS,  7);
+		$info['dts']['raw']['frame_byte_size']        =        $this->readBinData($fhBS, 14);
+		$info['dts']['raw']['channel_arrangement']    =        $this->readBinData($fhBS,  6);
+		$info['dts']['raw']['sample_frequency']       =        $this->readBinData($fhBS,  4);
+		$info['dts']['raw']['bitrate']                =        $this->readBinData($fhBS,  5);
+		$info['dts']['flags']['embedded_downmix']     = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['dynamicrange']         = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['timestamp']            = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['auxdata']              = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['hdcd']                 = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['extension_audio']        =        $this->readBinData($fhBS,  3);
+		$info['dts']['flags']['extended_coding']      = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['audio_sync_insertion'] = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['lfe_effects']            =        $this->readBinData($fhBS,  2);
+		$info['dts']['flags']['predictor_history']    = (bool) $this->readBinData($fhBS,  1);
+		if ($info['dts']['flags']['crc_present']) {
+			$info['dts']['raw']['crc16']              =        $this->readBinData($fhBS, 16);
+		}
+		$info['dts']['flags']['mri_perfect_reconst']  = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['encoder_soft_version']   =        $this->readBinData($fhBS,  4);
+		$info['dts']['raw']['copy_history']           =        $this->readBinData($fhBS,  2);
+		$info['dts']['raw']['bits_per_sample']        =        $this->readBinData($fhBS,  2);
+		$info['dts']['flags']['surround_es']          = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['front_sum_diff']       = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['flags']['surround_sum_diff']    = (bool) $this->readBinData($fhBS,  1);
+		$info['dts']['raw']['dialog_normalization']   =        $this->readBinData($fhBS,  4);
+
+
+		$info['dts']['bitrate']              = self::bitrateLookup($info['dts']['raw']['bitrate']);
+		$info['dts']['bits_per_sample']      = self::bitPerSampleLookup($info['dts']['raw']['bits_per_sample']);
+		$info['dts']['sample_rate']          = self::sampleRateLookup($info['dts']['raw']['sample_frequency']);
+		$info['dts']['dialog_normalization'] = self::dialogNormalization($info['dts']['raw']['dialog_normalization'], $info['dts']['raw']['encoder_soft_version']);
+		$info['dts']['flags']['lossless']    = (($info['dts']['raw']['bitrate'] == 31) ? true  : false);
+		$info['dts']['bitrate_mode']         = (($info['dts']['raw']['bitrate'] == 30) ? 'vbr' : 'cbr');
+		$info['dts']['channels']             = self::numChannelsLookup($info['dts']['raw']['channel_arrangement']);
+		$info['dts']['channel_arrangement']  = self::channelArrangementLookup($info['dts']['raw']['channel_arrangement']);
+
+		$info['audio']['dataformat']          = 'dts';
+		$info['audio']['lossless']            = $info['dts']['flags']['lossless'];
+		$info['audio']['bitrate_mode']        = $info['dts']['bitrate_mode'];
+		$info['audio']['bits_per_sample']     = $info['dts']['bits_per_sample'];
+		$info['audio']['sample_rate']         = $info['dts']['sample_rate'];
+		$info['audio']['channels']            = $info['dts']['channels'];
+		$info['audio']['bitrate']             = $info['dts']['bitrate'];
+		if (isset($info['avdataend']) && !empty($info['dts']['bitrate']) && is_numeric($info['dts']['bitrate'])) {
+			$info['playtime_seconds']         = ($info['avdataend'] - $info['avdataoffset']) / ($info['dts']['bitrate'] / 8);
+			if (($encoding == 2) || ($encoding == 3)) {
+				// 14-bit data packed into 16-bit words, so the playtime is wrong because only (14/16) of the bytes in the data portion of the file are used at the specified bitrate
+				$info['playtime_seconds'] *= (14 / 16);
+			}
+		}
+		return true;
+	}
+
+	private function readBinData($bin, $length) {
+		$data = substr($bin, $this->readBinDataOffset, $length);
+		$this->readBinDataOffset += $length;
+
+		return bindec($data);
+	}
+
+	public static function bitrateLookup($index) {
+		static $lookup = array(
+			0  => 32000,
+			1  => 56000,
+			2  => 64000,
+			3  => 96000,
+			4  => 112000,
+			5  => 128000,
+			6  => 192000,
+			7  => 224000,
+			8  => 256000,
+			9  => 320000,
+			10 => 384000,
+			11 => 448000,
+			12 => 512000,
+			13 => 576000,
+			14 => 640000,
+			15 => 768000,
+			16 => 960000,
+			17 => 1024000,
+			18 => 1152000,
+			19 => 1280000,
+			20 => 1344000,
+			21 => 1408000,
+			22 => 1411200,
+			23 => 1472000,
+			24 => 1536000,
+			25 => 1920000,
+			26 => 2048000,
+			27 => 3072000,
+			28 => 3840000,
+			29 => 'open',
+			30 => 'variable',
+			31 => 'lossless',
+		);
+		return (isset($lookup[$index]) ? $lookup[$index] : false);
+	}
+
+	public static function sampleRateLookup($index) {
+		static $lookup = array(
+			0  => 'invalid',
+			1  => 8000,
+			2  => 16000,
+			3  => 32000,
+			4  => 'invalid',
+			5  => 'invalid',
+			6  => 11025,
+			7  => 22050,
+			8  => 44100,
+			9  => 'invalid',
+			10 => 'invalid',
+			11 => 12000,
+			12 => 24000,
+			13 => 48000,
+			14 => 'invalid',
+			15 => 'invalid',
+		);
+		return (isset($lookup[$index]) ? $lookup[$index] : false);
+	}
+
+	public static function bitPerSampleLookup($index) {
+		static $lookup = array(
+			0  => 16,
+			1  => 20,
+			2  => 24,
+			3  => 24,
+		);
+		return (isset($lookup[$index]) ? $lookup[$index] : false);
+	}
+
+	public static function numChannelsLookup($index) {
+		switch ($index) {
+			case 0:
+				return 1;
+				break;
+			case 1:
+			case 2:
+			case 3:
+			case 4:
+				return 2;
+				break;
+			case 5:
+			case 6:
+				return 3;
+				break;
+			case 7:
+			case 8:
+				return 4;
+				break;
+			case 9:
+				return 5;
+				break;
+			case 10:
+			case 11:
+			case 12:
+				return 6;
+				break;
+			case 13:
+				return 7;
+				break;
+			case 14:
+			case 15:
+				return 8;
+				break;
+		}
+		return false;
+	}
+
+	public static function channelArrangementLookup($index) {
+		static $lookup = array(
+			0  => 'A',
+			1  => 'A + B (dual mono)',
+			2  => 'L + R (stereo)',
+			3  => '(L+R) + (L-R) (sum-difference)',
+			4  => 'LT + RT (left and right total)',
+			5  => 'C + L + R',
+			6  => 'L + R + S',
+			7  => 'C + L + R + S',
+			8  => 'L + R + SL + SR',
+			9  => 'C + L + R + SL + SR',
+			10 => 'CL + CR + L + R + SL + SR',
+			11 => 'C + L + R+ LR + RR + OV',
+			12 => 'CF + CR + LF + RF + LR + RR',
+			13 => 'CL + C + CR + L + R + SL + SR',
+			14 => 'CL + CR + L + R + SL1 + SL2 + SR1 + SR2',
+			15 => 'CL + C+ CR + L + R + SL + S + SR',
+		);
+		return (isset($lookup[$index]) ? $lookup[$index] : 'user-defined');
+	}
+
+	public static function dialogNormalization($index, $version) {
+		switch ($version) {
+			case 7:
+				return 0 - $index;
+				break;
+			case 6:
+				return 0 - 16 - $index;
+				break;
+		}
+		return false;
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio.flac.php b/wp-includes/ID3/module.audio.flac.php
new file mode 100644
index 000000000..6b9598c74
--- /dev/null
+++ b/wp-includes/ID3/module.audio.flac.php
@@ -0,0 +1,442 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio.flac.php                                       //
+// module for analyzing FLAC and OggFLAC audio files           //
+// dependencies: module.audio.ogg.php                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ogg.php', __FILE__, true);
+
+/**
+* @tutorial http://flac.sourceforge.net/format.html
+*/
+class getid3_flac extends getid3_handler
+{
+	const syncword = 'fLaC';
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		$this->fseek($info['avdataoffset']);
+		$StreamMarker = $this->fread(4);
+		if ($StreamMarker != self::syncword) {
+			return $this->error('Expecting "'.getid3_lib::PrintHexBytes(self::syncword).'" at offset '.$info['avdataoffset'].', found "'.getid3_lib::PrintHexBytes($StreamMarker).'"');
+		}
+		$info['fileformat']            = 'flac';
+		$info['audio']['dataformat']   = 'flac';
+		$info['audio']['bitrate_mode'] = 'vbr';
+		$info['audio']['lossless']     = true;
+
+		// parse flac container
+		return $this->parseMETAdata();
+	}
+
+	public function parseMETAdata() {
+		$info = &$this->getid3->info;
+		do {
+			$BlockOffset   = $this->ftell();
+			$BlockHeader   = $this->fread(4);
+			$LBFBT         = getid3_lib::BigEndian2Int(substr($BlockHeader, 0, 1));
+			$LastBlockFlag = (bool) ($LBFBT & 0x80);
+			$BlockType     =        ($LBFBT & 0x7F);
+			$BlockLength   = getid3_lib::BigEndian2Int(substr($BlockHeader, 1, 3));
+			$BlockTypeText = self::metaBlockTypeLookup($BlockType);
+
+			if (($BlockOffset + 4 + $BlockLength) > $info['avdataend']) {
+				$this->error('METADATA_BLOCK_HEADER.BLOCK_TYPE ('.$BlockTypeText.') at offset '.$BlockOffset.' extends beyond end of file');
+				break;
+			}
+			if ($BlockLength < 1) {
+				$this->error('METADATA_BLOCK_HEADER.BLOCK_LENGTH ('.$BlockLength.') at offset '.$BlockOffset.' is invalid');
+				break;
+			}
+
+			$info['flac'][$BlockTypeText]['raw'] = array();
+			$BlockTypeText_raw = &$info['flac'][$BlockTypeText]['raw'];
+
+			$BlockTypeText_raw['offset']          = $BlockOffset;
+			$BlockTypeText_raw['last_meta_block'] = $LastBlockFlag;
+			$BlockTypeText_raw['block_type']      = $BlockType;
+			$BlockTypeText_raw['block_type_text'] = $BlockTypeText;
+			$BlockTypeText_raw['block_length']    = $BlockLength;
+			if ($BlockTypeText_raw['block_type'] != 0x06) { // do not read attachment data automatically
+				$BlockTypeText_raw['block_data']  = $this->fread($BlockLength);
+			}
+
+			switch ($BlockTypeText) {
+				case 'STREAMINFO':     // 0x00
+					if (!$this->parseSTREAMINFO($BlockTypeText_raw['block_data'])) {
+						return false;
+					}
+					break;
+
+				case 'PADDING':        // 0x01
+					unset($info['flac']['PADDING']); // ignore
+					break;
+
+				case 'APPLICATION':    // 0x02
+					if (!$this->parseAPPLICATION($BlockTypeText_raw['block_data'])) {
+						return false;
+					}
+					break;
+
+				case 'SEEKTABLE':      // 0x03
+					if (!$this->parseSEEKTABLE($BlockTypeText_raw['block_data'])) {
+						return false;
+					}
+					break;
+
+				case 'VORBIS_COMMENT': // 0x04
+					if (!$this->parseVORBIS_COMMENT($BlockTypeText_raw['block_data'])) {
+						return false;
+					}
+					break;
+
+				case 'CUESHEET':       // 0x05
+					if (!$this->parseCUESHEET($BlockTypeText_raw['block_data'])) {
+						return false;
+					}
+					break;
+
+				case 'PICTURE':        // 0x06
+					if (!$this->parsePICTURE()) {
+						return false;
+					}
+					break;
+
+				default:
+					$this->warning('Unhandled METADATA_BLOCK_HEADER.BLOCK_TYPE ('.$BlockType.') at offset '.$BlockOffset);
+			}
+
+			unset($info['flac'][$BlockTypeText]['raw']);
+			$info['avdataoffset'] = $this->ftell();
+		}
+		while ($LastBlockFlag === false);
+
+		// handle tags
+		if (!empty($info['flac']['VORBIS_COMMENT']['comments'])) {
+			$info['flac']['comments'] = $info['flac']['VORBIS_COMMENT']['comments'];
+		}
+		if (!empty($info['flac']['VORBIS_COMMENT']['vendor'])) {
+			$info['audio']['encoder'] = str_replace('reference ', '', $info['flac']['VORBIS_COMMENT']['vendor']);
+		}
+
+		// copy attachments to 'comments' array if nesesary
+		if (isset($info['flac']['PICTURE']) && ($this->getid3->option_save_attachments !== getID3::ATTACHMENTS_NONE)) {
+			foreach ($info['flac']['PICTURE'] as $entry) {
+				if (!empty($entry['data'])) {
+					$info['flac']['comments']['picture'][] = array('image_mime'=>$entry['image_mime'], 'data'=>$entry['data']);
+				}
+			}
+		}
+
+		if (isset($info['flac']['STREAMINFO'])) {
+			if (!$this->isDependencyFor('matroska')) {
+				$info['flac']['compressed_audio_bytes'] = $info['avdataend'] - $info['avdataoffset'];
+			}
+			$info['flac']['uncompressed_audio_bytes'] = $info['flac']['STREAMINFO']['samples_stream'] * $info['flac']['STREAMINFO']['channels'] * ($info['flac']['STREAMINFO']['bits_per_sample'] / 8);
+			if ($info['flac']['uncompressed_audio_bytes'] == 0) {
+				return $this->error('Corrupt FLAC file: uncompressed_audio_bytes == zero');
+			}
+			if (!empty($info['flac']['compressed_audio_bytes'])) {
+				$info['flac']['compression_ratio'] = $info['flac']['compressed_audio_bytes'] / $info['flac']['uncompressed_audio_bytes'];
+			}
+		}
+
+		// set md5_data_source - built into flac 0.5+
+		if (isset($info['flac']['STREAMINFO']['audio_signature'])) {
+
+			if ($info['flac']['STREAMINFO']['audio_signature'] === str_repeat("\x00", 16)) {
+                $this->warning('FLAC STREAMINFO.audio_signature is null (known issue with libOggFLAC)');
+			}
+			else {
+				$info['md5_data_source'] = '';
+				$md5 = $info['flac']['STREAMINFO']['audio_signature'];
+				for ($i = 0; $i < strlen($md5); $i++) {
+					$info['md5_data_source'] .= str_pad(dechex(ord($md5[$i])), 2, '00', STR_PAD_LEFT);
+				}
+				if (!preg_match('/^[0-9a-f]{32}$/', $info['md5_data_source'])) {
+					unset($info['md5_data_source']);
+				}
+			}
+		}
+
+		if (isset($info['flac']['STREAMINFO']['bits_per_sample'])) {
+			$info['audio']['bits_per_sample'] = $info['flac']['STREAMINFO']['bits_per_sample'];
+			if ($info['audio']['bits_per_sample'] == 8) {
+				// special case
+				// must invert sign bit on all data bytes before MD5'ing to match FLAC's calculated value
+				// MD5sum calculates on unsigned bytes, but FLAC calculated MD5 on 8-bit audio data as signed
+				$this->warning('FLAC calculates MD5 data strangely on 8-bit audio, so the stored md5_data_source value will not match the decoded WAV file');
+			}
+		}
+
+		return true;
+	}
+
+	private function parseSTREAMINFO($BlockData) {
+		$info = &$this->getid3->info;
+
+		$info['flac']['STREAMINFO'] = array();
+		$streaminfo = &$info['flac']['STREAMINFO'];
+
+		$streaminfo['min_block_size']  = getid3_lib::BigEndian2Int(substr($BlockData, 0, 2));
+		$streaminfo['max_block_size']  = getid3_lib::BigEndian2Int(substr($BlockData, 2, 2));
+		$streaminfo['min_frame_size']  = getid3_lib::BigEndian2Int(substr($BlockData, 4, 3));
+		$streaminfo['max_frame_size']  = getid3_lib::BigEndian2Int(substr($BlockData, 7, 3));
+
+		$SRCSBSS                       = getid3_lib::BigEndian2Bin(substr($BlockData, 10, 8));
+		$streaminfo['sample_rate']     = getid3_lib::Bin2Dec(substr($SRCSBSS,  0, 20));
+		$streaminfo['channels']        = getid3_lib::Bin2Dec(substr($SRCSBSS, 20,  3)) + 1;
+		$streaminfo['bits_per_sample'] = getid3_lib::Bin2Dec(substr($SRCSBSS, 23,  5)) + 1;
+		$streaminfo['samples_stream']  = getid3_lib::Bin2Dec(substr($SRCSBSS, 28, 36));
+
+		$streaminfo['audio_signature'] = substr($BlockData, 18, 16);
+
+		if (!empty($streaminfo['sample_rate'])) {
+
+			$info['audio']['bitrate_mode']    = 'vbr';
+			$info['audio']['sample_rate']     = $streaminfo['sample_rate'];
+			$info['audio']['channels']        = $streaminfo['channels'];
+			$info['audio']['bits_per_sample'] = $streaminfo['bits_per_sample'];
+			$info['playtime_seconds']         = $streaminfo['samples_stream'] / $streaminfo['sample_rate'];
+			if ($info['playtime_seconds'] > 0) {
+				if (!$this->isDependencyFor('matroska')) {
+					$info['audio']['bitrate'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / $info['playtime_seconds'];
+				}
+				else {
+					$this->warning('Cannot determine audio bitrate because total stream size is unknown');
+				}
+			}
+
+		} else {
+			return $this->error('Corrupt METAdata block: STREAMINFO');
+		}
+
+		return true;
+	}
+
+	private function parseAPPLICATION($BlockData) {
+		$info = &$this->getid3->info;
+
+		$ApplicationID = getid3_lib::BigEndian2Int(substr($BlockData, 0, 4));
+		$info['flac']['APPLICATION'][$ApplicationID]['name'] = self::applicationIDLookup($ApplicationID);
+		$info['flac']['APPLICATION'][$ApplicationID]['data'] = substr($BlockData, 4);
+
+		return true;
+	}
+
+	private function parseSEEKTABLE($BlockData) {
+		$info = &$this->getid3->info;
+
+		$offset = 0;
+		$BlockLength = strlen($BlockData);
+		$placeholderpattern = str_repeat("\xFF", 8);
+		while ($offset < $BlockLength) {
+			$SampleNumberString = substr($BlockData, $offset, 8);
+			$offset += 8;
+			if ($SampleNumberString == $placeholderpattern) {
+
+				// placeholder point
+				getid3_lib::safe_inc($info['flac']['SEEKTABLE']['placeholders'], 1);
+				$offset += 10;
+
+			} else {
+
+				$SampleNumber                                        = getid3_lib::BigEndian2Int($SampleNumberString);
+				$info['flac']['SEEKTABLE'][$SampleNumber]['offset']  = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 8));
+				$offset += 8;
+				$info['flac']['SEEKTABLE'][$SampleNumber]['samples'] = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 2));
+				$offset += 2;
+
+			}
+		}
+
+		return true;
+	}
+
+	private function parseVORBIS_COMMENT($BlockData) {
+		$info = &$this->getid3->info;
+
+		$getid3_ogg = new getid3_ogg($this->getid3);
+		if ($this->isDependencyFor('matroska')) {
+			$getid3_ogg->setStringMode($this->data_string);
+		}
+		$getid3_ogg->ParseVorbisComments();
+		if (isset($info['ogg'])) {
+			unset($info['ogg']['comments_raw']);
+			$info['flac']['VORBIS_COMMENT'] = $info['ogg'];
+			unset($info['ogg']);
+		}
+
+		unset($getid3_ogg);
+
+		return true;
+	}
+
+	private function parseCUESHEET($BlockData) {
+		$info = &$this->getid3->info;
+		$offset = 0;
+		$info['flac']['CUESHEET']['media_catalog_number'] =                              trim(substr($BlockData, $offset, 128), "\0");
+		$offset += 128;
+		$info['flac']['CUESHEET']['lead_in_samples']      =         getid3_lib::BigEndian2Int(substr($BlockData, $offset, 8));
+		$offset += 8;
+		$info['flac']['CUESHEET']['flags']['is_cd']       = (bool) (getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1)) & 0x80);
+		$offset += 1;
+
+		$offset += 258; // reserved
+
+		$info['flac']['CUESHEET']['number_tracks']        =         getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1));
+		$offset += 1;
+
+		for ($track = 0; $track < $info['flac']['CUESHEET']['number_tracks']; $track++) {
+			$TrackSampleOffset = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 8));
+			$offset += 8;
+			$TrackNumber       = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1));
+			$offset += 1;
+
+			$info['flac']['CUESHEET']['tracks'][$TrackNumber]['sample_offset']         = $TrackSampleOffset;
+
+			$info['flac']['CUESHEET']['tracks'][$TrackNumber]['isrc']                  =                           substr($BlockData, $offset, 12);
+			$offset += 12;
+
+			$TrackFlagsRaw                                                             = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1));
+			$offset += 1;
+			$info['flac']['CUESHEET']['tracks'][$TrackNumber]['flags']['is_audio']     = (bool) ($TrackFlagsRaw & 0x80);
+			$info['flac']['CUESHEET']['tracks'][$TrackNumber]['flags']['pre_emphasis'] = (bool) ($TrackFlagsRaw & 0x40);
+
+			$offset += 13; // reserved
+
+			$info['flac']['CUESHEET']['tracks'][$TrackNumber]['index_points']          = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1));
+			$offset += 1;
+
+			for ($index = 0; $index < $info['flac']['CUESHEET']['tracks'][$TrackNumber]['index_points']; $index++) {
+				$IndexSampleOffset = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 8));
+				$offset += 8;
+				$IndexNumber       = getid3_lib::BigEndian2Int(substr($BlockData, $offset, 1));
+				$offset += 1;
+
+				$offset += 3; // reserved
+
+				$info['flac']['CUESHEET']['tracks'][$TrackNumber]['indexes'][$IndexNumber] = $IndexSampleOffset;
+			}
+		}
+
+		return true;
+	}
+
+	/**
+	* Parse METADATA_BLOCK_PICTURE flac structure and extract attachment
+	* External usage: audio.ogg
+	*/
+	public function parsePICTURE() {
+		$info = &$this->getid3->info;
+
+		$picture['typeid']         = getid3_lib::BigEndian2Int($this->fread(4));
+		$picture['type']           = self::pictureTypeLookup($picture['typeid']);
+		$picture['image_mime']     = $this->fread(getid3_lib::BigEndian2Int($this->fread(4)));
+		$descr_length              = getid3_lib::BigEndian2Int($this->fread(4));
+		if ($descr_length) {
+			$picture['description'] = $this->fread($descr_length);
+		}
+		$picture['width']          = getid3_lib::BigEndian2Int($this->fread(4));
+		$picture['height']         = getid3_lib::BigEndian2Int($this->fread(4));
+		$picture['color_depth']    = getid3_lib::BigEndian2Int($this->fread(4));
+		$picture['colors_indexed'] = getid3_lib::BigEndian2Int($this->fread(4));
+		$data_length               = getid3_lib::BigEndian2Int($this->fread(4));
+
+		if ($picture['image_mime'] == '-->') {
+			$picture['data'] = $this->fread($data_length);
+		} else {
+			$picture['data'] = $this->saveAttachment(
+				str_replace('/', '_', $picture['type']).'_'.$this->ftell(),
+				$this->ftell(),
+				$data_length,
+				$picture['image_mime']);
+		}
+
+		$info['flac']['PICTURE'][] = $picture;
+
+		return true;
+	}
+
+	public static function metaBlockTypeLookup($blocktype) {
+		static $lookup = array(
+			0 => 'STREAMINFO',
+			1 => 'PADDING',
+			2 => 'APPLICATION',
+			3 => 'SEEKTABLE',
+			4 => 'VORBIS_COMMENT',
+			5 => 'CUESHEET',
+			6 => 'PICTURE',
+		);
+		return (isset($lookup[$blocktype]) ? $lookup[$blocktype] : 'reserved');
+	}
+
+	public static function applicationIDLookup($applicationid) {
+		// http://flac.sourceforge.net/id.html
+		static $lookup = array(
+			0x41544348 => 'FlacFile',                                                                           // "ATCH"
+			0x42534F4C => 'beSolo',                                                                             // "BSOL"
+			0x42554753 => 'Bugs Player',                                                                        // "BUGS"
+			0x43756573 => 'GoldWave cue points (specification)',                                                // "Cues"
+			0x46696361 => 'CUE Splitter',                                                                       // "Fica"
+			0x46746F6C => 'flac-tools',                                                                         // "Ftol"
+			0x4D4F5442 => 'MOTB MetaCzar',                                                                      // "MOTB"
+			0x4D505345 => 'MP3 Stream Editor',                                                                  // "MPSE"
+			0x4D754D4C => 'MusicML: Music Metadata Language',                                                   // "MuML"
+			0x52494646 => 'Sound Devices RIFF chunk storage',                                                   // "RIFF"
+			0x5346464C => 'Sound Font FLAC',                                                                    // "SFFL"
+			0x534F4E59 => 'Sony Creative Software',                                                             // "SONY"
+			0x5351455A => 'flacsqueeze',                                                                        // "SQEZ"
+			0x54745776 => 'TwistedWave',                                                                        // "TtWv"
+			0x55495453 => 'UITS Embedding tools',                                                               // "UITS"
+			0x61696666 => 'FLAC AIFF chunk storage',                                                            // "aiff"
+			0x696D6167 => 'flac-image application for storing arbitrary files in APPLICATION metadata blocks',  // "imag"
+			0x7065656D => 'Parseable Embedded Extensible Metadata (specification)',                             // "peem"
+			0x71667374 => 'QFLAC Studio',                                                                       // "qfst"
+			0x72696666 => 'FLAC RIFF chunk storage',                                                            // "riff"
+			0x74756E65 => 'TagTuner',                                                                           // "tune"
+			0x78626174 => 'XBAT',                                                                               // "xbat"
+			0x786D6364 => 'xmcd',                                                                               // "xmcd"
+		);
+		return (isset($lookup[$applicationid]) ? $lookup[$applicationid] : 'reserved');
+	}
+
+	public static function pictureTypeLookup($type_id) {
+		static $lookup = array (
+			 0 => 'Other',
+			 1 => '32x32 pixels \'file icon\' (PNG only)',
+			 2 => 'Other file icon',
+			 3 => 'Cover (front)',
+			 4 => 'Cover (back)',
+			 5 => 'Leaflet page',
+			 6 => 'Media (e.g. label side of CD)',
+			 7 => 'Lead artist/lead performer/soloist',
+			 8 => 'Artist/performer',
+			 9 => 'Conductor',
+			10 => 'Band/Orchestra',
+			11 => 'Composer',
+			12 => 'Lyricist/text writer',
+			13 => 'Recording Location',
+			14 => 'During recording',
+			15 => 'During performance',
+			16 => 'Movie/video screen capture',
+			17 => 'A bright coloured fish',
+			18 => 'Illustration',
+			19 => 'Band/artist logotype',
+			20 => 'Publisher/Studio logotype',
+		);
+		return (isset($lookup[$type_id]) ? $lookup[$type_id] : 'reserved');
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio.mp3.php b/wp-includes/ID3/module.audio.mp3.php
new file mode 100644
index 000000000..e6ffea947
--- /dev/null
+++ b/wp-includes/ID3/module.audio.mp3.php
@@ -0,0 +1,2009 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio.mp3.php                                        //
+// module for analyzing MP3 files                              //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+// number of frames to scan to determine if MPEG-audio sequence is valid
+// Lower this number to 5-20 for faster scanning
+// Increase this number to 50+ for most accurate detection of valid VBR/CBR
+// mpeg-audio streams
+define('GETID3_MP3_VALID_CHECK_FRAMES', 35);
+
+
+class getid3_mp3 extends getid3_handler
+{
+
+	public $allow_bruteforce = false; // forces getID3() to scan the file byte-by-byte and log all the valid audio frame headers - extremely slow, unrecommended, but may provide data from otherwise-unusuable files
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		$initialOffset = $info['avdataoffset'];
+
+		if (!$this->getOnlyMPEGaudioInfo($info['avdataoffset'])) {
+			if ($this->allow_bruteforce) {
+				$info['error'][] = 'Rescanning file in BruteForce mode';
+				$this->getOnlyMPEGaudioInfoBruteForce($this->getid3->fp, $info);
+			}
+		}
+
+
+		if (isset($info['mpeg']['audio']['bitrate_mode'])) {
+			$info['audio']['bitrate_mode'] = strtolower($info['mpeg']['audio']['bitrate_mode']);
+		}
+
+		if (((isset($info['id3v2']['headerlength']) && ($info['avdataoffset'] > $info['id3v2']['headerlength'])) || (!isset($info['id3v2']) && ($info['avdataoffset'] > 0) && ($info['avdataoffset'] != $initialOffset)))) {
+
+			$synchoffsetwarning = 'Unknown data before synch ';
+			if (isset($info['id3v2']['headerlength'])) {
+				$synchoffsetwarning .= '(ID3v2 header ends at '.$info['id3v2']['headerlength'].', then '.($info['avdataoffset'] - $info['id3v2']['headerlength']).' bytes garbage, ';
+			} elseif ($initialOffset > 0) {
+				$synchoffsetwarning .= '(should be at '.$initialOffset.', ';
+			} else {
+				$synchoffsetwarning .= '(should be at beginning of file, ';
+			}
+			$synchoffsetwarning .= 'synch detected at '.$info['avdataoffset'].')';
+			if (isset($info['audio']['bitrate_mode']) && ($info['audio']['bitrate_mode'] == 'cbr')) {
+
+				if (!empty($info['id3v2']['headerlength']) && (($info['avdataoffset'] - $info['id3v2']['headerlength']) == $info['mpeg']['audio']['framelength'])) {
+
+					$synchoffsetwarning .= '. This is a known problem with some versions of LAME (3.90-3.92) DLL in CBR mode.';
+					$info['audio']['codec'] = 'LAME';
+					$CurrentDataLAMEversionString = 'LAME3.';
+
+				} elseif (empty($info['id3v2']['headerlength']) && ($info['avdataoffset'] == $info['mpeg']['audio']['framelength'])) {
+
+					$synchoffsetwarning .= '. This is a known problem with some versions of LAME (3.90 - 3.92) DLL in CBR mode.';
+					$info['audio']['codec'] = 'LAME';
+					$CurrentDataLAMEversionString = 'LAME3.';
+
+				}
+
+			}
+			$info['warning'][] = $synchoffsetwarning;
+
+		}
+
+		if (isset($info['mpeg']['audio']['LAME'])) {
+			$info['audio']['codec'] = 'LAME';
+			if (!empty($info['mpeg']['audio']['LAME']['long_version'])) {
+				$info['audio']['encoder'] = rtrim($info['mpeg']['audio']['LAME']['long_version'], "\x00");
+			} elseif (!empty($info['mpeg']['audio']['LAME']['short_version'])) {
+				$info['audio']['encoder'] = rtrim($info['mpeg']['audio']['LAME']['short_version'], "\x00");
+			}
+		}
+
+		$CurrentDataLAMEversionString = (!empty($CurrentDataLAMEversionString) ? $CurrentDataLAMEversionString : (isset($info['audio']['encoder']) ? $info['audio']['encoder'] : ''));
+		if (!empty($CurrentDataLAMEversionString) && (substr($CurrentDataLAMEversionString, 0, 6) == 'LAME3.') && !preg_match('[0-9\)]', substr($CurrentDataLAMEversionString, -1))) {
+			// a version number of LAME that does not end with a number like "LAME3.92"
+			// or with a closing parenthesis like "LAME3.88 (alpha)"
+			// or a version of LAME with the LAMEtag-not-filled-in-DLL-mode bug (3.90-3.92)
+
+			// not sure what the actual last frame length will be, but will be less than or equal to 1441
+			$PossiblyLongerLAMEversion_FrameLength = 1441;
+
+			// Not sure what version of LAME this is - look in padding of last frame for longer version string
+			$PossibleLAMEversionStringOffset = $info['avdataend'] - $PossiblyLongerLAMEversion_FrameLength;
+			fseek($this->getid3->fp, $PossibleLAMEversionStringOffset);
+			$PossiblyLongerLAMEversion_Data = fread($this->getid3->fp, $PossiblyLongerLAMEversion_FrameLength);
+			switch (substr($CurrentDataLAMEversionString, -1)) {
+				case 'a':
+				case 'b':
+					// "LAME3.94a" will have a longer version string of "LAME3.94 (alpha)" for example
+					// need to trim off "a" to match longer string
+					$CurrentDataLAMEversionString = substr($CurrentDataLAMEversionString, 0, -1);
+					break;
+			}
+			if (($PossiblyLongerLAMEversion_String = strstr($PossiblyLongerLAMEversion_Data, $CurrentDataLAMEversionString)) !== false) {
+				if (substr($PossiblyLongerLAMEversion_String, 0, strlen($CurrentDataLAMEversionString)) == $CurrentDataLAMEversionString) {
+					$PossiblyLongerLAMEversion_NewString = substr($PossiblyLongerLAMEversion_String, 0, strspn($PossiblyLongerLAMEversion_String, 'LAME0123456789., (abcdefghijklmnopqrstuvwxyzJFSOND)')); //"LAME3.90.3"  "LAME3.87 (beta 1, Sep 27 2000)" "LAME3.88 (beta)"
+					if (empty($info['audio']['encoder']) || (strlen($PossiblyLongerLAMEversion_NewString) > strlen($info['audio']['encoder']))) {
+						$info['audio']['encoder'] = $PossiblyLongerLAMEversion_NewString;
+					}
+				}
+			}
+		}
+		if (!empty($info['audio']['encoder'])) {
+			$info['audio']['encoder'] = rtrim($info['audio']['encoder'], "\x00 ");
+		}
+
+		switch (isset($info['mpeg']['audio']['layer']) ? $info['mpeg']['audio']['layer'] : '') {
+			case 1:
+			case 2:
+				$info['audio']['dataformat'] = 'mp'.$info['mpeg']['audio']['layer'];
+				break;
+		}
+		if (isset($info['fileformat']) && ($info['fileformat'] == 'mp3')) {
+			switch ($info['audio']['dataformat']) {
+				case 'mp1':
+				case 'mp2':
+				case 'mp3':
+					$info['fileformat'] = $info['audio']['dataformat'];
+					break;
+
+				default:
+					$info['warning'][] = 'Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$info['audio']['dataformat'].'"';
+					break;
+			}
+		}
+
+		if (empty($info['fileformat'])) {
+			unset($info['fileformat']);
+			unset($info['audio']['bitrate_mode']);
+			unset($info['avdataoffset']);
+			unset($info['avdataend']);
+			return false;
+		}
+
+		$info['mime_type']         = 'audio/mpeg';
+		$info['audio']['lossless'] = false;
+
+		// Calculate playtime
+		if (!isset($info['playtime_seconds']) && isset($info['audio']['bitrate']) && ($info['audio']['bitrate'] > 0)) {
+			$info['playtime_seconds'] = ($info['avdataend'] - $info['avdataoffset']) * 8 / $info['audio']['bitrate'];
+		}
+
+		$info['audio']['encoder_options'] = $this->GuessEncoderOptions();
+
+		return true;
+	}
+
+
+	public function GuessEncoderOptions() {
+		// shortcuts
+		$info = &$this->getid3->info;
+		if (!empty($info['mpeg']['audio'])) {
+			$thisfile_mpeg_audio = &$info['mpeg']['audio'];
+			if (!empty($thisfile_mpeg_audio['LAME'])) {
+				$thisfile_mpeg_audio_lame = &$thisfile_mpeg_audio['LAME'];
+			}
+		}
+
+		$encoder_options = '';
+		static $NamedPresetBitrates = array(16, 24, 40, 56, 112, 128, 160, 192, 256);
+
+		if (isset($thisfile_mpeg_audio['VBR_method']) && ($thisfile_mpeg_audio['VBR_method'] == 'Fraunhofer') && !empty($thisfile_mpeg_audio['VBR_quality'])) {
+
+			$encoder_options = 'VBR q'.$thisfile_mpeg_audio['VBR_quality'];
+
+		} elseif (!empty($thisfile_mpeg_audio_lame['preset_used']) && (!in_array($thisfile_mpeg_audio_lame['preset_used_id'], $NamedPresetBitrates))) {
+
+			$encoder_options = $thisfile_mpeg_audio_lame['preset_used'];
+
+		} elseif (!empty($thisfile_mpeg_audio_lame['vbr_quality'])) {
+
+			static $KnownEncoderValues = array();
+			if (empty($KnownEncoderValues)) {
+
+				//$KnownEncoderValues[abrbitrate_minbitrate][vbr_quality][raw_vbr_method][raw_noise_shaping][raw_stereo_mode][ath_type][lowpass_frequency] = 'preset name';
+				$KnownEncoderValues[0xFF][58][1][1][3][2][20500] = '--alt-preset insane';        // 3.90,   3.90.1, 3.92
+				$KnownEncoderValues[0xFF][58][1][1][3][2][20600] = '--alt-preset insane';        // 3.90.2, 3.90.3, 3.91
+				$KnownEncoderValues[0xFF][57][1][1][3][4][20500] = '--alt-preset insane';        // 3.94,   3.95
+				$KnownEncoderValues['**'][78][3][2][3][2][19500] = '--alt-preset extreme';       // 3.90,   3.90.1, 3.92
+				$KnownEncoderValues['**'][78][3][2][3][2][19600] = '--alt-preset extreme';       // 3.90.2, 3.91
+				$KnownEncoderValues['**'][78][3][1][3][2][19600] = '--alt-preset extreme';       // 3.90.3
+				$KnownEncoderValues['**'][78][4][2][3][2][19500] = '--alt-preset fast extreme';  // 3.90,   3.90.1, 3.92
+				$KnownEncoderValues['**'][78][4][2][3][2][19600] = '--alt-preset fast extreme';  // 3.90.2, 3.90.3, 3.91
+				$KnownEncoderValues['**'][78][3][2][3][4][19000] = '--alt-preset standard';      // 3.90,   3.90.1, 3.90.2, 3.91, 3.92
+				$KnownEncoderValues['**'][78][3][1][3][4][19000] = '--alt-preset standard';      // 3.90.3
+				$KnownEncoderValues['**'][78][4][2][3][4][19000] = '--alt-preset fast standard'; // 3.90,   3.90.1, 3.90.2, 3.91, 3.92
+				$KnownEncoderValues['**'][78][4][1][3][4][19000] = '--alt-preset fast standard'; // 3.90.3
+				$KnownEncoderValues['**'][88][4][1][3][3][19500] = '--r3mix';                    // 3.90,   3.90.1, 3.92
+				$KnownEncoderValues['**'][88][4][1][3][3][19600] = '--r3mix';                    // 3.90.2, 3.90.3, 3.91
+				$KnownEncoderValues['**'][67][4][1][3][4][18000] = '--r3mix';                    // 3.94,   3.95
+				$KnownEncoderValues['**'][68][3][2][3][4][18000] = '--alt-preset medium';        // 3.90.3
+				$KnownEncoderValues['**'][68][4][2][3][4][18000] = '--alt-preset fast medium';   // 3.90.3
+
+				$KnownEncoderValues[0xFF][99][1][1][1][2][0]     = '--preset studio';            // 3.90,   3.90.1, 3.90.2, 3.91, 3.92
+				$KnownEncoderValues[0xFF][58][2][1][3][2][20600] = '--preset studio';            // 3.90.3, 3.93.1
+				$KnownEncoderValues[0xFF][58][2][1][3][2][20500] = '--preset studio';            // 3.93
+				$KnownEncoderValues[0xFF][57][2][1][3][4][20500] = '--preset studio';            // 3.94,   3.95
+				$KnownEncoderValues[0xC0][88][1][1][1][2][0]     = '--preset cd';                // 3.90,   3.90.1, 3.90.2,   3.91, 3.92
+				$KnownEncoderValues[0xC0][58][2][2][3][2][19600] = '--preset cd';                // 3.90.3, 3.93.1
+				$KnownEncoderValues[0xC0][58][2][2][3][2][19500] = '--preset cd';                // 3.93
+				$KnownEncoderValues[0xC0][57][2][1][3][4][19500] = '--preset cd';                // 3.94,   3.95
+				$KnownEncoderValues[0xA0][78][1][1][3][2][18000] = '--preset hifi';              // 3.90,   3.90.1, 3.90.2,   3.91, 3.92
+				$KnownEncoderValues[0xA0][58][2][2][3][2][18000] = '--preset hifi';              // 3.90.3, 3.93,   3.93.1
+				$KnownEncoderValues[0xA0][57][2][1][3][4][18000] = '--preset hifi';              // 3.94,   3.95
+				$KnownEncoderValues[0x80][67][1][1][3][2][18000] = '--preset tape';              // 3.90,   3.90.1, 3.90.2,   3.91, 3.92
+				$KnownEncoderValues[0x80][67][1][1][3][2][15000] = '--preset radio';             // 3.90,   3.90.1, 3.90.2,   3.91, 3.92
+				$KnownEncoderValues[0x70][67][1][1][3][2][15000] = '--preset fm';                // 3.90,   3.90.1, 3.90.2,   3.91, 3.92
+				$KnownEncoderValues[0x70][58][2][2][3][2][16000] = '--preset tape/radio/fm';     // 3.90.3, 3.93,   3.93.1
+				$KnownEncoderValues[0x70][57][2][1][3][4][16000] = '--preset tape/radio/fm';     // 3.94,   3.95
+				$KnownEncoderValues[0x38][58][2][2][0][2][10000] = '--preset voice';             // 3.90.3, 3.93,   3.93.1
+				$KnownEncoderValues[0x38][57][2][1][0][4][15000] = '--preset voice';             // 3.94,   3.95
+				$KnownEncoderValues[0x38][57][2][1][0][4][16000] = '--preset voice';             // 3.94a14
+				$KnownEncoderValues[0x28][65][1][1][0][2][7500]  = '--preset mw-us';             // 3.90,   3.90.1, 3.92
+				$KnownEncoderValues[0x28][65][1][1][0][2][7600]  = '--preset mw-us';             // 3.90.2, 3.91
+				$KnownEncoderValues[0x28][58][2][2][0][2][7000]  = '--preset mw-us';             // 3.90.3, 3.93,   3.93.1
+				$KnownEncoderValues[0x28][57][2][1][0][4][10500] = '--preset mw-us';             // 3.94,   3.95
+				$KnownEncoderValues[0x28][57][2][1][0][4][11200] = '--preset mw-us';             // 3.94a14
+				$KnownEncoderValues[0x28][57][2][1][0][4][8800]  = '--preset mw-us';             // 3.94a15
+				$KnownEncoderValues[0x18][58][2][2][0][2][4000]  = '--preset phon+/lw/mw-eu/sw'; // 3.90.3, 3.93.1
+				$KnownEncoderValues[0x18][58][2][2][0][2][3900]  = '--preset phon+/lw/mw-eu/sw'; // 3.93
+				$KnownEncoderValues[0x18][57][2][1][0][4][5900]  = '--preset phon+/lw/mw-eu/sw'; // 3.94,   3.95
+				$KnownEncoderValues[0x18][57][2][1][0][4][6200]  = '--preset phon+/lw/mw-eu/sw'; // 3.94a14
+				$KnownEncoderValues[0x18][57][2][1][0][4][3200]  = '--preset phon+/lw/mw-eu/sw'; // 3.94a15
+				$KnownEncoderValues[0x10][58][2][2][0][2][3800]  = '--preset phone';             // 3.90.3, 3.93.1
+				$KnownEncoderValues[0x10][58][2][2][0][2][3700]  = '--preset phone';             // 3.93
+				$KnownEncoderValues[0x10][57][2][1][0][4][5600]  = '--preset phone';             // 3.94,   3.95
+			}
+
+			if (isset($KnownEncoderValues[$thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']])) {
+
+				$encoder_options = $KnownEncoderValues[$thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate']][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']];
+
+			} elseif (isset($KnownEncoderValues['**'][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']])) {
+
+				$encoder_options = $KnownEncoderValues['**'][$thisfile_mpeg_audio_lame['vbr_quality']][$thisfile_mpeg_audio_lame['raw']['vbr_method']][$thisfile_mpeg_audio_lame['raw']['noise_shaping']][$thisfile_mpeg_audio_lame['raw']['stereo_mode']][$thisfile_mpeg_audio_lame['ath_type']][$thisfile_mpeg_audio_lame['lowpass_frequency']];
+
+			} elseif ($info['audio']['bitrate_mode'] == 'vbr') {
+
+				// http://gabriel.mp3-tech.org/mp3infotag.html
+				// int    Quality = (100 - 10 * gfp->VBR_q - gfp->quality)h
+
+
+				$LAME_V_value = 10 - ceil($thisfile_mpeg_audio_lame['vbr_quality'] / 10);
+				$LAME_q_value = 100 - $thisfile_mpeg_audio_lame['vbr_quality'] - ($LAME_V_value * 10);
+				$encoder_options = '-V'.$LAME_V_value.' -q'.$LAME_q_value;
+
+			} elseif ($info['audio']['bitrate_mode'] == 'cbr') {
+
+				$encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000);
+
+			} else {
+
+				$encoder_options = strtoupper($info['audio']['bitrate_mode']);
+
+			}
+
+		} elseif (!empty($thisfile_mpeg_audio_lame['bitrate_abr'])) {
+
+			$encoder_options = 'ABR'.$thisfile_mpeg_audio_lame['bitrate_abr'];
+
+		} elseif (!empty($info['audio']['bitrate'])) {
+
+			if ($info['audio']['bitrate_mode'] == 'cbr') {
+				$encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000);
+			} else {
+				$encoder_options = strtoupper($info['audio']['bitrate_mode']);
+			}
+
+		}
+		if (!empty($thisfile_mpeg_audio_lame['bitrate_min'])) {
+			$encoder_options .= ' -b'.$thisfile_mpeg_audio_lame['bitrate_min'];
+		}
+
+		if (!empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_prev']) || !empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_next'])) {
+			$encoder_options .= ' --nogap';
+		}
+
+		if (!empty($thisfile_mpeg_audio_lame['lowpass_frequency'])) {
+			$ExplodedOptions = explode(' ', $encoder_options, 4);
+			if ($ExplodedOptions[0] == '--r3mix') {
+				$ExplodedOptions[1] = 'r3mix';
+			}
+			switch ($ExplodedOptions[0]) {
+				case '--preset':
+				case '--alt-preset':
+				case '--r3mix':
+					if ($ExplodedOptions[1] == 'fast') {
+						$ExplodedOptions[1] .= ' '.$ExplodedOptions[2];
+					}
+					switch ($ExplodedOptions[1]) {
+						case 'portable':
+						case 'medium':
+						case 'standard':
+						case 'extreme':
+						case 'insane':
+						case 'fast portable':
+						case 'fast medium':
+						case 'fast standard':
+						case 'fast extreme':
+						case 'fast insane':
+						case 'r3mix':
+							static $ExpectedLowpass = array(
+									'insane|20500'        => 20500,
+									'insane|20600'        => 20600,  // 3.90.2, 3.90.3, 3.91
+									'medium|18000'        => 18000,
+									'fast medium|18000'   => 18000,
+									'extreme|19500'       => 19500,  // 3.90,   3.90.1, 3.92, 3.95
+									'extreme|19600'       => 19600,  // 3.90.2, 3.90.3, 3.91, 3.93.1
+									'fast extreme|19500'  => 19500,  // 3.90,   3.90.1, 3.92, 3.95
+									'fast extreme|19600'  => 19600,  // 3.90.2, 3.90.3, 3.91, 3.93.1
+									'standard|19000'      => 19000,
+									'fast standard|19000' => 19000,
+									'r3mix|19500'         => 19500,  // 3.90,   3.90.1, 3.92
+									'r3mix|19600'         => 19600,  // 3.90.2, 3.90.3, 3.91
+									'r3mix|18000'         => 18000,  // 3.94,   3.95
+								);
+							if (!isset($ExpectedLowpass[$ExplodedOptions[1].'|'.$thisfile_mpeg_audio_lame['lowpass_frequency']]) && ($thisfile_mpeg_audio_lame['lowpass_frequency'] < 22050) && (round($thisfile_mpeg_audio_lame['lowpass_frequency'] / 1000) < round($thisfile_mpeg_audio['sample_rate'] / 2000))) {
+								$encoder_options .= ' --lowpass '.$thisfile_mpeg_audio_lame['lowpass_frequency'];
+							}
+							break;
+
+						default:
+							break;
+					}
+					break;
+			}
+		}
+
+		if (isset($thisfile_mpeg_audio_lame['raw']['source_sample_freq'])) {
+			if (($thisfile_mpeg_audio['sample_rate'] == 44100) && ($thisfile_mpeg_audio_lame['raw']['source_sample_freq'] != 1)) {
+				$encoder_options .= ' --resample 44100';
+			} elseif (($thisfile_mpeg_audio['sample_rate'] == 48000) && ($thisfile_mpeg_audio_lame['raw']['source_sample_freq'] != 2)) {
+				$encoder_options .= ' --resample 48000';
+			} elseif ($thisfile_mpeg_audio['sample_rate'] < 44100) {
+				switch ($thisfile_mpeg_audio_lame['raw']['source_sample_freq']) {
+					case 0: // <= 32000
+						// may or may not be same as source frequency - ignore
+						break;
+					case 1: // 44100
+					case 2: // 48000
+					case 3: // 48000+
+						$ExplodedOptions = explode(' ', $encoder_options, 4);
+						switch ($ExplodedOptions[0]) {
+							case '--preset':
+							case '--alt-preset':
+								switch ($ExplodedOptions[1]) {
+									case 'fast':
+									case 'portable':
+									case 'medium':
+									case 'standard':
+									case 'extreme':
+									case 'insane':
+										$encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate'];
+										break;
+
+									default:
+										static $ExpectedResampledRate = array(
+												'phon+/lw/mw-eu/sw|16000' => 16000,
+												'mw-us|24000'             => 24000, // 3.95
+												'mw-us|32000'             => 32000, // 3.93
+												'mw-us|16000'             => 16000, // 3.92
+												'phone|16000'             => 16000,
+												'phone|11025'             => 11025, // 3.94a15
+												'radio|32000'             => 32000, // 3.94a15
+												'fm/radio|32000'          => 32000, // 3.92
+												'fm|32000'                => 32000, // 3.90
+												'voice|32000'             => 32000);
+										if (!isset($ExpectedResampledRate[$ExplodedOptions[1].'|'.$thisfile_mpeg_audio['sample_rate']])) {
+											$encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate'];
+										}
+										break;
+								}
+								break;
+
+							case '--r3mix':
+							default:
+								$encoder_options .= ' --resample '.$thisfile_mpeg_audio['sample_rate'];
+								break;
+						}
+						break;
+				}
+			}
+		}
+		if (empty($encoder_options) && !empty($info['audio']['bitrate']) && !empty($info['audio']['bitrate_mode'])) {
+			//$encoder_options = strtoupper($info['audio']['bitrate_mode']).ceil($info['audio']['bitrate'] / 1000);
+			$encoder_options = strtoupper($info['audio']['bitrate_mode']);
+		}
+
+		return $encoder_options;
+	}
+
+
+	public function decodeMPEGaudioHeader($offset, &$info, $recursivesearch=true, $ScanAsCBR=false, $FastMPEGheaderScan=false) {
+		static $MPEGaudioVersionLookup;
+		static $MPEGaudioLayerLookup;
+		static $MPEGaudioBitrateLookup;
+		static $MPEGaudioFrequencyLookup;
+		static $MPEGaudioChannelModeLookup;
+		static $MPEGaudioModeExtensionLookup;
+		static $MPEGaudioEmphasisLookup;
+		if (empty($MPEGaudioVersionLookup)) {
+			$MPEGaudioVersionLookup       = self::MPEGaudioVersionArray();
+			$MPEGaudioLayerLookup         = self::MPEGaudioLayerArray();
+			$MPEGaudioBitrateLookup       = self::MPEGaudioBitrateArray();
+			$MPEGaudioFrequencyLookup     = self::MPEGaudioFrequencyArray();
+			$MPEGaudioChannelModeLookup   = self::MPEGaudioChannelModeArray();
+			$MPEGaudioModeExtensionLookup = self::MPEGaudioModeExtensionArray();
+			$MPEGaudioEmphasisLookup      = self::MPEGaudioEmphasisArray();
+		}
+
+		if (fseek($this->getid3->fp, $offset, SEEK_SET) != 0) {
+			$info['error'][] = 'decodeMPEGaudioHeader() failed to seek to next offset at '.$offset;
+			return false;
+		}
+		//$headerstring = fread($this->getid3->fp, 1441); // worst-case max length = 32kHz @ 320kbps layer 3 = 1441 bytes/frame
+		$headerstring = fread($this->getid3->fp, 226); // LAME header at offset 36 + 190 bytes of Xing/LAME data
+
+		// MP3 audio frame structure:
+		// $aa $aa $aa $aa [$bb $bb] $cc...
+		// where $aa..$aa is the four-byte mpeg-audio header (below)
+		// $bb $bb is the optional 2-byte CRC
+		// and $cc... is the audio data
+
+		$head4 = substr($headerstring, 0, 4);
+
+		static $MPEGaudioHeaderDecodeCache = array();
+		if (isset($MPEGaudioHeaderDecodeCache[$head4])) {
+			$MPEGheaderRawArray = $MPEGaudioHeaderDecodeCache[$head4];
+		} else {
+			$MPEGheaderRawArray = self::MPEGaudioHeaderDecode($head4);
+			$MPEGaudioHeaderDecodeCache[$head4] = $MPEGheaderRawArray;
+		}
+
+		static $MPEGaudioHeaderValidCache = array();
+		if (!isset($MPEGaudioHeaderValidCache[$head4])) { // Not in cache
+			//$MPEGaudioHeaderValidCache[$head4] = self::MPEGaudioHeaderValid($MPEGheaderRawArray, false, true);  // allow badly-formatted freeformat (from LAME 3.90 - 3.93.1)
+			$MPEGaudioHeaderValidCache[$head4] = self::MPEGaudioHeaderValid($MPEGheaderRawArray, false, false);
+		}
+
+		// shortcut
+		if (!isset($info['mpeg']['audio'])) {
+			$info['mpeg']['audio'] = array();
+		}
+		$thisfile_mpeg_audio = &$info['mpeg']['audio'];
+
+
+		if ($MPEGaudioHeaderValidCache[$head4]) {
+			$thisfile_mpeg_audio['raw'] = $MPEGheaderRawArray;
+		} else {
+			$info['error'][] = 'Invalid MPEG audio header ('.getid3_lib::PrintHexBytes($head4).') at offset '.$offset;
+			return false;
+		}
+
+		if (!$FastMPEGheaderScan) {
+			$thisfile_mpeg_audio['version']       = $MPEGaudioVersionLookup[$thisfile_mpeg_audio['raw']['version']];
+			$thisfile_mpeg_audio['layer']         = $MPEGaudioLayerLookup[$thisfile_mpeg_audio['raw']['layer']];
+
+			$thisfile_mpeg_audio['channelmode']   = $MPEGaudioChannelModeLookup[$thisfile_mpeg_audio['raw']['channelmode']];
+			$thisfile_mpeg_audio['channels']      = (($thisfile_mpeg_audio['channelmode'] == 'mono') ? 1 : 2);
+			$thisfile_mpeg_audio['sample_rate']   = $MPEGaudioFrequencyLookup[$thisfile_mpeg_audio['version']][$thisfile_mpeg_audio['raw']['sample_rate']];
+			$thisfile_mpeg_audio['protection']    = !$thisfile_mpeg_audio['raw']['protection'];
+			$thisfile_mpeg_audio['private']       = (bool) $thisfile_mpeg_audio['raw']['private'];
+			$thisfile_mpeg_audio['modeextension'] = $MPEGaudioModeExtensionLookup[$thisfile_mpeg_audio['layer']][$thisfile_mpeg_audio['raw']['modeextension']];
+			$thisfile_mpeg_audio['copyright']     = (bool) $thisfile_mpeg_audio['raw']['copyright'];
+			$thisfile_mpeg_audio['original']      = (bool) $thisfile_mpeg_audio['raw']['original'];
+			$thisfile_mpeg_audio['emphasis']      = $MPEGaudioEmphasisLookup[$thisfile_mpeg_audio['raw']['emphasis']];
+
+			$info['audio']['channels']    = $thisfile_mpeg_audio['channels'];
+			$info['audio']['sample_rate'] = $thisfile_mpeg_audio['sample_rate'];
+
+			if ($thisfile_mpeg_audio['protection']) {
+				$thisfile_mpeg_audio['crc'] = getid3_lib::BigEndian2Int(substr($headerstring, 4, 2));
+			}
+		}
+
+		if ($thisfile_mpeg_audio['raw']['bitrate'] == 15) {
+			// http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0
+			$info['warning'][] = 'Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1';
+			$thisfile_mpeg_audio['raw']['bitrate'] = 0;
+		}
+		$thisfile_mpeg_audio['padding'] = (bool) $thisfile_mpeg_audio['raw']['padding'];
+		$thisfile_mpeg_audio['bitrate'] = $MPEGaudioBitrateLookup[$thisfile_mpeg_audio['version']][$thisfile_mpeg_audio['layer']][$thisfile_mpeg_audio['raw']['bitrate']];
+
+		if (($thisfile_mpeg_audio['bitrate'] == 'free') && ($offset == $info['avdataoffset'])) {
+			// only skip multiple frame check if free-format bitstream found at beginning of file
+			// otherwise is quite possibly simply corrupted data
+			$recursivesearch = false;
+		}
+
+		// For Layer 2 there are some combinations of bitrate and mode which are not allowed.
+		if (!$FastMPEGheaderScan && ($thisfile_mpeg_audio['layer'] == '2')) {
+
+			$info['audio']['dataformat'] = 'mp2';
+			switch ($thisfile_mpeg_audio['channelmode']) {
+
+				case 'mono':
+					if (($thisfile_mpeg_audio['bitrate'] == 'free') || ($thisfile_mpeg_audio['bitrate'] <= 192000)) {
+						// these are ok
+					} else {
+						$info['error'][] = $thisfile_mpeg_audio['bitrate'].'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.';
+						return false;
+					}
+					break;
+
+				case 'stereo':
+				case 'joint stereo':
+				case 'dual channel':
+					if (($thisfile_mpeg_audio['bitrate'] == 'free') || ($thisfile_mpeg_audio['bitrate'] == 64000) || ($thisfile_mpeg_audio['bitrate'] >= 96000)) {
+						// these are ok
+					} else {
+						$info['error'][] = intval(round($thisfile_mpeg_audio['bitrate'] / 1000)).'kbps not allowed in Layer 2, '.$thisfile_mpeg_audio['channelmode'].'.';
+						return false;
+					}
+					break;
+
+			}
+
+		}
+
+
+		if ($info['audio']['sample_rate'] > 0) {
+			$thisfile_mpeg_audio['framelength'] = self::MPEGaudioFrameLength($thisfile_mpeg_audio['bitrate'], $thisfile_mpeg_audio['version'], $thisfile_mpeg_audio['layer'], (int) $thisfile_mpeg_audio['padding'], $info['audio']['sample_rate']);
+		}
+
+		$nextframetestoffset = $offset + 1;
+		if ($thisfile_mpeg_audio['bitrate'] != 'free') {
+
+			$info['audio']['bitrate'] = $thisfile_mpeg_audio['bitrate'];
+
+			if (isset($thisfile_mpeg_audio['framelength'])) {
+				$nextframetestoffset = $offset + $thisfile_mpeg_audio['framelength'];
+			} else {
+				$info['error'][] = 'Frame at offset('.$offset.') is has an invalid frame length.';
+				return false;
+			}
+
+		}
+
+		$ExpectedNumberOfAudioBytes = 0;
+
+		////////////////////////////////////////////////////////////////////////////////////
+		// Variable-bitrate headers
+
+		if (substr($headerstring, 4 + 32, 4) == 'VBRI') {
+			// Fraunhofer VBR header is hardcoded 'VBRI' at offset 0x24 (36)
+			// specs taken from http://minnie.tuhs.org/pipermail/mp3encoder/2001-January/001800.html
+
+			$thisfile_mpeg_audio['bitrate_mode'] = 'vbr';
+			$thisfile_mpeg_audio['VBR_method']   = 'Fraunhofer';
+			$info['audio']['codec']                = 'Fraunhofer';
+
+			$SideInfoData = substr($headerstring, 4 + 2, 32);
+
+			$FraunhoferVBROffset = 36;
+
+			$thisfile_mpeg_audio['VBR_encoder_version']     = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset +  4, 2)); // VbriVersion
+			$thisfile_mpeg_audio['VBR_encoder_delay']       = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset +  6, 2)); // VbriDelay
+			$thisfile_mpeg_audio['VBR_quality']             = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset +  8, 2)); // VbriQuality
+			$thisfile_mpeg_audio['VBR_bytes']               = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 10, 4)); // VbriStreamBytes
+			$thisfile_mpeg_audio['VBR_frames']              = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 14, 4)); // VbriStreamFrames
+			$thisfile_mpeg_audio['VBR_seek_offsets']        = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 18, 2)); // VbriTableSize
+			$thisfile_mpeg_audio['VBR_seek_scale']          = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 20, 2)); // VbriTableScale
+			$thisfile_mpeg_audio['VBR_entry_bytes']         = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 22, 2)); // VbriEntryBytes
+			$thisfile_mpeg_audio['VBR_entry_frames']        = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 24, 2)); // VbriEntryFrames
+
+			$ExpectedNumberOfAudioBytes = $thisfile_mpeg_audio['VBR_bytes'];
+
+			$previousbyteoffset = $offset;
+			for ($i = 0; $i < $thisfile_mpeg_audio['VBR_seek_offsets']; $i++) {
+				$Fraunhofer_OffsetN = getid3_lib::BigEndian2Int(substr($headerstring, $FraunhoferVBROffset, $thisfile_mpeg_audio['VBR_entry_bytes']));
+				$FraunhoferVBROffset += $thisfile_mpeg_audio['VBR_entry_bytes'];
+				$thisfile_mpeg_audio['VBR_offsets_relative'][$i] = ($Fraunhofer_OffsetN * $thisfile_mpeg_audio['VBR_seek_scale']);
+				$thisfile_mpeg_audio['VBR_offsets_absolute'][$i] = ($Fraunhofer_OffsetN * $thisfile_mpeg_audio['VBR_seek_scale']) + $previousbyteoffset;
+				$previousbyteoffset += $Fraunhofer_OffsetN;
+			}
+
+
+		} else {
+
+			// Xing VBR header is hardcoded 'Xing' at a offset 0x0D (13), 0x15 (21) or 0x24 (36)
+			// depending on MPEG layer and number of channels
+
+			$VBRidOffset = self::XingVBRidOffset($thisfile_mpeg_audio['version'], $thisfile_mpeg_audio['channelmode']);
+			$SideInfoData = substr($headerstring, 4 + 2, $VBRidOffset - 4);
+
+			if ((substr($headerstring, $VBRidOffset, strlen('Xing')) == 'Xing') || (substr($headerstring, $VBRidOffset, strlen('Info')) == 'Info')) {
+				// 'Xing' is traditional Xing VBR frame
+				// 'Info' is LAME-encoded CBR (This was done to avoid CBR files to be recognized as traditional Xing VBR files by some decoders.)
+				// 'Info' *can* legally be used to specify a VBR file as well, however.
+
+				// http://www.multiweb.cz/twoinches/MP3inside.htm
+				//00..03 = "Xing" or "Info"
+				//04..07 = Flags:
+				//  0x01  Frames Flag     set if value for number of frames in file is stored
+				//  0x02  Bytes Flag      set if value for filesize in bytes is stored
+				//  0x04  TOC Flag        set if values for TOC are stored
+				//  0x08  VBR Scale Flag  set if values for VBR scale is stored
+				//08..11  Frames: Number of frames in file (including the first Xing/Info one)
+				//12..15  Bytes:  File length in Bytes
+				//16..115  TOC (Table of Contents):
+				//  Contains of 100 indexes (one Byte length) for easier lookup in file. Approximately solves problem with moving inside file.
+				//  Each Byte has a value according this formula:
+				//  (TOC[i] / 256) * fileLenInBytes
+				//  So if song lasts eg. 240 sec. and you want to jump to 60. sec. (and file is 5 000 000 Bytes length) you can use:
+				//  TOC[(60/240)*100] = TOC[25]
+				//  and corresponding Byte in file is then approximately at:
+				//  (TOC[25]/256) * 5000000
+				//116..119  VBR Scale
+
+
+				// should be safe to leave this at 'vbr' and let it be overriden to 'cbr' if a CBR preset/mode is used by LAME
+//				if (substr($headerstring, $VBRidOffset, strlen('Info')) == 'Xing') {
+					$thisfile_mpeg_audio['bitrate_mode'] = 'vbr';
+					$thisfile_mpeg_audio['VBR_method']   = 'Xing';
+//				} else {
+//					$ScanAsCBR = true;
+//					$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
+//				}
+
+				$thisfile_mpeg_audio['xing_flags_raw'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 4, 4));
+
+				$thisfile_mpeg_audio['xing_flags']['frames']    = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000001);
+				$thisfile_mpeg_audio['xing_flags']['bytes']     = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000002);
+				$thisfile_mpeg_audio['xing_flags']['toc']       = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000004);
+				$thisfile_mpeg_audio['xing_flags']['vbr_scale'] = (bool) ($thisfile_mpeg_audio['xing_flags_raw'] & 0x00000008);
+
+				if ($thisfile_mpeg_audio['xing_flags']['frames']) {
+					$thisfile_mpeg_audio['VBR_frames'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset +  8, 4));
+					//$thisfile_mpeg_audio['VBR_frames']--; // don't count header Xing/Info frame
+				}
+				if ($thisfile_mpeg_audio['xing_flags']['bytes']) {
+					$thisfile_mpeg_audio['VBR_bytes']  = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 12, 4));
+				}
+
+				//if (($thisfile_mpeg_audio['bitrate'] == 'free') && !empty($thisfile_mpeg_audio['VBR_frames']) && !empty($thisfile_mpeg_audio['VBR_bytes'])) {
+				if (!empty($thisfile_mpeg_audio['VBR_frames']) && !empty($thisfile_mpeg_audio['VBR_bytes'])) {
+
+					$framelengthfloat = $thisfile_mpeg_audio['VBR_bytes'] / $thisfile_mpeg_audio['VBR_frames'];
+
+					if ($thisfile_mpeg_audio['layer'] == '1') {
+						// BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12
+						//$info['audio']['bitrate'] = ((($framelengthfloat / 4) - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 12;
+						$info['audio']['bitrate'] = ($framelengthfloat / 4) * $thisfile_mpeg_audio['sample_rate'] * (2 / $info['audio']['channels']) / 12;
+					} else {
+						// Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144
+						//$info['audio']['bitrate'] = (($framelengthfloat - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 144;
+						$info['audio']['bitrate'] = $framelengthfloat * $thisfile_mpeg_audio['sample_rate'] * (2 / $info['audio']['channels']) / 144;
+					}
+					$thisfile_mpeg_audio['framelength'] = floor($framelengthfloat);
+				}
+
+				if ($thisfile_mpeg_audio['xing_flags']['toc']) {
+					$LAMEtocData = substr($headerstring, $VBRidOffset + 16, 100);
+					for ($i = 0; $i < 100; $i++) {
+						$thisfile_mpeg_audio['toc'][$i] = ord($LAMEtocData{$i});
+					}
+				}
+				if ($thisfile_mpeg_audio['xing_flags']['vbr_scale']) {
+					$thisfile_mpeg_audio['VBR_scale'] = getid3_lib::BigEndian2Int(substr($headerstring, $VBRidOffset + 116, 4));
+				}
+
+
+				// http://gabriel.mp3-tech.org/mp3infotag.html
+				if (substr($headerstring, $VBRidOffset + 120, 4) == 'LAME') {
+
+					// shortcut
+					$thisfile_mpeg_audio['LAME'] = array();
+					$thisfile_mpeg_audio_lame    = &$thisfile_mpeg_audio['LAME'];
+
+
+					$thisfile_mpeg_audio_lame['long_version']  = substr($headerstring, $VBRidOffset + 120, 20);
+					$thisfile_mpeg_audio_lame['short_version'] = substr($thisfile_mpeg_audio_lame['long_version'], 0, 9);
+
+					if ($thisfile_mpeg_audio_lame['short_version'] >= 'LAME3.90') {
+
+						// extra 11 chars are not part of version string when LAMEtag present
+						unset($thisfile_mpeg_audio_lame['long_version']);
+
+						// It the LAME tag was only introduced in LAME v3.90
+						// http://www.hydrogenaudio.org/?act=ST&f=15&t=9933
+
+						// Offsets of various bytes in http://gabriel.mp3-tech.org/mp3infotag.html
+						// are assuming a 'Xing' identifier offset of 0x24, which is the case for
+						// MPEG-1 non-mono, but not for other combinations
+						$LAMEtagOffsetContant = $VBRidOffset - 0x24;
+
+						// shortcuts
+						$thisfile_mpeg_audio_lame['RGAD']    = array('track'=>array(), 'album'=>array());
+						$thisfile_mpeg_audio_lame_RGAD       = &$thisfile_mpeg_audio_lame['RGAD'];
+						$thisfile_mpeg_audio_lame_RGAD_track = &$thisfile_mpeg_audio_lame_RGAD['track'];
+						$thisfile_mpeg_audio_lame_RGAD_album = &$thisfile_mpeg_audio_lame_RGAD['album'];
+						$thisfile_mpeg_audio_lame['raw'] = array();
+						$thisfile_mpeg_audio_lame_raw    = &$thisfile_mpeg_audio_lame['raw'];
+
+						// byte $9B  VBR Quality
+						// This field is there to indicate a quality level, although the scale was not precised in the original Xing specifications.
+						// Actually overwrites original Xing bytes
+						unset($thisfile_mpeg_audio['VBR_scale']);
+						$thisfile_mpeg_audio_lame['vbr_quality'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0x9B, 1));
+
+						// bytes $9C-$A4  Encoder short VersionString
+						$thisfile_mpeg_audio_lame['short_version'] = substr($headerstring, $LAMEtagOffsetContant + 0x9C, 9);
+
+						// byte $A5  Info Tag revision + VBR method
+						$LAMEtagRevisionVBRmethod = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA5, 1));
+
+						$thisfile_mpeg_audio_lame['tag_revision']   = ($LAMEtagRevisionVBRmethod & 0xF0) >> 4;
+						$thisfile_mpeg_audio_lame_raw['vbr_method'] =  $LAMEtagRevisionVBRmethod & 0x0F;
+						$thisfile_mpeg_audio_lame['vbr_method']     = self::LAMEvbrMethodLookup($thisfile_mpeg_audio_lame_raw['vbr_method']);
+						$thisfile_mpeg_audio['bitrate_mode']        = substr($thisfile_mpeg_audio_lame['vbr_method'], 0, 3); // usually either 'cbr' or 'vbr', but truncates 'vbr-old / vbr-rh' to 'vbr'
+
+						// byte $A6  Lowpass filter value
+						$thisfile_mpeg_audio_lame['lowpass_frequency'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA6, 1)) * 100;
+
+						// bytes $A7-$AE  Replay Gain
+						// http://privatewww.essex.ac.uk/~djmrob/replaygain/rg_data_format.html
+						// bytes $A7-$AA : 32 bit floating point "Peak signal amplitude"
+						if ($thisfile_mpeg_audio_lame['short_version'] >= 'LAME3.94b') {
+							// LAME 3.94a16 and later - 9.23 fixed point
+							// ie 0x0059E2EE / (2^23) = 5890798 / 8388608 = 0.7022378444671630859375
+							$thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] = (float) ((getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA7, 4))) / 8388608);
+						} else {
+							// LAME 3.94a15 and earlier - 32-bit floating point
+							// Actually 3.94a16 will fall in here too and be WRONG, but is hard to detect 3.94a16 vs 3.94a15
+							$thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] = getid3_lib::LittleEndian2Float(substr($headerstring, $LAMEtagOffsetContant + 0xA7, 4));
+						}
+						if ($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'] == 0) {
+							unset($thisfile_mpeg_audio_lame_RGAD['peak_amplitude']);
+						} else {
+							$thisfile_mpeg_audio_lame_RGAD['peak_db'] = getid3_lib::RGADamplitude2dB($thisfile_mpeg_audio_lame_RGAD['peak_amplitude']);
+						}
+
+						$thisfile_mpeg_audio_lame_raw['RGAD_track']      =   getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAB, 2));
+						$thisfile_mpeg_audio_lame_raw['RGAD_album']      =   getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAD, 2));
+
+
+						if ($thisfile_mpeg_audio_lame_raw['RGAD_track'] != 0) {
+
+							$thisfile_mpeg_audio_lame_RGAD_track['raw']['name']        = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0xE000) >> 13;
+							$thisfile_mpeg_audio_lame_RGAD_track['raw']['originator']  = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x1C00) >> 10;
+							$thisfile_mpeg_audio_lame_RGAD_track['raw']['sign_bit']    = ($thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x0200) >> 9;
+							$thisfile_mpeg_audio_lame_RGAD_track['raw']['gain_adjust'] =  $thisfile_mpeg_audio_lame_raw['RGAD_track'] & 0x01FF;
+							$thisfile_mpeg_audio_lame_RGAD_track['name']       = getid3_lib::RGADnameLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['name']);
+							$thisfile_mpeg_audio_lame_RGAD_track['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['originator']);
+							$thisfile_mpeg_audio_lame_RGAD_track['gain_db']    = getid3_lib::RGADadjustmentLookup($thisfile_mpeg_audio_lame_RGAD_track['raw']['gain_adjust'], $thisfile_mpeg_audio_lame_RGAD_track['raw']['sign_bit']);
+
+							if (!empty($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'])) {
+								$info['replay_gain']['track']['peak']   = $thisfile_mpeg_audio_lame_RGAD['peak_amplitude'];
+							}
+							$info['replay_gain']['track']['originator'] = $thisfile_mpeg_audio_lame_RGAD_track['originator'];
+							$info['replay_gain']['track']['adjustment'] = $thisfile_mpeg_audio_lame_RGAD_track['gain_db'];
+						} else {
+							unset($thisfile_mpeg_audio_lame_RGAD['track']);
+						}
+						if ($thisfile_mpeg_audio_lame_raw['RGAD_album'] != 0) {
+
+							$thisfile_mpeg_audio_lame_RGAD_album['raw']['name']        = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0xE000) >> 13;
+							$thisfile_mpeg_audio_lame_RGAD_album['raw']['originator']  = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x1C00) >> 10;
+							$thisfile_mpeg_audio_lame_RGAD_album['raw']['sign_bit']    = ($thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x0200) >> 9;
+							$thisfile_mpeg_audio_lame_RGAD_album['raw']['gain_adjust'] = $thisfile_mpeg_audio_lame_raw['RGAD_album'] & 0x01FF;
+							$thisfile_mpeg_audio_lame_RGAD_album['name']       = getid3_lib::RGADnameLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['name']);
+							$thisfile_mpeg_audio_lame_RGAD_album['originator'] = getid3_lib::RGADoriginatorLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['originator']);
+							$thisfile_mpeg_audio_lame_RGAD_album['gain_db']    = getid3_lib::RGADadjustmentLookup($thisfile_mpeg_audio_lame_RGAD_album['raw']['gain_adjust'], $thisfile_mpeg_audio_lame_RGAD_album['raw']['sign_bit']);
+
+							if (!empty($thisfile_mpeg_audio_lame_RGAD['peak_amplitude'])) {
+								$info['replay_gain']['album']['peak']   = $thisfile_mpeg_audio_lame_RGAD['peak_amplitude'];
+							}
+							$info['replay_gain']['album']['originator'] = $thisfile_mpeg_audio_lame_RGAD_album['originator'];
+							$info['replay_gain']['album']['adjustment'] = $thisfile_mpeg_audio_lame_RGAD_album['gain_db'];
+						} else {
+							unset($thisfile_mpeg_audio_lame_RGAD['album']);
+						}
+						if (empty($thisfile_mpeg_audio_lame_RGAD)) {
+							unset($thisfile_mpeg_audio_lame['RGAD']);
+						}
+
+
+						// byte $AF  Encoding flags + ATH Type
+						$EncodingFlagsATHtype = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAF, 1));
+						$thisfile_mpeg_audio_lame['encoding_flags']['nspsytune']   = (bool) ($EncodingFlagsATHtype & 0x10);
+						$thisfile_mpeg_audio_lame['encoding_flags']['nssafejoint'] = (bool) ($EncodingFlagsATHtype & 0x20);
+						$thisfile_mpeg_audio_lame['encoding_flags']['nogap_next']  = (bool) ($EncodingFlagsATHtype & 0x40);
+						$thisfile_mpeg_audio_lame['encoding_flags']['nogap_prev']  = (bool) ($EncodingFlagsATHtype & 0x80);
+						$thisfile_mpeg_audio_lame['ath_type']                      =         $EncodingFlagsATHtype & 0x0F;
+
+						// byte $B0  if ABR {specified bitrate} else {minimal bitrate}
+						$thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB0, 1));
+						if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 2) { // Average BitRate (ABR)
+							$thisfile_mpeg_audio_lame['bitrate_abr'] = $thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'];
+						} elseif ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1) { // Constant BitRate (CBR)
+							// ignore
+						} elseif ($thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'] > 0) { // Variable BitRate (VBR) - minimum bitrate
+							$thisfile_mpeg_audio_lame['bitrate_min'] = $thisfile_mpeg_audio_lame['raw']['abrbitrate_minbitrate'];
+						}
+
+						// bytes $B1-$B3  Encoder delays
+						$EncoderDelays = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB1, 3));
+						$thisfile_mpeg_audio_lame['encoder_delay'] = ($EncoderDelays & 0xFFF000) >> 12;
+						$thisfile_mpeg_audio_lame['end_padding']   =  $EncoderDelays & 0x000FFF;
+
+						// byte $B4  Misc
+						$MiscByte = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB4, 1));
+						$thisfile_mpeg_audio_lame_raw['noise_shaping']       = ($MiscByte & 0x03);
+						$thisfile_mpeg_audio_lame_raw['stereo_mode']         = ($MiscByte & 0x1C) >> 2;
+						$thisfile_mpeg_audio_lame_raw['not_optimal_quality'] = ($MiscByte & 0x20) >> 5;
+						$thisfile_mpeg_audio_lame_raw['source_sample_freq']  = ($MiscByte & 0xC0) >> 6;
+						$thisfile_mpeg_audio_lame['noise_shaping']       = $thisfile_mpeg_audio_lame_raw['noise_shaping'];
+						$thisfile_mpeg_audio_lame['stereo_mode']         = self::LAMEmiscStereoModeLookup($thisfile_mpeg_audio_lame_raw['stereo_mode']);
+						$thisfile_mpeg_audio_lame['not_optimal_quality'] = (bool) $thisfile_mpeg_audio_lame_raw['not_optimal_quality'];
+						$thisfile_mpeg_audio_lame['source_sample_freq']  = self::LAMEmiscSourceSampleFrequencyLookup($thisfile_mpeg_audio_lame_raw['source_sample_freq']);
+
+						// byte $B5  MP3 Gain
+						$thisfile_mpeg_audio_lame_raw['mp3_gain'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB5, 1), false, true);
+						$thisfile_mpeg_audio_lame['mp3_gain_db']     = (getid3_lib::RGADamplitude2dB(2) / 4) * $thisfile_mpeg_audio_lame_raw['mp3_gain'];
+						$thisfile_mpeg_audio_lame['mp3_gain_factor'] = pow(2, ($thisfile_mpeg_audio_lame['mp3_gain_db'] / 6));
+
+						// bytes $B6-$B7  Preset and surround info
+						$PresetSurroundBytes = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB6, 2));
+						// Reserved                                                    = ($PresetSurroundBytes & 0xC000);
+						$thisfile_mpeg_audio_lame_raw['surround_info'] = ($PresetSurroundBytes & 0x3800);
+						$thisfile_mpeg_audio_lame['surround_info']     = self::LAMEsurroundInfoLookup($thisfile_mpeg_audio_lame_raw['surround_info']);
+						$thisfile_mpeg_audio_lame['preset_used_id']    = ($PresetSurroundBytes & 0x07FF);
+						$thisfile_mpeg_audio_lame['preset_used']       = self::LAMEpresetUsedLookup($thisfile_mpeg_audio_lame);
+						if (!empty($thisfile_mpeg_audio_lame['preset_used_id']) && empty($thisfile_mpeg_audio_lame['preset_used'])) {
+							$info['warning'][] = 'Unknown LAME preset used ('.$thisfile_mpeg_audio_lame['preset_used_id'].') - please report to info@getid3.org';
+						}
+						if (($thisfile_mpeg_audio_lame['short_version'] == 'LAME3.90.') && !empty($thisfile_mpeg_audio_lame['preset_used_id'])) {
+							// this may change if 3.90.4 ever comes out
+							$thisfile_mpeg_audio_lame['short_version'] = 'LAME3.90.3';
+						}
+
+						// bytes $B8-$BB  MusicLength
+						$thisfile_mpeg_audio_lame['audio_bytes'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB8, 4));
+						$ExpectedNumberOfAudioBytes = (($thisfile_mpeg_audio_lame['audio_bytes'] > 0) ? $thisfile_mpeg_audio_lame['audio_bytes'] : $thisfile_mpeg_audio['VBR_bytes']);
+
+						// bytes $BC-$BD  MusicCRC
+						$thisfile_mpeg_audio_lame['music_crc']    = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBC, 2));
+
+						// bytes $BE-$BF  CRC-16 of Info Tag
+						$thisfile_mpeg_audio_lame['lame_tag_crc'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBE, 2));
+
+
+						// LAME CBR
+						if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1) {
+
+							$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
+							$thisfile_mpeg_audio['bitrate'] = self::ClosestStandardMP3Bitrate($thisfile_mpeg_audio['bitrate']);
+							$info['audio']['bitrate'] = $thisfile_mpeg_audio['bitrate'];
+							//if (empty($thisfile_mpeg_audio['bitrate']) || (!empty($thisfile_mpeg_audio_lame['bitrate_min']) && ($thisfile_mpeg_audio_lame['bitrate_min'] != 255))) {
+							//	$thisfile_mpeg_audio['bitrate'] = $thisfile_mpeg_audio_lame['bitrate_min'];
+							//}
+
+						}
+
+					}
+				}
+
+			} else {
+
+				// not Fraunhofer or Xing VBR methods, most likely CBR (but could be VBR with no header)
+				$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
+				if ($recursivesearch) {
+					$thisfile_mpeg_audio['bitrate_mode'] = 'vbr';
+					if ($this->RecursiveFrameScanning($offset, $nextframetestoffset, true)) {
+						$recursivesearch = false;
+						$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
+					}
+					if ($thisfile_mpeg_audio['bitrate_mode'] == 'vbr') {
+						$info['warning'][] = 'VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.';
+					}
+				}
+
+			}
+
+		}
+
+		if (($ExpectedNumberOfAudioBytes > 0) && ($ExpectedNumberOfAudioBytes != ($info['avdataend'] - $info['avdataoffset']))) {
+			if ($ExpectedNumberOfAudioBytes > ($info['avdataend'] - $info['avdataoffset'])) {
+				if (isset($info['fileformat']) && ($info['fileformat'] == 'riff')) {
+					// ignore, audio data is broken into chunks so will always be data "missing"
+				} elseif (($ExpectedNumberOfAudioBytes - ($info['avdataend'] - $info['avdataoffset'])) == 1) {
+					$info['warning'][] = 'Last byte of data truncated (this is a known bug in Meracl ID3 Tag Writer before v1.3.5)';
+				} else {
+					$info['warning'][] = 'Probable truncated file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, only found '.($info['avdataend'] - $info['avdataoffset']).' (short by '.($ExpectedNumberOfAudioBytes - ($info['avdataend'] - $info['avdataoffset'])).' bytes)';
+				}
+			} else {
+				if ((($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes) == 1) {
+				//	$prenullbytefileoffset = ftell($this->getid3->fp);
+				//	fseek($this->getid3->fp, $info['avdataend'], SEEK_SET);
+				//	$PossibleNullByte = fread($this->getid3->fp, 1);
+				//	fseek($this->getid3->fp, $prenullbytefileoffset, SEEK_SET);
+				//	if ($PossibleNullByte === "\x00") {
+						$info['avdataend']--;
+				//		$info['warning'][] = 'Extra null byte at end of MP3 data assumed to be RIFF padding and therefore ignored';
+				//	} else {
+				//		$info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
+				//	}
+				} else {
+					$info['warning'][] = 'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($info['avdataend'] - $info['avdataoffset']).' ('.(($info['avdataend'] - $info['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)';
+				}
+			}
+		}
+
+		if (($thisfile_mpeg_audio['bitrate'] == 'free') && empty($info['audio']['bitrate'])) {
+			if (($offset == $info['avdataoffset']) && empty($thisfile_mpeg_audio['VBR_frames'])) {
+				$framebytelength = $this->FreeFormatFrameLength($offset, true);
+				if ($framebytelength > 0) {
+					$thisfile_mpeg_audio['framelength'] = $framebytelength;
+					if ($thisfile_mpeg_audio['layer'] == '1') {
+						// BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12
+						$info['audio']['bitrate'] = ((($framebytelength / 4) - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 12;
+					} else {
+						// Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144
+						$info['audio']['bitrate'] = (($framebytelength - intval($thisfile_mpeg_audio['padding'])) * $thisfile_mpeg_audio['sample_rate']) / 144;
+					}
+				} else {
+					$info['error'][] = 'Error calculating frame length of free-format MP3 without Xing/LAME header';
+				}
+			}
+		}
+
+		if (isset($thisfile_mpeg_audio['VBR_frames']) ? $thisfile_mpeg_audio['VBR_frames'] : '') {
+			switch ($thisfile_mpeg_audio['bitrate_mode']) {
+				case 'vbr':
+				case 'abr':
+					$bytes_per_frame = 1152;
+					if (($thisfile_mpeg_audio['version'] == '1') && ($thisfile_mpeg_audio['layer'] == 1)) {
+						$bytes_per_frame = 384;
+					} elseif ((($thisfile_mpeg_audio['version'] == '2') || ($thisfile_mpeg_audio['version'] == '2.5')) && ($thisfile_mpeg_audio['layer'] == 3)) {
+						$bytes_per_frame = 576;
+					}
+					$thisfile_mpeg_audio['VBR_bitrate'] = (isset($thisfile_mpeg_audio['VBR_bytes']) ? (($thisfile_mpeg_audio['VBR_bytes'] / $thisfile_mpeg_audio['VBR_frames']) * 8) * ($info['audio']['sample_rate'] / $bytes_per_frame) : 0);
+					if ($thisfile_mpeg_audio['VBR_bitrate'] > 0) {
+						$info['audio']['bitrate']         = $thisfile_mpeg_audio['VBR_bitrate'];
+						$thisfile_mpeg_audio['bitrate'] = $thisfile_mpeg_audio['VBR_bitrate']; // to avoid confusion
+					}
+					break;
+			}
+		}
+
+		// End variable-bitrate headers
+		////////////////////////////////////////////////////////////////////////////////////
+
+		if ($recursivesearch) {
+
+			if (!$this->RecursiveFrameScanning($offset, $nextframetestoffset, $ScanAsCBR)) {
+				return false;
+			}
+
+		}
+
+
+		//if (false) {
+		//    // experimental side info parsing section - not returning anything useful yet
+		//
+		//    $SideInfoBitstream = getid3_lib::BigEndian2Bin($SideInfoData);
+		//    $SideInfoOffset = 0;
+		//
+		//    if ($thisfile_mpeg_audio['version'] == '1') {
+		//        if ($thisfile_mpeg_audio['channelmode'] == 'mono') {
+		//            // MPEG-1 (mono)
+		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9);
+		//            $SideInfoOffset += 9;
+		//            $SideInfoOffset += 5;
+		//        } else {
+		//            // MPEG-1 (stereo, joint-stereo, dual-channel)
+		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9);
+		//            $SideInfoOffset += 9;
+		//            $SideInfoOffset += 3;
+		//        }
+		//    } else { // 2 or 2.5
+		//        if ($thisfile_mpeg_audio['channelmode'] == 'mono') {
+		//            // MPEG-2, MPEG-2.5 (mono)
+		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8);
+		//            $SideInfoOffset += 8;
+		//            $SideInfoOffset += 1;
+		//        } else {
+		//            // MPEG-2, MPEG-2.5 (stereo, joint-stereo, dual-channel)
+		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8);
+		//            $SideInfoOffset += 8;
+		//            $SideInfoOffset += 2;
+		//        }
+		//    }
+		//
+		//    if ($thisfile_mpeg_audio['version'] == '1') {
+		//        for ($channel = 0; $channel < $info['audio']['channels']; $channel++) {
+		//            for ($scfsi_band = 0; $scfsi_band < 4; $scfsi_band++) {
+		//                $thisfile_mpeg_audio['scfsi'][$channel][$scfsi_band] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//                $SideInfoOffset += 2;
+		//            }
+		//        }
+		//    }
+		//    for ($granule = 0; $granule < (($thisfile_mpeg_audio['version'] == '1') ? 2 : 1); $granule++) {
+		//        for ($channel = 0; $channel < $info['audio']['channels']; $channel++) {
+		//            $thisfile_mpeg_audio['part2_3_length'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 12);
+		//            $SideInfoOffset += 12;
+		//            $thisfile_mpeg_audio['big_values'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9);
+		//            $SideInfoOffset += 9;
+		//            $thisfile_mpeg_audio['global_gain'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 8);
+		//            $SideInfoOffset += 8;
+		//            if ($thisfile_mpeg_audio['version'] == '1') {
+		//                $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4);
+		//                $SideInfoOffset += 4;
+		//            } else {
+		//                $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9);
+		//                $SideInfoOffset += 9;
+		//            }
+		//            $thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//            $SideInfoOffset += 1;
+		//
+		//            if ($thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] == '1') {
+		//
+		//                $thisfile_mpeg_audio['block_type'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 2);
+		//                $SideInfoOffset += 2;
+		//                $thisfile_mpeg_audio['mixed_block_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//                $SideInfoOffset += 1;
+		//
+		//                for ($region = 0; $region < 2; $region++) {
+		//                    $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5);
+		//                    $SideInfoOffset += 5;
+		//                }
+		//                $thisfile_mpeg_audio['table_select'][$granule][$channel][2] = 0;
+		//
+		//                for ($window = 0; $window < 3; $window++) {
+		//                    $thisfile_mpeg_audio['subblock_gain'][$granule][$channel][$window] = substr($SideInfoBitstream, $SideInfoOffset, 3);
+		//                    $SideInfoOffset += 3;
+		//                }
+		//
+		//            } else {
+		//
+		//                for ($region = 0; $region < 3; $region++) {
+		//                    $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5);
+		//                    $SideInfoOffset += 5;
+		//                }
+		//
+		//                $thisfile_mpeg_audio['region0_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4);
+		//                $SideInfoOffset += 4;
+		//                $thisfile_mpeg_audio['region1_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 3);
+		//                $SideInfoOffset += 3;
+		//                $thisfile_mpeg_audio['block_type'][$granule][$channel] = 0;
+		//            }
+		//
+		//            if ($thisfile_mpeg_audio['version'] == '1') {
+		//                $thisfile_mpeg_audio['preflag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//                $SideInfoOffset += 1;
+		//            }
+		//            $thisfile_mpeg_audio['scalefac_scale'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//            $SideInfoOffset += 1;
+		//            $thisfile_mpeg_audio['count1table_select'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);
+		//            $SideInfoOffset += 1;
+		//        }
+		//    }
+		//}
+
+		return true;
+	}
+
+	public function RecursiveFrameScanning(&$offset, &$nextframetestoffset, $ScanAsCBR) {
+		$info = &$this->getid3->info;
+		$firstframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
+		$this->decodeMPEGaudioHeader($offset, $firstframetestarray, false);
+
+		for ($i = 0; $i < GETID3_MP3_VALID_CHECK_FRAMES; $i++) {
+			// check next GETID3_MP3_VALID_CHECK_FRAMES frames for validity, to make sure we haven't run across a false synch
+			if (($nextframetestoffset + 4) >= $info['avdataend']) {
+				// end of file
+				return true;
+			}
+
+			$nextframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
+			if ($this->decodeMPEGaudioHeader($nextframetestoffset, $nextframetestarray, false)) {
+				if ($ScanAsCBR) {
+					// force CBR mode, used for trying to pick out invalid audio streams with valid(?) VBR headers, or VBR streams with no VBR header
+					if (!isset($nextframetestarray['mpeg']['audio']['bitrate']) || !isset($firstframetestarray['mpeg']['audio']['bitrate']) || ($nextframetestarray['mpeg']['audio']['bitrate'] != $firstframetestarray['mpeg']['audio']['bitrate'])) {
+						return false;
+					}
+				}
+
+
+				// next frame is OK, get ready to check the one after that
+				if (isset($nextframetestarray['mpeg']['audio']['framelength']) && ($nextframetestarray['mpeg']['audio']['framelength'] > 0)) {
+					$nextframetestoffset += $nextframetestarray['mpeg']['audio']['framelength'];
+				} else {
+					$info['error'][] = 'Frame at offset ('.$offset.') is has an invalid frame length.';
+					return false;
+				}
+
+			} elseif (!empty($firstframetestarray['mpeg']['audio']['framelength']) && (($nextframetestoffset + $firstframetestarray['mpeg']['audio']['framelength']) > $info['avdataend'])) {
+
+				// it's not the end of the file, but there's not enough data left for another frame, so assume it's garbage/padding and return OK
+				return true;
+
+			} else {
+
+				// next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence
+				$info['warning'][] = 'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.';
+
+				return false;
+			}
+		}
+		return true;
+	}
+
+	public function FreeFormatFrameLength($offset, $deepscan=false) {
+		$info = &$this->getid3->info;
+
+		fseek($this->getid3->fp, $offset, SEEK_SET);
+		$MPEGaudioData = fread($this->getid3->fp, 32768);
+
+		$SyncPattern1 = substr($MPEGaudioData, 0, 4);
+		// may be different pattern due to padding
+		$SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) | 0x02).$SyncPattern1{3};
+		if ($SyncPattern2 === $SyncPattern1) {
+			$SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) & 0xFD).$SyncPattern1{3};
+		}
+
+		$framelength = false;
+		$framelength1 = strpos($MPEGaudioData, $SyncPattern1, 4);
+		$framelength2 = strpos($MPEGaudioData, $SyncPattern2, 4);
+		if ($framelength1 > 4) {
+			$framelength = $framelength1;
+		}
+		if (($framelength2 > 4) && ($framelength2 < $framelength1)) {
+			$framelength = $framelength2;
+		}
+		if (!$framelength) {
+
+			// LAME 3.88 has a different value for modeextension on the first frame vs the rest
+			$framelength1 = strpos($MPEGaudioData, substr($SyncPattern1, 0, 3), 4);
+			$framelength2 = strpos($MPEGaudioData, substr($SyncPattern2, 0, 3), 4);
+
+			if ($framelength1 > 4) {
+				$framelength = $framelength1;
+			}
+			if (($framelength2 > 4) && ($framelength2 < $framelength1)) {
+				$framelength = $framelength2;
+			}
+			if (!$framelength) {
+				$info['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset;
+				return false;
+			} else {
+				$info['warning'][] = 'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)';
+				$info['audio']['codec']   = 'LAME';
+				$info['audio']['encoder'] = 'LAME3.88';
+				$SyncPattern1 = substr($SyncPattern1, 0, 3);
+				$SyncPattern2 = substr($SyncPattern2, 0, 3);
+			}
+		}
+
+		if ($deepscan) {
+
+			$ActualFrameLengthValues = array();
+			$nextoffset = $offset + $framelength;
+			while ($nextoffset < ($info['avdataend'] - 6)) {
+				fseek($this->getid3->fp, $nextoffset - 1, SEEK_SET);
+				$NextSyncPattern = fread($this->getid3->fp, 6);
+				if ((substr($NextSyncPattern, 1, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 1, strlen($SyncPattern2)) == $SyncPattern2)) {
+					// good - found where expected
+					$ActualFrameLengthValues[] = $framelength;
+				} elseif ((substr($NextSyncPattern, 0, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 0, strlen($SyncPattern2)) == $SyncPattern2)) {
+					// ok - found one byte earlier than expected (last frame wasn't padded, first frame was)
+					$ActualFrameLengthValues[] = ($framelength - 1);
+					$nextoffset--;
+				} elseif ((substr($NextSyncPattern, 2, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 2, strlen($SyncPattern2)) == $SyncPattern2)) {
+					// ok - found one byte later than expected (last frame was padded, first frame wasn't)
+					$ActualFrameLengthValues[] = ($framelength + 1);
+					$nextoffset++;
+				} else {
+					$info['error'][] = 'Did not find expected free-format sync pattern at offset '.$nextoffset;
+					return false;
+				}
+				$nextoffset += $framelength;
+			}
+			if (count($ActualFrameLengthValues) > 0) {
+				$framelength = intval(round(array_sum($ActualFrameLengthValues) / count($ActualFrameLengthValues)));
+			}
+		}
+		return $framelength;
+	}
+
+	public function getOnlyMPEGaudioInfoBruteForce() {
+		$MPEGaudioHeaderDecodeCache   = array();
+		$MPEGaudioHeaderValidCache    = array();
+		$MPEGaudioHeaderLengthCache   = array();
+		$MPEGaudioVersionLookup       = self::MPEGaudioVersionArray();
+		$MPEGaudioLayerLookup         = self::MPEGaudioLayerArray();
+		$MPEGaudioBitrateLookup       = self::MPEGaudioBitrateArray();
+		$MPEGaudioFrequencyLookup     = self::MPEGaudioFrequencyArray();
+		$MPEGaudioChannelModeLookup   = self::MPEGaudioChannelModeArray();
+		$MPEGaudioModeExtensionLookup = self::MPEGaudioModeExtensionArray();
+		$MPEGaudioEmphasisLookup      = self::MPEGaudioEmphasisArray();
+		$LongMPEGversionLookup        = array();
+		$LongMPEGlayerLookup          = array();
+		$LongMPEGbitrateLookup        = array();
+		$LongMPEGpaddingLookup        = array();
+		$LongMPEGfrequencyLookup      = array();
+		$Distribution['bitrate']      = array();
+		$Distribution['frequency']    = array();
+		$Distribution['layer']        = array();
+		$Distribution['version']      = array();
+		$Distribution['padding']      = array();
+
+		$info = &$this->getid3->info;
+		fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET);
+
+		$max_frames_scan = 5000;
+		$frames_scanned  = 0;
+
+		$previousvalidframe = $info['avdataoffset'];
+		while (ftell($this->getid3->fp) < $info['avdataend']) {
+			set_time_limit(30);
+			$head4 = fread($this->getid3->fp, 4);
+			if (strlen($head4) < 4) {
+				break;
+			}
+			if ($head4{0} != "\xFF") {
+				for ($i = 1; $i < 4; $i++) {
+					if ($head4{$i} == "\xFF") {
+						fseek($this->getid3->fp, $i - 4, SEEK_CUR);
+						continue 2;
+					}
+				}
+				continue;
+			}
+			if (!isset($MPEGaudioHeaderDecodeCache[$head4])) {
+				$MPEGaudioHeaderDecodeCache[$head4] = self::MPEGaudioHeaderDecode($head4);
+			}
+			if (!isset($MPEGaudioHeaderValidCache[$head4])) {
+				$MPEGaudioHeaderValidCache[$head4] = self::MPEGaudioHeaderValid($MPEGaudioHeaderDecodeCache[$head4], false, false);
+			}
+			if ($MPEGaudioHeaderValidCache[$head4]) {
+
+				if (!isset($MPEGaudioHeaderLengthCache[$head4])) {
+					$LongMPEGversionLookup[$head4]   = $MPEGaudioVersionLookup[$MPEGaudioHeaderDecodeCache[$head4]['version']];
+					$LongMPEGlayerLookup[$head4]     = $MPEGaudioLayerLookup[$MPEGaudioHeaderDecodeCache[$head4]['layer']];
+					$LongMPEGbitrateLookup[$head4]   = $MPEGaudioBitrateLookup[$LongMPEGversionLookup[$head4]][$LongMPEGlayerLookup[$head4]][$MPEGaudioHeaderDecodeCache[$head4]['bitrate']];
+					$LongMPEGpaddingLookup[$head4]   = (bool) $MPEGaudioHeaderDecodeCache[$head4]['padding'];
+					$LongMPEGfrequencyLookup[$head4] = $MPEGaudioFrequencyLookup[$LongMPEGversionLookup[$head4]][$MPEGaudioHeaderDecodeCache[$head4]['sample_rate']];
+					$MPEGaudioHeaderLengthCache[$head4] = self::MPEGaudioFrameLength(
+						$LongMPEGbitrateLookup[$head4],
+						$LongMPEGversionLookup[$head4],
+						$LongMPEGlayerLookup[$head4],
+						$LongMPEGpaddingLookup[$head4],
+						$LongMPEGfrequencyLookup[$head4]);
+				}
+				if ($MPEGaudioHeaderLengthCache[$head4] > 4) {
+					$WhereWeWere = ftell($this->getid3->fp);
+					fseek($this->getid3->fp, $MPEGaudioHeaderLengthCache[$head4] - 4, SEEK_CUR);
+					$next4 = fread($this->getid3->fp, 4);
+					if ($next4{0} == "\xFF") {
+						if (!isset($MPEGaudioHeaderDecodeCache[$next4])) {
+							$MPEGaudioHeaderDecodeCache[$next4] = self::MPEGaudioHeaderDecode($next4);
+						}
+						if (!isset($MPEGaudioHeaderValidCache[$next4])) {
+							$MPEGaudioHeaderValidCache[$next4] = self::MPEGaudioHeaderValid($MPEGaudioHeaderDecodeCache[$next4], false, false);
+						}
+						if ($MPEGaudioHeaderValidCache[$next4]) {
+							fseek($this->getid3->fp, -4, SEEK_CUR);
+
+							getid3_lib::safe_inc($Distribution['bitrate'][$LongMPEGbitrateLookup[$head4]]);
+							getid3_lib::safe_inc($Distribution['layer'][$LongMPEGlayerLookup[$head4]]);
+							getid3_lib::safe_inc($Distribution['version'][$LongMPEGversionLookup[$head4]]);
+							getid3_lib::safe_inc($Distribution['padding'][intval($LongMPEGpaddingLookup[$head4])]);
+							getid3_lib::safe_inc($Distribution['frequency'][$LongMPEGfrequencyLookup[$head4]]);
+							if ($max_frames_scan && (++$frames_scanned >= $max_frames_scan)) {
+								$pct_data_scanned = (ftell($this->getid3->fp) - $info['avdataoffset']) / ($info['avdataend'] - $info['avdataoffset']);
+								$info['warning'][] = 'too many MPEG audio frames to scan, only scanned first '.$max_frames_scan.' frames ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
+								foreach ($Distribution as $key1 => $value1) {
+									foreach ($value1 as $key2 => $value2) {
+										$Distribution[$key1][$key2] = round($value2 / $pct_data_scanned);
+									}
+								}
+								break;
+							}
+							continue;
+						}
+					}
+					unset($next4);
+					fseek($this->getid3->fp, $WhereWeWere - 3, SEEK_SET);
+				}
+
+			}
+		}
+		foreach ($Distribution as $key => $value) {
+			ksort($Distribution[$key], SORT_NUMERIC);
+		}
+		ksort($Distribution['version'], SORT_STRING);
+		$info['mpeg']['audio']['bitrate_distribution']   = $Distribution['bitrate'];
+		$info['mpeg']['audio']['frequency_distribution'] = $Distribution['frequency'];
+		$info['mpeg']['audio']['layer_distribution']     = $Distribution['layer'];
+		$info['mpeg']['audio']['version_distribution']   = $Distribution['version'];
+		$info['mpeg']['audio']['padding_distribution']   = $Distribution['padding'];
+		if (count($Distribution['version']) > 1) {
+			$info['error'][] = 'Corrupt file - more than one MPEG version detected';
+		}
+		if (count($Distribution['layer']) > 1) {
+			$info['error'][] = 'Corrupt file - more than one MPEG layer detected';
+		}
+		if (count($Distribution['frequency']) > 1) {
+			$info['error'][] = 'Corrupt file - more than one MPEG sample rate detected';
+		}
+
+
+		$bittotal = 0;
+		foreach ($Distribution['bitrate'] as $bitratevalue => $bitratecount) {
+			if ($bitratevalue != 'free') {
+				$bittotal += ($bitratevalue * $bitratecount);
+			}
+		}
+		$info['mpeg']['audio']['frame_count']  = array_sum($Distribution['bitrate']);
+		if ($info['mpeg']['audio']['frame_count'] == 0) {
+			$info['error'][] = 'no MPEG audio frames found';
+			return false;
+		}
+		$info['mpeg']['audio']['bitrate']      = ($bittotal / $info['mpeg']['audio']['frame_count']);
+		$info['mpeg']['audio']['bitrate_mode'] = ((count($Distribution['bitrate']) > 0) ? 'vbr' : 'cbr');
+		$info['mpeg']['audio']['sample_rate']  = getid3_lib::array_max($Distribution['frequency'], true);
+
+		$info['audio']['bitrate']      = $info['mpeg']['audio']['bitrate'];
+		$info['audio']['bitrate_mode'] = $info['mpeg']['audio']['bitrate_mode'];
+		$info['audio']['sample_rate']  = $info['mpeg']['audio']['sample_rate'];
+		$info['audio']['dataformat']   = 'mp'.getid3_lib::array_max($Distribution['layer'], true);
+		$info['fileformat']            = $info['audio']['dataformat'];
+
+		return true;
+	}
+
+
+	public function getOnlyMPEGaudioInfo($avdataoffset, $BitrateHistogram=false) {
+		// looks for synch, decodes MPEG audio header
+
+		$info = &$this->getid3->info;
+
+		static $MPEGaudioVersionLookup;
+		static $MPEGaudioLayerLookup;
+		static $MPEGaudioBitrateLookup;
+		if (empty($MPEGaudioVersionLookup)) {
+		   $MPEGaudioVersionLookup = self::MPEGaudioVersionArray();
+		   $MPEGaudioLayerLookup   = self::MPEGaudioLayerArray();
+		   $MPEGaudioBitrateLookup = self::MPEGaudioBitrateArray();
+
+		}
+
+		fseek($this->getid3->fp, $avdataoffset, SEEK_SET);
+		$sync_seek_buffer_size = min(128 * 1024, $info['avdataend'] - $avdataoffset);
+		if ($sync_seek_buffer_size <= 0) {
+			$info['error'][] = 'Invalid $sync_seek_buffer_size at offset '.$avdataoffset;
+			return false;
+		}
+		$header = fread($this->getid3->fp, $sync_seek_buffer_size);
+		$sync_seek_buffer_size = strlen($header);
+		$SynchSeekOffset = 0;
+		while ($SynchSeekOffset < $sync_seek_buffer_size) {
+			if ((($avdataoffset + $SynchSeekOffset)  < $info['avdataend']) && !feof($this->getid3->fp)) {
+
+				if ($SynchSeekOffset > $sync_seek_buffer_size) {
+					// if a synch's not found within the first 128k bytes, then give up
+					$info['error'][] = 'Could not find valid MPEG audio synch within the first '.round($sync_seek_buffer_size / 1024).'kB';
+					if (isset($info['audio']['bitrate'])) {
+						unset($info['audio']['bitrate']);
+					}
+					if (isset($info['mpeg']['audio'])) {
+						unset($info['mpeg']['audio']);
+					}
+					if (empty($info['mpeg'])) {
+						unset($info['mpeg']);
+					}
+					return false;
+
+				} elseif (feof($this->getid3->fp)) {
+
+					$info['error'][] = 'Could not find valid MPEG audio synch before end of file';
+					if (isset($info['audio']['bitrate'])) {
+						unset($info['audio']['bitrate']);
+					}
+					if (isset($info['mpeg']['audio'])) {
+						unset($info['mpeg']['audio']);
+					}
+					if (isset($info['mpeg']) && (!is_array($info['mpeg']) || (count($info['mpeg']) == 0))) {
+						unset($info['mpeg']);
+					}
+					return false;
+				}
+			}
+
+			if (($SynchSeekOffset + 1) >= strlen($header)) {
+				$info['error'][] = 'Could not find valid MPEG synch before end of file';
+				return false;
+			}
+
+			if (($header{$SynchSeekOffset} == "\xFF") && ($header{($SynchSeekOffset + 1)} > "\xE0")) { // synch detected
+				if (!isset($FirstFrameThisfileInfo) && !isset($info['mpeg']['audio'])) {
+					$FirstFrameThisfileInfo = $info;
+					$FirstFrameAVDataOffset = $avdataoffset + $SynchSeekOffset;
+					if (!$this->decodeMPEGaudioHeader($FirstFrameAVDataOffset, $FirstFrameThisfileInfo, false)) {
+						// if this is the first valid MPEG-audio frame, save it in case it's a VBR header frame and there's
+						// garbage between this frame and a valid sequence of MPEG-audio frames, to be restored below
+						unset($FirstFrameThisfileInfo);
+					}
+				}
+
+				$dummy = $info; // only overwrite real data if valid header found
+				if ($this->decodeMPEGaudioHeader($avdataoffset + $SynchSeekOffset, $dummy, true)) {
+					$info = $dummy;
+					$info['avdataoffset'] = $avdataoffset + $SynchSeekOffset;
+					switch (isset($info['fileformat']) ? $info['fileformat'] : '') {
+						case '':
+						case 'id3':
+						case 'ape':
+						case 'mp3':
+							$info['fileformat']          = 'mp3';
+							$info['audio']['dataformat'] = 'mp3';
+							break;
+					}
+					if (isset($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode']) && ($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr')) {
+						if (!(abs($info['audio']['bitrate'] - $FirstFrameThisfileInfo['audio']['bitrate']) <= 1)) {
+							// If there is garbage data between a valid VBR header frame and a sequence
+							// of valid MPEG-audio frames the VBR data is no longer discarded.
+							$info = $FirstFrameThisfileInfo;
+							$info['avdataoffset']        = $FirstFrameAVDataOffset;
+							$info['fileformat']          = 'mp3';
+							$info['audio']['dataformat'] = 'mp3';
+							$dummy                       = $info;
+							unset($dummy['mpeg']['audio']);
+							$GarbageOffsetStart = $FirstFrameAVDataOffset + $FirstFrameThisfileInfo['mpeg']['audio']['framelength'];
+							$GarbageOffsetEnd   = $avdataoffset + $SynchSeekOffset;
+							if ($this->decodeMPEGaudioHeader($GarbageOffsetEnd, $dummy, true, true)) {
+								$info = $dummy;
+								$info['avdataoffset'] = $GarbageOffsetEnd;
+								$info['warning'][] = 'apparently-valid VBR header not used because could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd;
+							} else {
+								$info['warning'][] = 'using data from VBR header even though could not find '.GETID3_MP3_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')';
+							}
+						}
+					}
+					if (isset($info['mpeg']['audio']['bitrate_mode']) && ($info['mpeg']['audio']['bitrate_mode'] == 'vbr') && !isset($info['mpeg']['audio']['VBR_method'])) {
+						// VBR file with no VBR header
+						$BitrateHistogram = true;
+					}
+
+					if ($BitrateHistogram) {
+
+						$info['mpeg']['audio']['stereo_distribution']  = array('stereo'=>0, 'joint stereo'=>0, 'dual channel'=>0, 'mono'=>0);
+						$info['mpeg']['audio']['version_distribution'] = array('1'=>0, '2'=>0, '2.5'=>0);
+
+						if ($info['mpeg']['audio']['version'] == '1') {
+							if ($info['mpeg']['audio']['layer'] == 3) {
+								$info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 40000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 320000=>0);
+							} elseif ($info['mpeg']['audio']['layer'] == 2) {
+								$info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 320000=>0, 384000=>0);
+							} elseif ($info['mpeg']['audio']['layer'] == 1) {
+								$info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 64000=>0, 96000=>0, 128000=>0, 160000=>0, 192000=>0, 224000=>0, 256000=>0, 288000=>0, 320000=>0, 352000=>0, 384000=>0, 416000=>0, 448000=>0);
+							}
+						} elseif ($info['mpeg']['audio']['layer'] == 1) {
+							$info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 144000=>0, 160000=>0, 176000=>0, 192000=>0, 224000=>0, 256000=>0);
+						} else {
+							$info['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 8000=>0, 16000=>0, 24000=>0, 32000=>0, 40000=>0, 48000=>0, 56000=>0, 64000=>0, 80000=>0, 96000=>0, 112000=>0, 128000=>0, 144000=>0, 160000=>0);
+						}
+
+						$dummy = array('error'=>$info['error'], 'warning'=>$info['warning'], 'avdataend'=>$info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
+						$synchstartoffset = $info['avdataoffset'];
+						fseek($this->getid3->fp, $info['avdataoffset'], SEEK_SET);
+
+						// you can play with these numbers:
+						$max_frames_scan  = 50000;
+						$max_scan_segments = 10;
+
+						// don't play with these numbers:
+						$FastMode = false;
+						$SynchErrorsFound = 0;
+						$frames_scanned   = 0;
+						$this_scan_segment = 0;
+						$frames_scan_per_segment = ceil($max_frames_scan / $max_scan_segments);
+						$pct_data_scanned = 0;
+						for ($current_segment = 0; $current_segment < $max_scan_segments; $current_segment++) {
+							$frames_scanned_this_segment = 0;
+							if (ftell($this->getid3->fp) >= $info['avdataend']) {
+								break;
+							}
+							$scan_start_offset[$current_segment] = max(ftell($this->getid3->fp), $info['avdataoffset'] + round($current_segment * (($info['avdataend'] - $info['avdataoffset']) / $max_scan_segments)));
+							if ($current_segment > 0) {
+								fseek($this->getid3->fp, $scan_start_offset[$current_segment], SEEK_SET);
+								$buffer_4k = fread($this->getid3->fp, 4096);
+								for ($j = 0; $j < (strlen($buffer_4k) - 4); $j++) {
+									if (($buffer_4k{$j} == "\xFF") && ($buffer_4k{($j + 1)} > "\xE0")) { // synch detected
+										if ($this->decodeMPEGaudioHeader($scan_start_offset[$current_segment] + $j, $dummy, false, false, $FastMode)) {
+											$calculated_next_offset = $scan_start_offset[$current_segment] + $j + $dummy['mpeg']['audio']['framelength'];
+											if ($this->decodeMPEGaudioHeader($calculated_next_offset, $dummy, false, false, $FastMode)) {
+												$scan_start_offset[$current_segment] += $j;
+												break;
+											}
+										}
+									}
+								}
+							}
+							$synchstartoffset = $scan_start_offset[$current_segment];
+							while ($this->decodeMPEGaudioHeader($synchstartoffset, $dummy, false, false, $FastMode)) {
+								$FastMode = true;
+								$thisframebitrate = $MPEGaudioBitrateLookup[$MPEGaudioVersionLookup[$dummy['mpeg']['audio']['raw']['version']]][$MPEGaudioLayerLookup[$dummy['mpeg']['audio']['raw']['layer']]][$dummy['mpeg']['audio']['raw']['bitrate']];
+
+								if (empty($dummy['mpeg']['audio']['framelength'])) {
+									$SynchErrorsFound++;
+									$synchstartoffset++;
+								} else {
+									getid3_lib::safe_inc($info['mpeg']['audio']['bitrate_distribution'][$thisframebitrate]);
+									getid3_lib::safe_inc($info['mpeg']['audio']['stereo_distribution'][$dummy['mpeg']['audio']['channelmode']]);
+									getid3_lib::safe_inc($info['mpeg']['audio']['version_distribution'][$dummy['mpeg']['audio']['version']]);
+									$synchstartoffset += $dummy['mpeg']['audio']['framelength'];
+								}
+								$frames_scanned++;
+								if ($frames_scan_per_segment && (++$frames_scanned_this_segment >= $frames_scan_per_segment)) {
+									$this_pct_scanned = (ftell($this->getid3->fp) - $scan_start_offset[$current_segment]) / ($info['avdataend'] - $info['avdataoffset']);
+									if (($current_segment == 0) && (($this_pct_scanned * $max_scan_segments) >= 1)) {
+										// file likely contains < $max_frames_scan, just scan as one segment
+										$max_scan_segments = 1;
+										$frames_scan_per_segment = $max_frames_scan;
+									} else {
+										$pct_data_scanned += $this_pct_scanned;
+										break;
+									}
+								}
+							}
+						}
+						if ($pct_data_scanned > 0) {
+							$info['warning'][] = 'too many MPEG audio frames to scan, only scanned '.$frames_scanned.' frames in '.$max_scan_segments.' segments ('.number_format($pct_data_scanned * 100, 1).'% of file) and extrapolated distribution, playtime and bitrate may be incorrect.';
+							foreach ($info['mpeg']['audio'] as $key1 => $value1) {
+								if (!preg_match('#_distribution$#i', $key1)) {
+									continue;
+								}
+								foreach ($value1 as $key2 => $value2) {
+									$info['mpeg']['audio'][$key1][$key2] = round($value2 / $pct_data_scanned);
+								}
+							}
+						}
+
+						if ($SynchErrorsFound > 0) {
+							$info['warning'][] = 'Found '.$SynchErrorsFound.' synch errors in histogram analysis';
+							//return false;
+						}
+
+						$bittotal     = 0;
+						$framecounter = 0;
+						foreach ($info['mpeg']['audio']['bitrate_distribution'] as $bitratevalue => $bitratecount) {
+							$framecounter += $bitratecount;
+							if ($bitratevalue != 'free') {
+								$bittotal += ($bitratevalue * $bitratecount);
+							}
+						}
+						if ($framecounter == 0) {
+							$info['error'][] = 'Corrupt MP3 file: framecounter == zero';
+							return false;
+						}
+						$info['mpeg']['audio']['frame_count'] = getid3_lib::CastAsInt($framecounter);
+						$info['mpeg']['audio']['bitrate']     = ($bittotal / $framecounter);
+
+						$info['audio']['bitrate'] = $info['mpeg']['audio']['bitrate'];
+
+
+						// Definitively set VBR vs CBR, even if the Xing/LAME/VBRI header says differently
+						$distinct_bitrates = 0;
+						foreach ($info['mpeg']['audio']['bitrate_distribution'] as $bitrate_value => $bitrate_count) {
+							if ($bitrate_count > 0) {
+								$distinct_bitrates++;
+							}
+						}
+						if ($distinct_bitrates > 1) {
+							$info['mpeg']['audio']['bitrate_mode'] = 'vbr';
+						} else {
+							$info['mpeg']['audio']['bitrate_mode'] = 'cbr';
+						}
+						$info['audio']['bitrate_mode'] = $info['mpeg']['audio']['bitrate_mode'];
+
+					}
+
+					break; // exit while()
+				}
+			}
+
+			$SynchSeekOffset++;
+			if (($avdataoffset + $SynchSeekOffset) >= $info['avdataend']) {
+				// end of file/data
+
+				if (empty($info['mpeg']['audio'])) {
+
+					$info['error'][] = 'could not find valid MPEG synch before end of file';
+					if (isset($info['audio']['bitrate'])) {
+						unset($info['audio']['bitrate']);
+					}
+					if (isset($info['mpeg']['audio'])) {
+						unset($info['mpeg']['audio']);
+					}
+					if (isset($info['mpeg']) && (!is_array($info['mpeg']) || empty($info['mpeg']))) {
+						unset($info['mpeg']);
+					}
+					return false;
+
+				}
+				break;
+			}
+
+		}
+		$info['audio']['channels']        = $info['mpeg']['audio']['channels'];
+		$info['audio']['channelmode']     = $info['mpeg']['audio']['channelmode'];
+		$info['audio']['sample_rate']     = $info['mpeg']['audio']['sample_rate'];
+		return true;
+	}
+
+
+	public static function MPEGaudioVersionArray() {
+		static $MPEGaudioVersion = array('2.5', false, '2', '1');
+		return $MPEGaudioVersion;
+	}
+
+	public static function MPEGaudioLayerArray() {
+		static $MPEGaudioLayer = array(false, 3, 2, 1);
+		return $MPEGaudioLayer;
+	}
+
+	public static function MPEGaudioBitrateArray() {
+		static $MPEGaudioBitrate;
+		if (empty($MPEGaudioBitrate)) {
+			$MPEGaudioBitrate = array (
+				'1'  =>  array (1 => array('free', 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, 448000),
+								2 => array('free', 32000, 48000, 56000,  64000,  80000,  96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000),
+								3 => array('free', 32000, 40000, 48000,  56000,  64000,  80000,  96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000)
+							   ),
+
+				'2'  =>  array (1 => array('free', 32000, 48000, 56000,  64000,  80000,  96000, 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000),
+								2 => array('free',  8000, 16000, 24000,  32000,  40000,  48000,  56000,  64000,  80000,  96000, 112000, 128000, 144000, 160000),
+							   )
+			);
+			$MPEGaudioBitrate['2'][3] = $MPEGaudioBitrate['2'][2];
+			$MPEGaudioBitrate['2.5']  = $MPEGaudioBitrate['2'];
+		}
+		return $MPEGaudioBitrate;
+	}
+
+	public static function MPEGaudioFrequencyArray() {
+		static $MPEGaudioFrequency;
+		if (empty($MPEGaudioFrequency)) {
+			$MPEGaudioFrequency = array (
+				'1'   => array(44100, 48000, 32000),
+				'2'   => array(22050, 24000, 16000),
+				'2.5' => array(11025, 12000,  8000)
+			);
+		}
+		return $MPEGaudioFrequency;
+	}
+
+	public static function MPEGaudioChannelModeArray() {
+		static $MPEGaudioChannelMode = array('stereo', 'joint stereo', 'dual channel', 'mono');
+		return $MPEGaudioChannelMode;
+	}
+
+	public static function MPEGaudioModeExtensionArray() {
+		static $MPEGaudioModeExtension;
+		if (empty($MPEGaudioModeExtension)) {
+			$MPEGaudioModeExtension = array (
+				1 => array('4-31', '8-31', '12-31', '16-31'),
+				2 => array('4-31', '8-31', '12-31', '16-31'),
+				3 => array('', 'IS', 'MS', 'IS+MS')
+			);
+		}
+		return $MPEGaudioModeExtension;
+	}
+
+	public static function MPEGaudioEmphasisArray() {
+		static $MPEGaudioEmphasis = array('none', '50/15ms', false, 'CCIT J.17');
+		return $MPEGaudioEmphasis;
+	}
+
+	public static function MPEGaudioHeaderBytesValid($head4, $allowBitrate15=false) {
+		return self::MPEGaudioHeaderValid(self::MPEGaudioHeaderDecode($head4), false, $allowBitrate15);
+	}
+
+	public static function MPEGaudioHeaderValid($rawarray, $echoerrors=false, $allowBitrate15=false) {
+		if (($rawarray['synch'] & 0x0FFE) != 0x0FFE) {
+			return false;
+		}
+
+		static $MPEGaudioVersionLookup;
+		static $MPEGaudioLayerLookup;
+		static $MPEGaudioBitrateLookup;
+		static $MPEGaudioFrequencyLookup;
+		static $MPEGaudioChannelModeLookup;
+		static $MPEGaudioModeExtensionLookup;
+		static $MPEGaudioEmphasisLookup;
+		if (empty($MPEGaudioVersionLookup)) {
+			$MPEGaudioVersionLookup       = self::MPEGaudioVersionArray();
+			$MPEGaudioLayerLookup         = self::MPEGaudioLayerArray();
+			$MPEGaudioBitrateLookup       = self::MPEGaudioBitrateArray();
+			$MPEGaudioFrequencyLookup     = self::MPEGaudioFrequencyArray();
+			$MPEGaudioChannelModeLookup   = self::MPEGaudioChannelModeArray();
+			$MPEGaudioModeExtensionLookup = self::MPEGaudioModeExtensionArray();
+			$MPEGaudioEmphasisLookup      = self::MPEGaudioEmphasisArray();
+		}
+
+		if (isset($MPEGaudioVersionLookup[$rawarray['version']])) {
+			$decodedVersion = $MPEGaudioVersionLookup[$rawarray['version']];
+		} else {
+			echo ($echoerrors ? "\n".'invalid Version ('.$rawarray['version'].')' : '');
+			return false;
+		}
+		if (isset($MPEGaudioLayerLookup[$rawarray['layer']])) {
+			$decodedLayer = $MPEGaudioLayerLookup[$rawarray['layer']];
+		} else {
+			echo ($echoerrors ? "\n".'invalid Layer ('.$rawarray['layer'].')' : '');
+			return false;
+		}
+		if (!isset($MPEGaudioBitrateLookup[$decodedVersion][$decodedLayer][$rawarray['bitrate']])) {
+			echo ($echoerrors ? "\n".'invalid Bitrate ('.$rawarray['bitrate'].')' : '');
+			if ($rawarray['bitrate'] == 15) {
+				// known issue in LAME 3.90 - 3.93.1 where free-format has bitrate ID of 15 instead of 0
+				// let it go through here otherwise file will not be identified
+				if (!$allowBitrate15) {
+					return false;
+				}
+			} else {
+				return false;
+			}
+		}
+		if (!isset($MPEGaudioFrequencyLookup[$decodedVersion][$rawarray['sample_rate']])) {
+			echo ($echoerrors ? "\n".'invalid Frequency ('.$rawarray['sample_rate'].')' : '');
+			return false;
+		}
+		if (!isset($MPEGaudioChannelModeLookup[$rawarray['channelmode']])) {
+			echo ($echoerrors ? "\n".'invalid ChannelMode ('.$rawarray['channelmode'].')' : '');
+			return false;
+		}
+		if (!isset($MPEGaudioModeExtensionLookup[$decodedLayer][$rawarray['modeextension']])) {
+			echo ($echoerrors ? "\n".'invalid Mode Extension ('.$rawarray['modeextension'].')' : '');
+			return false;
+		}
+		if (!isset($MPEGaudioEmphasisLookup[$rawarray['emphasis']])) {
+			echo ($echoerrors ? "\n".'invalid Emphasis ('.$rawarray['emphasis'].')' : '');
+			return false;
+		}
+		// These are just either set or not set, you can't mess that up :)
+		// $rawarray['protection'];
+		// $rawarray['padding'];
+		// $rawarray['private'];
+		// $rawarray['copyright'];
+		// $rawarray['original'];
+
+		return true;
+	}
+
+	public static function MPEGaudioHeaderDecode($Header4Bytes) {
+		// AAAA AAAA  AAAB BCCD  EEEE FFGH  IIJJ KLMM
+		// A - Frame sync (all bits set)
+		// B - MPEG Audio version ID
+		// C - Layer description
+		// D - Protection bit
+		// E - Bitrate index
+		// F - Sampling rate frequency index
+		// G - Padding bit
+		// H - Private bit
+		// I - Channel Mode
+		// J - Mode extension (Only if Joint stereo)
+		// K - Copyright
+		// L - Original
+		// M - Emphasis
+
+		if (strlen($Header4Bytes) != 4) {
+			return false;
+		}
+
+		$MPEGrawHeader['synch']         = (getid3_lib::BigEndian2Int(substr($Header4Bytes, 0, 2)) & 0xFFE0) >> 4;
+		$MPEGrawHeader['version']       = (ord($Header4Bytes{1}) & 0x18) >> 3; //    BB
+		$MPEGrawHeader['layer']         = (ord($Header4Bytes{1}) & 0x06) >> 1; //      CC
+		$MPEGrawHeader['protection']    = (ord($Header4Bytes{1}) & 0x01);      //        D
+		$MPEGrawHeader['bitrate']       = (ord($Header4Bytes{2}) & 0xF0) >> 4; // EEEE
+		$MPEGrawHeader['sample_rate']   = (ord($Header4Bytes{2}) & 0x0C) >> 2; //     FF
+		$MPEGrawHeader['padding']       = (ord($Header4Bytes{2}) & 0x02) >> 1; //       G
+		$MPEGrawHeader['private']       = (ord($Header4Bytes{2}) & 0x01);      //        H
+		$MPEGrawHeader['channelmode']   = (ord($Header4Bytes{3}) & 0xC0) >> 6; // II
+		$MPEGrawHeader['modeextension'] = (ord($Header4Bytes{3}) & 0x30) >> 4; //   JJ
+		$MPEGrawHeader['copyright']     = (ord($Header4Bytes{3}) & 0x08) >> 3; //     K
+		$MPEGrawHeader['original']      = (ord($Header4Bytes{3}) & 0x04) >> 2; //      L
+		$MPEGrawHeader['emphasis']      = (ord($Header4Bytes{3}) & 0x03);      //       MM
+
+		return $MPEGrawHeader;
+	}
+
+	public static function MPEGaudioFrameLength(&$bitrate, &$version, &$layer, $padding, &$samplerate) {
+		static $AudioFrameLengthCache = array();
+
+		if (!isset($AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate])) {
+			$AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = false;
+			if ($bitrate != 'free') {
+
+				if ($version == '1') {
+
+					if ($layer == '1') {
+
+						// For Layer I slot is 32 bits long
+						$FrameLengthCoefficient = 48;
+						$SlotLength = 4;
+
+					} else { // Layer 2 / 3
+
+						// for Layer 2 and Layer 3 slot is 8 bits long.
+						$FrameLengthCoefficient = 144;
+						$SlotLength = 1;
+
+					}
+
+				} else { // MPEG-2 / MPEG-2.5
+
+					if ($layer == '1') {
+
+						// For Layer I slot is 32 bits long
+						$FrameLengthCoefficient = 24;
+						$SlotLength = 4;
+
+					} elseif ($layer == '2') {
+
+						// for Layer 2 and Layer 3 slot is 8 bits long.
+						$FrameLengthCoefficient = 144;
+						$SlotLength = 1;
+
+					} else { // layer 3
+
+						// for Layer 2 and Layer 3 slot is 8 bits long.
+						$FrameLengthCoefficient = 72;
+						$SlotLength = 1;
+
+					}
+
+				}
+
+				// FrameLengthInBytes = ((Coefficient * BitRate) / SampleRate) + Padding
+				if ($samplerate > 0) {
+					$NewFramelength  = ($FrameLengthCoefficient * $bitrate) / $samplerate;
+					$NewFramelength  = floor($NewFramelength / $SlotLength) * $SlotLength; // round to next-lower multiple of SlotLength (1 byte for Layer 2/3, 4 bytes for Layer I)
+					if ($padding) {
+						$NewFramelength += $SlotLength;
+					}
+					$AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = (int) $NewFramelength;
+				}
+			}
+		}
+		return $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate];
+	}
+
+	public static function ClosestStandardMP3Bitrate($bit_rate) {
+		static $standard_bit_rates = array (320000, 256000, 224000, 192000, 160000, 128000, 112000, 96000, 80000, 64000, 56000, 48000, 40000, 32000, 24000, 16000, 8000);
+		static $bit_rate_table = array (0=>'-');
+		$round_bit_rate = intval(round($bit_rate, -3));
+		if (!isset($bit_rate_table[$round_bit_rate])) {
+			if ($round_bit_rate > max($standard_bit_rates)) {
+				$bit_rate_table[$round_bit_rate] = round($bit_rate, 2 - strlen($bit_rate));
+			} else {
+				$bit_rate_table[$round_bit_rate] = max($standard_bit_rates);
+				foreach ($standard_bit_rates as $standard_bit_rate) {
+					if ($round_bit_rate >= $standard_bit_rate + (($bit_rate_table[$round_bit_rate] - $standard_bit_rate) / 2)) {
+						break;
+					}
+					$bit_rate_table[$round_bit_rate] = $standard_bit_rate;
+				}
+			}
+		}
+		return $bit_rate_table[$round_bit_rate];
+	}
+
+	public static function XingVBRidOffset($version, $channelmode) {
+		static $XingVBRidOffsetCache = array();
+		if (empty($XingVBRidOffset)) {
+			$XingVBRidOffset = array (
+				'1'   => array ('mono'          => 0x15, // 4 + 17 = 21
+								'stereo'        => 0x24, // 4 + 32 = 36
+								'joint stereo'  => 0x24,
+								'dual channel'  => 0x24
+							   ),
+
+				'2'   => array ('mono'          => 0x0D, // 4 +  9 = 13
+								'stereo'        => 0x15, // 4 + 17 = 21
+								'joint stereo'  => 0x15,
+								'dual channel'  => 0x15
+							   ),
+
+				'2.5' => array ('mono'          => 0x15,
+								'stereo'        => 0x15,
+								'joint stereo'  => 0x15,
+								'dual channel'  => 0x15
+							   )
+			);
+		}
+		return $XingVBRidOffset[$version][$channelmode];
+	}
+
+	public static function LAMEvbrMethodLookup($VBRmethodID) {
+		static $LAMEvbrMethodLookup = array(
+			0x00 => 'unknown',
+			0x01 => 'cbr',
+			0x02 => 'abr',
+			0x03 => 'vbr-old / vbr-rh',
+			0x04 => 'vbr-new / vbr-mtrh',
+			0x05 => 'vbr-mt',
+			0x06 => 'vbr (full vbr method 4)',
+			0x08 => 'cbr (constant bitrate 2 pass)',
+			0x09 => 'abr (2 pass)',
+			0x0F => 'reserved'
+		);
+		return (isset($LAMEvbrMethodLookup[$VBRmethodID]) ? $LAMEvbrMethodLookup[$VBRmethodID] : '');
+	}
+
+	public static function LAMEmiscStereoModeLookup($StereoModeID) {
+		static $LAMEmiscStereoModeLookup = array(
+			0 => 'mono',
+			1 => 'stereo',
+			2 => 'dual mono',
+			3 => 'joint stereo',
+			4 => 'forced stereo',
+			5 => 'auto',
+			6 => 'intensity stereo',
+			7 => 'other'
+		);
+		return (isset($LAMEmiscStereoModeLookup[$StereoModeID]) ? $LAMEmiscStereoModeLookup[$StereoModeID] : '');
+	}
+
+	public static function LAMEmiscSourceSampleFrequencyLookup($SourceSampleFrequencyID) {
+		static $LAMEmiscSourceSampleFrequencyLookup = array(
+			0 => '<= 32 kHz',
+			1 => '44.1 kHz',
+			2 => '48 kHz',
+			3 => '> 48kHz'
+		);
+		return (isset($LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID]) ? $LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID] : '');
+	}
+
+	public static function LAMEsurroundInfoLookup($SurroundInfoID) {
+		static $LAMEsurroundInfoLookup = array(
+			0 => 'no surround info',
+			1 => 'DPL encoding',
+			2 => 'DPL2 encoding',
+			3 => 'Ambisonic encoding'
+		);
+		return (isset($LAMEsurroundInfoLookup[$SurroundInfoID]) ? $LAMEsurroundInfoLookup[$SurroundInfoID] : 'reserved');
+	}
+
+	public static function LAMEpresetUsedLookup($LAMEtag) {
+
+		if ($LAMEtag['preset_used_id'] == 0) {
+			// no preset used (LAME >=3.93)
+			// no preset recorded (LAME <3.93)
+			return '';
+		}
+		$LAMEpresetUsedLookup = array();
+
+		/////  THIS PART CANNOT BE STATIC .
+		for ($i = 8; $i <= 320; $i++) {
+			switch ($LAMEtag['vbr_method']) {
+				case 'cbr':
+					$LAMEpresetUsedLookup[$i] = '--alt-preset '.$LAMEtag['vbr_method'].' '.$i;
+					break;
+				case 'abr':
+				default: // other VBR modes shouldn't be here(?)
+					$LAMEpresetUsedLookup[$i] = '--alt-preset '.$i;
+					break;
+			}
+		}
+
+		// named old-style presets (studio, phone, voice, etc) are handled in GuessEncoderOptions()
+
+		// named alt-presets
+		$LAMEpresetUsedLookup[1000] = '--r3mix';
+		$LAMEpresetUsedLookup[1001] = '--alt-preset standard';
+		$LAMEpresetUsedLookup[1002] = '--alt-preset extreme';
+		$LAMEpresetUsedLookup[1003] = '--alt-preset insane';
+		$LAMEpresetUsedLookup[1004] = '--alt-preset fast standard';
+		$LAMEpresetUsedLookup[1005] = '--alt-preset fast extreme';
+		$LAMEpresetUsedLookup[1006] = '--alt-preset medium';
+		$LAMEpresetUsedLookup[1007] = '--alt-preset fast medium';
+
+		// LAME 3.94 additions/changes
+		$LAMEpresetUsedLookup[1010] = '--preset portable';                                                           // 3.94a15 Oct 21 2003
+		$LAMEpresetUsedLookup[1015] = '--preset radio';                                                              // 3.94a15 Oct 21 2003
+
+		$LAMEpresetUsedLookup[320]  = '--preset insane';                                                             // 3.94a15 Nov 12 2003
+		$LAMEpresetUsedLookup[410]  = '-V9';
+		$LAMEpresetUsedLookup[420]  = '-V8';
+		$LAMEpresetUsedLookup[440]  = '-V6';
+		$LAMEpresetUsedLookup[430]  = '--preset radio';                                                              // 3.94a15 Nov 12 2003
+		$LAMEpresetUsedLookup[450]  = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'portable';  // 3.94a15 Nov 12 2003
+		$LAMEpresetUsedLookup[460]  = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'medium';    // 3.94a15 Nov 12 2003
+		$LAMEpresetUsedLookup[470]  = '--r3mix';                                                                     // 3.94b1  Dec 18 2003
+		$LAMEpresetUsedLookup[480]  = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'standard';  // 3.94a15 Nov 12 2003
+		$LAMEpresetUsedLookup[490]  = '-V1';
+		$LAMEpresetUsedLookup[500]  = '--preset '.(($LAMEtag['raw']['vbr_method'] == 4) ? 'fast ' : '').'extreme';   // 3.94a15 Nov 12 2003
+
+		return (isset($LAMEpresetUsedLookup[$LAMEtag['preset_used_id']]) ? $LAMEpresetUsedLookup[$LAMEtag['preset_used_id']] : 'new/unknown preset: '.$LAMEtag['preset_used_id'].' - report to info@getid3.org');
+	}
+
+}
diff --git a/wp-includes/ID3/module.audio.ogg.php b/wp-includes/ID3/module.audio.ogg.php
new file mode 100644
index 000000000..a2a35aadf
--- /dev/null
+++ b/wp-includes/ID3/module.audio.ogg.php
@@ -0,0 +1,671 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.audio.ogg.php                                        //
+// module for analyzing Ogg Vorbis, OggFLAC and Speex files    //
+// dependencies: module.audio.flac.php                         //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.flac.php', __FILE__, true);
+
+class getid3_ogg extends getid3_handler
+{
+	// http://xiph.org/vorbis/doc/Vorbis_I_spec.html
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		$info['fileformat'] = 'ogg';
+
+		// Warn about illegal tags - only vorbiscomments are allowed
+		if (isset($info['id3v2'])) {
+			$info['warning'][] = 'Illegal ID3v2 tag present.';
+		}
+		if (isset($info['id3v1'])) {
+			$info['warning'][] = 'Illegal ID3v1 tag present.';
+		}
+		if (isset($info['ape'])) {
+			$info['warning'][] = 'Illegal APE tag present.';
+		}
+
+
+		// Page 1 - Stream Header
+
+		$this->fseek($info['avdataoffset']);
+
+		$oggpageinfo = $this->ParseOggPageHeader();
+		$info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo;
+
+		if ($this->ftell() >= $this->getid3->fread_buffer_size()) {
+			$info['error'][] = 'Could not find start of Ogg page in the first '.$this->getid3->fread_buffer_size().' bytes (this might not be an Ogg-Vorbis file?)';
+			unset($info['fileformat']);
+			unset($info['ogg']);
+			return false;
+		}
+
+		$filedata = $this->fread($oggpageinfo['page_length']);
+		$filedataoffset = 0;
+
+		if (substr($filedata, 0, 4) == 'fLaC') {
+
+			$info['audio']['dataformat']   = 'flac';
+			$info['audio']['bitrate_mode'] = 'vbr';
+			$info['audio']['lossless']     = true;
+
+		} elseif (substr($filedata, 1, 6) == 'vorbis') {
+
+			$this->ParseVorbisPageHeader($filedata, $filedataoffset, $oggpageinfo);
+
+		} elseif (substr($filedata, 0, 8) == 'Speex   ') {
+
+			// http://www.speex.org/manual/node10.html
+
+			$info['audio']['dataformat']   = 'speex';
+			$info['mime_type']             = 'audio/speex';
+			$info['audio']['bitrate_mode'] = 'abr';
+			$info['audio']['lossless']     = false;
+
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_string']           =                              substr($filedata, $filedataoffset, 8); // hard-coded to 'Speex   '
+			$filedataoffset += 8;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version']          =                              substr($filedata, $filedataoffset, 20);
+			$filedataoffset += 20;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version_id']       = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['header_size']            = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['rate']                   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode']                   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode_bitstream_version'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['nb_channels']            = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['bitrate']                = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['framesize']              = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['vbr']                    = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['frames_per_packet']      = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['extra_headers']          = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['reserved1']              = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+			$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['reserved2']              = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+			$filedataoffset += 4;
+
+			$info['speex']['speex_version'] = trim($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['speex_version']);
+			$info['speex']['sample_rate']   = $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['rate'];
+			$info['speex']['channels']      = $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['nb_channels'];
+			$info['speex']['vbr']           = (bool) $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['vbr'];
+			$info['speex']['band_type']     = $this->SpeexBandModeLookup($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['mode']);
+
+			$info['audio']['sample_rate']   = $info['speex']['sample_rate'];
+			$info['audio']['channels']      = $info['speex']['channels'];
+			if ($info['speex']['vbr']) {
+				$info['audio']['bitrate_mode'] = 'vbr';
+			}
+
+
+		} elseif (substr($filedata, 0, 8) == "fishead\x00") {
+
+			// Ogg Skeleton version 3.0 Format Specification
+			// http://xiph.org/ogg/doc/skeleton.html
+			$filedataoffset += 8;
+			$info['ogg']['skeleton']['fishead']['raw']['version_major']                = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  2));
+			$filedataoffset += 2;
+			$info['ogg']['skeleton']['fishead']['raw']['version_minor']                = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  2));
+			$filedataoffset += 2;
+			$info['ogg']['skeleton']['fishead']['raw']['presentationtime_numerator']   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+			$filedataoffset += 8;
+			$info['ogg']['skeleton']['fishead']['raw']['presentationtime_denominator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+			$filedataoffset += 8;
+			$info['ogg']['skeleton']['fishead']['raw']['basetime_numerator']           = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+			$filedataoffset += 8;
+			$info['ogg']['skeleton']['fishead']['raw']['basetime_denominator']         = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+			$filedataoffset += 8;
+			$info['ogg']['skeleton']['fishead']['raw']['utc']                          = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 20));
+			$filedataoffset += 20;
+
+			$info['ogg']['skeleton']['fishead']['version']          = $info['ogg']['skeleton']['fishead']['raw']['version_major'].'.'.$info['ogg']['skeleton']['fishead']['raw']['version_minor'];
+			$info['ogg']['skeleton']['fishead']['presentationtime'] = $info['ogg']['skeleton']['fishead']['raw']['presentationtime_numerator'] / $info['ogg']['skeleton']['fishead']['raw']['presentationtime_denominator'];
+			$info['ogg']['skeleton']['fishead']['basetime']         = $info['ogg']['skeleton']['fishead']['raw']['basetime_numerator']         / $info['ogg']['skeleton']['fishead']['raw']['basetime_denominator'];
+			$info['ogg']['skeleton']['fishead']['utc']              = $info['ogg']['skeleton']['fishead']['raw']['utc'];
+
+
+			$counter = 0;
+			do {
+				$oggpageinfo = $this->ParseOggPageHeader();
+				$info['ogg']['pageheader'][$oggpageinfo['page_seqno'].'.'.$counter++] = $oggpageinfo;
+				$filedata = $this->fread($oggpageinfo['page_length']);
+				$this->fseek($oggpageinfo['page_end_offset']);
+
+				if (substr($filedata, 0, 8) == "fisbone\x00") {
+
+					$filedataoffset = 8;
+					$info['ogg']['skeleton']['fisbone']['raw']['message_header_offset']   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  4));
+					$filedataoffset += 4;
+					$info['ogg']['skeleton']['fisbone']['raw']['serial_number']           = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  4));
+					$filedataoffset += 4;
+					$info['ogg']['skeleton']['fisbone']['raw']['number_header_packets']   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  4));
+					$filedataoffset += 4;
+					$info['ogg']['skeleton']['fisbone']['raw']['granulerate_numerator']   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+					$filedataoffset += 8;
+					$info['ogg']['skeleton']['fisbone']['raw']['granulerate_denominator'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+					$filedataoffset += 8;
+					$info['ogg']['skeleton']['fisbone']['raw']['basegranule']             = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  8));
+					$filedataoffset += 8;
+					$info['ogg']['skeleton']['fisbone']['raw']['preroll']                 = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  4));
+					$filedataoffset += 4;
+					$info['ogg']['skeleton']['fisbone']['raw']['granuleshift']            = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset,  1));
+					$filedataoffset += 1;
+					$info['ogg']['skeleton']['fisbone']['raw']['padding']                 =                              substr($filedata, $filedataoffset,  3);
+					$filedataoffset += 3;
+
+				} elseif (substr($filedata, 1, 6) == 'theora') {
+
+					$info['video']['dataformat'] = 'theora';
+					$info['error'][] = 'Ogg Theora not correctly handled in this version of getID3 ['.$this->getid3->version().']';
+					//break;
+
+				} elseif (substr($filedata, 1, 6) == 'vorbis') {
+
+					$this->ParseVorbisPageHeader($filedata, $filedataoffset, $oggpageinfo);
+
+				} else {
+					$info['error'][] = 'unexpected';
+					//break;
+				}
+			//} while ($oggpageinfo['page_seqno'] == 0);
+			} while (($oggpageinfo['page_seqno'] == 0) && (substr($filedata, 0, 8) != "fisbone\x00"));
+
+			$this->fseek($oggpageinfo['page_start_offset']);
+
+			$info['error'][] = 'Ogg Skeleton not correctly handled in this version of getID3 ['.$this->getid3->version().']';
+			//return false;
+
+		} else {
+
+			$info['error'][] = 'Expecting either "Speex   " or "vorbis" identifier strings, found "'.substr($filedata, 0, 8).'"';
+			unset($info['ogg']);
+			unset($info['mime_type']);
+			return false;
+
+		}
+
+		// Page 2 - Comment Header
+		$oggpageinfo = $this->ParseOggPageHeader();
+		$info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo;
+
+		switch ($info['audio']['dataformat']) {
+			case 'vorbis':
+				$filedata = $this->fread($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']);
+				$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['packet_type'] = getid3_lib::LittleEndian2Int(substr($filedata, 0, 1));
+				$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['stream_type'] =                              substr($filedata, 1, 6); // hard-coded to 'vorbis'
+
+				$this->ParseVorbisComments();
+				break;
+
+			case 'flac':
+				$flac = new getid3_flac($this->getid3);
+				if (!$flac->parseMETAdata()) {
+					$info['error'][] = 'Failed to parse FLAC headers';
+					return false;
+				}
+				unset($flac);
+				break;
+
+			case 'speex':
+				$this->fseek($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length'], SEEK_CUR);
+				$this->ParseVorbisComments();
+				break;
+		}
+
+
+		// Last Page - Number of Samples
+		if (!getid3_lib::intValueSupported($info['avdataend'])) {
+
+			$info['warning'][] = 'Unable to parse Ogg end chunk file (PHP does not support file operations beyond '.round(PHP_INT_MAX / 1073741824).'GB)';
+
+		} else {
+
+			$this->fseek(max($info['avdataend'] - $this->getid3->fread_buffer_size(), 0));
+			$LastChunkOfOgg = strrev($this->fread($this->getid3->fread_buffer_size()));
+			if ($LastOggSpostion = strpos($LastChunkOfOgg, 'SggO')) {
+				$this->fseek($info['avdataend'] - ($LastOggSpostion + strlen('SggO')));
+				$info['avdataend'] = $this->ftell();
+				$info['ogg']['pageheader']['eos'] = $this->ParseOggPageHeader();
+				$info['ogg']['samples']   = $info['ogg']['pageheader']['eos']['pcm_abs_position'];
+				if ($info['ogg']['samples'] == 0) {
+					$info['error'][] = 'Corrupt Ogg file: eos.number of samples == zero';
+					return false;
+				}
+				if (!empty($info['audio']['sample_rate'])) {
+					$info['ogg']['bitrate_average'] = (($info['avdataend'] - $info['avdataoffset']) * 8) / ($info['ogg']['samples'] / $info['audio']['sample_rate']);
+				}
+			}
+
+		}
+
+		if (!empty($info['ogg']['bitrate_average'])) {
+			$info['audio']['bitrate'] = $info['ogg']['bitrate_average'];
+		} elseif (!empty($info['ogg']['bitrate_nominal'])) {
+			$info['audio']['bitrate'] = $info['ogg']['bitrate_nominal'];
+		} elseif (!empty($info['ogg']['bitrate_min']) && !empty($info['ogg']['bitrate_max'])) {
+			$info['audio']['bitrate'] = ($info['ogg']['bitrate_min'] + $info['ogg']['bitrate_max']) / 2;
+		}
+		if (isset($info['audio']['bitrate']) && !isset($info['playtime_seconds'])) {
+			if ($info['audio']['bitrate'] == 0) {
+				$info['error'][] = 'Corrupt Ogg file: bitrate_audio == zero';
+				return false;
+			}
+			$info['playtime_seconds'] = (float) ((($info['avdataend'] - $info['avdataoffset']) * 8) / $info['audio']['bitrate']);
+		}
+
+		if (isset($info['ogg']['vendor'])) {
+			$info['audio']['encoder'] = preg_replace('/^Encoded with /', '', $info['ogg']['vendor']);
+
+			// Vorbis only
+			if ($info['audio']['dataformat'] == 'vorbis') {
+
+				// Vorbis 1.0 starts with Xiph.Org
+				if  (preg_match('/^Xiph.Org/', $info['audio']['encoder'])) {
+
+					if ($info['audio']['bitrate_mode'] == 'abr') {
+
+						// Set -b 128 on abr files
+						$info['audio']['encoder_options'] = '-b '.round($info['ogg']['bitrate_nominal'] / 1000);
+
+					} elseif (($info['audio']['bitrate_mode'] == 'vbr') && ($info['audio']['channels'] == 2) && ($info['audio']['sample_rate'] >= 44100) && ($info['audio']['sample_rate'] <= 48000)) {
+						// Set -q N on vbr files
+						$info['audio']['encoder_options'] = '-q '.$this->get_quality_from_nominal_bitrate($info['ogg']['bitrate_nominal']);
+
+					}
+				}
+
+				if (empty($info['audio']['encoder_options']) && !empty($info['ogg']['bitrate_nominal'])) {
+					$info['audio']['encoder_options'] = 'Nominal bitrate: '.intval(round($info['ogg']['bitrate_nominal'] / 1000)).'kbps';
+				}
+			}
+		}
+
+		return true;
+	}
+
+	public function ParseVorbisPageHeader(&$filedata, &$filedataoffset, &$oggpageinfo) {
+		$info = &$this->getid3->info;
+		$info['audio']['dataformat'] = 'vorbis';
+		$info['audio']['lossless']   = false;
+
+		$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['packet_type'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+		$filedataoffset += 1;
+		$info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['stream_type'] = substr($filedata, $filedataoffset, 6); // hard-coded to 'vorbis'
+		$filedataoffset += 6;
+		$info['ogg']['bitstreamversion'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$info['ogg']['numberofchannels'] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+		$filedataoffset += 1;
+		$info['audio']['channels']       = $info['ogg']['numberofchannels'];
+		$info['ogg']['samplerate']       = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		if ($info['ogg']['samplerate'] == 0) {
+			$info['error'][] = 'Corrupt Ogg file: sample rate == zero';
+			return false;
+		}
+		$info['audio']['sample_rate']    = $info['ogg']['samplerate'];
+		$info['ogg']['samples']          = 0; // filled in later
+		$info['ogg']['bitrate_average']  = 0; // filled in later
+		$info['ogg']['bitrate_max']      = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$info['ogg']['bitrate_nominal']  = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$info['ogg']['bitrate_min']      = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$info['ogg']['blocksize_small']  = pow(2,  getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)) & 0x0F);
+		$info['ogg']['blocksize_large']  = pow(2, (getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)) & 0xF0) >> 4);
+		$info['ogg']['stop_bit']         = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1)); // must be 1, marks end of packet
+
+		$info['audio']['bitrate_mode'] = 'vbr'; // overridden if actually abr
+		if ($info['ogg']['bitrate_max'] == 0xFFFFFFFF) {
+			unset($info['ogg']['bitrate_max']);
+			$info['audio']['bitrate_mode'] = 'abr';
+		}
+		if ($info['ogg']['bitrate_nominal'] == 0xFFFFFFFF) {
+			unset($info['ogg']['bitrate_nominal']);
+		}
+		if ($info['ogg']['bitrate_min'] == 0xFFFFFFFF) {
+			unset($info['ogg']['bitrate_min']);
+			$info['audio']['bitrate_mode'] = 'abr';
+		}
+		return true;
+	}
+
+	public function ParseOggPageHeader() {
+		// http://xiph.org/ogg/vorbis/doc/framing.html
+		$oggheader['page_start_offset'] = $this->ftell(); // where we started from in the file
+
+		$filedata = $this->fread($this->getid3->fread_buffer_size());
+		$filedataoffset = 0;
+		while ((substr($filedata, $filedataoffset++, 4) != 'OggS')) {
+			if (($this->ftell() - $oggheader['page_start_offset']) >= $this->getid3->fread_buffer_size()) {
+				// should be found before here
+				return false;
+			}
+			if ((($filedataoffset + 28) > strlen($filedata)) || (strlen($filedata) < 28)) {
+				if ($this->feof() || (($filedata .= $this->fread($this->getid3->fread_buffer_size())) === false)) {
+					// get some more data, unless eof, in which case fail
+					return false;
+				}
+			}
+		}
+		$filedataoffset += strlen('OggS') - 1; // page, delimited by 'OggS'
+
+		$oggheader['stream_structver']  = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+		$filedataoffset += 1;
+		$oggheader['flags_raw']         = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+		$filedataoffset += 1;
+		$oggheader['flags']['fresh']    = (bool) ($oggheader['flags_raw'] & 0x01); // fresh packet
+		$oggheader['flags']['bos']      = (bool) ($oggheader['flags_raw'] & 0x02); // first page of logical bitstream (bos)
+		$oggheader['flags']['eos']      = (bool) ($oggheader['flags_raw'] & 0x04); // last page of logical bitstream (eos)
+
+		$oggheader['pcm_abs_position']  = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 8));
+		$filedataoffset += 8;
+		$oggheader['stream_serialno']   = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$oggheader['page_seqno']        = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$oggheader['page_checksum']     = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 4));
+		$filedataoffset += 4;
+		$oggheader['page_segments']     = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+		$filedataoffset += 1;
+		$oggheader['page_length'] = 0;
+		for ($i = 0; $i < $oggheader['page_segments']; $i++) {
+			$oggheader['segment_table'][$i] = getid3_lib::LittleEndian2Int(substr($filedata, $filedataoffset, 1));
+			$filedataoffset += 1;
+			$oggheader['page_length'] += $oggheader['segment_table'][$i];
+		}
+		$oggheader['header_end_offset'] = $oggheader['page_start_offset'] + $filedataoffset;
+		$oggheader['page_end_offset']   = $oggheader['header_end_offset'] + $oggheader['page_length'];
+		$this->fseek($oggheader['header_end_offset']);
+
+		return $oggheader;
+	}
+
+    // http://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810005
+	public function ParseVorbisComments() {
+		$info = &$this->getid3->info;
+
+		$OriginalOffset = $this->ftell();
+		$commentdataoffset = 0;
+		$VorbisCommentPage = 1;
+
+		switch ($info['audio']['dataformat']) {
+			case 'vorbis':
+			case 'speex':
+				$CommentStartOffset = $info['ogg']['pageheader'][$VorbisCommentPage]['page_start_offset'];  // Second Ogg page, after header block
+				$this->fseek($CommentStartOffset);
+				$commentdataoffset = 27 + $info['ogg']['pageheader'][$VorbisCommentPage]['page_segments'];
+				$commentdata = $this->fread(self::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1) + $commentdataoffset);
+
+				if ($info['audio']['dataformat'] == 'vorbis') {
+					$commentdataoffset += (strlen('vorbis') + 1);
+				}
+				break;
+
+			case 'flac':
+				$CommentStartOffset = $info['flac']['VORBIS_COMMENT']['raw']['offset'] + 4;
+				$this->fseek($CommentStartOffset);
+				$commentdata = $this->fread($info['flac']['VORBIS_COMMENT']['raw']['block_length']);
+				break;
+
+			default:
+				return false;
+		}
+
+		$VendorSize = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4));
+		$commentdataoffset += 4;
+
+		$info['ogg']['vendor'] = substr($commentdata, $commentdataoffset, $VendorSize);
+		$commentdataoffset += $VendorSize;
+
+		$CommentsCount = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4));
+		$commentdataoffset += 4;
+		$info['avdataoffset'] = $CommentStartOffset + $commentdataoffset;
+
+		$basicfields = array('TITLE', 'ARTIST', 'ALBUM', 'TRACKNUMBER', 'GENRE', 'DATE', 'DESCRIPTION', 'COMMENT');
+		$ThisFileInfo_ogg_comments_raw = &$info['ogg']['comments_raw'];
+		for ($i = 0; $i < $CommentsCount; $i++) {
+
+			$ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] = $CommentStartOffset + $commentdataoffset;
+
+			if ($this->ftell() < ($ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] + 4)) {
+				if ($oggpageinfo = $this->ParseOggPageHeader()) {
+					$info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo;
+
+					$VorbisCommentPage++;
+
+					// First, save what we haven't read yet
+					$AsYetUnusedData = substr($commentdata, $commentdataoffset);
+
+					// Then take that data off the end
+					$commentdata     = substr($commentdata, 0, $commentdataoffset);
+
+					// Add [headerlength] bytes of dummy data for the Ogg Page Header, just to keep absolute offsets correct
+					$commentdata .= str_repeat("\x00", 27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']);
+					$commentdataoffset += (27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']);
+
+					// Finally, stick the unused data back on the end
+					$commentdata .= $AsYetUnusedData;
+
+					//$commentdata .= $this->fread($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']);
+					$commentdata .= $this->fread($this->OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1));
+				}
+
+			}
+			$ThisFileInfo_ogg_comments_raw[$i]['size'] = getid3_lib::LittleEndian2Int(substr($commentdata, $commentdataoffset, 4));
+
+			// replace avdataoffset with position just after the last vorbiscomment
+			$info['avdataoffset'] = $ThisFileInfo_ogg_comments_raw[$i]['dataoffset'] + $ThisFileInfo_ogg_comments_raw[$i]['size'] + 4;
+
+			$commentdataoffset += 4;
+			while ((strlen($commentdata) - $commentdataoffset) < $ThisFileInfo_ogg_comments_raw[$i]['size']) {
+				if (($ThisFileInfo_ogg_comments_raw[$i]['size'] > $info['avdataend']) || ($ThisFileInfo_ogg_comments_raw[$i]['size'] < 0)) {
+					$info['warning'][] = 'Invalid Ogg comment size (comment #'.$i.', claims to be '.number_format($ThisFileInfo_ogg_comments_raw[$i]['size']).' bytes) - aborting reading comments';
+					break 2;
+				}
+
+				$VorbisCommentPage++;
+
+				$oggpageinfo = $this->ParseOggPageHeader();
+				$info['ogg']['pageheader'][$oggpageinfo['page_seqno']] = $oggpageinfo;
+
+				// First, save what we haven't read yet
+				$AsYetUnusedData = substr($commentdata, $commentdataoffset);
+
+				// Then take that data off the end
+				$commentdata     = substr($commentdata, 0, $commentdataoffset);
+
+				// Add [headerlength] bytes of dummy data for the Ogg Page Header, just to keep absolute offsets correct
+				$commentdata .= str_repeat("\x00", 27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']);
+				$commentdataoffset += (27 + $info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_segments']);
+
+				// Finally, stick the unused data back on the end
+				$commentdata .= $AsYetUnusedData;
+
+				//$commentdata .= $this->fread($info['ogg']['pageheader'][$oggpageinfo['page_seqno']]['page_length']);
+				if (!isset($info['ogg']['pageheader'][$VorbisCommentPage])) {
+					$info['warning'][] = 'undefined Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell();
+					break;
+				}
+				$readlength = self::OggPageSegmentLength($info['ogg']['pageheader'][$VorbisCommentPage], 1);
+				if ($readlength <= 0) {
+					$info['warning'][] = 'invalid length Vorbis Comment page "'.$VorbisCommentPage.'" at offset '.$this->ftell();
+					break;
+				}
+				$commentdata .= $this->fread($readlength);
+
+				//$filebaseoffset += $oggpageinfo['header_end_offset'] - $oggpageinfo['page_start_offset'];
+			}
+			$ThisFileInfo_ogg_comments_raw[$i]['offset'] = $commentdataoffset;
+			$commentstring = substr($commentdata, $commentdataoffset, $ThisFileInfo_ogg_comments_raw[$i]['size']);
+			$commentdataoffset += $ThisFileInfo_ogg_comments_raw[$i]['size'];
+
+			if (!$commentstring) {
+
+				// no comment?
+				$info['warning'][] = 'Blank Ogg comment ['.$i.']';
+
+			} elseif (strstr($commentstring, '=')) {
+
+				$commentexploded = explode('=', $commentstring, 2);
+				$ThisFileInfo_ogg_comments_raw[$i]['key']   = strtoupper($commentexploded[0]);
+				$ThisFileInfo_ogg_comments_raw[$i]['value'] = (isset($commentexploded[1]) ? $commentexploded[1] : '');
+
+				if ($ThisFileInfo_ogg_comments_raw[$i]['key'] == 'METADATA_BLOCK_PICTURE') {
+
+					// http://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE
+					// The unencoded format is that of the FLAC picture block. The fields are stored in big endian order as in FLAC, picture data is stored according to the relevant standard.
+					// http://flac.sourceforge.net/format.html#metadata_block_picture
+					$flac = new getid3_flac($this->getid3);
+					$flac->setStringMode(base64_decode($ThisFileInfo_ogg_comments_raw[$i]['value']));
+					$flac->parsePICTURE();
+					$info['ogg']['comments']['picture'][] = $flac->getid3->info['flac']['PICTURE'][0];
+					unset($flac);
+
+				} elseif ($ThisFileInfo_ogg_comments_raw[$i]['key'] == 'COVERART') {
+
+					$data = base64_decode($ThisFileInfo_ogg_comments_raw[$i]['value']);
+					$this->notice('Found deprecated COVERART tag, it should be replaced in honor of METADATA_BLOCK_PICTURE structure');
+					/** @todo use 'coverartmime' where available */
+					$imageinfo = getid3_lib::GetDataImageSize($data);
+					if ($imageinfo === false || !isset($imageinfo['mime'])) {
+						$this->warning('COVERART vorbiscomment tag contains invalid image');
+						continue;
+					}
+
+					$ogg = new self($this->getid3);
+					$ogg->setStringMode($data);
+					$info['ogg']['comments']['picture'][] = array(
+						'image_mime' => $imageinfo['mime'],
+						'data'       => $ogg->saveAttachment('coverart', 0, strlen($data), $imageinfo['mime']),
+					);
+					unset($ogg);
+
+				} else {
+
+					$info['ogg']['comments'][strtolower($ThisFileInfo_ogg_comments_raw[$i]['key'])][] = $ThisFileInfo_ogg_comments_raw[$i]['value'];
+
+				}
+
+			} else {
+
+				$info['warning'][] = '[known problem with CDex >= v1.40, < v1.50b7] Invalid Ogg comment name/value pair ['.$i.']: '.$commentstring;
+
+			}
+			unset($ThisFileInfo_ogg_comments_raw[$i]);
+		}
+		unset($ThisFileInfo_ogg_comments_raw);
+
+
+		// Replay Gain Adjustment
+		// http://privatewww.essex.ac.uk/~djmrob/replaygain/
+		if (isset($info['ogg']['comments']) && is_array($info['ogg']['comments'])) {
+			foreach ($info['ogg']['comments'] as $index => $commentvalue) {
+				switch ($index) {
+					case 'rg_audiophile':
+					case 'replaygain_album_gain':
+						$info['replay_gain']['album']['adjustment'] = (double) $commentvalue[0];
+						unset($info['ogg']['comments'][$index]);
+						break;
+
+					case 'rg_radio':
+					case 'replaygain_track_gain':
+						$info['replay_gain']['track']['adjustment'] = (double) $commentvalue[0];
+						unset($info['ogg']['comments'][$index]);
+						break;
+
+					case 'replaygain_album_peak':
+						$info['replay_gain']['album']['peak'] = (double) $commentvalue[0];
+						unset($info['ogg']['comments'][$index]);
+						break;
+
+					case 'rg_peak':
+					case 'replaygain_track_peak':
+						$info['replay_gain']['track']['peak'] = (double) $commentvalue[0];
+						unset($info['ogg']['comments'][$index]);
+						break;
+
+					case 'replaygain_reference_loudness':
+						$info['replay_gain']['reference_volume'] = (double) $commentvalue[0];
+						unset($info['ogg']['comments'][$index]);
+						break;
+
+					default:
+						// do nothing
+						break;
+				}
+			}
+		}
+
+		$this->fseek($OriginalOffset);
+
+		return true;
+	}
+
+	public static function SpeexBandModeLookup($mode) {
+		static $SpeexBandModeLookup = array();
+		if (empty($SpeexBandModeLookup)) {
+			$SpeexBandModeLookup[0] = 'narrow';
+			$SpeexBandModeLookup[1] = 'wide';
+			$SpeexBandModeLookup[2] = 'ultra-wide';
+		}
+		return (isset($SpeexBandModeLookup[$mode]) ? $SpeexBandModeLookup[$mode] : null);
+	}
+
+
+	public static function OggPageSegmentLength($OggInfoArray, $SegmentNumber=1) {
+		for ($i = 0; $i < $SegmentNumber; $i++) {
+			$segmentlength = 0;
+			foreach ($OggInfoArray['segment_table'] as $key => $value) {
+				$segmentlength += $value;
+				if ($value < 255) {
+					break;
+				}
+			}
+		}
+		return $segmentlength;
+	}
+
+
+	public static function get_quality_from_nominal_bitrate($nominal_bitrate) {
+
+		// decrease precision
+		$nominal_bitrate = $nominal_bitrate / 1000;
+
+		if ($nominal_bitrate < 128) {
+			// q-1 to q4
+			$qval = ($nominal_bitrate - 64) / 16;
+		} elseif ($nominal_bitrate < 256) {
+			// q4 to q8
+			$qval = $nominal_bitrate / 32;
+		} elseif ($nominal_bitrate < 320) {
+			// q8 to q9
+			$qval = ($nominal_bitrate + 256) / 64;
+		} else {
+			// q9 to q10
+			$qval = ($nominal_bitrate + 1300) / 180;
+		}
+		//return $qval; // 5.031324
+		//return intval($qval); // 5
+		return round($qval, 1); // 5 or 4.9
+	}
+
+}
diff --git a/wp-includes/ID3/module.tag.apetag.php b/wp-includes/ID3/module.tag.apetag.php
new file mode 100644
index 000000000..afeede769
--- /dev/null
+++ b/wp-includes/ID3/module.tag.apetag.php
@@ -0,0 +1,370 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.tag.apetag.php                                       //
+// module for analyzing APE tags                               //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+class getid3_apetag extends getid3_handler
+{
+	public $inline_attachments = true; // true: return full data for all attachments; false: return no data for all attachments; integer: return data for attachments <= than this; string: save as file to this directory
+	public $overrideendoffset  = 0;
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		if (!getid3_lib::intValueSupported($info['filesize'])) {
+			$info['warning'][] = 'Unable to check for APEtags because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
+			return false;
+		}
+
+		$id3v1tagsize     = 128;
+		$apetagheadersize = 32;
+		$lyrics3tagsize   = 10;
+
+		if ($this->overrideendoffset == 0) {
+
+			fseek($this->getid3->fp, 0 - $id3v1tagsize - $apetagheadersize - $lyrics3tagsize, SEEK_END);
+			$APEfooterID3v1 = fread($this->getid3->fp, $id3v1tagsize + $apetagheadersize + $lyrics3tagsize);
+
+			//if (preg_match('/APETAGEX.{24}TAG.{125}$/i', $APEfooterID3v1)) {
+			if (substr($APEfooterID3v1, strlen($APEfooterID3v1) - $id3v1tagsize - $apetagheadersize, 8) == 'APETAGEX') {
+
+				// APE tag found before ID3v1
+				$info['ape']['tag_offset_end'] = $info['filesize'] - $id3v1tagsize;
+
+			//} elseif (preg_match('/APETAGEX.{24}$/i', $APEfooterID3v1)) {
+			} elseif (substr($APEfooterID3v1, strlen($APEfooterID3v1) - $apetagheadersize, 8) == 'APETAGEX') {
+
+				// APE tag found, no ID3v1
+				$info['ape']['tag_offset_end'] = $info['filesize'];
+
+			}
+
+		} else {
+
+			fseek($this->getid3->fp, $this->overrideendoffset - $apetagheadersize, SEEK_SET);
+			if (fread($this->getid3->fp, 8) == 'APETAGEX') {
+				$info['ape']['tag_offset_end'] = $this->overrideendoffset;
+			}
+
+		}
+		if (!isset($info['ape']['tag_offset_end'])) {
+
+			// APE tag not found
+			unset($info['ape']);
+			return false;
+
+		}
+
+		// shortcut
+		$thisfile_ape = &$info['ape'];
+
+		fseek($this->getid3->fp, $thisfile_ape['tag_offset_end'] - $apetagheadersize, SEEK_SET);
+		$APEfooterData = fread($this->getid3->fp, 32);
+		if (!($thisfile_ape['footer'] = $this->parseAPEheaderFooter($APEfooterData))) {
+			$info['error'][] = 'Error parsing APE footer at offset '.$thisfile_ape['tag_offset_end'];
+			return false;
+		}
+
+		if (isset($thisfile_ape['footer']['flags']['header']) && $thisfile_ape['footer']['flags']['header']) {
+			fseek($this->getid3->fp, $thisfile_ape['tag_offset_end'] - $thisfile_ape['footer']['raw']['tagsize'] - $apetagheadersize, SEEK_SET);
+			$thisfile_ape['tag_offset_start'] = ftell($this->getid3->fp);
+			$APEtagData = fread($this->getid3->fp, $thisfile_ape['footer']['raw']['tagsize'] + $apetagheadersize);
+		} else {
+			$thisfile_ape['tag_offset_start'] = $thisfile_ape['tag_offset_end'] - $thisfile_ape['footer']['raw']['tagsize'];
+			fseek($this->getid3->fp, $thisfile_ape['tag_offset_start'], SEEK_SET);
+			$APEtagData = fread($this->getid3->fp, $thisfile_ape['footer']['raw']['tagsize']);
+		}
+		$info['avdataend'] = $thisfile_ape['tag_offset_start'];
+
+		if (isset($info['id3v1']['tag_offset_start']) && ($info['id3v1']['tag_offset_start'] < $thisfile_ape['tag_offset_end'])) {
+			$info['warning'][] = 'ID3v1 tag information ignored since it appears to be a false synch in APEtag data';
+			unset($info['id3v1']);
+			foreach ($info['warning'] as $key => $value) {
+				if ($value == 'Some ID3v1 fields do not use NULL characters for padding') {
+					unset($info['warning'][$key]);
+					sort($info['warning']);
+					break;
+				}
+			}
+		}
+
+		$offset = 0;
+		if (isset($thisfile_ape['footer']['flags']['header']) && $thisfile_ape['footer']['flags']['header']) {
+			if ($thisfile_ape['header'] = $this->parseAPEheaderFooter(substr($APEtagData, 0, $apetagheadersize))) {
+				$offset += $apetagheadersize;
+			} else {
+				$info['error'][] = 'Error parsing APE header at offset '.$thisfile_ape['tag_offset_start'];
+				return false;
+			}
+		}
+
+		// shortcut
+		$info['replay_gain'] = array();
+		$thisfile_replaygain = &$info['replay_gain'];
+
+		for ($i = 0; $i < $thisfile_ape['footer']['raw']['tag_items']; $i++) {
+			$value_size = getid3_lib::LittleEndian2Int(substr($APEtagData, $offset, 4));
+			$offset += 4;
+			$item_flags = getid3_lib::LittleEndian2Int(substr($APEtagData, $offset, 4));
+			$offset += 4;
+			if (strstr(substr($APEtagData, $offset), "\x00") === false) {
+				$info['error'][] = 'Cannot find null-byte (0x00) seperator between ItemKey #'.$i.' and value. ItemKey starts '.$offset.' bytes into the APE tag, at file offset '.($thisfile_ape['tag_offset_start'] + $offset);
+				return false;
+			}
+			$ItemKeyLength = strpos($APEtagData, "\x00", $offset) - $offset;
+			$item_key      = strtolower(substr($APEtagData, $offset, $ItemKeyLength));
+
+			// shortcut
+			$thisfile_ape['items'][$item_key] = array();
+			$thisfile_ape_items_current = &$thisfile_ape['items'][$item_key];
+
+			$thisfile_ape_items_current['offset'] = $thisfile_ape['tag_offset_start'] + $offset;
+
+			$offset += ($ItemKeyLength + 1); // skip 0x00 terminator
+			$thisfile_ape_items_current['data'] = substr($APEtagData, $offset, $value_size);
+			$offset += $value_size;
+
+			$thisfile_ape_items_current['flags'] = $this->parseAPEtagFlags($item_flags);
+			switch ($thisfile_ape_items_current['flags']['item_contents_raw']) {
+				case 0: // UTF-8
+				case 3: // Locator (URL, filename, etc), UTF-8 encoded
+					$thisfile_ape_items_current['data'] = explode("\x00", trim($thisfile_ape_items_current['data']));
+					break;
+
+				default: // binary data
+					break;
+			}
+
+			switch (strtolower($item_key)) {
+				case 'replaygain_track_gain':
+					$thisfile_replaygain['track']['adjustment'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero!
+					$thisfile_replaygain['track']['originator'] = 'unspecified';
+					break;
+
+				case 'replaygain_track_peak':
+					$thisfile_replaygain['track']['peak']       = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero!
+					$thisfile_replaygain['track']['originator'] = 'unspecified';
+					if ($thisfile_replaygain['track']['peak'] <= 0) {
+						$info['warning'][] = 'ReplayGain Track peak from APEtag appears invalid: '.$thisfile_replaygain['track']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")';
+					}
+					break;
+
+				case 'replaygain_album_gain':
+					$thisfile_replaygain['album']['adjustment'] = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero!
+					$thisfile_replaygain['album']['originator'] = 'unspecified';
+					break;
+
+				case 'replaygain_album_peak':
+					$thisfile_replaygain['album']['peak']       = (float) str_replace(',', '.', $thisfile_ape_items_current['data'][0]); // float casting will see "0,95" as zero!
+					$thisfile_replaygain['album']['originator'] = 'unspecified';
+					if ($thisfile_replaygain['album']['peak'] <= 0) {
+						$info['warning'][] = 'ReplayGain Album peak from APEtag appears invalid: '.$thisfile_replaygain['album']['peak'].' (original value = "'.$thisfile_ape_items_current['data'][0].'")';
+					}
+					break;
+
+				case 'mp3gain_undo':
+					list($mp3gain_undo_left, $mp3gain_undo_right, $mp3gain_undo_wrap) = explode(',', $thisfile_ape_items_current['data'][0]);
+					$thisfile_replaygain['mp3gain']['undo_left']  = intval($mp3gain_undo_left);
+					$thisfile_replaygain['mp3gain']['undo_right'] = intval($mp3gain_undo_right);
+					$thisfile_replaygain['mp3gain']['undo_wrap']  = (($mp3gain_undo_wrap == 'Y') ? true : false);
+					break;
+
+				case 'mp3gain_minmax':
+					list($mp3gain_globalgain_min, $mp3gain_globalgain_max) = explode(',', $thisfile_ape_items_current['data'][0]);
+					$thisfile_replaygain['mp3gain']['globalgain_track_min'] = intval($mp3gain_globalgain_min);
+					$thisfile_replaygain['mp3gain']['globalgain_track_max'] = intval($mp3gain_globalgain_max);
+					break;
+
+				case 'mp3gain_album_minmax':
+					list($mp3gain_globalgain_album_min, $mp3gain_globalgain_album_max) = explode(',', $thisfile_ape_items_current['data'][0]);
+					$thisfile_replaygain['mp3gain']['globalgain_album_min'] = intval($mp3gain_globalgain_album_min);
+					$thisfile_replaygain['mp3gain']['globalgain_album_max'] = intval($mp3gain_globalgain_album_max);
+					break;
+
+				case 'tracknumber':
+					if (is_array($thisfile_ape_items_current['data'])) {
+						foreach ($thisfile_ape_items_current['data'] as $comment) {
+							$thisfile_ape['comments']['track'][] = $comment;
+						}
+					}
+					break;
+
+				case 'cover art (artist)':
+				case 'cover art (back)':
+				case 'cover art (band logo)':
+				case 'cover art (band)':
+				case 'cover art (colored fish)':
+				case 'cover art (composer)':
+				case 'cover art (conductor)':
+				case 'cover art (front)':
+				case 'cover art (icon)':
+				case 'cover art (illustration)':
+				case 'cover art (lead)':
+				case 'cover art (leaflet)':
+				case 'cover art (lyricist)':
+				case 'cover art (media)':
+				case 'cover art (movie scene)':
+				case 'cover art (other icon)':
+				case 'cover art (other)':
+				case 'cover art (performance)':
+				case 'cover art (publisher logo)':
+				case 'cover art (recording)':
+				case 'cover art (studio)':
+					// list of possible cover arts from http://taglib-sharp.sourcearchive.com/documentation/2.0.3.0-2/Ape_2Tag_8cs-source.html
+					list($thisfile_ape_items_current['filename'], $thisfile_ape_items_current['data']) = explode("\x00", $thisfile_ape_items_current['data'], 2);
+					$thisfile_ape_items_current['data_offset'] = $thisfile_ape_items_current['offset'] + strlen($thisfile_ape_items_current['filename']."\x00");
+					$thisfile_ape_items_current['data_length'] = strlen($thisfile_ape_items_current['data']);
+
+					$thisfile_ape_items_current['image_mime'] = '';
+					$imageinfo = array();
+					$imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_ape_items_current['data'], $imageinfo);
+					$thisfile_ape_items_current['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]);
+
+					do {
+						if ($this->inline_attachments === false) {
+							// skip entirely
+							unset($thisfile_ape_items_current['data']);
+							break;
+						}
+						if ($this->inline_attachments === true) {
+							// great
+						} elseif (is_int($this->inline_attachments)) {
+							if ($this->inline_attachments < $thisfile_ape_items_current['data_length']) {
+								// too big, skip
+								$info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' is too large to process inline ('.number_format($thisfile_ape_items_current['data_length']).' bytes)';
+								unset($thisfile_ape_items_current['data']);
+								break;
+							}
+						} elseif (is_string($this->inline_attachments)) {
+							$this->inline_attachments = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->inline_attachments), DIRECTORY_SEPARATOR);
+							if (!is_dir($this->inline_attachments) || !is_writable($this->inline_attachments)) {
+								// cannot write, skip
+								$info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$this->inline_attachments.'" (not writable)';
+								unset($thisfile_ape_items_current['data']);
+								break;
+							}
+						}
+						// if we get this far, must be OK
+						if (is_string($this->inline_attachments)) {
+							$destination_filename = $this->inline_attachments.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$thisfile_ape_items_current['data_offset'];
+							if (!file_exists($destination_filename) || is_writable($destination_filename)) {
+								file_put_contents($destination_filename, $thisfile_ape_items_current['data']);
+							} else {
+								$info['warning'][] = 'attachment at '.$thisfile_ape_items_current['offset'].' cannot be saved to "'.$destination_filename.'" (not writable)';
+							}
+							$thisfile_ape_items_current['data_filename'] = $destination_filename;
+							unset($thisfile_ape_items_current['data']);
+						} else {
+							if (!isset($info['ape']['comments']['picture'])) {
+								$info['ape']['comments']['picture'] = array();
+							}
+							$info['ape']['comments']['picture'][] = array('data'=>$thisfile_ape_items_current['data'], 'image_mime'=>$thisfile_ape_items_current['image_mime']);
+						}
+					} while (false);
+					break;
+
+				default:
+					if (is_array($thisfile_ape_items_current['data'])) {
+						foreach ($thisfile_ape_items_current['data'] as $comment) {
+							$thisfile_ape['comments'][strtolower($item_key)][] = $comment;
+						}
+					}
+					break;
+			}
+
+		}
+		if (empty($thisfile_replaygain)) {
+			unset($info['replay_gain']);
+		}
+		return true;
+	}
+
+	public function parseAPEheaderFooter($APEheaderFooterData) {
+		// http://www.uni-jena.de/~pfk/mpp/sv8/apeheader.html
+
+		// shortcut
+		$headerfooterinfo['raw'] = array();
+		$headerfooterinfo_raw = &$headerfooterinfo['raw'];
+
+		$headerfooterinfo_raw['footer_tag']   =                  substr($APEheaderFooterData,  0, 8);
+		if ($headerfooterinfo_raw['footer_tag'] != 'APETAGEX') {
+			return false;
+		}
+		$headerfooterinfo_raw['version']      = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData,  8, 4));
+		$headerfooterinfo_raw['tagsize']      = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 12, 4));
+		$headerfooterinfo_raw['tag_items']    = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 16, 4));
+		$headerfooterinfo_raw['global_flags'] = getid3_lib::LittleEndian2Int(substr($APEheaderFooterData, 20, 4));
+		$headerfooterinfo_raw['reserved']     =                              substr($APEheaderFooterData, 24, 8);
+
+		$headerfooterinfo['tag_version']         = $headerfooterinfo_raw['version'] / 1000;
+		if ($headerfooterinfo['tag_version'] >= 2) {
+			$headerfooterinfo['flags'] = $this->parseAPEtagFlags($headerfooterinfo_raw['global_flags']);
+		}
+		return $headerfooterinfo;
+	}
+
+	public function parseAPEtagFlags($rawflagint) {
+		// "Note: APE Tags 1.0 do not use any of the APE Tag flags.
+		// All are set to zero on creation and ignored on reading."
+		// http://www.uni-jena.de/~pfk/mpp/sv8/apetagflags.html
+		$flags['header']            = (bool) ($rawflagint & 0x80000000);
+		$flags['footer']            = (bool) ($rawflagint & 0x40000000);
+		$flags['this_is_header']    = (bool) ($rawflagint & 0x20000000);
+		$flags['item_contents_raw'] =        ($rawflagint & 0x00000006) >> 1;
+		$flags['read_only']         = (bool) ($rawflagint & 0x00000001);
+
+		$flags['item_contents']     = $this->APEcontentTypeFlagLookup($flags['item_contents_raw']);
+
+		return $flags;
+	}
+
+	public function APEcontentTypeFlagLookup($contenttypeid) {
+		static $APEcontentTypeFlagLookup = array(
+			0 => 'utf-8',
+			1 => 'binary',
+			2 => 'external',
+			3 => 'reserved'
+		);
+		return (isset($APEcontentTypeFlagLookup[$contenttypeid]) ? $APEcontentTypeFlagLookup[$contenttypeid] : 'invalid');
+	}
+
+	public function APEtagItemIsUTF8Lookup($itemkey) {
+		static $APEtagItemIsUTF8Lookup = array(
+			'title',
+			'subtitle',
+			'artist',
+			'album',
+			'debut album',
+			'publisher',
+			'conductor',
+			'track',
+			'composer',
+			'comment',
+			'copyright',
+			'publicationright',
+			'file',
+			'year',
+			'record date',
+			'record location',
+			'genre',
+			'media',
+			'related',
+			'isrc',
+			'abstract',
+			'language',
+			'bibliography'
+		);
+		return in_array(strtolower($itemkey), $APEtagItemIsUTF8Lookup);
+	}
+
+}
diff --git a/wp-includes/ID3/module.tag.id3v1.php b/wp-includes/ID3/module.tag.id3v1.php
new file mode 100644
index 000000000..fd9069e04
--- /dev/null
+++ b/wp-includes/ID3/module.tag.id3v1.php
@@ -0,0 +1,359 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.tag.id3v1.php                                        //
+// module for analyzing ID3v1 tags                             //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+class getid3_id3v1 extends getid3_handler
+{
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		if (!getid3_lib::intValueSupported($info['filesize'])) {
+			$info['warning'][] = 'Unable to check for ID3v1 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
+			return false;
+		}
+
+		fseek($this->getid3->fp, -256, SEEK_END);
+		$preid3v1 = fread($this->getid3->fp, 128);
+		$id3v1tag = fread($this->getid3->fp, 128);
+
+		if (substr($id3v1tag, 0, 3) == 'TAG') {
+
+			$info['avdataend'] = $info['filesize'] - 128;
+
+			$ParsedID3v1['title']   = $this->cutfield(substr($id3v1tag,   3, 30));
+			$ParsedID3v1['artist']  = $this->cutfield(substr($id3v1tag,  33, 30));
+			$ParsedID3v1['album']   = $this->cutfield(substr($id3v1tag,  63, 30));
+			$ParsedID3v1['year']    = $this->cutfield(substr($id3v1tag,  93,  4));
+			$ParsedID3v1['comment'] =                 substr($id3v1tag,  97, 30);  // can't remove nulls yet, track detection depends on them
+			$ParsedID3v1['genreid'] =             ord(substr($id3v1tag, 127,  1));
+
+			// If second-last byte of comment field is null and last byte of comment field is non-null
+			// then this is ID3v1.1 and the comment field is 28 bytes long and the 30th byte is the track number
+			if (($id3v1tag{125} === "\x00") && ($id3v1tag{126} !== "\x00")) {
+				$ParsedID3v1['track']   = ord(substr($ParsedID3v1['comment'], 29,  1));
+				$ParsedID3v1['comment'] =     substr($ParsedID3v1['comment'],  0, 28);
+			}
+			$ParsedID3v1['comment'] = $this->cutfield($ParsedID3v1['comment']);
+
+			$ParsedID3v1['genre'] = $this->LookupGenreName($ParsedID3v1['genreid']);
+			if (!empty($ParsedID3v1['genre'])) {
+				unset($ParsedID3v1['genreid']);
+			}
+			if (isset($ParsedID3v1['genre']) && (empty($ParsedID3v1['genre']) || ($ParsedID3v1['genre'] == 'Unknown'))) {
+				unset($ParsedID3v1['genre']);
+			}
+
+			foreach ($ParsedID3v1 as $key => $value) {
+				$ParsedID3v1['comments'][$key][0] = $value;
+			}
+
+			// ID3v1 data is supposed to be padded with NULL characters, but some taggers pad with spaces
+			$GoodFormatID3v1tag = $this->GenerateID3v1Tag(
+											$ParsedID3v1['title'],
+											$ParsedID3v1['artist'],
+											$ParsedID3v1['album'],
+											$ParsedID3v1['year'],
+											(isset($ParsedID3v1['genre']) ? $this->LookupGenreID($ParsedID3v1['genre']) : false),
+											$ParsedID3v1['comment'],
+											(!empty($ParsedID3v1['track']) ? $ParsedID3v1['track'] : ''));
+			$ParsedID3v1['padding_valid'] = true;
+			if ($id3v1tag !== $GoodFormatID3v1tag) {
+				$ParsedID3v1['padding_valid'] = false;
+				$info['warning'][] = 'Some ID3v1 fields do not use NULL characters for padding';
+			}
+
+			$ParsedID3v1['tag_offset_end']   = $info['filesize'];
+			$ParsedID3v1['tag_offset_start'] = $ParsedID3v1['tag_offset_end'] - 128;
+
+			$info['id3v1'] = $ParsedID3v1;
+		}
+
+		if (substr($preid3v1, 0, 3) == 'TAG') {
+			// The way iTunes handles tags is, well, brain-damaged.
+			// It completely ignores v1 if ID3v2 is present.
+			// This goes as far as adding a new v1 tag *even if there already is one*
+
+			// A suspected double-ID3v1 tag has been detected, but it could be that
+			// the "TAG" identifier is a legitimate part of an APE or Lyrics3 tag
+			if (substr($preid3v1, 96, 8) == 'APETAGEX') {
+				// an APE tag footer was found before the last ID3v1, assume false "TAG" synch
+			} elseif (substr($preid3v1, 119, 6) == 'LYRICS') {
+				// a Lyrics3 tag footer was found before the last ID3v1, assume false "TAG" synch
+			} else {
+				// APE and Lyrics3 footers not found - assume double ID3v1
+				$info['warning'][] = 'Duplicate ID3v1 tag detected - this has been known to happen with iTunes';
+				$info['avdataend'] -= 128;
+			}
+		}
+
+		return true;
+	}
+
+	public static function cutfield($str) {
+		return trim(substr($str, 0, strcspn($str, "\x00")));
+	}
+
+	public static function ArrayOfGenres($allowSCMPXextended=false) {
+		static $GenreLookup = array(
+			0    => 'Blues',
+			1    => 'Classic Rock',
+			2    => 'Country',
+			3    => 'Dance',
+			4    => 'Disco',
+			5    => 'Funk',
+			6    => 'Grunge',
+			7    => 'Hip-Hop',
+			8    => 'Jazz',
+			9    => 'Metal',
+			10   => 'New Age',
+			11   => 'Oldies',
+			12   => 'Other',
+			13   => 'Pop',
+			14   => 'R&B',
+			15   => 'Rap',
+			16   => 'Reggae',
+			17   => 'Rock',
+			18   => 'Techno',
+			19   => 'Industrial',
+			20   => 'Alternative',
+			21   => 'Ska',
+			22   => 'Death Metal',
+			23   => 'Pranks',
+			24   => 'Soundtrack',
+			25   => 'Euro-Techno',
+			26   => 'Ambient',
+			27   => 'Trip-Hop',
+			28   => 'Vocal',
+			29   => 'Jazz+Funk',
+			30   => 'Fusion',
+			31   => 'Trance',
+			32   => 'Classical',
+			33   => 'Instrumental',
+			34   => 'Acid',
+			35   => 'House',
+			36   => 'Game',
+			37   => 'Sound Clip',
+			38   => 'Gospel',
+			39   => 'Noise',
+			40   => 'Alt. Rock',
+			41   => 'Bass',
+			42   => 'Soul',
+			43   => 'Punk',
+			44   => 'Space',
+			45   => 'Meditative',
+			46   => 'Instrumental Pop',
+			47   => 'Instrumental Rock',
+			48   => 'Ethnic',
+			49   => 'Gothic',
+			50   => 'Darkwave',
+			51   => 'Techno-Industrial',
+			52   => 'Electronic',
+			53   => 'Pop-Folk',
+			54   => 'Eurodance',
+			55   => 'Dream',
+			56   => 'Southern Rock',
+			57   => 'Comedy',
+			58   => 'Cult',
+			59   => 'Gangsta Rap',
+			60   => 'Top 40',
+			61   => 'Christian Rap',
+			62   => 'Pop/Funk',
+			63   => 'Jungle',
+			64   => 'Native American',
+			65   => 'Cabaret',
+			66   => 'New Wave',
+			67   => 'Psychedelic',
+			68   => 'Rave',
+			69   => 'Showtunes',
+			70   => 'Trailer',
+			71   => 'Lo-Fi',
+			72   => 'Tribal',
+			73   => 'Acid Punk',
+			74   => 'Acid Jazz',
+			75   => 'Polka',
+			76   => 'Retro',
+			77   => 'Musical',
+			78   => 'Rock & Roll',
+			79   => 'Hard Rock',
+			80   => 'Folk',
+			81   => 'Folk/Rock',
+			82   => 'National Folk',
+			83   => 'Swing',
+			84   => 'Fast-Fusion',
+			85   => 'Bebob',
+			86   => 'Latin',
+			87   => 'Revival',
+			88   => 'Celtic',
+			89   => 'Bluegrass',
+			90   => 'Avantgarde',
+			91   => 'Gothic Rock',
+			92   => 'Progressive Rock',
+			93   => 'Psychedelic Rock',
+			94   => 'Symphonic Rock',
+			95   => 'Slow Rock',
+			96   => 'Big Band',
+			97   => 'Chorus',
+			98   => 'Easy Listening',
+			99   => 'Acoustic',
+			100  => 'Humour',
+			101  => 'Speech',
+			102  => 'Chanson',
+			103  => 'Opera',
+			104  => 'Chamber Music',
+			105  => 'Sonata',
+			106  => 'Symphony',
+			107  => 'Booty Bass',
+			108  => 'Primus',
+			109  => 'Porn Groove',
+			110  => 'Satire',
+			111  => 'Slow Jam',
+			112  => 'Club',
+			113  => 'Tango',
+			114  => 'Samba',
+			115  => 'Folklore',
+			116  => 'Ballad',
+			117  => 'Power Ballad',
+			118  => 'Rhythmic Soul',
+			119  => 'Freestyle',
+			120  => 'Duet',
+			121  => 'Punk Rock',
+			122  => 'Drum Solo',
+			123  => 'A Cappella',
+			124  => 'Euro-House',
+			125  => 'Dance Hall',
+			126  => 'Goa',
+			127  => 'Drum & Bass',
+			128  => 'Club-House',
+			129  => 'Hardcore',
+			130  => 'Terror',
+			131  => 'Indie',
+			132  => 'BritPop',
+			133  => 'Negerpunk',
+			134  => 'Polsk Punk',
+			135  => 'Beat',
+			136  => 'Christian Gangsta Rap',
+			137  => 'Heavy Metal',
+			138  => 'Black Metal',
+			139  => 'Crossover',
+			140  => 'Contemporary Christian',
+			141  => 'Christian Rock',
+			142  => 'Merengue',
+			143  => 'Salsa',
+			144  => 'Thrash Metal',
+			145  => 'Anime',
+			146  => 'JPop',
+			147  => 'Synthpop',
+
+			255  => 'Unknown',
+
+			'CR' => 'Cover',
+			'RX' => 'Remix'
+		);
+
+		static $GenreLookupSCMPX = array();
+		if ($allowSCMPXextended && empty($GenreLookupSCMPX)) {
+			$GenreLookupSCMPX = $GenreLookup;
+			// http://www.geocities.co.jp/SiliconValley-Oakland/3664/alittle.html#GenreExtended
+			// Extended ID3v1 genres invented by SCMPX
+			// Note that 255 "Japanese Anime" conflicts with standard "Unknown"
+			$GenreLookupSCMPX[240] = 'Sacred';
+			$GenreLookupSCMPX[241] = 'Northern Europe';
+			$GenreLookupSCMPX[242] = 'Irish & Scottish';
+			$GenreLookupSCMPX[243] = 'Scotland';
+			$GenreLookupSCMPX[244] = 'Ethnic Europe';
+			$GenreLookupSCMPX[245] = 'Enka';
+			$GenreLookupSCMPX[246] = 'Children\'s Song';
+			$GenreLookupSCMPX[247] = 'Japanese Sky';
+			$GenreLookupSCMPX[248] = 'Japanese Heavy Rock';
+			$GenreLookupSCMPX[249] = 'Japanese Doom Rock';
+			$GenreLookupSCMPX[250] = 'Japanese J-POP';
+			$GenreLookupSCMPX[251] = 'Japanese Seiyu';
+			$GenreLookupSCMPX[252] = 'Japanese Ambient Techno';
+			$GenreLookupSCMPX[253] = 'Japanese Moemoe';
+			$GenreLookupSCMPX[254] = 'Japanese Tokusatsu';
+			//$GenreLookupSCMPX[255] = 'Japanese Anime';
+		}
+
+		return ($allowSCMPXextended ? $GenreLookupSCMPX : $GenreLookup);
+	}
+
+	public static function LookupGenreName($genreid, $allowSCMPXextended=true) {
+		switch ($genreid) {
+			case 'RX':
+			case 'CR':
+				break;
+			default:
+				if (!is_numeric($genreid)) {
+					return false;
+				}
+				$genreid = intval($genreid); // to handle 3 or '3' or '03'
+				break;
+		}
+		$GenreLookup = self::ArrayOfGenres($allowSCMPXextended);
+		return (isset($GenreLookup[$genreid]) ? $GenreLookup[$genreid] : false);
+	}
+
+	public static function LookupGenreID($genre, $allowSCMPXextended=false) {
+		$GenreLookup = self::ArrayOfGenres($allowSCMPXextended);
+		$LowerCaseNoSpaceSearchTerm = strtolower(str_replace(' ', '', $genre));
+		foreach ($GenreLookup as $key => $value) {
+			if (strtolower(str_replace(' ', '', $value)) == $LowerCaseNoSpaceSearchTerm) {
+				return $key;
+			}
+		}
+		return false;
+	}
+
+	public static function StandardiseID3v1GenreName($OriginalGenre) {
+		if (($GenreID = self::LookupGenreID($OriginalGenre)) !== false) {
+			return self::LookupGenreName($GenreID);
+		}
+		return $OriginalGenre;
+	}
+
+	public static function GenerateID3v1Tag($title, $artist, $album, $year, $genreid, $comment, $track='') {
+		$ID3v1Tag  = 'TAG';
+		$ID3v1Tag .= str_pad(trim(substr($title,  0, 30)), 30, "\x00", STR_PAD_RIGHT);
+		$ID3v1Tag .= str_pad(trim(substr($artist, 0, 30)), 30, "\x00", STR_PAD_RIGHT);
+		$ID3v1Tag .= str_pad(trim(substr($album,  0, 30)), 30, "\x00", STR_PAD_RIGHT);
+		$ID3v1Tag .= str_pad(trim(substr($year,   0,  4)),  4, "\x00", STR_PAD_LEFT);
+		if (!empty($track) && ($track > 0) && ($track <= 255)) {
+			$ID3v1Tag .= str_pad(trim(substr($comment, 0, 28)), 28, "\x00", STR_PAD_RIGHT);
+			$ID3v1Tag .= "\x00";
+			if (gettype($track) == 'string') {
+				$track = (int) $track;
+			}
+			$ID3v1Tag .= chr($track);
+		} else {
+			$ID3v1Tag .= str_pad(trim(substr($comment, 0, 30)), 30, "\x00", STR_PAD_RIGHT);
+		}
+		if (($genreid < 0) || ($genreid > 147)) {
+			$genreid = 255; // 'unknown' genre
+		}
+		switch (gettype($genreid)) {
+			case 'string':
+			case 'integer':
+				$ID3v1Tag .= chr(intval($genreid));
+				break;
+			default:
+				$ID3v1Tag .= chr(255); // 'unknown' genre
+				break;
+		}
+
+		return $ID3v1Tag;
+	}
+
+}
diff --git a/wp-includes/ID3/module.tag.id3v2.php b/wp-includes/ID3/module.tag.id3v2.php
new file mode 100644
index 000000000..b08f9f9a3
--- /dev/null
+++ b/wp-includes/ID3/module.tag.id3v2.php
@@ -0,0 +1,3414 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+///                                                            //
+// module.tag.id3v2.php                                        //
+// module for analyzing ID3v2 tags                             //
+// dependencies: module.tag.id3v1.php                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true);
+
+class getid3_id3v2 extends getid3_handler
+{
+	public $StartingOffset = 0;
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		//    Overall tag structure:
+		//        +-----------------------------+
+		//        |      Header (10 bytes)      |
+		//        +-----------------------------+
+		//        |       Extended Header       |
+		//        | (variable length, OPTIONAL) |
+		//        +-----------------------------+
+		//        |   Frames (variable length)  |
+		//        +-----------------------------+
+		//        |           Padding           |
+		//        | (variable length, OPTIONAL) |
+		//        +-----------------------------+
+		//        | Footer (10 bytes, OPTIONAL) |
+		//        +-----------------------------+
+
+		//    Header
+		//        ID3v2/file identifier      "ID3"
+		//        ID3v2 version              $04 00
+		//        ID3v2 flags                (%ab000000 in v2.2, %abc00000 in v2.3, %abcd0000 in v2.4.x)
+		//        ID3v2 size             4 * %0xxxxxxx
+
+
+		// shortcuts
+		$info['id3v2']['header'] = true;
+		$thisfile_id3v2                  = &$info['id3v2'];
+		$thisfile_id3v2['flags']         =  array();
+		$thisfile_id3v2_flags            = &$thisfile_id3v2['flags'];
+
+
+		fseek($this->getid3->fp, $this->StartingOffset, SEEK_SET);
+		$header = fread($this->getid3->fp, 10);
+		if (substr($header, 0, 3) == 'ID3'  &&  strlen($header) == 10) {
+
+			$thisfile_id3v2['majorversion'] = ord($header{3});
+			$thisfile_id3v2['minorversion'] = ord($header{4});
+
+			// shortcut
+			$id3v2_majorversion = &$thisfile_id3v2['majorversion'];
+
+		} else {
+
+			unset($info['id3v2']);
+			return false;
+
+		}
+
+		if ($id3v2_majorversion > 4) { // this script probably won't correctly parse ID3v2.5.x and above (if it ever exists)
+
+			$info['error'][] = 'this script only parses up to ID3v2.4.x - this tag is ID3v2.'.$id3v2_majorversion.'.'.$thisfile_id3v2['minorversion'];
+			return false;
+
+		}
+
+		$id3_flags = ord($header{5});
+		switch ($id3v2_majorversion) {
+			case 2:
+				// %ab000000 in v2.2
+				$thisfile_id3v2_flags['unsynch']     = (bool) ($id3_flags & 0x80); // a - Unsynchronisation
+				$thisfile_id3v2_flags['compression'] = (bool) ($id3_flags & 0x40); // b - Compression
+				break;
+
+			case 3:
+				// %abc00000 in v2.3
+				$thisfile_id3v2_flags['unsynch']     = (bool) ($id3_flags & 0x80); // a - Unsynchronisation
+				$thisfile_id3v2_flags['exthead']     = (bool) ($id3_flags & 0x40); // b - Extended header
+				$thisfile_id3v2_flags['experim']     = (bool) ($id3_flags & 0x20); // c - Experimental indicator
+				break;
+
+			case 4:
+				// %abcd0000 in v2.4
+				$thisfile_id3v2_flags['unsynch']     = (bool) ($id3_flags & 0x80); // a - Unsynchronisation
+				$thisfile_id3v2_flags['exthead']     = (bool) ($id3_flags & 0x40); // b - Extended header
+				$thisfile_id3v2_flags['experim']     = (bool) ($id3_flags & 0x20); // c - Experimental indicator
+				$thisfile_id3v2_flags['isfooter']    = (bool) ($id3_flags & 0x10); // d - Footer present
+				break;
+		}
+
+		$thisfile_id3v2['headerlength'] = getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length
+
+		$thisfile_id3v2['tag_offset_start'] = $this->StartingOffset;
+		$thisfile_id3v2['tag_offset_end']   = $thisfile_id3v2['tag_offset_start'] + $thisfile_id3v2['headerlength'];
+
+
+
+		// create 'encoding' key - used by getid3::HandleAllTags()
+		// in ID3v2 every field can have it's own encoding type
+		// so force everything to UTF-8 so it can be handled consistantly
+		$thisfile_id3v2['encoding'] = 'UTF-8';
+
+
+	//    Frames
+
+	//        All ID3v2 frames consists of one frame header followed by one or more
+	//        fields containing the actual information. The header is always 10
+	//        bytes and laid out as follows:
+	//
+	//        Frame ID      $xx xx xx xx  (four characters)
+	//        Size      4 * %0xxxxxxx
+	//        Flags         $xx xx
+
+		$sizeofframes = $thisfile_id3v2['headerlength'] - 10; // not including 10-byte initial header
+		if (!empty($thisfile_id3v2['exthead']['length'])) {
+			$sizeofframes -= ($thisfile_id3v2['exthead']['length'] + 4);
+		}
+		if (!empty($thisfile_id3v2_flags['isfooter'])) {
+			$sizeofframes -= 10; // footer takes last 10 bytes of ID3v2 header, after frame data, before audio
+		}
+		if ($sizeofframes > 0) {
+
+			$framedata = fread($this->getid3->fp, $sizeofframes); // read all frames from file into $framedata variable
+
+			//    if entire frame data is unsynched, de-unsynch it now (ID3v2.3.x)
+			if (!empty($thisfile_id3v2_flags['unsynch']) && ($id3v2_majorversion <= 3)) {
+				$framedata = $this->DeUnsynchronise($framedata);
+			}
+			//        [in ID3v2.4.0] Unsynchronisation [S:6.1] is done on frame level, instead
+			//        of on tag level, making it easier to skip frames, increasing the streamability
+			//        of the tag. The unsynchronisation flag in the header [S:3.1] indicates that
+			//        there exists an unsynchronised frame, while the new unsynchronisation flag in
+			//        the frame header [S:4.1.2] indicates unsynchronisation.
+
+
+			//$framedataoffset = 10 + ($thisfile_id3v2['exthead']['length'] ? $thisfile_id3v2['exthead']['length'] + 4 : 0); // how many bytes into the stream - start from after the 10-byte header (and extended header length+4, if present)
+			$framedataoffset = 10; // how many bytes into the stream - start from after the 10-byte header
+
+
+			//    Extended Header
+			if (!empty($thisfile_id3v2_flags['exthead'])) {
+				$extended_header_offset = 0;
+
+				if ($id3v2_majorversion == 3) {
+
+					// v2.3 definition:
+					//Extended header size  $xx xx xx xx   // 32-bit integer
+					//Extended Flags        $xx xx
+					//     %x0000000 %00000000 // v2.3
+					//     x - CRC data present
+					//Size of padding       $xx xx xx xx
+
+					$thisfile_id3v2['exthead']['length'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4), 0);
+					$extended_header_offset += 4;
+
+					$thisfile_id3v2['exthead']['flag_bytes'] = 2;
+					$thisfile_id3v2['exthead']['flag_raw'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $thisfile_id3v2['exthead']['flag_bytes']));
+					$extended_header_offset += $thisfile_id3v2['exthead']['flag_bytes'];
+
+					$thisfile_id3v2['exthead']['flags']['crc'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x8000);
+
+					$thisfile_id3v2['exthead']['padding_size'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4));
+					$extended_header_offset += 4;
+
+					if ($thisfile_id3v2['exthead']['flags']['crc']) {
+						$thisfile_id3v2['exthead']['flag_data']['crc'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4));
+						$extended_header_offset += 4;
+					}
+					$extended_header_offset += $thisfile_id3v2['exthead']['padding_size'];
+
+				} elseif ($id3v2_majorversion == 4) {
+
+					// v2.4 definition:
+					//Extended header size   4 * %0xxxxxxx // 28-bit synchsafe integer
+					//Number of flag bytes       $01
+					//Extended Flags             $xx
+					//     %0bcd0000 // v2.4
+					//     b - Tag is an update
+					//         Flag data length       $00
+					//     c - CRC data present
+					//         Flag data length       $05
+					//         Total frame CRC    5 * %0xxxxxxx
+					//     d - Tag restrictions
+					//         Flag data length       $01
+
+					$thisfile_id3v2['exthead']['length'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 4), true);
+					$extended_header_offset += 4;
+
+					$thisfile_id3v2['exthead']['flag_bytes'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should always be 1
+					$extended_header_offset += 1;
+
+					$thisfile_id3v2['exthead']['flag_raw'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $thisfile_id3v2['exthead']['flag_bytes']));
+					$extended_header_offset += $thisfile_id3v2['exthead']['flag_bytes'];
+
+					$thisfile_id3v2['exthead']['flags']['update']       = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x40);
+					$thisfile_id3v2['exthead']['flags']['crc']          = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x20);
+					$thisfile_id3v2['exthead']['flags']['restrictions'] = (bool) ($thisfile_id3v2['exthead']['flag_raw'] & 0x10);
+
+					if ($thisfile_id3v2['exthead']['flags']['update']) {
+						$ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 0
+						$extended_header_offset += 1;
+					}
+
+					if ($thisfile_id3v2['exthead']['flags']['crc']) {
+						$ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 5
+						$extended_header_offset += 1;
+						$thisfile_id3v2['exthead']['flag_data']['crc'] = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, $ext_header_chunk_length), true, false);
+						$extended_header_offset += $ext_header_chunk_length;
+					}
+
+					if ($thisfile_id3v2['exthead']['flags']['restrictions']) {
+						$ext_header_chunk_length = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1)); // should be 1
+						$extended_header_offset += 1;
+
+						// %ppqrrstt
+						$restrictions_raw = getid3_lib::BigEndian2Int(substr($framedata, $extended_header_offset, 1));
+						$extended_header_offset += 1;
+						$thisfile_id3v2['exthead']['flags']['restrictions']['tagsize']  = ($restrictions_raw & 0xC0) >> 6; // p - Tag size restrictions
+						$thisfile_id3v2['exthead']['flags']['restrictions']['textenc']  = ($restrictions_raw & 0x20) >> 5; // q - Text encoding restrictions
+						$thisfile_id3v2['exthead']['flags']['restrictions']['textsize'] = ($restrictions_raw & 0x18) >> 3; // r - Text fields size restrictions
+						$thisfile_id3v2['exthead']['flags']['restrictions']['imgenc']   = ($restrictions_raw & 0x04) >> 2; // s - Image encoding restrictions
+						$thisfile_id3v2['exthead']['flags']['restrictions']['imgsize']  = ($restrictions_raw & 0x03) >> 0; // t - Image size restrictions
+
+						$thisfile_id3v2['exthead']['flags']['restrictions_text']['tagsize']  = $this->LookupExtendedHeaderRestrictionsTagSizeLimits($thisfile_id3v2['exthead']['flags']['restrictions']['tagsize']);
+						$thisfile_id3v2['exthead']['flags']['restrictions_text']['textenc']  = $this->LookupExtendedHeaderRestrictionsTextEncodings($thisfile_id3v2['exthead']['flags']['restrictions']['textenc']);
+						$thisfile_id3v2['exthead']['flags']['restrictions_text']['textsize'] = $this->LookupExtendedHeaderRestrictionsTextFieldSize($thisfile_id3v2['exthead']['flags']['restrictions']['textsize']);
+						$thisfile_id3v2['exthead']['flags']['restrictions_text']['imgenc']   = $this->LookupExtendedHeaderRestrictionsImageEncoding($thisfile_id3v2['exthead']['flags']['restrictions']['imgenc']);
+						$thisfile_id3v2['exthead']['flags']['restrictions_text']['imgsize']  = $this->LookupExtendedHeaderRestrictionsImageSizeSize($thisfile_id3v2['exthead']['flags']['restrictions']['imgsize']);
+					}
+
+					if ($thisfile_id3v2['exthead']['length'] != $extended_header_offset) {
+						$info['warning'][] = 'ID3v2.4 extended header length mismatch (expecting '.intval($thisfile_id3v2['exthead']['length']).', found '.intval($extended_header_offset).')';
+					}
+				}
+
+				$framedataoffset += $extended_header_offset;
+				$framedata = substr($framedata, $extended_header_offset);
+			} // end extended header
+
+
+			while (isset($framedata) && (strlen($framedata) > 0)) { // cycle through until no more frame data is left to parse
+				if (strlen($framedata) <= $this->ID3v2HeaderLength($id3v2_majorversion)) {
+					// insufficient room left in ID3v2 header for actual data - must be padding
+					$thisfile_id3v2['padding']['start']  = $framedataoffset;
+					$thisfile_id3v2['padding']['length'] = strlen($framedata);
+					$thisfile_id3v2['padding']['valid']  = true;
+					for ($i = 0; $i < $thisfile_id3v2['padding']['length']; $i++) {
+						if ($framedata{$i} != "\x00") {
+							$thisfile_id3v2['padding']['valid'] = false;
+							$thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i;
+							$info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)';
+							break;
+						}
+					}
+					break; // skip rest of ID3v2 header
+				}
+				if ($id3v2_majorversion == 2) {
+					// Frame ID  $xx xx xx (three characters)
+					// Size      $xx xx xx (24-bit integer)
+					// Flags     $xx xx
+
+					$frame_header = substr($framedata, 0, 6); // take next 6 bytes for header
+					$framedata    = substr($framedata, 6);    // and leave the rest in $framedata
+					$frame_name   = substr($frame_header, 0, 3);
+					$frame_size   = getid3_lib::BigEndian2Int(substr($frame_header, 3, 3), 0);
+					$frame_flags  = 0; // not used for anything in ID3v2.2, just set to avoid E_NOTICEs
+
+				} elseif ($id3v2_majorversion > 2) {
+
+					// Frame ID  $xx xx xx xx (four characters)
+					// Size      $xx xx xx xx (32-bit integer in v2.3, 28-bit synchsafe in v2.4+)
+					// Flags     $xx xx
+
+					$frame_header = substr($framedata, 0, 10); // take next 10 bytes for header
+					$framedata    = substr($framedata, 10);    // and leave the rest in $framedata
+
+					$frame_name = substr($frame_header, 0, 4);
+					if ($id3v2_majorversion == 3) {
+						$frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0); // 32-bit integer
+					} else { // ID3v2.4+
+						$frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 1); // 32-bit synchsafe integer (28-bit value)
+					}
+
+					if ($frame_size < (strlen($framedata) + 4)) {
+						$nextFrameID = substr($framedata, $frame_size, 4);
+						if ($this->IsValidID3v2FrameName($nextFrameID, $id3v2_majorversion)) {
+							// next frame is OK
+						} elseif (($frame_name == "\x00".'MP3') || ($frame_name == "\x00\x00".'MP') || ($frame_name == ' MP3') || ($frame_name == 'MP3e')) {
+							// MP3ext known broken frames - "ok" for the purposes of this test
+						} elseif (($id3v2_majorversion == 4) && ($this->IsValidID3v2FrameName(substr($framedata, getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0), 4), 3))) {
+							$info['warning'][] = 'ID3v2 tag written as ID3v2.4, but with non-synchsafe integers (ID3v2.3 style). Older versions of (Helium2; iTunes) are known culprits of this. Tag has been parsed as ID3v2.3';
+							$id3v2_majorversion = 3;
+							$frame_size = getid3_lib::BigEndian2Int(substr($frame_header, 4, 4), 0); // 32-bit integer
+						}
+					}
+
+
+					$frame_flags = getid3_lib::BigEndian2Int(substr($frame_header, 8, 2));
+				}
+
+				if ((($id3v2_majorversion == 2) && ($frame_name == "\x00\x00\x00")) || ($frame_name == "\x00\x00\x00\x00")) {
+					// padding encountered
+
+					$thisfile_id3v2['padding']['start']  = $framedataoffset;
+					$thisfile_id3v2['padding']['length'] = strlen($frame_header) + strlen($framedata);
+					$thisfile_id3v2['padding']['valid']  = true;
+
+					$len = strlen($framedata);
+					for ($i = 0; $i < $len; $i++) {
+						if ($framedata{$i} != "\x00") {
+							$thisfile_id3v2['padding']['valid'] = false;
+							$thisfile_id3v2['padding']['errorpos'] = $thisfile_id3v2['padding']['start'] + $i;
+							$info['warning'][] = 'Invalid ID3v2 padding found at offset '.$thisfile_id3v2['padding']['errorpos'].' (the remaining '.($thisfile_id3v2['padding']['length'] - $i).' bytes are considered invalid)';
+							break;
+						}
+					}
+					break; // skip rest of ID3v2 header
+				}
+
+				if ($frame_name == 'COM ') {
+					$info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))). [Note: this particular error has been known to happen with tags edited by iTunes (versions "X v2.0.3", "v3.0.1" are known-guilty, probably others too)]';
+					$frame_name = 'COMM';
+				}
+				if (($frame_size <= strlen($framedata)) && ($this->IsValidID3v2FrameName($frame_name, $id3v2_majorversion))) {
+
+					unset($parsedFrame);
+					$parsedFrame['frame_name']      = $frame_name;
+					$parsedFrame['frame_flags_raw'] = $frame_flags;
+					$parsedFrame['data']            = substr($framedata, 0, $frame_size);
+					$parsedFrame['datalength']      = getid3_lib::CastAsInt($frame_size);
+					$parsedFrame['dataoffset']      = $framedataoffset;
+
+					$this->ParseID3v2Frame($parsedFrame);
+					$thisfile_id3v2[$frame_name][] = $parsedFrame;
+
+					$framedata = substr($framedata, $frame_size);
+
+				} else { // invalid frame length or FrameID
+
+					if ($frame_size <= strlen($framedata)) {
+
+						if ($this->IsValidID3v2FrameName(substr($framedata, $frame_size, 4), $id3v2_majorversion)) {
+
+							// next frame is valid, just skip the current frame
+							$framedata = substr($framedata, $frame_size);
+							$info['warning'][] = 'Next ID3v2 frame is valid, skipping current frame.';
+
+						} else {
+
+							// next frame is invalid too, abort processing
+							//unset($framedata);
+							$framedata = null;
+							$info['error'][] = 'Next ID3v2 frame is also invalid, aborting processing.';
+
+						}
+
+					} elseif ($frame_size == strlen($framedata)) {
+
+						// this is the last frame, just skip
+						$info['warning'][] = 'This was the last ID3v2 frame.';
+
+					} else {
+
+						// next frame is invalid too, abort processing
+						//unset($framedata);
+						$framedata = null;
+						$info['warning'][] = 'Invalid ID3v2 frame size, aborting.';
+
+					}
+					if (!$this->IsValidID3v2FrameName($frame_name, $id3v2_majorversion)) {
+
+						switch ($frame_name) {
+							case "\x00\x00".'MP':
+							case "\x00".'MP3':
+							case ' MP3':
+							case 'MP3e':
+							case "\x00".'MP':
+							case ' MP':
+							case 'MP3':
+								$info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: !IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))). [Note: this particular error has been known to happen with tags edited by "MP3ext (www.mutschler.de/mp3ext/)"]';
+								break;
+
+							default:
+								$info['warning'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: !IsValidID3v2FrameName("'.str_replace("\x00", ' ', $frame_name).'", '.$id3v2_majorversion.'))).';
+								break;
+						}
+
+					} elseif (!isset($framedata) || ($frame_size > strlen($framedata))) {
+
+						$info['error'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag). (ERROR: $frame_size ('.$frame_size.') > strlen($framedata) ('.(isset($framedata) ? strlen($framedata) : 'null').')).';
+
+					} else {
+
+						$info['error'][] = 'error parsing "'.$frame_name.'" ('.$framedataoffset.' bytes into the ID3v2.'.$id3v2_majorversion.' tag).';
+
+					}
+
+				}
+				$framedataoffset += ($frame_size + $this->ID3v2HeaderLength($id3v2_majorversion));
+
+			}
+
+		}
+
+
+	//    Footer
+
+	//    The footer is a copy of the header, but with a different identifier.
+	//        ID3v2 identifier           "3DI"
+	//        ID3v2 version              $04 00
+	//        ID3v2 flags                %abcd0000
+	//        ID3v2 size             4 * %0xxxxxxx
+
+		if (isset($thisfile_id3v2_flags['isfooter']) && $thisfile_id3v2_flags['isfooter']) {
+			$footer = fread($this->getid3->fp, 10);
+			if (substr($footer, 0, 3) == '3DI') {
+				$thisfile_id3v2['footer'] = true;
+				$thisfile_id3v2['majorversion_footer'] = ord($footer{3});
+				$thisfile_id3v2['minorversion_footer'] = ord($footer{4});
+			}
+			if ($thisfile_id3v2['majorversion_footer'] <= 4) {
+				$id3_flags = ord(substr($footer{5}));
+				$thisfile_id3v2_flags['unsynch_footer']  = (bool) ($id3_flags & 0x80);
+				$thisfile_id3v2_flags['extfoot_footer']  = (bool) ($id3_flags & 0x40);
+				$thisfile_id3v2_flags['experim_footer']  = (bool) ($id3_flags & 0x20);
+				$thisfile_id3v2_flags['isfooter_footer'] = (bool) ($id3_flags & 0x10);
+
+				$thisfile_id3v2['footerlength'] = getid3_lib::BigEndian2Int(substr($footer, 6, 4), 1);
+			}
+		} // end footer
+
+		if (isset($thisfile_id3v2['comments']['genre'])) {
+			foreach ($thisfile_id3v2['comments']['genre'] as $key => $value) {
+				unset($thisfile_id3v2['comments']['genre'][$key]);
+				$thisfile_id3v2['comments'] = getid3_lib::array_merge_noclobber($thisfile_id3v2['comments'], array('genre'=>$this->ParseID3v2GenreString($value)));
+			}
+		}
+
+		if (isset($thisfile_id3v2['comments']['track'])) {
+			foreach ($thisfile_id3v2['comments']['track'] as $key => $value) {
+				if (strstr($value, '/')) {
+					list($thisfile_id3v2['comments']['tracknum'][$key], $thisfile_id3v2['comments']['totaltracks'][$key]) = explode('/', $thisfile_id3v2['comments']['track'][$key]);
+				}
+			}
+		}
+
+		if (!isset($thisfile_id3v2['comments']['year']) && !empty($thisfile_id3v2['comments']['recording_time'][0]) && preg_match('#^([0-9]{4})#', trim($thisfile_id3v2['comments']['recording_time'][0]), $matches)) {
+			$thisfile_id3v2['comments']['year'] = array($matches[1]);
+		}
+
+
+		if (!empty($thisfile_id3v2['TXXX'])) {
+			// MediaMonkey does this, maybe others: write a blank RGAD frame, but put replay-gain adjustment values in TXXX frames
+			foreach ($thisfile_id3v2['TXXX'] as $txxx_array) {
+				switch ($txxx_array['description']) {
+					case 'replaygain_track_gain':
+						if (empty($info['replay_gain']['track']['adjustment']) && !empty($txxx_array['data'])) {
+							$info['replay_gain']['track']['adjustment'] = floatval(trim(str_replace('dB', '', $txxx_array['data'])));
+						}
+						break;
+					case 'replaygain_track_peak':
+						if (empty($info['replay_gain']['track']['peak']) && !empty($txxx_array['data'])) {
+							$info['replay_gain']['track']['peak'] = floatval($txxx_array['data']);
+						}
+						break;
+					case 'replaygain_album_gain':
+						if (empty($info['replay_gain']['album']['adjustment']) && !empty($txxx_array['data'])) {
+							$info['replay_gain']['album']['adjustment'] = floatval(trim(str_replace('dB', '', $txxx_array['data'])));
+						}
+						break;
+				}
+			}
+		}
+
+
+		// Set avdataoffset
+		$info['avdataoffset'] = $thisfile_id3v2['headerlength'];
+		if (isset($thisfile_id3v2['footer'])) {
+			$info['avdataoffset'] += 10;
+		}
+
+		return true;
+	}
+
+
+	public function ParseID3v2GenreString($genrestring) {
+		// Parse genres into arrays of genreName and genreID
+		// ID3v2.2.x, ID3v2.3.x: '(21)' or '(4)Eurodisco' or '(51)(39)' or '(55)((I think...)'
+		// ID3v2.4.x: '21' $00 'Eurodisco' $00
+		$clean_genres = array();
+		if (strpos($genrestring, "\x00") === false) {
+			$genrestring = preg_replace('#\(([0-9]{1,3})\)#', '$1'."\x00", $genrestring);
+		}
+		$genre_elements = explode("\x00", $genrestring);
+		foreach ($genre_elements as $element) {
+			$element = trim($element);
+			if ($element) {
+				if (preg_match('#^[0-9]{1,3}#', $element)) {
+					$clean_genres[] = getid3_id3v1::LookupGenreName($element);
+				} else {
+					$clean_genres[] = str_replace('((', '(', $element);
+				}
+			}
+		}
+		return $clean_genres;
+	}
+
+
+	public function ParseID3v2Frame(&$parsedFrame) {
+
+		// shortcuts
+		$info = &$this->getid3->info;
+		$id3v2_majorversion = $info['id3v2']['majorversion'];
+
+		$parsedFrame['framenamelong']  = $this->FrameNameLongLookup($parsedFrame['frame_name']);
+		if (empty($parsedFrame['framenamelong'])) {
+			unset($parsedFrame['framenamelong']);
+		}
+		$parsedFrame['framenameshort'] = $this->FrameNameShortLookup($parsedFrame['frame_name']);
+		if (empty($parsedFrame['framenameshort'])) {
+			unset($parsedFrame['framenameshort']);
+		}
+
+		if ($id3v2_majorversion >= 3) { // frame flags are not part of the ID3v2.2 standard
+			if ($id3v2_majorversion == 3) {
+				//    Frame Header Flags
+				//    %abc00000 %ijk00000
+				$parsedFrame['flags']['TagAlterPreservation']  = (bool) ($parsedFrame['frame_flags_raw'] & 0x8000); // a - Tag alter preservation
+				$parsedFrame['flags']['FileAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x4000); // b - File alter preservation
+				$parsedFrame['flags']['ReadOnly']              = (bool) ($parsedFrame['frame_flags_raw'] & 0x2000); // c - Read only
+				$parsedFrame['flags']['compression']           = (bool) ($parsedFrame['frame_flags_raw'] & 0x0080); // i - Compression
+				$parsedFrame['flags']['Encryption']            = (bool) ($parsedFrame['frame_flags_raw'] & 0x0040); // j - Encryption
+				$parsedFrame['flags']['GroupingIdentity']      = (bool) ($parsedFrame['frame_flags_raw'] & 0x0020); // k - Grouping identity
+
+			} elseif ($id3v2_majorversion == 4) {
+				//    Frame Header Flags
+				//    %0abc0000 %0h00kmnp
+				$parsedFrame['flags']['TagAlterPreservation']  = (bool) ($parsedFrame['frame_flags_raw'] & 0x4000); // a - Tag alter preservation
+				$parsedFrame['flags']['FileAlterPreservation'] = (bool) ($parsedFrame['frame_flags_raw'] & 0x2000); // b - File alter preservation
+				$parsedFrame['flags']['ReadOnly']              = (bool) ($parsedFrame['frame_flags_raw'] & 0x1000); // c - Read only
+				$parsedFrame['flags']['GroupingIdentity']      = (bool) ($parsedFrame['frame_flags_raw'] & 0x0040); // h - Grouping identity
+				$parsedFrame['flags']['compression']           = (bool) ($parsedFrame['frame_flags_raw'] & 0x0008); // k - Compression
+				$parsedFrame['flags']['Encryption']            = (bool) ($parsedFrame['frame_flags_raw'] & 0x0004); // m - Encryption
+				$parsedFrame['flags']['Unsynchronisation']     = (bool) ($parsedFrame['frame_flags_raw'] & 0x0002); // n - Unsynchronisation
+				$parsedFrame['flags']['DataLengthIndicator']   = (bool) ($parsedFrame['frame_flags_raw'] & 0x0001); // p - Data length indicator
+
+				// Frame-level de-unsynchronisation - ID3v2.4
+				if ($parsedFrame['flags']['Unsynchronisation']) {
+					$parsedFrame['data'] = $this->DeUnsynchronise($parsedFrame['data']);
+				}
+
+				if ($parsedFrame['flags']['DataLengthIndicator']) {
+					$parsedFrame['data_length_indicator'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 4), 1);
+					$parsedFrame['data']                  =                           substr($parsedFrame['data'], 4);
+				}
+			}
+
+			//    Frame-level de-compression
+			if ($parsedFrame['flags']['compression']) {
+				$parsedFrame['decompressed_size'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 4));
+				if (!function_exists('gzuncompress')) {
+					$info['warning'][] = 'gzuncompress() support required to decompress ID3v2 frame "'.$parsedFrame['frame_name'].'"';
+				} else {
+					if ($decompresseddata = @gzuncompress(substr($parsedFrame['data'], 4))) {
+					//if ($decompresseddata = @gzuncompress($parsedFrame['data'])) {
+						$parsedFrame['data'] = $decompresseddata;
+						unset($decompresseddata);
+					} else {
+						$info['warning'][] = 'gzuncompress() failed on compressed contents of ID3v2 frame "'.$parsedFrame['frame_name'].'"';
+					}
+				}
+			}
+		}
+
+		if (!empty($parsedFrame['flags']['DataLengthIndicator'])) {
+			if ($parsedFrame['data_length_indicator'] != strlen($parsedFrame['data'])) {
+				$info['warning'][] = 'ID3v2 frame "'.$parsedFrame['frame_name'].'" should be '.$parsedFrame['data_length_indicator'].' bytes long according to DataLengthIndicator, but found '.strlen($parsedFrame['data']).' bytes of data';
+			}
+		}
+
+		if (isset($parsedFrame['datalength']) && ($parsedFrame['datalength'] == 0)) {
+
+			$warning = 'Frame "'.$parsedFrame['frame_name'].'" at offset '.$parsedFrame['dataoffset'].' has no data portion';
+			switch ($parsedFrame['frame_name']) {
+				case 'WCOM':
+					$warning .= ' (this is known to happen with files tagged by RioPort)';
+					break;
+
+				default:
+					break;
+			}
+			$info['warning'][] = $warning;
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'UFID')) || // 4.1   UFID Unique file identifier
+			(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'UFI'))) {  // 4.1   UFI  Unique file identifier
+			//   There may be more than one 'UFID' frame in a tag,
+			//   but only one with the same 'Owner identifier'.
+			// <Header for 'Unique file identifier', ID: 'UFID'>
+			// Owner identifier        <text string> $00
+			// Identifier              <up to 64 bytes binary data>
+			$exploded = explode("\x00", $parsedFrame['data'], 2);
+			$parsedFrame['ownerid'] = (isset($exploded[0]) ? $exploded[0] : '');
+			$parsedFrame['data']    = (isset($exploded[1]) ? $exploded[1] : '');
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'TXXX')) || // 4.2.2 TXXX User defined text information frame
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'TXX'))) {    // 4.2.2 TXX  User defined text information frame
+			//   There may be more than one 'TXXX' frame in each tag,
+			//   but only one with the same description.
+			// <Header for 'User defined text information frame', ID: 'TXXX'>
+			// Text encoding     $xx
+			// Description       <text string according to encoding> $00 (00)
+			// Value             <text string according to encoding>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$parsedFrame['encodingid']  = $frame_textencoding;
+			$parsedFrame['encoding']    = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['description'] = $frame_description;
+			$parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = trim(getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']));
+			}
+			//unset($parsedFrame['data']); do not unset, may be needed elsewhere, e.g. for replaygain
+
+
+		} elseif ($parsedFrame['frame_name']{0} == 'T') { // 4.2. T??[?] Text information frame
+			//   There may only be one text information frame of its kind in an tag.
+			// <Header for 'Text information frame', ID: 'T000' - 'TZZZ',
+			// excluding 'TXXX' described in 4.2.6.>
+			// Text encoding                $xx
+			// Information                  <text string(s) according to encoding>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+
+			$parsedFrame['data'] = (string) substr($parsedFrame['data'], $frame_offset);
+
+			$parsedFrame['encodingid'] = $frame_textencoding;
+			$parsedFrame['encoding']   = $this->TextEncodingNameLookup($frame_textencoding);
+
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				// ID3v2.3 specs say that TPE1 (and others) can contain multiple artist values separated with /
+				// This of course breaks when an artist name contains slash character, e.g. "AC/DC"
+				// MP3tag (maybe others) implement alternative system where multiple artists are null-separated, which makes more sense
+				// getID3 will split null-separated artists into multiple artists and leave slash-separated ones to the user
+				switch ($parsedFrame['encoding']) {
+					case 'UTF-16':
+					case 'UTF-16BE':
+					case 'UTF-16LE':
+						$wordsize = 2;
+						break;
+					case 'ISO-8859-1':
+					case 'UTF-8':
+					default:
+						$wordsize = 1;
+						break;
+				}
+				$Txxx_elements = array();
+				$Txxx_elements_start_offset = 0;
+				for ($i = 0; $i < strlen($parsedFrame['data']); $i += $wordsize) {
+					if (substr($parsedFrame['data'], $i, $wordsize) == str_repeat("\x00", $wordsize)) {
+						$Txxx_elements[] = substr($parsedFrame['data'], $Txxx_elements_start_offset, $i - $Txxx_elements_start_offset);
+						$Txxx_elements_start_offset = $i + $wordsize;
+					}
+				}
+				$Txxx_elements[] = substr($parsedFrame['data'], $Txxx_elements_start_offset, $i - $Txxx_elements_start_offset);
+				foreach ($Txxx_elements as $Txxx_element) {
+					$string = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $Txxx_element);
+					if (!empty($string)) {
+						$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $string;
+					}
+				}
+				unset($string, $wordsize, $i, $Txxx_elements, $Txxx_element, $Txxx_elements_start_offset);
+			}
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'WXXX')) || // 4.3.2 WXXX User defined URL link frame
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'WXX'))) {    // 4.3.2 WXX  User defined URL link frame
+			//   There may be more than one 'WXXX' frame in each tag,
+			//   but only one with the same description
+			// <Header for 'User defined URL link frame', ID: 'WXXX'>
+			// Text encoding     $xx
+			// Description       <text string according to encoding> $00 (00)
+			// URL               <text string>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding));
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			if ($frame_terminatorpos) {
+				// there are null bytes after the data - this is not according to spec
+				// only use data up to first null byte
+				$frame_urldata = (string) substr($parsedFrame['data'], 0, $frame_terminatorpos);
+			} else {
+				// no null bytes following data, just use all data
+				$frame_urldata = (string) $parsedFrame['data'];
+			}
+
+			$parsedFrame['encodingid']  = $frame_textencoding;
+			$parsedFrame['encoding']    = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['url']         = $frame_urldata;
+			$parsedFrame['description'] = $frame_description;
+			if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['url']);
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ($parsedFrame['frame_name']{0} == 'W') { // 4.3. W??? URL link frames
+			//   There may only be one URL link frame of its kind in a tag,
+			//   except when stated otherwise in the frame description
+			// <Header for 'URL link frame', ID: 'W000' - 'WZZZ', excluding 'WXXX'
+			// described in 4.3.2.>
+			// URL              <text string>
+
+			$parsedFrame['url'] = trim($parsedFrame['data']);
+			if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $parsedFrame['url'];
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'IPLS')) || // 4.4  IPLS Involved people list (ID3v2.3 only)
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'IPL'))) {     // 4.4  IPL  Involved people list (ID3v2.2 only)
+			// http://id3.org/id3v2.3.0#sec4.4
+			//   There may only be one 'IPL' frame in each tag
+			// <Header for 'User defined URL link frame', ID: 'IPL'>
+			// Text encoding     $xx
+			// People list strings    <textstrings>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$parsedFrame['encodingid'] = $frame_textencoding;
+			$parsedFrame['encoding']   = $this->TextEncodingNameLookup($parsedFrame['encodingid']);
+			$parsedFrame['data_raw']   = (string) substr($parsedFrame['data'], $frame_offset);
+
+			// http://www.getid3.org/phpBB3/viewtopic.php?t=1369
+			// "this tag typically contains null terminated strings, which are associated in pairs"
+			// "there are users that use the tag incorrectly"
+			$IPLS_parts = array();
+			if (strpos($parsedFrame['data_raw'], "\x00") !== false) {
+				$IPLS_parts_unsorted = array();
+				if (((strlen($parsedFrame['data_raw']) % 2) == 0) && ((substr($parsedFrame['data_raw'], 0, 2) == "\xFF\xFE") || (substr($parsedFrame['data_raw'], 0, 2) == "\xFE\xFF"))) {
+					// UTF-16, be careful looking for null bytes since most 2-byte characters may contain one; you need to find twin null bytes, and on even padding
+					$thisILPS  = '';
+					for ($i = 0; $i < strlen($parsedFrame['data_raw']); $i += 2) {
+						$twobytes = substr($parsedFrame['data_raw'], $i, 2);
+						if ($twobytes === "\x00\x00") {
+							$IPLS_parts_unsorted[] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $thisILPS);
+							$thisILPS  = '';
+						} else {
+							$thisILPS .= $twobytes;
+						}
+					}
+					if (strlen($thisILPS) > 2) { // 2-byte BOM
+						$IPLS_parts_unsorted[] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $thisILPS);
+					}
+				} else {
+					// ISO-8859-1 or UTF-8 or other single-byte-null character set
+					$IPLS_parts_unsorted = explode("\x00", $parsedFrame['data_raw']);
+				}
+				if (count($IPLS_parts_unsorted) == 1) {
+					// just a list of names, e.g. "Dino Baptiste, Jimmy Copley, John Gordon, Bernie Marsden, Sharon Watson"
+					foreach ($IPLS_parts_unsorted as $key => $value) {
+						$IPLS_parts_sorted = preg_split('#[;,\\r\\n\\t]#', $value);
+						$position = '';
+						foreach ($IPLS_parts_sorted as $person) {
+							$IPLS_parts[] = array('position'=>$position, 'person'=>$person);
+						}
+					}
+				} elseif ((count($IPLS_parts_unsorted) % 2) == 0) {
+					$position = '';
+					$person   = '';
+					foreach ($IPLS_parts_unsorted as $key => $value) {
+						if (($key % 2) == 0) {
+							$position = $value;
+						} else {
+							$person   = $value;
+							$IPLS_parts[] = array('position'=>$position, 'person'=>$person);
+							$position = '';
+							$person   = '';
+						}
+					}
+				} else {
+					foreach ($IPLS_parts_unsorted as $key => $value) {
+						$IPLS_parts[] = array($value);
+					}
+				}
+
+			} else {
+				$IPLS_parts = preg_split('#[;,\\r\\n\\t]#', $parsedFrame['data_raw']);
+			}
+			$parsedFrame['data'] = $IPLS_parts;
+
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $parsedFrame['data'];
+			}
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'MCDI')) || // 4.4   MCDI Music CD identifier
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'MCI'))) {     // 4.5   MCI  Music CD identifier
+			//   There may only be one 'MCDI' frame in each tag
+			// <Header for 'Music CD identifier', ID: 'MCDI'>
+			// CD TOC                <binary data>
+
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = $parsedFrame['data'];
+			}
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'ETCO')) || // 4.5   ETCO Event timing codes
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'ETC'))) {     // 4.6   ETC  Event timing codes
+			//   There may only be one 'ETCO' frame in each tag
+			// <Header for 'Event timing codes', ID: 'ETCO'>
+			// Time stamp format    $xx
+			//   Where time stamp format is:
+			// $01  (32-bit value) MPEG frames from beginning of file
+			// $02  (32-bit value) milliseconds from beginning of file
+			//   Followed by a list of key events in the following format:
+			// Type of event   $xx
+			// Time stamp      $xx (xx ...)
+			//   The 'Time stamp' is set to zero if directly at the beginning of the sound
+			//   or after the previous event. All events MUST be sorted in chronological order.
+
+			$frame_offset = 0;
+			$parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+
+			while ($frame_offset < strlen($parsedFrame['data'])) {
+				$parsedFrame['typeid']    = substr($parsedFrame['data'], $frame_offset++, 1);
+				$parsedFrame['type']      = $this->ETCOEventLookup($parsedFrame['typeid']);
+				$parsedFrame['timestamp'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+				$frame_offset += 4;
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'MLLT')) || // 4.6   MLLT MPEG location lookup table
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'MLL'))) {     // 4.7   MLL MPEG location lookup table
+			//   There may only be one 'MLLT' frame in each tag
+			// <Header for 'Location lookup table', ID: 'MLLT'>
+			// MPEG frames between reference  $xx xx
+			// Bytes between reference        $xx xx xx
+			// Milliseconds between reference $xx xx xx
+			// Bits for bytes deviation       $xx
+			// Bits for milliseconds dev.     $xx
+			//   Then for every reference the following data is included;
+			// Deviation in bytes         %xxx....
+			// Deviation in milliseconds  %xxx....
+
+			$frame_offset = 0;
+			$parsedFrame['framesbetweenreferences'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 0, 2));
+			$parsedFrame['bytesbetweenreferences']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 2, 3));
+			$parsedFrame['msbetweenreferences']     = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 5, 3));
+			$parsedFrame['bitsforbytesdeviation']   = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 8, 1));
+			$parsedFrame['bitsformsdeviation']      = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], 9, 1));
+			$parsedFrame['data'] = substr($parsedFrame['data'], 10);
+			while ($frame_offset < strlen($parsedFrame['data'])) {
+				$deviationbitstream .= getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1));
+			}
+			$reference_counter = 0;
+			while (strlen($deviationbitstream) > 0) {
+				$parsedFrame[$reference_counter]['bytedeviation'] = bindec(substr($deviationbitstream, 0, $parsedFrame['bitsforbytesdeviation']));
+				$parsedFrame[$reference_counter]['msdeviation']   = bindec(substr($deviationbitstream, $parsedFrame['bitsforbytesdeviation'], $parsedFrame['bitsformsdeviation']));
+				$deviationbitstream = substr($deviationbitstream, $parsedFrame['bitsforbytesdeviation'] + $parsedFrame['bitsformsdeviation']);
+				$reference_counter++;
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'SYTC')) || // 4.7   SYTC Synchronised tempo codes
+				  (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'STC'))) {  // 4.8   STC  Synchronised tempo codes
+			//   There may only be one 'SYTC' frame in each tag
+			// <Header for 'Synchronised tempo codes', ID: 'SYTC'>
+			// Time stamp format   $xx
+			// Tempo data          <binary data>
+			//   Where time stamp format is:
+			// $01  (32-bit value) MPEG frames from beginning of file
+			// $02  (32-bit value) milliseconds from beginning of file
+
+			$frame_offset = 0;
+			$parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$timestamp_counter = 0;
+			while ($frame_offset < strlen($parsedFrame['data'])) {
+				$parsedFrame[$timestamp_counter]['tempo'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+				if ($parsedFrame[$timestamp_counter]['tempo'] == 255) {
+					$parsedFrame[$timestamp_counter]['tempo'] += ord(substr($parsedFrame['data'], $frame_offset++, 1));
+				}
+				$parsedFrame[$timestamp_counter]['timestamp'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+				$frame_offset += 4;
+				$timestamp_counter++;
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'USLT')) || // 4.8   USLT Unsynchronised lyric/text transcription
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'ULT'))) {     // 4.9   ULT  Unsynchronised lyric/text transcription
+			//   There may be more than one 'Unsynchronised lyrics/text transcription' frame
+			//   in each tag, but only one with the same language and content descriptor.
+			// <Header for 'Unsynchronised lyrics/text transcription', ID: 'USLT'>
+			// Text encoding        $xx
+			// Language             $xx xx xx
+			// Content descriptor   <text string according to encoding> $00 (00)
+			// Lyrics/text          <full text string according to encoding>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_language = substr($parsedFrame['data'], $frame_offset, 3);
+			$frame_offset += 3;
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$parsedFrame['data'] = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+
+			$parsedFrame['encodingid']   = $frame_textencoding;
+			$parsedFrame['encoding']     = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['data']         = $parsedFrame['data'];
+			$parsedFrame['language']     = $frame_language;
+			$parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false);
+			$parsedFrame['description']  = $frame_description;
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']);
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'SYLT')) || // 4.9   SYLT Synchronised lyric/text
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'SLT'))) {     // 4.10  SLT  Synchronised lyric/text
+			//   There may be more than one 'SYLT' frame in each tag,
+			//   but only one with the same language and content descriptor.
+			// <Header for 'Synchronised lyrics/text', ID: 'SYLT'>
+			// Text encoding        $xx
+			// Language             $xx xx xx
+			// Time stamp format    $xx
+			//   $01  (32-bit value) MPEG frames from beginning of file
+			//   $02  (32-bit value) milliseconds from beginning of file
+			// Content type         $xx
+			// Content descriptor   <text string according to encoding> $00 (00)
+			//   Terminated text to be synced (typically a syllable)
+			//   Sync identifier (terminator to above string)   $00 (00)
+			//   Time stamp                                     $xx (xx ...)
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_language = substr($parsedFrame['data'], $frame_offset, 3);
+			$frame_offset += 3;
+			$parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['contenttypeid']   = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['contenttype']     = $this->SYTLContentTypeLookup($parsedFrame['contenttypeid']);
+			$parsedFrame['encodingid']      = $frame_textencoding;
+			$parsedFrame['encoding']        = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['language']        = $frame_language;
+			$parsedFrame['languagename']    = $this->LanguageLookup($frame_language, false);
+
+			$timestampindex = 0;
+			$frame_remainingdata = substr($parsedFrame['data'], $frame_offset);
+			while (strlen($frame_remainingdata)) {
+				$frame_offset = 0;
+				$frame_terminatorpos = strpos($frame_remainingdata, $this->TextEncodingTerminatorLookup($frame_textencoding));
+				if ($frame_terminatorpos === false) {
+					$frame_remainingdata = '';
+				} else {
+					if (ord(substr($frame_remainingdata, $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+						$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+					}
+					$parsedFrame['lyrics'][$timestampindex]['data'] = substr($frame_remainingdata, $frame_offset, $frame_terminatorpos - $frame_offset);
+
+					$frame_remainingdata = substr($frame_remainingdata, $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+					if (($timestampindex == 0) && (ord($frame_remainingdata{0}) != 0)) {
+						// timestamp probably omitted for first data item
+					} else {
+						$parsedFrame['lyrics'][$timestampindex]['timestamp'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 0, 4));
+						$frame_remainingdata = substr($frame_remainingdata, 4);
+					}
+					$timestampindex++;
+				}
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'COMM')) || // 4.10  COMM Comments
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'COM'))) {     // 4.11  COM  Comments
+			//   There may be more than one comment frame in each tag,
+			//   but only one with the same language and content descriptor.
+			// <Header for 'Comment', ID: 'COMM'>
+			// Text encoding          $xx
+			// Language               $xx xx xx
+			// Short content descrip. <text string according to encoding> $00 (00)
+			// The actual text        <full text string according to encoding>
+
+			if (strlen($parsedFrame['data']) < 5) {
+
+				$info['warning'][] = 'Invalid data (too short) for "'.$parsedFrame['frame_name'].'" frame at offset '.$parsedFrame['dataoffset'];
+
+			} else {
+
+				$frame_offset = 0;
+				$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+				if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+					$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+				}
+				$frame_language = substr($parsedFrame['data'], $frame_offset, 3);
+				$frame_offset += 3;
+				$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+				if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+					$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+				}
+				$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+				if (ord($frame_description) === 0) {
+					$frame_description = '';
+				}
+				$frame_text = (string) substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+
+				$parsedFrame['encodingid']   = $frame_textencoding;
+				$parsedFrame['encoding']     = $this->TextEncodingNameLookup($frame_textencoding);
+
+				$parsedFrame['language']     = $frame_language;
+				$parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false);
+				$parsedFrame['description']  = $frame_description;
+				$parsedFrame['data']         = $frame_text;
+				if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+					$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']);
+				}
+
+			}
+
+		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'RVA2')) { // 4.11  RVA2 Relative volume adjustment (2) (ID3v2.4+ only)
+			//   There may be more than one 'RVA2' frame in each tag,
+			//   but only one with the same identification string
+			// <Header for 'Relative volume adjustment (2)', ID: 'RVA2'>
+			// Identification          <text string> $00
+			//   The 'identification' string is used to identify the situation and/or
+			//   device where this adjustment should apply. The following is then
+			//   repeated for every channel:
+			// Type of channel         $xx
+			// Volume adjustment       $xx xx
+			// Bits representing peak  $xx
+			// Peak volume             $xx (xx ...)
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00");
+			$frame_idstring = substr($parsedFrame['data'], 0, $frame_terminatorpos);
+			if (ord($frame_idstring) === 0) {
+				$frame_idstring = '';
+			}
+			$frame_remainingdata = substr($parsedFrame['data'], $frame_terminatorpos + strlen("\x00"));
+			$parsedFrame['description'] = $frame_idstring;
+			$RVA2channelcounter = 0;
+			while (strlen($frame_remainingdata) >= 5) {
+				$frame_offset = 0;
+				$frame_channeltypeid = ord(substr($frame_remainingdata, $frame_offset++, 1));
+				$parsedFrame[$RVA2channelcounter]['channeltypeid']  = $frame_channeltypeid;
+				$parsedFrame[$RVA2channelcounter]['channeltype']    = $this->RVA2ChannelTypeLookup($frame_channeltypeid);
+				$parsedFrame[$RVA2channelcounter]['volumeadjust']   = getid3_lib::BigEndian2Int(substr($frame_remainingdata, $frame_offset, 2), false, true); // 16-bit signed
+				$frame_offset += 2;
+				$parsedFrame[$RVA2channelcounter]['bitspeakvolume'] = ord(substr($frame_remainingdata, $frame_offset++, 1));
+				if (($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] < 1) || ($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] > 4)) {
+					$info['warning'][] = 'ID3v2::RVA2 frame['.$RVA2channelcounter.'] contains invalid '.$parsedFrame[$RVA2channelcounter]['bitspeakvolume'].'-byte bits-representing-peak value';
+					break;
+				}
+				$frame_bytespeakvolume = ceil($parsedFrame[$RVA2channelcounter]['bitspeakvolume'] / 8);
+				$parsedFrame[$RVA2channelcounter]['peakvolume']     = getid3_lib::BigEndian2Int(substr($frame_remainingdata, $frame_offset, $frame_bytespeakvolume));
+				$frame_remainingdata = substr($frame_remainingdata, $frame_offset + $frame_bytespeakvolume);
+				$RVA2channelcounter++;
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'RVAD')) || // 4.12  RVAD Relative volume adjustment (ID3v2.3 only)
+				  (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'RVA'))) {  // 4.12  RVA  Relative volume adjustment (ID3v2.2 only)
+			//   There may only be one 'RVA' frame in each tag
+			// <Header for 'Relative volume adjustment', ID: 'RVA'>
+			// ID3v2.2 => Increment/decrement     %000000ba
+			// ID3v2.3 => Increment/decrement     %00fedcba
+			// Bits used for volume descr.        $xx
+			// Relative volume change, right      $xx xx (xx ...) // a
+			// Relative volume change, left       $xx xx (xx ...) // b
+			// Peak volume right                  $xx xx (xx ...)
+			// Peak volume left                   $xx xx (xx ...)
+			//   ID3v2.3 only, optional (not present in ID3v2.2):
+			// Relative volume change, right back $xx xx (xx ...) // c
+			// Relative volume change, left back  $xx xx (xx ...) // d
+			// Peak volume right back             $xx xx (xx ...)
+			// Peak volume left back              $xx xx (xx ...)
+			//   ID3v2.3 only, optional (not present in ID3v2.2):
+			// Relative volume change, center     $xx xx (xx ...) // e
+			// Peak volume center                 $xx xx (xx ...)
+			//   ID3v2.3 only, optional (not present in ID3v2.2):
+			// Relative volume change, bass       $xx xx (xx ...) // f
+			// Peak volume bass                   $xx xx (xx ...)
+
+			$frame_offset = 0;
+			$frame_incrdecrflags = getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['incdec']['right'] = (bool) substr($frame_incrdecrflags, 6, 1);
+			$parsedFrame['incdec']['left']  = (bool) substr($frame_incrdecrflags, 7, 1);
+			$parsedFrame['bitsvolume'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$frame_bytesvolume = ceil($parsedFrame['bitsvolume'] / 8);
+			$parsedFrame['volumechange']['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+			if ($parsedFrame['incdec']['right'] === false) {
+				$parsedFrame['volumechange']['right'] *= -1;
+			}
+			$frame_offset += $frame_bytesvolume;
+			$parsedFrame['volumechange']['left'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+			if ($parsedFrame['incdec']['left'] === false) {
+				$parsedFrame['volumechange']['left'] *= -1;
+			}
+			$frame_offset += $frame_bytesvolume;
+			$parsedFrame['peakvolume']['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+			$frame_offset += $frame_bytesvolume;
+			$parsedFrame['peakvolume']['left']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+			$frame_offset += $frame_bytesvolume;
+			if ($id3v2_majorversion == 3) {
+				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);
+				if (strlen($parsedFrame['data']) > 0) {
+					$parsedFrame['incdec']['rightrear'] = (bool) substr($frame_incrdecrflags, 4, 1);
+					$parsedFrame['incdec']['leftrear']  = (bool) substr($frame_incrdecrflags, 5, 1);
+					$parsedFrame['volumechange']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					if ($parsedFrame['incdec']['rightrear'] === false) {
+						$parsedFrame['volumechange']['rightrear'] *= -1;
+					}
+					$frame_offset += $frame_bytesvolume;
+					$parsedFrame['volumechange']['leftrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					if ($parsedFrame['incdec']['leftrear'] === false) {
+						$parsedFrame['volumechange']['leftrear'] *= -1;
+					}
+					$frame_offset += $frame_bytesvolume;
+					$parsedFrame['peakvolume']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					$frame_offset += $frame_bytesvolume;
+					$parsedFrame['peakvolume']['leftrear']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					$frame_offset += $frame_bytesvolume;
+				}
+				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);
+				if (strlen($parsedFrame['data']) > 0) {
+					$parsedFrame['incdec']['center'] = (bool) substr($frame_incrdecrflags, 3, 1);
+					$parsedFrame['volumechange']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					if ($parsedFrame['incdec']['center'] === false) {
+						$parsedFrame['volumechange']['center'] *= -1;
+					}
+					$frame_offset += $frame_bytesvolume;
+					$parsedFrame['peakvolume']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					$frame_offset += $frame_bytesvolume;
+				}
+				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);
+				if (strlen($parsedFrame['data']) > 0) {
+					$parsedFrame['incdec']['bass'] = (bool) substr($frame_incrdecrflags, 2, 1);
+					$parsedFrame['volumechange']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					if ($parsedFrame['incdec']['bass'] === false) {
+						$parsedFrame['volumechange']['bass'] *= -1;
+					}
+					$frame_offset += $frame_bytesvolume;
+					$parsedFrame['peakvolume']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));
+					$frame_offset += $frame_bytesvolume;
+				}
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'EQU2')) { // 4.12  EQU2 Equalisation (2) (ID3v2.4+ only)
+			//   There may be more than one 'EQU2' frame in each tag,
+			//   but only one with the same identification string
+			// <Header of 'Equalisation (2)', ID: 'EQU2'>
+			// Interpolation method  $xx
+			//   $00  Band
+			//   $01  Linear
+			// Identification        <text string> $00
+			//   The following is then repeated for every adjustment point
+			// Frequency          $xx xx
+			// Volume adjustment  $xx xx
+
+			$frame_offset = 0;
+			$frame_interpolationmethod = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_idstring = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_idstring) === 0) {
+				$frame_idstring = '';
+			}
+			$parsedFrame['description'] = $frame_idstring;
+			$frame_remainingdata = substr($parsedFrame['data'], $frame_terminatorpos + strlen("\x00"));
+			while (strlen($frame_remainingdata)) {
+				$frame_frequency = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 0, 2)) / 2;
+				$parsedFrame['data'][$frame_frequency] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, 2), false, true);
+				$frame_remainingdata = substr($frame_remainingdata, 4);
+			}
+			$parsedFrame['interpolationmethod'] = $frame_interpolationmethod;
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'EQUA')) || // 4.12  EQUA Equalisation (ID3v2.3 only)
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'EQU'))) {     // 4.13  EQU  Equalisation (ID3v2.2 only)
+			//   There may only be one 'EQUA' frame in each tag
+			// <Header for 'Relative volume adjustment', ID: 'EQU'>
+			// Adjustment bits    $xx
+			//   This is followed by 2 bytes + ('adjustment bits' rounded up to the
+			//   nearest byte) for every equalisation band in the following format,
+			//   giving a frequency range of 0 - 32767Hz:
+			// Increment/decrement   %x (MSB of the Frequency)
+			// Frequency             (lower 15 bits)
+			// Adjustment            $xx (xx ...)
+
+			$frame_offset = 0;
+			$parsedFrame['adjustmentbits'] = substr($parsedFrame['data'], $frame_offset++, 1);
+			$frame_adjustmentbytes = ceil($parsedFrame['adjustmentbits'] / 8);
+
+			$frame_remainingdata = (string) substr($parsedFrame['data'], $frame_offset);
+			while (strlen($frame_remainingdata) > 0) {
+				$frame_frequencystr = getid3_lib::BigEndian2Bin(substr($frame_remainingdata, 0, 2));
+				$frame_incdec    = (bool) substr($frame_frequencystr, 0, 1);
+				$frame_frequency = bindec(substr($frame_frequencystr, 1, 15));
+				$parsedFrame[$frame_frequency]['incdec'] = $frame_incdec;
+				$parsedFrame[$frame_frequency]['adjustment'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, $frame_adjustmentbytes));
+				if ($parsedFrame[$frame_frequency]['incdec'] === false) {
+					$parsedFrame[$frame_frequency]['adjustment'] *= -1;
+				}
+				$frame_remainingdata = substr($frame_remainingdata, 2 + $frame_adjustmentbytes);
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RVRB')) || // 4.13  RVRB Reverb
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'REV'))) {     // 4.14  REV  Reverb
+			//   There may only be one 'RVRB' frame in each tag.
+			// <Header for 'Reverb', ID: 'RVRB'>
+			// Reverb left (ms)                 $xx xx
+			// Reverb right (ms)                $xx xx
+			// Reverb bounces, left             $xx
+			// Reverb bounces, right            $xx
+			// Reverb feedback, left to left    $xx
+			// Reverb feedback, left to right   $xx
+			// Reverb feedback, right to right  $xx
+			// Reverb feedback, right to left   $xx
+			// Premix left to right             $xx
+			// Premix right to left             $xx
+
+			$frame_offset = 0;
+			$parsedFrame['left']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['bouncesL']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['bouncesR']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['feedbackLL']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['feedbackLR']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['feedbackRR']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['feedbackRL']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['premixLR']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['premixRL']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'APIC')) || // 4.14  APIC Attached picture
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'PIC'))) {     // 4.15  PIC  Attached picture
+			//   There may be several pictures attached to one file,
+			//   each in their individual 'APIC' frame, but only one
+			//   with the same content descriptor
+			// <Header for 'Attached picture', ID: 'APIC'>
+			// Text encoding      $xx
+			// ID3v2.3+ => MIME type          <text string> $00
+			// ID3v2.2  => Image format       $xx xx xx
+			// Picture type       $xx
+			// Description        <text string according to encoding> $00 (00)
+			// Picture data       <binary data>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+
+			if ($id3v2_majorversion == 2 && strlen($parsedFrame['data']) > $frame_offset) {
+				$frame_imagetype = substr($parsedFrame['data'], $frame_offset, 3);
+				if (strtolower($frame_imagetype) == 'ima') {
+					// complete hack for mp3Rage (www.chaoticsoftware.com) that puts ID3v2.3-formatted
+					// MIME type instead of 3-char ID3v2.2-format image type  (thanks xbhoffØpacbell*net)
+					$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+					$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+					if (ord($frame_mimetype) === 0) {
+						$frame_mimetype = '';
+					}
+					$frame_imagetype = strtoupper(str_replace('image/', '', strtolower($frame_mimetype)));
+					if ($frame_imagetype == 'JPEG') {
+						$frame_imagetype = 'JPG';
+					}
+					$frame_offset = $frame_terminatorpos + strlen("\x00");
+				} else {
+					$frame_offset += 3;
+				}
+			}
+			if ($id3v2_majorversion > 2 && strlen($parsedFrame['data']) > $frame_offset) {
+				$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+				$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+				if (ord($frame_mimetype) === 0) {
+					$frame_mimetype = '';
+				}
+				$frame_offset = $frame_terminatorpos + strlen("\x00");
+			}
+
+			$frame_picturetype = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+
+			if ($frame_offset >= $parsedFrame['datalength']) {
+				$info['warning'][] = 'data portion of APIC frame is missing at offset '.($parsedFrame['dataoffset'] + 8 + $frame_offset);
+			} else {
+				$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+				if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+					$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+				}
+				$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+				if (ord($frame_description) === 0) {
+					$frame_description = '';
+				}
+				$parsedFrame['encodingid']       = $frame_textencoding;
+				$parsedFrame['encoding']         = $this->TextEncodingNameLookup($frame_textencoding);
+
+				if ($id3v2_majorversion == 2) {
+					$parsedFrame['imagetype']    = $frame_imagetype;
+				} else {
+					$parsedFrame['mime']         = $frame_mimetype;
+				}
+				$parsedFrame['picturetypeid']    = $frame_picturetype;
+				$parsedFrame['picturetype']      = $this->APICPictureTypeLookup($frame_picturetype);
+				$parsedFrame['description']      = $frame_description;
+				$parsedFrame['data']             = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));
+				$parsedFrame['datalength']       = strlen($parsedFrame['data']);
+
+				$parsedFrame['image_mime'] = '';
+				$imageinfo = array();
+				$imagechunkcheck = getid3_lib::GetDataImageSize($parsedFrame['data'], $imageinfo);
+				if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) {
+					$parsedFrame['image_mime']       = 'image/'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]);
+					if ($imagechunkcheck[0]) {
+						$parsedFrame['image_width']  = $imagechunkcheck[0];
+					}
+					if ($imagechunkcheck[1]) {
+						$parsedFrame['image_height'] = $imagechunkcheck[1];
+					}
+				}
+
+				do {
+					if ($this->getid3->option_save_attachments === false) {
+						// skip entirely
+						unset($parsedFrame['data']);
+						break;
+					}
+					if ($this->getid3->option_save_attachments === true) {
+						// great
+/*
+					} elseif (is_int($this->getid3->option_save_attachments)) {
+						if ($this->getid3->option_save_attachments < $parsedFrame['data_length']) {
+							// too big, skip
+							$info['warning'][] = 'attachment at '.$frame_offset.' is too large to process inline ('.number_format($parsedFrame['data_length']).' bytes)';
+							unset($parsedFrame['data']);
+							break;
+						}
+*/
+					} elseif (is_string($this->getid3->option_save_attachments)) {
+						$dir = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->getid3->option_save_attachments), DIRECTORY_SEPARATOR);
+						if (!is_dir($dir) || !is_writable($dir)) {
+							// cannot write, skip
+							$info['warning'][] = 'attachment at '.$frame_offset.' cannot be saved to "'.$dir.'" (not writable)';
+							unset($parsedFrame['data']);
+							break;
+						}
+					}
+					// if we get this far, must be OK
+					if (is_string($this->getid3->option_save_attachments)) {
+						$destination_filename = $dir.DIRECTORY_SEPARATOR.md5($info['filenamepath']).'_'.$frame_offset;
+						if (!file_exists($destination_filename) || is_writable($destination_filename)) {
+							file_put_contents($destination_filename, $parsedFrame['data']);
+						} else {
+							$info['warning'][] = 'attachment at '.$frame_offset.' cannot be saved to "'.$destination_filename.'" (not writable)';
+						}
+						$parsedFrame['data_filename'] = $destination_filename;
+						unset($parsedFrame['data']);
+					} else {
+						if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+							if (!isset($info['id3v2']['comments']['picture'])) {
+								$info['id3v2']['comments']['picture'] = array();
+							}
+							$info['id3v2']['comments']['picture'][] = array('data'=>$parsedFrame['data'], 'image_mime'=>$parsedFrame['image_mime']);
+						}
+					}
+				} while (false);
+			}
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'GEOB')) || // 4.15  GEOB General encapsulated object
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'GEO'))) {     // 4.16  GEO  General encapsulated object
+			//   There may be more than one 'GEOB' frame in each tag,
+			//   but only one with the same content descriptor
+			// <Header for 'General encapsulated object', ID: 'GEOB'>
+			// Text encoding          $xx
+			// MIME type              <text string> $00
+			// Filename               <text string according to encoding> $00 (00)
+			// Content description    <text string according to encoding> $00 (00)
+			// Encapsulated object    <binary data>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_mimetype) === 0) {
+				$frame_mimetype = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_filename = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_filename) === 0) {
+				$frame_filename = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding));
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding));
+
+			$parsedFrame['objectdata']  = (string) substr($parsedFrame['data'], $frame_offset);
+			$parsedFrame['encodingid']  = $frame_textencoding;
+			$parsedFrame['encoding']    = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['mime']        = $frame_mimetype;
+			$parsedFrame['filename']    = $frame_filename;
+			$parsedFrame['description'] = $frame_description;
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'PCNT')) || // 4.16  PCNT Play counter
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CNT'))) {     // 4.17  CNT  Play counter
+			//   There may only be one 'PCNT' frame in each tag.
+			//   When the counter reaches all one's, one byte is inserted in
+			//   front of the counter thus making the counter eight bits bigger
+			// <Header for 'Play counter', ID: 'PCNT'>
+			// Counter        $xx xx xx xx (xx ...)
+
+			$parsedFrame['data']          = getid3_lib::BigEndian2Int($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'POPM')) || // 4.17  POPM Popularimeter
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'POP'))) {    // 4.18  POP  Popularimeter
+			//   There may be more than one 'POPM' frame in each tag,
+			//   but only one with the same email address
+			// <Header for 'Popularimeter', ID: 'POPM'>
+			// Email to user   <text string> $00
+			// Rating          $xx
+			// Counter         $xx xx xx xx (xx ...)
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_emailaddress = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_emailaddress) === 0) {
+				$frame_emailaddress = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+			$frame_rating = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['counter'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset));
+			$parsedFrame['email']   = $frame_emailaddress;
+			$parsedFrame['rating']  = $frame_rating;
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RBUF')) || // 4.18  RBUF Recommended buffer size
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'BUF'))) {     // 4.19  BUF  Recommended buffer size
+			//   There may only be one 'RBUF' frame in each tag
+			// <Header for 'Recommended buffer size', ID: 'RBUF'>
+			// Buffer size               $xx xx xx
+			// Embedded info flag        %0000000x
+			// Offset to next tag        $xx xx xx xx
+
+			$frame_offset = 0;
+			$parsedFrame['buffersize'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 3));
+			$frame_offset += 3;
+
+			$frame_embeddedinfoflags = getid3_lib::BigEndian2Bin(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['flags']['embededinfo'] = (bool) substr($frame_embeddedinfoflags, 7, 1);
+			$parsedFrame['nexttagoffset'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CRM')) { // 4.20  Encrypted meta frame (ID3v2.2 only)
+			//   There may be more than one 'CRM' frame in a tag,
+			//   but only one with the same 'owner identifier'
+			// <Header for 'Encrypted meta frame', ID: 'CRM'>
+			// Owner identifier      <textstring> $00 (00)
+			// Content/explanation   <textstring> $00 (00)
+			// Encrypted datablock   <binary data>
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$parsedFrame['ownerid']     = $frame_ownerid;
+			$parsedFrame['data']        = (string) substr($parsedFrame['data'], $frame_offset);
+			$parsedFrame['description'] = $frame_description;
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'AENC')) || // 4.19  AENC Audio encryption
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'CRA'))) {     // 4.21  CRA  Audio encryption
+			//   There may be more than one 'AENC' frames in a tag,
+			//   but only one with the same 'Owner identifier'
+			// <Header for 'Audio encryption', ID: 'AENC'>
+			// Owner identifier   <text string> $00
+			// Preview start      $xx xx
+			// Preview length     $xx xx
+			// Encryption info    <binary data>
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_ownerid) === 0) {
+				$frame_ownerid == '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+			$parsedFrame['ownerid'] = $frame_ownerid;
+			$parsedFrame['previewstart'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['previewlength'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['encryptioninfo'] = (string) substr($parsedFrame['data'], $frame_offset);
+			unset($parsedFrame['data']);
+
+
+		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'LINK')) || // 4.20  LINK Linked information
+				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'LNK'))) {     // 4.22  LNK  Linked information
+			//   There may be more than one 'LINK' frame in a tag,
+			//   but only one with the same contents
+			// <Header for 'Linked information', ID: 'LINK'>
+			// ID3v2.3+ => Frame identifier   $xx xx xx xx
+			// ID3v2.2  => Frame identifier   $xx xx xx
+			// URL                            <text string> $00
+			// ID and additional data         <text string(s)>
+
+			$frame_offset = 0;
+			if ($id3v2_majorversion == 2) {
+				$parsedFrame['frameid'] = substr($parsedFrame['data'], $frame_offset, 3);
+				$frame_offset += 3;
+			} else {
+				$parsedFrame['frameid'] = substr($parsedFrame['data'], $frame_offset, 4);
+				$frame_offset += 4;
+			}
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_url = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_url) === 0) {
+				$frame_url = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+			$parsedFrame['url'] = $frame_url;
+
+			$parsedFrame['additionaldata'] = (string) substr($parsedFrame['data'], $frame_offset);
+			if (!empty($parsedFrame['framenameshort']) && $parsedFrame['url']) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = utf8_encode($parsedFrame['url']);
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'POSS')) { // 4.21  POSS Position synchronisation frame (ID3v2.3+ only)
+			//   There may only be one 'POSS' frame in each tag
+			// <Head for 'Position synchronisation', ID: 'POSS'>
+			// Time stamp format         $xx
+			// Position                  $xx (xx ...)
+
+			$frame_offset = 0;
+			$parsedFrame['timestampformat'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['position']        = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset));
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'USER')) { // 4.22  USER Terms of use (ID3v2.3+ only)
+			//   There may be more than one 'Terms of use' frame in a tag,
+			//   but only one with the same 'Language'
+			// <Header for 'Terms of use frame', ID: 'USER'>
+			// Text encoding        $xx
+			// Language             $xx xx xx
+			// The actual text      <text string according to encoding>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$frame_language = substr($parsedFrame['data'], $frame_offset, 3);
+			$frame_offset += 3;
+			$parsedFrame['language']     = $frame_language;
+			$parsedFrame['languagename'] = $this->LanguageLookup($frame_language, false);
+			$parsedFrame['encodingid']   = $frame_textencoding;
+			$parsedFrame['encoding']     = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['data']         = (string) substr($parsedFrame['data'], $frame_offset);
+			if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) {
+				$info['id3v2']['comments'][$parsedFrame['framenameshort']][] = getid3_lib::iconv_fallback($parsedFrame['encoding'], $info['id3v2']['encoding'], $parsedFrame['data']);
+			}
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'OWNE')) { // 4.23  OWNE Ownership frame (ID3v2.3+ only)
+			//   There may only be one 'OWNE' frame in a tag
+			// <Header for 'Ownership frame', ID: 'OWNE'>
+			// Text encoding     $xx
+			// Price paid        <text string> $00
+			// Date of purch.    <text string>
+			// Seller            <text string according to encoding>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+			$parsedFrame['encodingid'] = $frame_textencoding;
+			$parsedFrame['encoding']   = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_pricepaid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$parsedFrame['pricepaid']['currencyid'] = substr($frame_pricepaid, 0, 3);
+			$parsedFrame['pricepaid']['currency']   = $this->LookupCurrencyUnits($parsedFrame['pricepaid']['currencyid']);
+			$parsedFrame['pricepaid']['value']      = substr($frame_pricepaid, 3);
+
+			$parsedFrame['purchasedate'] = substr($parsedFrame['data'], $frame_offset, 8);
+			if (!$this->IsValidDateStampString($parsedFrame['purchasedate'])) {
+				$parsedFrame['purchasedateunix'] = mktime (0, 0, 0, substr($parsedFrame['purchasedate'], 4, 2), substr($parsedFrame['purchasedate'], 6, 2), substr($parsedFrame['purchasedate'], 0, 4));
+			}
+			$frame_offset += 8;
+
+			$parsedFrame['seller'] = (string) substr($parsedFrame['data'], $frame_offset);
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'COMR')) { // 4.24  COMR Commercial frame (ID3v2.3+ only)
+			//   There may be more than one 'commercial frame' in a tag,
+			//   but no two may be identical
+			// <Header for 'Commercial frame', ID: 'COMR'>
+			// Text encoding      $xx
+			// Price string       <text string> $00
+			// Valid until        <text string>
+			// Contact URL        <text string> $00
+			// Received as        $xx
+			// Name of seller     <text string according to encoding> $00 (00)
+			// Description        <text string according to encoding> $00 (00)
+			// Picture MIME type  <string> $00
+			// Seller logo        <binary data>
+
+			$frame_offset = 0;
+			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {
+				$info['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';
+			}
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_pricestring = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+			$frame_rawpricearray = explode('/', $frame_pricestring);
+			foreach ($frame_rawpricearray as $key => $val) {
+				$frame_currencyid = substr($val, 0, 3);
+				$parsedFrame['price'][$frame_currencyid]['currency'] = $this->LookupCurrencyUnits($frame_currencyid);
+				$parsedFrame['price'][$frame_currencyid]['value']    = substr($val, 3);
+			}
+
+			$frame_datestring = substr($parsedFrame['data'], $frame_offset, 8);
+			$frame_offset += 8;
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_contacturl = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$frame_receivedasid = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_sellername = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_sellername) === 0) {
+				$frame_sellername = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding));
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);
+			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {
+				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00
+			}
+			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_description) === 0) {
+				$frame_description = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding));
+
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$frame_sellerlogo = substr($parsedFrame['data'], $frame_offset);
+
+			$parsedFrame['encodingid']        = $frame_textencoding;
+			$parsedFrame['encoding']          = $this->TextEncodingNameLookup($frame_textencoding);
+
+			$parsedFrame['pricevaliduntil']   = $frame_datestring;
+			$parsedFrame['contacturl']        = $frame_contacturl;
+			$parsedFrame['receivedasid']      = $frame_receivedasid;
+			$parsedFrame['receivedas']        = $this->COMRReceivedAsLookup($frame_receivedasid);
+			$parsedFrame['sellername']        = $frame_sellername;
+			$parsedFrame['description']       = $frame_description;
+			$parsedFrame['mime']              = $frame_mimetype;
+			$parsedFrame['logo']              = $frame_sellerlogo;
+			unset($parsedFrame['data']);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'ENCR')) { // 4.25  ENCR Encryption method registration (ID3v2.3+ only)
+			//   There may be several 'ENCR' frames in a tag,
+			//   but only one containing the same symbol
+			//   and only one containing the same owner identifier
+			// <Header for 'Encryption method registration', ID: 'ENCR'>
+			// Owner identifier    <text string> $00
+			// Method symbol       $xx
+			// Encryption data     <binary data>
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_ownerid) === 0) {
+				$frame_ownerid = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$parsedFrame['ownerid']      = $frame_ownerid;
+			$parsedFrame['methodsymbol'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['data']         = (string) substr($parsedFrame['data'], $frame_offset);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'GRID')) { // 4.26  GRID Group identification registration (ID3v2.3+ only)
+
+			//   There may be several 'GRID' frames in a tag,
+			//   but only one containing the same symbol
+			//   and only one containing the same owner identifier
+			// <Header for 'Group ID registration', ID: 'GRID'>
+			// Owner identifier      <text string> $00
+			// Group symbol          $xx
+			// Group dependent data  <binary data>
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_ownerid) === 0) {
+				$frame_ownerid = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$parsedFrame['ownerid']       = $frame_ownerid;
+			$parsedFrame['groupsymbol']   = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['data']          = (string) substr($parsedFrame['data'], $frame_offset);
+
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'PRIV')) { // 4.27  PRIV Private frame (ID3v2.3+ only)
+			//   The tag may contain more than one 'PRIV' frame
+			//   but only with different contents
+			// <Header for 'Private frame', ID: 'PRIV'>
+			// Owner identifier      <text string> $00
+			// The private data      <binary data>
+
+			$frame_offset = 0;
+			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);
+			$frame_ownerid = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);
+			if (ord($frame_ownerid) === 0) {
+				$frame_ownerid = '';
+			}
+			$frame_offset = $frame_terminatorpos + strlen("\x00");
+
+			$parsedFrame['ownerid'] = $frame_ownerid;
+			$parsedFrame['data']    = (string) substr($parsedFrame['data'], $frame_offset);
+
+
+		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'SIGN')) { // 4.28  SIGN Signature frame (ID3v2.4+ only)
+			//   There may be more than one 'signature frame' in a tag,
+			//   but no two may be identical
+			// <Header for 'Signature frame', ID: 'SIGN'>
+			// Group symbol      $xx
+			// Signature         <binary data>
+
+			$frame_offset = 0;
+			$parsedFrame['groupsymbol'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$parsedFrame['data']        = (string) substr($parsedFrame['data'], $frame_offset);
+
+
+		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'SEEK')) { // 4.29  SEEK Seek frame (ID3v2.4+ only)
+			//   There may only be one 'seek frame' in a tag
+			// <Header for 'Seek frame', ID: 'SEEK'>
+			// Minimum offset to next tag       $xx xx xx xx
+
+			$frame_offset = 0;
+			$parsedFrame['data']          = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+
+
+		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'ASPI')) { // 4.30  ASPI Audio seek point index (ID3v2.4+ only)
+			//   There may only be one 'audio seek point index' frame in a tag
+			// <Header for 'Seek Point Index', ID: 'ASPI'>
+			// Indexed data start (S)         $xx xx xx xx
+			// Indexed data length (L)        $xx xx xx xx
+			// Number of index points (N)     $xx xx
+			// Bits per index point (b)       $xx
+			//   Then for every index point the following data is included:
+			// Fraction at index (Fi)          $xx (xx)
+
+			$frame_offset = 0;
+			$parsedFrame['datastart'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+			$frame_offset += 4;
+			$parsedFrame['indexeddatalength'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 4));
+			$frame_offset += 4;
+			$parsedFrame['indexpoints'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['bitsperpoint'] = ord(substr($parsedFrame['data'], $frame_offset++, 1));
+			$frame_bytesperpoint = ceil($parsedFrame['bitsperpoint'] / 8);
+			for ($i = 0; $i < $frame_indexpoints; $i++) {
+				$parsedFrame['indexes'][$i] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesperpoint));
+				$frame_offset += $frame_bytesperpoint;
+			}
+			unset($parsedFrame['data']);
+
+		} elseif (($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RGAD')) { // Replay Gain Adjustment
+			// http://privatewww.essex.ac.uk/~djmrob/replaygain/file_format_id3v2.html
+			//   There may only be one 'RGAD' frame in a tag
+			// <Header for 'Replay Gain Adjustment', ID: 'RGAD'>
+			// Peak Amplitude                      $xx $xx $xx $xx
+			// Radio Replay Gain Adjustment        %aaabbbcd %dddddddd
+			// Audiophile Replay Gain Adjustment   %aaabbbcd %dddddddd
+			//   a - name code
+			//   b - originator code
+			//   c - sign bit
+			//   d - replay gain adjustment
+
+			$frame_offset = 0;
+			$parsedFrame['peakamplitude'] = getid3_lib::BigEndian2Float(substr($parsedFrame['data'], $frame_offset, 4));
+			$frame_offset += 4;
+			$rg_track_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$rg_album_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2));
+			$frame_offset += 2;
+			$parsedFrame['raw']['track']['name']       = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 0, 3));
+			$parsedFrame['raw']['track']['originator'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 3, 3));
+			$parsedFrame['raw']['track']['signbit']    = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 6, 1));
+			$parsedFrame['raw']['track']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 7, 9));
+			$parsedFrame['raw']['album']['name']       = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 0, 3));
+			$parsedFrame['raw']['album']['originator'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 3, 3));
+			$parsedFrame['raw']['album']['signbit']    = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 6, 1));
+			$parsedFrame['raw']['album']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 7, 9));
+			$parsedFrame['track']['name']       = getid3_lib::RGADnameLookup($parsedFrame['raw']['track']['name']);
+			$parsedFrame['track']['originator'] = getid3_lib::RGADoriginatorLookup($parsedFrame['raw']['track']['originator']);
+			$parsedFrame['track']['adjustment'] = getid3_lib::RGADadjustmentLookup($parsedFrame['raw']['track']['adjustment'], $parsedFrame['raw']['track']['signbit']);
+			$parsedFrame['album']['name']       = getid3_lib::RGADnameLookup($parsedFrame['raw']['album']['name']);
+			$parsedFrame['album']['originator'] = getid3_lib::RGADoriginatorLookup($parsedFrame['raw']['album']['originator']);
+			$parsedFrame['album']['adjustment'] = getid3_lib::RGADadjustmentLookup($parsedFrame['raw']['album']['adjustment'], $parsedFrame['raw']['album']['signbit']);
+
+			$info['replay_gain']['track']['peak']       = $parsedFrame['peakamplitude'];
+			$info['replay_gain']['track']['originator'] = $parsedFrame['track']['originator'];
+			$info['replay_gain']['track']['adjustment'] = $parsedFrame['track']['adjustment'];
+			$info['replay_gain']['album']['originator'] = $parsedFrame['album']['originator'];
+			$info['replay_gain']['album']['adjustment'] = $parsedFrame['album']['adjustment'];
+
+			unset($parsedFrame['data']);
+
+		}
+
+		return true;
+	}
+
+
+	public function DeUnsynchronise($data) {
+		return str_replace("\xFF\x00", "\xFF", $data);
+	}
+
+	public function LookupExtendedHeaderRestrictionsTagSizeLimits($index) {
+		static $LookupExtendedHeaderRestrictionsTagSizeLimits = array(
+			0x00 => 'No more than 128 frames and 1 MB total tag size',
+			0x01 => 'No more than 64 frames and 128 KB total tag size',
+			0x02 => 'No more than 32 frames and 40 KB total tag size',
+			0x03 => 'No more than 32 frames and 4 KB total tag size',
+		);
+		return (isset($LookupExtendedHeaderRestrictionsTagSizeLimits[$index]) ? $LookupExtendedHeaderRestrictionsTagSizeLimits[$index] : '');
+	}
+
+	public function LookupExtendedHeaderRestrictionsTextEncodings($index) {
+		static $LookupExtendedHeaderRestrictionsTextEncodings = array(
+			0x00 => 'No restrictions',
+			0x01 => 'Strings are only encoded with ISO-8859-1 or UTF-8',
+		);
+		return (isset($LookupExtendedHeaderRestrictionsTextEncodings[$index]) ? $LookupExtendedHeaderRestrictionsTextEncodings[$index] : '');
+	}
+
+	public function LookupExtendedHeaderRestrictionsTextFieldSize($index) {
+		static $LookupExtendedHeaderRestrictionsTextFieldSize = array(
+			0x00 => 'No restrictions',
+			0x01 => 'No string is longer than 1024 characters',
+			0x02 => 'No string is longer than 128 characters',
+			0x03 => 'No string is longer than 30 characters',
+		);
+		return (isset($LookupExtendedHeaderRestrictionsTextFieldSize[$index]) ? $LookupExtendedHeaderRestrictionsTextFieldSize[$index] : '');
+	}
+
+	public function LookupExtendedHeaderRestrictionsImageEncoding($index) {
+		static $LookupExtendedHeaderRestrictionsImageEncoding = array(
+			0x00 => 'No restrictions',
+			0x01 => 'Images are encoded only with PNG or JPEG',
+		);
+		return (isset($LookupExtendedHeaderRestrictionsImageEncoding[$index]) ? $LookupExtendedHeaderRestrictionsImageEncoding[$index] : '');
+	}
+
+	public function LookupExtendedHeaderRestrictionsImageSizeSize($index) {
+		static $LookupExtendedHeaderRestrictionsImageSizeSize = array(
+			0x00 => 'No restrictions',
+			0x01 => 'All images are 256x256 pixels or smaller',
+			0x02 => 'All images are 64x64 pixels or smaller',
+			0x03 => 'All images are exactly 64x64 pixels, unless required otherwise',
+		);
+		return (isset($LookupExtendedHeaderRestrictionsImageSizeSize[$index]) ? $LookupExtendedHeaderRestrictionsImageSizeSize[$index] : '');
+	}
+
+	public function LookupCurrencyUnits($currencyid) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+
+			AED	Dirhams
+			AFA	Afghanis
+			ALL	Leke
+			AMD	Drams
+			ANG	Guilders
+			AOA	Kwanza
+			ARS	Pesos
+			ATS	Schillings
+			AUD	Dollars
+			AWG	Guilders
+			AZM	Manats
+			BAM	Convertible Marka
+			BBD	Dollars
+			BDT	Taka
+			BEF	Francs
+			BGL	Leva
+			BHD	Dinars
+			BIF	Francs
+			BMD	Dollars
+			BND	Dollars
+			BOB	Bolivianos
+			BRL	Brazil Real
+			BSD	Dollars
+			BTN	Ngultrum
+			BWP	Pulas
+			BYR	Rubles
+			BZD	Dollars
+			CAD	Dollars
+			CDF	Congolese Francs
+			CHF	Francs
+			CLP	Pesos
+			CNY	Yuan Renminbi
+			COP	Pesos
+			CRC	Colones
+			CUP	Pesos
+			CVE	Escudos
+			CYP	Pounds
+			CZK	Koruny
+			DEM	Deutsche Marks
+			DJF	Francs
+			DKK	Kroner
+			DOP	Pesos
+			DZD	Algeria Dinars
+			EEK	Krooni
+			EGP	Pounds
+			ERN	Nakfa
+			ESP	Pesetas
+			ETB	Birr
+			EUR	Euro
+			FIM	Markkaa
+			FJD	Dollars
+			FKP	Pounds
+			FRF	Francs
+			GBP	Pounds
+			GEL	Lari
+			GGP	Pounds
+			GHC	Cedis
+			GIP	Pounds
+			GMD	Dalasi
+			GNF	Francs
+			GRD	Drachmae
+			GTQ	Quetzales
+			GYD	Dollars
+			HKD	Dollars
+			HNL	Lempiras
+			HRK	Kuna
+			HTG	Gourdes
+			HUF	Forints
+			IDR	Rupiahs
+			IEP	Pounds
+			ILS	New Shekels
+			IMP	Pounds
+			INR	Rupees
+			IQD	Dinars
+			IRR	Rials
+			ISK	Kronur
+			ITL	Lire
+			JEP	Pounds
+			JMD	Dollars
+			JOD	Dinars
+			JPY	Yen
+			KES	Shillings
+			KGS	Soms
+			KHR	Riels
+			KMF	Francs
+			KPW	Won
+			KWD	Dinars
+			KYD	Dollars
+			KZT	Tenge
+			LAK	Kips
+			LBP	Pounds
+			LKR	Rupees
+			LRD	Dollars
+			LSL	Maloti
+			LTL	Litai
+			LUF	Francs
+			LVL	Lati
+			LYD	Dinars
+			MAD	Dirhams
+			MDL	Lei
+			MGF	Malagasy Francs
+			MKD	Denars
+			MMK	Kyats
+			MNT	Tugriks
+			MOP	Patacas
+			MRO	Ouguiyas
+			MTL	Liri
+			MUR	Rupees
+			MVR	Rufiyaa
+			MWK	Kwachas
+			MXN	Pesos
+			MYR	Ringgits
+			MZM	Meticais
+			NAD	Dollars
+			NGN	Nairas
+			NIO	Gold Cordobas
+			NLG	Guilders
+			NOK	Krone
+			NPR	Nepal Rupees
+			NZD	Dollars
+			OMR	Rials
+			PAB	Balboa
+			PEN	Nuevos Soles
+			PGK	Kina
+			PHP	Pesos
+			PKR	Rupees
+			PLN	Zlotych
+			PTE	Escudos
+			PYG	Guarani
+			QAR	Rials
+			ROL	Lei
+			RUR	Rubles
+			RWF	Rwanda Francs
+			SAR	Riyals
+			SBD	Dollars
+			SCR	Rupees
+			SDD	Dinars
+			SEK	Kronor
+			SGD	Dollars
+			SHP	Pounds
+			SIT	Tolars
+			SKK	Koruny
+			SLL	Leones
+			SOS	Shillings
+			SPL	Luigini
+			SRG	Guilders
+			STD	Dobras
+			SVC	Colones
+			SYP	Pounds
+			SZL	Emalangeni
+			THB	Baht
+			TJR	Rubles
+			TMM	Manats
+			TND	Dinars
+			TOP	Pa'anga
+			TRL	Liras
+			TTD	Dollars
+			TVD	Tuvalu Dollars
+			TWD	New Dollars
+			TZS	Shillings
+			UAH	Hryvnia
+			UGX	Shillings
+			USD	Dollars
+			UYU	Pesos
+			UZS	Sums
+			VAL	Lire
+			VEB	Bolivares
+			VND	Dong
+			VUV	Vatu
+			WST	Tala
+			XAF	Francs
+			XAG	Ounces
+			XAU	Ounces
+			XCD	Dollars
+			XDR	Special Drawing Rights
+			XPD	Ounces
+			XPF	Francs
+			XPT	Ounces
+			YER	Rials
+			YUM	New Dinars
+			ZAR	Rand
+			ZMK	Kwacha
+			ZWD	Zimbabwe Dollars
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($currencyid, $begin, __LINE__, __FILE__, 'id3v2-currency-units');
+	}
+
+
+	public function LookupCurrencyCountry($currencyid) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			AED	United Arab Emirates
+			AFA	Afghanistan
+			ALL	Albania
+			AMD	Armenia
+			ANG	Netherlands Antilles
+			AOA	Angola
+			ARS	Argentina
+			ATS	Austria
+			AUD	Australia
+			AWG	Aruba
+			AZM	Azerbaijan
+			BAM	Bosnia and Herzegovina
+			BBD	Barbados
+			BDT	Bangladesh
+			BEF	Belgium
+			BGL	Bulgaria
+			BHD	Bahrain
+			BIF	Burundi
+			BMD	Bermuda
+			BND	Brunei Darussalam
+			BOB	Bolivia
+			BRL	Brazil
+			BSD	Bahamas
+			BTN	Bhutan
+			BWP	Botswana
+			BYR	Belarus
+			BZD	Belize
+			CAD	Canada
+			CDF	Congo/Kinshasa
+			CHF	Switzerland
+			CLP	Chile
+			CNY	China
+			COP	Colombia
+			CRC	Costa Rica
+			CUP	Cuba
+			CVE	Cape Verde
+			CYP	Cyprus
+			CZK	Czech Republic
+			DEM	Germany
+			DJF	Djibouti
+			DKK	Denmark
+			DOP	Dominican Republic
+			DZD	Algeria
+			EEK	Estonia
+			EGP	Egypt
+			ERN	Eritrea
+			ESP	Spain
+			ETB	Ethiopia
+			EUR	Euro Member Countries
+			FIM	Finland
+			FJD	Fiji
+			FKP	Falkland Islands (Malvinas)
+			FRF	France
+			GBP	United Kingdom
+			GEL	Georgia
+			GGP	Guernsey
+			GHC	Ghana
+			GIP	Gibraltar
+			GMD	Gambia
+			GNF	Guinea
+			GRD	Greece
+			GTQ	Guatemala
+			GYD	Guyana
+			HKD	Hong Kong
+			HNL	Honduras
+			HRK	Croatia
+			HTG	Haiti
+			HUF	Hungary
+			IDR	Indonesia
+			IEP	Ireland (Eire)
+			ILS	Israel
+			IMP	Isle of Man
+			INR	India
+			IQD	Iraq
+			IRR	Iran
+			ISK	Iceland
+			ITL	Italy
+			JEP	Jersey
+			JMD	Jamaica
+			JOD	Jordan
+			JPY	Japan
+			KES	Kenya
+			KGS	Kyrgyzstan
+			KHR	Cambodia
+			KMF	Comoros
+			KPW	Korea
+			KWD	Kuwait
+			KYD	Cayman Islands
+			KZT	Kazakstan
+			LAK	Laos
+			LBP	Lebanon
+			LKR	Sri Lanka
+			LRD	Liberia
+			LSL	Lesotho
+			LTL	Lithuania
+			LUF	Luxembourg
+			LVL	Latvia
+			LYD	Libya
+			MAD	Morocco
+			MDL	Moldova
+			MGF	Madagascar
+			MKD	Macedonia
+			MMK	Myanmar (Burma)
+			MNT	Mongolia
+			MOP	Macau
+			MRO	Mauritania
+			MTL	Malta
+			MUR	Mauritius
+			MVR	Maldives (Maldive Islands)
+			MWK	Malawi
+			MXN	Mexico
+			MYR	Malaysia
+			MZM	Mozambique
+			NAD	Namibia
+			NGN	Nigeria
+			NIO	Nicaragua
+			NLG	Netherlands (Holland)
+			NOK	Norway
+			NPR	Nepal
+			NZD	New Zealand
+			OMR	Oman
+			PAB	Panama
+			PEN	Peru
+			PGK	Papua New Guinea
+			PHP	Philippines
+			PKR	Pakistan
+			PLN	Poland
+			PTE	Portugal
+			PYG	Paraguay
+			QAR	Qatar
+			ROL	Romania
+			RUR	Russia
+			RWF	Rwanda
+			SAR	Saudi Arabia
+			SBD	Solomon Islands
+			SCR	Seychelles
+			SDD	Sudan
+			SEK	Sweden
+			SGD	Singapore
+			SHP	Saint Helena
+			SIT	Slovenia
+			SKK	Slovakia
+			SLL	Sierra Leone
+			SOS	Somalia
+			SPL	Seborga
+			SRG	Suriname
+			STD	São Tome and Principe
+			SVC	El Salvador
+			SYP	Syria
+			SZL	Swaziland
+			THB	Thailand
+			TJR	Tajikistan
+			TMM	Turkmenistan
+			TND	Tunisia
+			TOP	Tonga
+			TRL	Turkey
+			TTD	Trinidad and Tobago
+			TVD	Tuvalu
+			TWD	Taiwan
+			TZS	Tanzania
+			UAH	Ukraine
+			UGX	Uganda
+			USD	United States of America
+			UYU	Uruguay
+			UZS	Uzbekistan
+			VAL	Vatican City
+			VEB	Venezuela
+			VND	Viet Nam
+			VUV	Vanuatu
+			WST	Samoa
+			XAF	Communauté Financière Africaine
+			XAG	Silver
+			XAU	Gold
+			XCD	East Caribbean
+			XDR	International Monetary Fund
+			XPD	Palladium
+			XPF	Comptoirs Français du Pacifique
+			XPT	Platinum
+			YER	Yemen
+			YUM	Yugoslavia
+			ZAR	South Africa
+			ZMK	Zambia
+			ZWD	Zimbabwe
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($currencyid, $begin, __LINE__, __FILE__, 'id3v2-currency-country');
+	}
+
+
+
+	public static function LanguageLookup($languagecode, $casesensitive=false) {
+
+		if (!$casesensitive) {
+			$languagecode = strtolower($languagecode);
+		}
+
+		// http://www.id3.org/id3v2.4.0-structure.txt
+		// [4.   ID3v2 frame overview]
+		// The three byte language field, present in several frames, is used to
+		// describe the language of the frame's content, according to ISO-639-2
+		// [ISO-639-2]. The language should be represented in lower case. If the
+		// language is not known the string "XXX" should be used.
+
+
+		// ISO 639-2 - http://www.id3.org/iso639-2.html
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			XXX	unknown
+			xxx	unknown
+			aar	Afar
+			abk	Abkhazian
+			ace	Achinese
+			ach	Acoli
+			ada	Adangme
+			afa	Afro-Asiatic (Other)
+			afh	Afrihili
+			afr	Afrikaans
+			aka	Akan
+			akk	Akkadian
+			alb	Albanian
+			ale	Aleut
+			alg	Algonquian Languages
+			amh	Amharic
+			ang	English, Old (ca. 450-1100)
+			apa	Apache Languages
+			ara	Arabic
+			arc	Aramaic
+			arm	Armenian
+			arn	Araucanian
+			arp	Arapaho
+			art	Artificial (Other)
+			arw	Arawak
+			asm	Assamese
+			ath	Athapascan Languages
+			ava	Avaric
+			ave	Avestan
+			awa	Awadhi
+			aym	Aymara
+			aze	Azerbaijani
+			bad	Banda
+			bai	Bamileke Languages
+			bak	Bashkir
+			bal	Baluchi
+			bam	Bambara
+			ban	Balinese
+			baq	Basque
+			bas	Basa
+			bat	Baltic (Other)
+			bej	Beja
+			bel	Byelorussian
+			bem	Bemba
+			ben	Bengali
+			ber	Berber (Other)
+			bho	Bhojpuri
+			bih	Bihari
+			bik	Bikol
+			bin	Bini
+			bis	Bislama
+			bla	Siksika
+			bnt	Bantu (Other)
+			bod	Tibetan
+			bra	Braj
+			bre	Breton
+			bua	Buriat
+			bug	Buginese
+			bul	Bulgarian
+			bur	Burmese
+			cad	Caddo
+			cai	Central American Indian (Other)
+			car	Carib
+			cat	Catalan
+			cau	Caucasian (Other)
+			ceb	Cebuano
+			cel	Celtic (Other)
+			ces	Czech
+			cha	Chamorro
+			chb	Chibcha
+			che	Chechen
+			chg	Chagatai
+			chi	Chinese
+			chm	Mari
+			chn	Chinook jargon
+			cho	Choctaw
+			chr	Cherokee
+			chu	Church Slavic
+			chv	Chuvash
+			chy	Cheyenne
+			cop	Coptic
+			cor	Cornish
+			cos	Corsican
+			cpe	Creoles and Pidgins, English-based (Other)
+			cpf	Creoles and Pidgins, French-based (Other)
+			cpp	Creoles and Pidgins, Portuguese-based (Other)
+			cre	Cree
+			crp	Creoles and Pidgins (Other)
+			cus	Cushitic (Other)
+			cym	Welsh
+			cze	Czech
+			dak	Dakota
+			dan	Danish
+			del	Delaware
+			deu	German
+			din	Dinka
+			div	Divehi
+			doi	Dogri
+			dra	Dravidian (Other)
+			dua	Duala
+			dum	Dutch, Middle (ca. 1050-1350)
+			dut	Dutch
+			dyu	Dyula
+			dzo	Dzongkha
+			efi	Efik
+			egy	Egyptian (Ancient)
+			eka	Ekajuk
+			ell	Greek, Modern (1453-)
+			elx	Elamite
+			eng	English
+			enm	English, Middle (ca. 1100-1500)
+			epo	Esperanto
+			esk	Eskimo (Other)
+			esl	Spanish
+			est	Estonian
+			eus	Basque
+			ewe	Ewe
+			ewo	Ewondo
+			fan	Fang
+			fao	Faroese
+			fas	Persian
+			fat	Fanti
+			fij	Fijian
+			fin	Finnish
+			fiu	Finno-Ugrian (Other)
+			fon	Fon
+			fra	French
+			fre	French
+			frm	French, Middle (ca. 1400-1600)
+			fro	French, Old (842- ca. 1400)
+			fry	Frisian
+			ful	Fulah
+			gaa	Ga
+			gae	Gaelic (Scots)
+			gai	Irish
+			gay	Gayo
+			gdh	Gaelic (Scots)
+			gem	Germanic (Other)
+			geo	Georgian
+			ger	German
+			gez	Geez
+			gil	Gilbertese
+			glg	Gallegan
+			gmh	German, Middle High (ca. 1050-1500)
+			goh	German, Old High (ca. 750-1050)
+			gon	Gondi
+			got	Gothic
+			grb	Grebo
+			grc	Greek, Ancient (to 1453)
+			gre	Greek, Modern (1453-)
+			grn	Guarani
+			guj	Gujarati
+			hai	Haida
+			hau	Hausa
+			haw	Hawaiian
+			heb	Hebrew
+			her	Herero
+			hil	Hiligaynon
+			him	Himachali
+			hin	Hindi
+			hmo	Hiri Motu
+			hun	Hungarian
+			hup	Hupa
+			hye	Armenian
+			iba	Iban
+			ibo	Igbo
+			ice	Icelandic
+			ijo	Ijo
+			iku	Inuktitut
+			ilo	Iloko
+			ina	Interlingua (International Auxiliary language Association)
+			inc	Indic (Other)
+			ind	Indonesian
+			ine	Indo-European (Other)
+			ine	Interlingue
+			ipk	Inupiak
+			ira	Iranian (Other)
+			iri	Irish
+			iro	Iroquoian uages
+			isl	Icelandic
+			ita	Italian
+			jav	Javanese
+			jaw	Javanese
+			jpn	Japanese
+			jpr	Judeo-Persian
+			jrb	Judeo-Arabic
+			kaa	Kara-Kalpak
+			kab	Kabyle
+			kac	Kachin
+			kal	Greenlandic
+			kam	Kamba
+			kan	Kannada
+			kar	Karen
+			kas	Kashmiri
+			kat	Georgian
+			kau	Kanuri
+			kaw	Kawi
+			kaz	Kazakh
+			kha	Khasi
+			khi	Khoisan (Other)
+			khm	Khmer
+			kho	Khotanese
+			kik	Kikuyu
+			kin	Kinyarwanda
+			kir	Kirghiz
+			kok	Konkani
+			kom	Komi
+			kon	Kongo
+			kor	Korean
+			kpe	Kpelle
+			kro	Kru
+			kru	Kurukh
+			kua	Kuanyama
+			kum	Kumyk
+			kur	Kurdish
+			kus	Kusaie
+			kut	Kutenai
+			lad	Ladino
+			lah	Lahnda
+			lam	Lamba
+			lao	Lao
+			lat	Latin
+			lav	Latvian
+			lez	Lezghian
+			lin	Lingala
+			lit	Lithuanian
+			lol	Mongo
+			loz	Lozi
+			ltz	Letzeburgesch
+			lub	Luba-Katanga
+			lug	Ganda
+			lui	Luiseno
+			lun	Lunda
+			luo	Luo (Kenya and Tanzania)
+			mac	Macedonian
+			mad	Madurese
+			mag	Magahi
+			mah	Marshall
+			mai	Maithili
+			mak	Macedonian
+			mak	Makasar
+			mal	Malayalam
+			man	Mandingo
+			mao	Maori
+			map	Austronesian (Other)
+			mar	Marathi
+			mas	Masai
+			max	Manx
+			may	Malay
+			men	Mende
+			mga	Irish, Middle (900 - 1200)
+			mic	Micmac
+			min	Minangkabau
+			mis	Miscellaneous (Other)
+			mkh	Mon-Kmer (Other)
+			mlg	Malagasy
+			mlt	Maltese
+			mni	Manipuri
+			mno	Manobo Languages
+			moh	Mohawk
+			mol	Moldavian
+			mon	Mongolian
+			mos	Mossi
+			mri	Maori
+			msa	Malay
+			mul	Multiple Languages
+			mun	Munda Languages
+			mus	Creek
+			mwr	Marwari
+			mya	Burmese
+			myn	Mayan Languages
+			nah	Aztec
+			nai	North American Indian (Other)
+			nau	Nauru
+			nav	Navajo
+			nbl	Ndebele, South
+			nde	Ndebele, North
+			ndo	Ndongo
+			nep	Nepali
+			new	Newari
+			nic	Niger-Kordofanian (Other)
+			niu	Niuean
+			nla	Dutch
+			nno	Norwegian (Nynorsk)
+			non	Norse, Old
+			nor	Norwegian
+			nso	Sotho, Northern
+			nub	Nubian Languages
+			nya	Nyanja
+			nym	Nyamwezi
+			nyn	Nyankole
+			nyo	Nyoro
+			nzi	Nzima
+			oci	Langue d'Oc (post 1500)
+			oji	Ojibwa
+			ori	Oriya
+			orm	Oromo
+			osa	Osage
+			oss	Ossetic
+			ota	Turkish, Ottoman (1500 - 1928)
+			oto	Otomian Languages
+			paa	Papuan-Australian (Other)
+			pag	Pangasinan
+			pal	Pahlavi
+			pam	Pampanga
+			pan	Panjabi
+			pap	Papiamento
+			pau	Palauan
+			peo	Persian, Old (ca 600 - 400 B.C.)
+			per	Persian
+			phn	Phoenician
+			pli	Pali
+			pol	Polish
+			pon	Ponape
+			por	Portuguese
+			pra	Prakrit uages
+			pro	Provencal, Old (to 1500)
+			pus	Pushto
+			que	Quechua
+			raj	Rajasthani
+			rar	Rarotongan
+			roa	Romance (Other)
+			roh	Rhaeto-Romance
+			rom	Romany
+			ron	Romanian
+			rum	Romanian
+			run	Rundi
+			rus	Russian
+			sad	Sandawe
+			sag	Sango
+			sah	Yakut
+			sai	South American Indian (Other)
+			sal	Salishan Languages
+			sam	Samaritan Aramaic
+			san	Sanskrit
+			sco	Scots
+			scr	Serbo-Croatian
+			sel	Selkup
+			sem	Semitic (Other)
+			sga	Irish, Old (to 900)
+			shn	Shan
+			sid	Sidamo
+			sin	Singhalese
+			sio	Siouan Languages
+			sit	Sino-Tibetan (Other)
+			sla	Slavic (Other)
+			slk	Slovak
+			slo	Slovak
+			slv	Slovenian
+			smi	Sami Languages
+			smo	Samoan
+			sna	Shona
+			snd	Sindhi
+			sog	Sogdian
+			som	Somali
+			son	Songhai
+			sot	Sotho, Southern
+			spa	Spanish
+			sqi	Albanian
+			srd	Sardinian
+			srr	Serer
+			ssa	Nilo-Saharan (Other)
+			ssw	Siswant
+			ssw	Swazi
+			suk	Sukuma
+			sun	Sudanese
+			sus	Susu
+			sux	Sumerian
+			sve	Swedish
+			swa	Swahili
+			swe	Swedish
+			syr	Syriac
+			tah	Tahitian
+			tam	Tamil
+			tat	Tatar
+			tel	Telugu
+			tem	Timne
+			ter	Tereno
+			tgk	Tajik
+			tgl	Tagalog
+			tha	Thai
+			tib	Tibetan
+			tig	Tigre
+			tir	Tigrinya
+			tiv	Tivi
+			tli	Tlingit
+			tmh	Tamashek
+			tog	Tonga (Nyasa)
+			ton	Tonga (Tonga Islands)
+			tru	Truk
+			tsi	Tsimshian
+			tsn	Tswana
+			tso	Tsonga
+			tuk	Turkmen
+			tum	Tumbuka
+			tur	Turkish
+			tut	Altaic (Other)
+			twi	Twi
+			tyv	Tuvinian
+			uga	Ugaritic
+			uig	Uighur
+			ukr	Ukrainian
+			umb	Umbundu
+			und	Undetermined
+			urd	Urdu
+			uzb	Uzbek
+			vai	Vai
+			ven	Venda
+			vie	Vietnamese
+			vol	Volapük
+			vot	Votic
+			wak	Wakashan Languages
+			wal	Walamo
+			war	Waray
+			was	Washo
+			wel	Welsh
+			wen	Sorbian Languages
+			wol	Wolof
+			xho	Xhosa
+			yao	Yao
+			yap	Yap
+			yid	Yiddish
+			yor	Yoruba
+			zap	Zapotec
+			zen	Zenaga
+			zha	Zhuang
+			zho	Chinese
+			zul	Zulu
+			zun	Zuni
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($languagecode, $begin, __LINE__, __FILE__, 'id3v2-languagecode');
+	}
+
+
+	public static function ETCOEventLookup($index) {
+		if (($index >= 0x17) && ($index <= 0xDF)) {
+			return 'reserved for future use';
+		}
+		if (($index >= 0xE0) && ($index <= 0xEF)) {
+			return 'not predefined synch 0-F';
+		}
+		if (($index >= 0xF0) && ($index <= 0xFC)) {
+			return 'reserved for future use';
+		}
+
+		static $EventLookup = array(
+			0x00 => 'padding (has no meaning)',
+			0x01 => 'end of initial silence',
+			0x02 => 'intro start',
+			0x03 => 'main part start',
+			0x04 => 'outro start',
+			0x05 => 'outro end',
+			0x06 => 'verse start',
+			0x07 => 'refrain start',
+			0x08 => 'interlude start',
+			0x09 => 'theme start',
+			0x0A => 'variation start',
+			0x0B => 'key change',
+			0x0C => 'time change',
+			0x0D => 'momentary unwanted noise (Snap, Crackle & Pop)',
+			0x0E => 'sustained noise',
+			0x0F => 'sustained noise end',
+			0x10 => 'intro end',
+			0x11 => 'main part end',
+			0x12 => 'verse end',
+			0x13 => 'refrain end',
+			0x14 => 'theme end',
+			0x15 => 'profanity',
+			0x16 => 'profanity end',
+			0xFD => 'audio end (start of silence)',
+			0xFE => 'audio file ends',
+			0xFF => 'one more byte of events follows'
+		);
+
+		return (isset($EventLookup[$index]) ? $EventLookup[$index] : '');
+	}
+
+	public static function SYTLContentTypeLookup($index) {
+		static $SYTLContentTypeLookup = array(
+			0x00 => 'other',
+			0x01 => 'lyrics',
+			0x02 => 'text transcription',
+			0x03 => 'movement/part name', // (e.g. 'Adagio')
+			0x04 => 'events',             // (e.g. 'Don Quijote enters the stage')
+			0x05 => 'chord',              // (e.g. 'Bb F Fsus')
+			0x06 => 'trivia/\'pop up\' information',
+			0x07 => 'URLs to webpages',
+			0x08 => 'URLs to images'
+		);
+
+		return (isset($SYTLContentTypeLookup[$index]) ? $SYTLContentTypeLookup[$index] : '');
+	}
+
+	public static function APICPictureTypeLookup($index, $returnarray=false) {
+		static $APICPictureTypeLookup = array(
+			0x00 => 'Other',
+			0x01 => '32x32 pixels \'file icon\' (PNG only)',
+			0x02 => 'Other file icon',
+			0x03 => 'Cover (front)',
+			0x04 => 'Cover (back)',
+			0x05 => 'Leaflet page',
+			0x06 => 'Media (e.g. label side of CD)',
+			0x07 => 'Lead artist/lead performer/soloist',
+			0x08 => 'Artist/performer',
+			0x09 => 'Conductor',
+			0x0A => 'Band/Orchestra',
+			0x0B => 'Composer',
+			0x0C => 'Lyricist/text writer',
+			0x0D => 'Recording Location',
+			0x0E => 'During recording',
+			0x0F => 'During performance',
+			0x10 => 'Movie/video screen capture',
+			0x11 => 'A bright coloured fish',
+			0x12 => 'Illustration',
+			0x13 => 'Band/artist logotype',
+			0x14 => 'Publisher/Studio logotype'
+		);
+		if ($returnarray) {
+			return $APICPictureTypeLookup;
+		}
+		return (isset($APICPictureTypeLookup[$index]) ? $APICPictureTypeLookup[$index] : '');
+	}
+
+	public static function COMRReceivedAsLookup($index) {
+		static $COMRReceivedAsLookup = array(
+			0x00 => 'Other',
+			0x01 => 'Standard CD album with other songs',
+			0x02 => 'Compressed audio on CD',
+			0x03 => 'File over the Internet',
+			0x04 => 'Stream over the Internet',
+			0x05 => 'As note sheets',
+			0x06 => 'As note sheets in a book with other sheets',
+			0x07 => 'Music on other media',
+			0x08 => 'Non-musical merchandise'
+		);
+
+		return (isset($COMRReceivedAsLookup[$index]) ? $COMRReceivedAsLookup[$index] : '');
+	}
+
+	public static function RVA2ChannelTypeLookup($index) {
+		static $RVA2ChannelTypeLookup = array(
+			0x00 => 'Other',
+			0x01 => 'Master volume',
+			0x02 => 'Front right',
+			0x03 => 'Front left',
+			0x04 => 'Back right',
+			0x05 => 'Back left',
+			0x06 => 'Front centre',
+			0x07 => 'Back centre',
+			0x08 => 'Subwoofer'
+		);
+
+		return (isset($RVA2ChannelTypeLookup[$index]) ? $RVA2ChannelTypeLookup[$index] : '');
+	}
+
+	public static function FrameNameLongLookup($framename) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			AENC	Audio encryption
+			APIC	Attached picture
+			ASPI	Audio seek point index
+			BUF	Recommended buffer size
+			CNT	Play counter
+			COM	Comments
+			COMM	Comments
+			COMR	Commercial frame
+			CRA	Audio encryption
+			CRM	Encrypted meta frame
+			ENCR	Encryption method registration
+			EQU	Equalisation
+			EQU2	Equalisation (2)
+			EQUA	Equalisation
+			ETC	Event timing codes
+			ETCO	Event timing codes
+			GEO	General encapsulated object
+			GEOB	General encapsulated object
+			GRID	Group identification registration
+			IPL	Involved people list
+			IPLS	Involved people list
+			LINK	Linked information
+			LNK	Linked information
+			MCDI	Music CD identifier
+			MCI	Music CD Identifier
+			MLL	MPEG location lookup table
+			MLLT	MPEG location lookup table
+			OWNE	Ownership frame
+			PCNT	Play counter
+			PIC	Attached picture
+			POP	Popularimeter
+			POPM	Popularimeter
+			POSS	Position synchronisation frame
+			PRIV	Private frame
+			RBUF	Recommended buffer size
+			REV	Reverb
+			RVA	Relative volume adjustment
+			RVA2	Relative volume adjustment (2)
+			RVAD	Relative volume adjustment
+			RVRB	Reverb
+			SEEK	Seek frame
+			SIGN	Signature frame
+			SLT	Synchronised lyric/text
+			STC	Synced tempo codes
+			SYLT	Synchronised lyric/text
+			SYTC	Synchronised tempo codes
+			TAL	Album/Movie/Show title
+			TALB	Album/Movie/Show title
+			TBP	BPM (Beats Per Minute)
+			TBPM	BPM (beats per minute)
+			TCM	Composer
+			TCMP	Part of a compilation
+			TCO	Content type
+			TCOM	Composer
+			TCON	Content type
+			TCOP	Copyright message
+			TCP	Part of a compilation
+			TCR	Copyright message
+			TDA	Date
+			TDAT	Date
+			TDEN	Encoding time
+			TDLY	Playlist delay
+			TDOR	Original release time
+			TDRC	Recording time
+			TDRL	Release time
+			TDTG	Tagging time
+			TDY	Playlist delay
+			TEN	Encoded by
+			TENC	Encoded by
+			TEXT	Lyricist/Text writer
+			TFLT	File type
+			TFT	File type
+			TIM	Time
+			TIME	Time
+			TIPL	Involved people list
+			TIT1	Content group description
+			TIT2	Title/songname/content description
+			TIT3	Subtitle/Description refinement
+			TKE	Initial key
+			TKEY	Initial key
+			TLA	Language(s)
+			TLAN	Language(s)
+			TLE	Length
+			TLEN	Length
+			TMCL	Musician credits list
+			TMED	Media type
+			TMOO	Mood
+			TMT	Media type
+			TOA	Original artist(s)/performer(s)
+			TOAL	Original album/movie/show title
+			TOF	Original filename
+			TOFN	Original filename
+			TOL	Original Lyricist(s)/text writer(s)
+			TOLY	Original lyricist(s)/text writer(s)
+			TOPE	Original artist(s)/performer(s)
+			TOR	Original release year
+			TORY	Original release year
+			TOT	Original album/Movie/Show title
+			TOWN	File owner/licensee
+			TP1	Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group
+			TP2	Band/Orchestra/Accompaniment
+			TP3	Conductor/Performer refinement
+			TP4	Interpreted, remixed, or otherwise modified by
+			TPA	Part of a set
+			TPB	Publisher
+			TPE1	Lead performer(s)/Soloist(s)
+			TPE2	Band/orchestra/accompaniment
+			TPE3	Conductor/performer refinement
+			TPE4	Interpreted, remixed, or otherwise modified by
+			TPOS	Part of a set
+			TPRO	Produced notice
+			TPUB	Publisher
+			TRC	ISRC (International Standard Recording Code)
+			TRCK	Track number/Position in set
+			TRD	Recording dates
+			TRDA	Recording dates
+			TRK	Track number/Position in set
+			TRSN	Internet radio station name
+			TRSO	Internet radio station owner
+			TS2	Album-Artist sort order
+			TSA	Album sort order
+			TSC	Composer sort order
+			TSI	Size
+			TSIZ	Size
+			TSO2	Album-Artist sort order
+			TSOA	Album sort order
+			TSOC	Composer sort order
+			TSOP	Performer sort order
+			TSOT	Title sort order
+			TSP	Performer sort order
+			TSRC	ISRC (international standard recording code)
+			TSS	Software/hardware and settings used for encoding
+			TSSE	Software/Hardware and settings used for encoding
+			TSST	Set subtitle
+			TST	Title sort order
+			TT1	Content group description
+			TT2	Title/Songname/Content description
+			TT3	Subtitle/Description refinement
+			TXT	Lyricist/text writer
+			TXX	User defined text information frame
+			TXXX	User defined text information frame
+			TYE	Year
+			TYER	Year
+			UFI	Unique file identifier
+			UFID	Unique file identifier
+			ULT	Unsychronised lyric/text transcription
+			USER	Terms of use
+			USLT	Unsynchronised lyric/text transcription
+			WAF	Official audio file webpage
+			WAR	Official artist/performer webpage
+			WAS	Official audio source webpage
+			WCM	Commercial information
+			WCOM	Commercial information
+			WCOP	Copyright/Legal information
+			WCP	Copyright/Legal information
+			WOAF	Official audio file webpage
+			WOAR	Official artist/performer webpage
+			WOAS	Official audio source webpage
+			WORS	Official Internet radio station homepage
+			WPAY	Payment
+			WPB	Publishers official webpage
+			WPUB	Publishers official webpage
+			WXX	User defined URL link frame
+			WXXX	User defined URL link frame
+			TFEA	Featured Artist
+			TSTU	Recording Studio
+			rgad	Replay Gain Adjustment
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($framename, $begin, __LINE__, __FILE__, 'id3v2-framename_long');
+
+		// Last three:
+		// from Helium2 [www.helium2.com]
+		// from http://privatewww.essex.ac.uk/~djmrob/replaygain/file_format_id3v2.html
+	}
+
+
+	public static function FrameNameShortLookup($framename) {
+
+		$begin = __LINE__;
+
+		/** This is not a comment!
+
+			AENC	audio_encryption
+			APIC	attached_picture
+			ASPI	audio_seek_point_index
+			BUF	recommended_buffer_size
+			CNT	play_counter
+			COM	comment
+			COMM	comment
+			COMR	commercial_frame
+			CRA	audio_encryption
+			CRM	encrypted_meta_frame
+			ENCR	encryption_method_registration
+			EQU	equalisation
+			EQU2	equalisation
+			EQUA	equalisation
+			ETC	event_timing_codes
+			ETCO	event_timing_codes
+			GEO	general_encapsulated_object
+			GEOB	general_encapsulated_object
+			GRID	group_identification_registration
+			IPL	involved_people_list
+			IPLS	involved_people_list
+			LINK	linked_information
+			LNK	linked_information
+			MCDI	music_cd_identifier
+			MCI	music_cd_identifier
+			MLL	mpeg_location_lookup_table
+			MLLT	mpeg_location_lookup_table
+			OWNE	ownership_frame
+			PCNT	play_counter
+			PIC	attached_picture
+			POP	popularimeter
+			POPM	popularimeter
+			POSS	position_synchronisation_frame
+			PRIV	private_frame
+			RBUF	recommended_buffer_size
+			REV	reverb
+			RVA	relative_volume_adjustment
+			RVA2	relative_volume_adjustment
+			RVAD	relative_volume_adjustment
+			RVRB	reverb
+			SEEK	seek_frame
+			SIGN	signature_frame
+			SLT	synchronised_lyric
+			STC	synced_tempo_codes
+			SYLT	synchronised_lyric
+			SYTC	synchronised_tempo_codes
+			TAL	album
+			TALB	album
+			TBP	bpm
+			TBPM	bpm
+			TCM	composer
+			TCMP	part_of_a_compilation
+			TCO	genre
+			TCOM	composer
+			TCON	genre
+			TCOP	copyright_message
+			TCP	part_of_a_compilation
+			TCR	copyright_message
+			TDA	date
+			TDAT	date
+			TDEN	encoding_time
+			TDLY	playlist_delay
+			TDOR	original_release_time
+			TDRC	recording_time
+			TDRL	release_time
+			TDTG	tagging_time
+			TDY	playlist_delay
+			TEN	encoded_by
+			TENC	encoded_by
+			TEXT	lyricist
+			TFLT	file_type
+			TFT	file_type
+			TIM	time
+			TIME	time
+			TIPL	involved_people_list
+			TIT1	content_group_description
+			TIT2	title
+			TIT3	subtitle
+			TKE	initial_key
+			TKEY	initial_key
+			TLA	language
+			TLAN	language
+			TLE	length
+			TLEN	length
+			TMCL	musician_credits_list
+			TMED	media_type
+			TMOO	mood
+			TMT	media_type
+			TOA	original_artist
+			TOAL	original_album
+			TOF	original_filename
+			TOFN	original_filename
+			TOL	original_lyricist
+			TOLY	original_lyricist
+			TOPE	original_artist
+			TOR	original_year
+			TORY	original_year
+			TOT	original_album
+			TOWN	file_owner
+			TP1	artist
+			TP2	band
+			TP3	conductor
+			TP4	remixer
+			TPA	part_of_a_set
+			TPB	publisher
+			TPE1	artist
+			TPE2	band
+			TPE3	conductor
+			TPE4	remixer
+			TPOS	part_of_a_set
+			TPRO	produced_notice
+			TPUB	publisher
+			TRC	isrc
+			TRCK	track_number
+			TRD	recording_dates
+			TRDA	recording_dates
+			TRK	track_number
+			TRSN	internet_radio_station_name
+			TRSO	internet_radio_station_owner
+			TS2	album_artist_sort_order
+			TSA	album_sort_order
+			TSC	composer_sort_order
+			TSI	size
+			TSIZ	size
+			TSO2	album_artist_sort_order
+			TSOA	album_sort_order
+			TSOC	composer_sort_order
+			TSOP	performer_sort_order
+			TSOT	title_sort_order
+			TSP	performer_sort_order
+			TSRC	isrc
+			TSS	encoder_settings
+			TSSE	encoder_settings
+			TSST	set_subtitle
+			TST	title_sort_order
+			TT1	content_group_description
+			TT2	title
+			TT3	subtitle
+			TXT	lyricist
+			TXX	text
+			TXXX	text
+			TYE	year
+			TYER	year
+			UFI	unique_file_identifier
+			UFID	unique_file_identifier
+			ULT	unsychronised_lyric
+			USER	terms_of_use
+			USLT	unsynchronised_lyric
+			WAF	url_file
+			WAR	url_artist
+			WAS	url_source
+			WCM	commercial_information
+			WCOM	commercial_information
+			WCOP	copyright
+			WCP	copyright
+			WOAF	url_file
+			WOAR	url_artist
+			WOAS	url_source
+			WORS	url_station
+			WPAY	url_payment
+			WPB	url_publisher
+			WPUB	url_publisher
+			WXX	url_user
+			WXXX	url_user
+			TFEA	featured_artist
+			TSTU	recording_studio
+			rgad	replay_gain_adjustment
+
+		*/
+
+		return getid3_lib::EmbeddedLookup($framename, $begin, __LINE__, __FILE__, 'id3v2-framename_short');
+	}
+
+	public static function TextEncodingTerminatorLookup($encoding) {
+		// http://www.id3.org/id3v2.4.0-structure.txt
+		// Frames that allow different types of text encoding contains a text encoding description byte. Possible encodings:
+		static $TextEncodingTerminatorLookup = array(
+			0   => "\x00",     // $00  ISO-8859-1. Terminated with $00.
+			1   => "\x00\x00", // $01  UTF-16 encoded Unicode with BOM. All strings in the same frame SHALL have the same byteorder. Terminated with $00 00.
+			2   => "\x00\x00", // $02  UTF-16BE encoded Unicode without BOM. Terminated with $00 00.
+			3   => "\x00",     // $03  UTF-8 encoded Unicode. Terminated with $00.
+			255 => "\x00\x00"
+		);
+		return (isset($TextEncodingTerminatorLookup[$encoding]) ? $TextEncodingTerminatorLookup[$encoding] : '');
+	}
+
+	public static function TextEncodingNameLookup($encoding) {
+		// http://www.id3.org/id3v2.4.0-structure.txt
+		// Frames that allow different types of text encoding contains a text encoding description byte. Possible encodings:
+		static $TextEncodingNameLookup = array(
+			0   => 'ISO-8859-1', // $00  ISO-8859-1. Terminated with $00.
+			1   => 'UTF-16',     // $01  UTF-16 encoded Unicode with BOM. All strings in the same frame SHALL have the same byteorder. Terminated with $00 00.
+			2   => 'UTF-16BE',   // $02  UTF-16BE encoded Unicode without BOM. Terminated with $00 00.
+			3   => 'UTF-8',      // $03  UTF-8 encoded Unicode. Terminated with $00.
+			255 => 'UTF-16BE'
+		);
+		return (isset($TextEncodingNameLookup[$encoding]) ? $TextEncodingNameLookup[$encoding] : 'ISO-8859-1');
+	}
+
+	public static function IsValidID3v2FrameName($framename, $id3v2majorversion) {
+		switch ($id3v2majorversion) {
+			case 2:
+				return preg_match('#[A-Z][A-Z0-9]{2}#', $framename);
+				break;
+
+			case 3:
+			case 4:
+				return preg_match('#[A-Z][A-Z0-9]{3}#', $framename);
+				break;
+		}
+		return false;
+	}
+
+	public static function IsANumber($numberstring, $allowdecimal=false, $allownegative=false) {
+		for ($i = 0; $i < strlen($numberstring); $i++) {
+			if ((chr($numberstring{$i}) < chr('0')) || (chr($numberstring{$i}) > chr('9'))) {
+				if (($numberstring{$i} == '.') && $allowdecimal) {
+					// allowed
+				} elseif (($numberstring{$i} == '-') && $allownegative && ($i == 0)) {
+					// allowed
+				} else {
+					return false;
+				}
+			}
+		}
+		return true;
+	}
+
+	public static function IsValidDateStampString($datestamp) {
+		if (strlen($datestamp) != 8) {
+			return false;
+		}
+		if (!self::IsANumber($datestamp, false)) {
+			return false;
+		}
+		$year  = substr($datestamp, 0, 4);
+		$month = substr($datestamp, 4, 2);
+		$day   = substr($datestamp, 6, 2);
+		if (($year == 0) || ($month == 0) || ($day == 0)) {
+			return false;
+		}
+		if ($month > 12) {
+			return false;
+		}
+		if ($day > 31) {
+			return false;
+		}
+		if (($day > 30) && (($month == 4) || ($month == 6) || ($month == 9) || ($month == 11))) {
+			return false;
+		}
+		if (($day > 29) && ($month == 2)) {
+			return false;
+		}
+		return true;
+	}
+
+	public static function ID3v2HeaderLength($majorversion) {
+		return (($majorversion == 2) ? 6 : 10);
+	}
+
+}
+
diff --git a/wp-includes/ID3/module.tag.lyrics3.php b/wp-includes/ID3/module.tag.lyrics3.php
new file mode 100644
index 000000000..108d7aeea
--- /dev/null
+++ b/wp-includes/ID3/module.tag.lyrics3.php
@@ -0,0 +1,294 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+///                                                            //
+// module.tag.lyrics3.php                                      //
+// module for analyzing Lyrics3 tags                           //
+// dependencies: module.tag.apetag.php (optional)              //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+
+
+class getid3_lyrics3 extends getid3_handler
+{
+
+	public function Analyze() {
+		$info = &$this->getid3->info;
+
+		// http://www.volweb.cz/str/tags.htm
+
+		if (!getid3_lib::intValueSupported($info['filesize'])) {
+			$info['warning'][] = 'Unable to check for Lyrics3 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
+			return false;
+		}
+
+		fseek($this->getid3->fp, (0 - 128 - 9 - 6), SEEK_END);          // end - ID3v1 - "LYRICSEND" - [Lyrics3size]
+		$lyrics3_id3v1 = fread($this->getid3->fp, 128 + 9 + 6);
+		$lyrics3lsz    = substr($lyrics3_id3v1,  0,   6); // Lyrics3size
+		$lyrics3end    = substr($lyrics3_id3v1,  6,   9); // LYRICSEND or LYRICS200
+		$id3v1tag      = substr($lyrics3_id3v1, 15, 128); // ID3v1
+
+		if ($lyrics3end == 'LYRICSEND') {
+			// Lyrics3v1, ID3v1, no APE
+
+			$lyrics3size    = 5100;
+			$lyrics3offset  = $info['filesize'] - 128 - $lyrics3size;
+			$lyrics3version = 1;
+
+		} elseif ($lyrics3end == 'LYRICS200') {
+			// Lyrics3v2, ID3v1, no APE
+
+			// LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200'
+			$lyrics3size    = $lyrics3lsz + 6 + strlen('LYRICS200');
+			$lyrics3offset  = $info['filesize'] - 128 - $lyrics3size;
+			$lyrics3version = 2;
+
+		} elseif (substr(strrev($lyrics3_id3v1), 0, 9) == strrev('LYRICSEND')) {
+			// Lyrics3v1, no ID3v1, no APE
+
+			$lyrics3size    = 5100;
+			$lyrics3offset  = $info['filesize'] - $lyrics3size;
+			$lyrics3version = 1;
+			$lyrics3offset  = $info['filesize'] - $lyrics3size;
+
+		} elseif (substr(strrev($lyrics3_id3v1), 0, 9) == strrev('LYRICS200')) {
+
+			// Lyrics3v2, no ID3v1, no APE
+
+			$lyrics3size    = strrev(substr(strrev($lyrics3_id3v1), 9, 6)) + 6 + strlen('LYRICS200'); // LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200'
+			$lyrics3offset  = $info['filesize'] - $lyrics3size;
+			$lyrics3version = 2;
+
+		} else {
+
+			if (isset($info['ape']['tag_offset_start']) && ($info['ape']['tag_offset_start'] > 15)) {
+
+				fseek($this->getid3->fp, $info['ape']['tag_offset_start'] - 15, SEEK_SET);
+				$lyrics3lsz = fread($this->getid3->fp, 6);
+				$lyrics3end = fread($this->getid3->fp, 9);
+
+				if ($lyrics3end == 'LYRICSEND') {
+					// Lyrics3v1, APE, maybe ID3v1
+
+					$lyrics3size    = 5100;
+					$lyrics3offset  = $info['ape']['tag_offset_start'] - $lyrics3size;
+					$info['avdataend'] = $lyrics3offset;
+					$lyrics3version = 1;
+					$info['warning'][] = 'APE tag located after Lyrics3, will probably break Lyrics3 compatability';
+
+				} elseif ($lyrics3end == 'LYRICS200') {
+					// Lyrics3v2, APE, maybe ID3v1
+
+					$lyrics3size    = $lyrics3lsz + 6 + strlen('LYRICS200'); // LSZ = lyrics + 'LYRICSBEGIN'; add 6-byte size field; add 'LYRICS200'
+					$lyrics3offset  = $info['ape']['tag_offset_start'] - $lyrics3size;
+					$lyrics3version = 2;
+					$info['warning'][] = 'APE tag located after Lyrics3, will probably break Lyrics3 compatability';
+
+				}
+
+			}
+
+		}
+
+		if (isset($lyrics3offset)) {
+			$info['avdataend'] = $lyrics3offset;
+			$this->getLyrics3Data($lyrics3offset, $lyrics3version, $lyrics3size);
+
+			if (!isset($info['ape'])) {
+				$GETID3_ERRORARRAY = &$info['warning'];
+				if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.apetag.php', __FILE__, false)) {
+					$getid3_temp = new getID3();
+					$getid3_temp->openfile($this->getid3->filename);
+					$getid3_apetag = new getid3_apetag($getid3_temp);
+					$getid3_apetag->overrideendoffset = $info['lyrics3']['tag_offset_start'];
+					$getid3_apetag->Analyze();
+					if (!empty($getid3_temp->info['ape'])) {
+						$info['ape'] = $getid3_temp->info['ape'];
+					}
+					if (!empty($getid3_temp->info['replay_gain'])) {
+						$info['replay_gain'] = $getid3_temp->info['replay_gain'];
+					}
+					unset($getid3_temp, $getid3_apetag);
+				}
+			}
+
+		}
+
+		return true;
+	}
+
+	public function getLyrics3Data($endoffset, $version, $length) {
+		// http://www.volweb.cz/str/tags.htm
+
+		$info = &$this->getid3->info;
+
+		if (!getid3_lib::intValueSupported($endoffset)) {
+			$info['warning'][] = 'Unable to check for Lyrics3 because file is larger than '.round(PHP_INT_MAX / 1073741824).'GB';
+			return false;
+		}
+
+		fseek($this->getid3->fp, $endoffset, SEEK_SET);
+		if ($length <= 0) {
+			return false;
+		}
+		$rawdata = fread($this->getid3->fp, $length);
+
+		$ParsedLyrics3['raw']['lyrics3version'] = $version;
+		$ParsedLyrics3['raw']['lyrics3tagsize'] = $length;
+		$ParsedLyrics3['tag_offset_start']      = $endoffset;
+		$ParsedLyrics3['tag_offset_end']        = $endoffset + $length - 1;
+
+		if (substr($rawdata, 0, 11) != 'LYRICSBEGIN') {
+			if (strpos($rawdata, 'LYRICSBEGIN') !== false) {
+
+				$info['warning'][] = '"LYRICSBEGIN" expected at '.$endoffset.' but actually found at '.($endoffset + strpos($rawdata, 'LYRICSBEGIN')).' - this is invalid for Lyrics3 v'.$version;
+				$info['avdataend'] = $endoffset + strpos($rawdata, 'LYRICSBEGIN');
+				$rawdata = substr($rawdata, strpos($rawdata, 'LYRICSBEGIN'));
+				$length = strlen($rawdata);
+				$ParsedLyrics3['tag_offset_start'] = $info['avdataend'];
+				$ParsedLyrics3['raw']['lyrics3tagsize'] = $length;
+
+			} else {
+
+				$info['error'][] = '"LYRICSBEGIN" expected at '.$endoffset.' but found "'.substr($rawdata, 0, 11).'" instead';
+				return false;
+
+			}
+
+		}
+
+		switch ($version) {
+
+			case 1:
+				if (substr($rawdata, strlen($rawdata) - 9, 9) == 'LYRICSEND') {
+					$ParsedLyrics3['raw']['LYR'] = trim(substr($rawdata, 11, strlen($rawdata) - 11 - 9));
+					$this->Lyrics3LyricsTimestampParse($ParsedLyrics3);
+				} else {
+					$info['error'][] = '"LYRICSEND" expected at '.(ftell($this->getid3->fp) - 11 + $length - 9).' but found "'.substr($rawdata, strlen($rawdata) - 9, 9).'" instead';
+					return false;
+				}
+				break;
+
+			case 2:
+				if (substr($rawdata, strlen($rawdata) - 9, 9) == 'LYRICS200') {
+					$ParsedLyrics3['raw']['unparsed'] = substr($rawdata, 11, strlen($rawdata) - 11 - 9 - 6); // LYRICSBEGIN + LYRICS200 + LSZ
+					$rawdata = $ParsedLyrics3['raw']['unparsed'];
+					while (strlen($rawdata) > 0) {
+						$fieldname = substr($rawdata, 0, 3);
+						$fieldsize = (int) substr($rawdata, 3, 5);
+						$ParsedLyrics3['raw'][$fieldname] = substr($rawdata, 8, $fieldsize);
+						$rawdata = substr($rawdata, 3 + 5 + $fieldsize);
+					}
+
+					if (isset($ParsedLyrics3['raw']['IND'])) {
+						$i = 0;
+						$flagnames = array('lyrics', 'timestamps', 'inhibitrandom');
+						foreach ($flagnames as $flagname) {
+							if (strlen($ParsedLyrics3['raw']['IND']) > $i++) {
+								$ParsedLyrics3['flags'][$flagname] = $this->IntString2Bool(substr($ParsedLyrics3['raw']['IND'], $i, 1 - 1));
+							}
+						}
+					}
+
+					$fieldnametranslation = array('ETT'=>'title', 'EAR'=>'artist', 'EAL'=>'album', 'INF'=>'comment', 'AUT'=>'author');
+					foreach ($fieldnametranslation as $key => $value) {
+						if (isset($ParsedLyrics3['raw'][$key])) {
+							$ParsedLyrics3['comments'][$value][] = trim($ParsedLyrics3['raw'][$key]);
+						}
+					}
+
+					if (isset($ParsedLyrics3['raw']['IMG'])) {
+						$imagestrings = explode("\r\n", $ParsedLyrics3['raw']['IMG']);
+						foreach ($imagestrings as $key => $imagestring) {
+							if (strpos($imagestring, '||') !== false) {
+								$imagearray = explode('||', $imagestring);
+								$ParsedLyrics3['images'][$key]['filename']     =                                (isset($imagearray[0]) ? $imagearray[0] : '');
+								$ParsedLyrics3['images'][$key]['description']  =                                (isset($imagearray[1]) ? $imagearray[1] : '');
+								$ParsedLyrics3['images'][$key]['timestamp']    = $this->Lyrics3Timestamp2Seconds(isset($imagearray[2]) ? $imagearray[2] : '');
+							}
+						}
+					}
+					if (isset($ParsedLyrics3['raw']['LYR'])) {
+						$this->Lyrics3LyricsTimestampParse($ParsedLyrics3);
+					}
+				} else {
+					$info['error'][] = '"LYRICS200" expected at '.(ftell($this->getid3->fp) - 11 + $length - 9).' but found "'.substr($rawdata, strlen($rawdata) - 9, 9).'" instead';
+					return false;
+				}
+				break;
+
+			default:
+				$info['error'][] = 'Cannot process Lyrics3 version '.$version.' (only v1 and v2)';
+				return false;
+				break;
+		}
+
+
+		if (isset($info['id3v1']['tag_offset_start']) && ($info['id3v1']['tag_offset_start'] <= $ParsedLyrics3['tag_offset_end'])) {
+			$info['warning'][] = 'ID3v1 tag information ignored since it appears to be a false synch in Lyrics3 tag data';
+			unset($info['id3v1']);
+			foreach ($info['warning'] as $key => $value) {
+				if ($value == 'Some ID3v1 fields do not use NULL characters for padding') {
+					unset($info['warning'][$key]);
+					sort($info['warning']);
+					break;
+				}
+			}
+		}
+
+		$info['lyrics3'] = $ParsedLyrics3;
+
+		return true;
+	}
+
+	public function Lyrics3Timestamp2Seconds($rawtimestamp) {
+		if (preg_match('#^\\[([0-9]{2}):([0-9]{2})\\]$#', $rawtimestamp, $regs)) {
+			return (int) (($regs[1] * 60) + $regs[2]);
+		}
+		return false;
+	}
+
+	public function Lyrics3LyricsTimestampParse(&$Lyrics3data) {
+		$lyricsarray = explode("\r\n", $Lyrics3data['raw']['LYR']);
+		foreach ($lyricsarray as $key => $lyricline) {
+			$regs = array();
+			unset($thislinetimestamps);
+			while (preg_match('#^(\\[[0-9]{2}:[0-9]{2}\\])#', $lyricline, $regs)) {
+				$thislinetimestamps[] = $this->Lyrics3Timestamp2Seconds($regs[0]);
+				$lyricline = str_replace($regs[0], '', $lyricline);
+			}
+			$notimestamplyricsarray[$key] = $lyricline;
+			if (isset($thislinetimestamps) && is_array($thislinetimestamps)) {
+				sort($thislinetimestamps);
+				foreach ($thislinetimestamps as $timestampkey => $timestamp) {
+					if (isset($Lyrics3data['synchedlyrics'][$timestamp])) {
+						// timestamps only have a 1-second resolution, it's possible that multiple lines
+						// could have the same timestamp, if so, append
+						$Lyrics3data['synchedlyrics'][$timestamp] .= "\r\n".$lyricline;
+					} else {
+						$Lyrics3data['synchedlyrics'][$timestamp] = $lyricline;
+					}
+				}
+			}
+		}
+		$Lyrics3data['unsynchedlyrics'] = implode("\r\n", $notimestamplyricsarray);
+		if (isset($Lyrics3data['synchedlyrics']) && is_array($Lyrics3data['synchedlyrics'])) {
+			ksort($Lyrics3data['synchedlyrics']);
+		}
+		return true;
+	}
+
+	public function IntString2Bool($char) {
+		if ($char == '1') {
+			return true;
+		} elseif ($char == '0') {
+			return false;
+		}
+		return null;
+	}
+}
diff --git a/wp-includes/ID3/readme.txt b/wp-includes/ID3/readme.txt
new file mode 100644
index 000000000..337e84f35
--- /dev/null
+++ b/wp-includes/ID3/readme.txt
@@ -0,0 +1,603 @@
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+
+*****************************************************************
+*****************************************************************
+
+   getID3() is released under multiple licenses. You may choose
+   from the following licenses, and use getID3 according to the
+   terms of the license most suitable to your project.
+
+GNU GPL: https://gnu.org/licenses/gpl.html                   (v3)
+         https://gnu.org/licenses/old-licenses/gpl-2.0.html  (v2)
+         https://gnu.org/licenses/old-licenses/gpl-1.0.html  (v1)
+
+GNU LGPL: https://gnu.org/licenses/lgpl.html                 (v3)
+
+Mozilla MPL: http://www.mozilla.org/MPL/2.0/                 (v2)
+
+getID3 Commercial License: http://getid3.org/#gCL (payment required)
+
+*****************************************************************
+*****************************************************************
+Copies of each of the above licenses are included in the 'licenses'
+directory of the getID3 distribution.
+
+
+       +---------------------------------------------+
+       | If you want to donate, there is a link on   |
+       | http://www.getid3.org for PayPal donations. |
+       +---------------------------------------------+
+
+
+Quick Start
+===========================================================================
+
+Q: How can I check that getID3() works on my server/files?
+A: Unzip getID3() to a directory, then access /demos/demo.browse.php
+
+
+
+Support
+===========================================================================
+
+Q: I have a question, or I found a bug. What do I do?
+A: The preferred method of support requests and/or bug reports is the
+   forum at http://support.getid3.org/
+
+
+
+Sourceforge Notification
+===========================================================================
+
+It's highly recommended that you sign up for notification from
+Sourceforge for when new versions are released. Please visit:
+http://sourceforge.net/project/showfiles.php?group_id=55859
+and click the little "monitor package" icon/link.  If you're
+previously signed up for the mailing list, be aware that it has
+been discontinued, only the automated Sourceforge notification
+will be used from now on.
+
+
+
+What does getID3() do?
+===========================================================================
+
+Reads & parses (to varying degrees):
+# tags:
+  * APE (v1 and v2)
+  * ID3v1 (& ID3v1.1)
+  * ID3v2 (v2.4, v2.3, v2.2)
+  * Lyrics3 (v1 & v2)
+
+# audio-lossy:
+  * MP3/MP2/MP1
+  * MPC / Musepack
+  * Ogg (Vorbis, OggFLAC, Speex)
+  * AAC / MP4
+  * AC3
+  * DTS
+  * RealAudio
+  * Speex
+  * DSS
+  * VQF
+
+# audio-lossless:
+  * AIFF
+  * AU
+  * Bonk
+  * CD-audio (*.cda)
+  * FLAC
+  * LA (Lossless Audio)
+  * LiteWave
+  * LPAC
+  * MIDI
+  * Monkey's Audio
+  * OptimFROG
+  * RKAU
+  * Shorten
+  * TTA
+  * VOC
+  * WAV (RIFF)
+  * WavPack
+
+# audio-video:
+  * ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV)
+  * AVI (RIFF)
+  * Flash
+  * Matroska (MKV)
+  * MPEG-1 / MPEG-2
+  * NSV (Nullsoft Streaming Video)
+  * Quicktime (including MP4)
+  * RealVideo
+
+# still image:
+  * BMP
+  * GIF
+  * JPEG
+  * PNG
+  * TIFF
+  * SWF (Flash)
+  * PhotoCD
+
+# data:
+  * ISO-9660 CD-ROM image (directory structure)
+  * SZIP (limited support)
+  * ZIP (directory structure)
+  * TAR
+  * CUE
+
+
+Writes:
+  * ID3v1 (& ID3v1.1)
+  * ID3v2 (v2.3 & v2.4)
+  * VorbisComment on OggVorbis
+  * VorbisComment on FLAC (not OggFLAC)
+  * APE v2
+  * Lyrics3 (delete only)
+
+
+
+Requirements
+===========================================================================
+
+* PHP 4.2.0 up to 5.2.x for getID3() 1.7.x (and earlier)
+* PHP 5.0.5 (or higher) for getID3() 1.8.x (and up)
+* PHP 5.0.5 (or higher) for getID3() 2.0.x (and up)
+* at least 4MB memory for PHP. 8MB or more is highly recommended.
+  12MB is required with all modules loaded.
+
+
+
+Usage
+===========================================================================
+
+See /demos/demo.basic.php for a very basic use of getID3() with no
+fancy output, just scanning one file.
+
+See structure.txt for the returned data structure.
+
+*>  For an example of a complete directory-browsing,       <*
+*>  file-scanning implementation of getID3(), please run   <*
+*>  /demos/demo.browse.php                                 <*
+
+See /demos/demo.mysql.php for a sample recursive scanning code that
+scans every file in a given directory, and all sub-directories, stores
+the results in a database and allows various analysis / maintenance
+operations
+
+To analyze remote files over HTTP or FTP you need to copy the file
+locally first before running getID3(). Your code would look something
+like this:
+
+// Copy remote file locally to scan with getID3()
+$remotefilename = 'http://www.example.com/filename.mp3';
+if ($fp_remote = fopen($remotefilename, 'rb')) {
+    $localtempfilename = tempnam('/tmp', 'getID3');
+    if ($fp_local = fopen($localtempfilename, 'wb')) {
+        while ($buffer = fread($fp_remote, 8192)) {
+            fwrite($fp_local, $buffer);
+        }
+        fclose($fp_local);
+
+		// Initialize getID3 engine
+		$getID3 = new getID3;
+
+		$ThisFileInfo = $getID3->analyze($filename);
+
+        // Delete temporary file
+        unlink($localtempfilename);
+    }
+    fclose($fp_remote);
+}
+
+
+See /demos/demo.write.php for how to write tags.
+
+
+
+What does the returned data structure look like?
+===========================================================================
+
+See structure.txt
+
+It is recommended that you look at the output of
+/demos/demo.browse.php scanning the file(s) you're interested in to
+confirm what data is actually returned for any particular filetype in
+general, and your files in particular, as the actual data returned
+may vary considerably depending on what information is available in
+the file itself.
+
+
+
+Notes
+===========================================================================
+
+getID3() 1.x:
+If the format parser encounters a critical problem, it will return
+something in $fileinfo['error'], describing the encountered error. If
+a less critical error or notice is generated it will appear in
+$fileinfo['warning']. Both keys may contain more than one warning or
+error. If something is returned in ['error'] then the file was not
+correctly parsed and returned data may or may not be correct and/or
+complete. If something is returned in ['warning'] (and not ['error'])
+then the data that is returned is OK - usually getID3() is reporting
+errors in the file that have been worked around due to known bugs in
+other programs. Some warnings may indicate that the data that is
+returned is OK but that some data could not be extracted due to
+errors in the file.
+
+getID3() 2.x:
+See above except errors are thrown (so you will only get one error).
+
+
+
+Disclaimer
+===========================================================================
+
+getID3() has been tested on many systems, on many types of files,
+under many operating systems, and is generally believe to be stable
+and safe. That being said, there is still the chance there is an
+undiscovered and/or unfixed bug that may potentially corrupt your
+file, especially within the writing functions. By using getID3() you
+agree that it's not my fault if any of your files are corrupted.
+In fact, I'm not liable for anything :)
+
+
+
+License
+===========================================================================
+
+GNU General Public License - see license.txt
+
+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:
+Free Software Foundation, Inc.
+59 Temple Place - Suite 330
+Boston, MA  02111-1307, USA.
+
+FAQ:
+Q: Can I use getID3() in my program? Do I need a commercial license?
+A: You're generally free to use getID3 however you see fit. The only
+   case in which you would require a commercial license is if you're
+   selling your closed-source program that integrates getID3. If you
+   sell your program including a copy of getID3, that's fine as long
+   as you include a copy of the sourcecode when you sell it.  Or you
+   can distribute your code without getID3 and say "download it from
+   getid3.sourceforge.net"
+
+
+
+Why is it called "getID3()" if it does so much more than just that?
+===========================================================================
+
+v0.1 did in fact just do that. I don't have a copy of code that old, but I
+could essentially write it today with a one-line function:
+  function getID3($filename) { return unpack('a3TAG/a30title/a30artist/a30album/a4year/a28comment/c1track/c1genreid', substr(file_get_contents($filename), -128)); }
+
+
+Future Plans
+===========================================================================
+http://www.getid3.org/phpBB3/viewforum.php?f=7
+
+* Better support for MP4 container format
+* Scan for appended ID3v2 tag at end of file per ID3v2.4 specs (Section 5.0)
+* Support for JPEG-2000 (http://www.morgan-multimedia.com/jpeg2000_overview.htm)
+* Support for MOD (mod/stm/s3m/it/xm/mtm/ult/669)
+* Support for ACE (thanks Vince)
+* Support for Ogg other than Vorbis, Speex and OggFlac (ie. Ogg+Xvid)
+* Ability to create Xing/LAME VBR header for VBR MP3s that are missing VBR header
+* Ability to "clean" ID3v2 padding (replace invalid padding with valid padding)
+* Warn if MP3s change version mid-stream (in full-scan mode)
+* check for corrupt/broken mid-file MP3 streams in histogram scan
+* Support for lossless-compression formats
+  (http://www.firstpr.com.au/audiocomp/lossless/#Links)
+  (http://compression.ca/act-sound.html)
+  (http://web.inter.nl.net/users/hvdh/lossless/lossless.htm)
+* Support for RIFF-INFO chunks
+  * http://lotto.st-andrews.ac.uk/~njh/tag_interchange.html
+    (thanks Nick Humfrey <njh@surgeradio*co*uk>)
+  * http://abcavi.narod.ru/sof/abcavi/infotags.htm
+    (thanks Kibi)
+* Better support for Bink video
+* http://www.hr/josip/DSP/AudioFile2.html
+* http://www.pcisys.net/~melanson/codecs/
+* Detect mp3PRO
+* Support for PSD
+* Support for JPC
+* Support for JP2
+* Support for JPX
+* Support for JB2
+* Support for IFF
+* Support for ICO
+* Support for ANI
+* Support for EXE (comments, author, etc) (thanks p*quaedackers@planet*nl)
+* Support for DVD-IFO (region, subtitles, aspect ratio, etc)
+  (thanks p*quaedackers@planet*nl)
+* More complete support for SWF - parsing encapsulated MP3 and/or JPEG content
+    (thanks n8n8@yahoo*com)
+* Support for a2b
+* Optional scan-through-frames for AVI verification
+  (thanks rockcohen@massive-interactive*nl)
+* Support for TTF (thanks info@butterflyx*com)
+* Support for DSS (http://www.getid3.org/phpBB3/viewtopic.php?t=171)
+* Support for SMAF (http://smaf-yamaha.com/what/demo.html)
+  http://www.getid3.org/phpBB3/viewtopic.php?t=182
+* Support for AMR (http://www.getid3.org/phpBB3/viewtopic.php?t=195)
+* Support for 3gpp (http://www.getid3.org/phpBB3/viewtopic.php?t=195)
+* Support for ID4 (http://www.wackysoft.cjb.net grizlyY2K@hotmail*com)
+* Parse XML data returned in Ogg comments
+* Parse XML data from Quicktime SMIL metafiles (klausrath@mac*com)
+* ID3v2 genre string creator function
+* More complete parsing of JPG
+* Support for all old-style ASF packets
+* ASF/WMA/WMV tag writing
+* Parse declared T??? ID3v2 text information frames, where appropriate
+    (thanks Christian Fritz for the idea)
+* Recognize encoder:
+  http://www.guerillasoft.com/EncSpot2/index.html
+  http://ff123.net/identify.html
+  http://www.hydrogenaudio.org/?act=ST&f=16&t=9414
+  http://www.hydrogenaudio.org/?showtopic=11785
+* Support for other OS/2 bitmap structures: Bitmap Array('BA'),
+  Color Icon('CI'), Color Pointer('CP'), Icon('IC'), Pointer ('PT')
+  http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
+* Support for WavPack RAW mode
+* ASF/WMA/WMV data packet parsing
+* ID3v2FrameFlagsLookupTagAlter()
+* ID3v2FrameFlagsLookupFileAlter()
+* obey ID3v2 tag alter/preserve/discard rules
+* http://www.geocities.com/SiliconValley/Sector/9654/Softdoc/Illyrium/Aolyr.htm
+* proper checking for LINK/LNK frame validity in ID3v2 writing
+* proper checking for ASPI-TLEN frame validity in ID3v2 writing
+* proper checking for COMR frame validity in ID3v2 writing
+* http://www.geocities.co.jp/SiliconValley-Oakland/3664/index.html
+* decode GEOB ID3v2 structure as encoded by RealJukebox,
+  decode NCON ID3v2 structure as encoded by MusicMatch
+  (probably won't happen - the formats are proprietary)
+
+
+
+Known Bugs/Issues in getID3() that may be fixed eventually
+===========================================================================
+http://www.getid3.org/phpBB3/viewtopic.php?t=25
+
+* Cannot determine bitrate for MPEG video with VBR video data
+  (need documentation)
+* Interlace/progressive cannot be determined for MPEG video
+  (need documentation)
+* MIDI playtime is sometimes inaccurate
+* AAC-RAW mode files cannot be identified
+* WavPack-RAW mode files cannot be identified
+* mp4 files report lots of "Unknown QuickTime atom type"
+   (need documentation)
+* Encrypted ASF/WMA/WMV files warn about "unhandled GUID
+  ASF_Content_Encryption_Object"
+* Bitrate split between audio and video cannot be calculated for
+  NSV, only the total bitrate. (need documentation)
+* All Ogg formats (Vorbis, OggFLAC, Speex) are affected by the
+  problem of large VorbisComments spanning multiple Ogg pages, but
+  but only OggVorbis files can be processed with vorbiscomment.
+* The version of "head" supplied with Mac OS 10.2.8 (maybe other
+  versions too) does only understands a single option (-n) and
+  therefore fails. getID3 ignores this and returns wrong md5_data.
+
+
+
+Known Bugs/Issues in getID3() that cannot be fixed
+--------------------------------------------------
+http://www.getid3.org/phpBB3/viewtopic.php?t=25
+
+* 32-bit PHP installations only:
+  Files larger than 2GB cannot always be parsed fully by getID3()
+  due to limitations in the 32-bit PHP filesystem functions.
+  NOTE: Since v1.7.8b3 there is partial support for larger-than-
+  2GB files, most of which will parse OK, as long as no critical
+  data is located beyond the 2GB offset.
+  Known will-work:
+  * all file formats on 64-bit PHP
+  * ZIP  (format doesn't support files >2GB)
+  * FLAC (current encoders don't support files >2GB)
+  Known will-not-work:
+  * ID3v1 tags (always located at end-of-file)
+  * Lyrics3 tags (always located at end-of-file)
+  * APE tags (always located at end-of-file)
+  Maybe-will-work:
+  * Quicktime (will work if needed metadata is before 2GB offset,
+    that is if the file has been hinted/optimized for streaming)
+  * RIFF.WAV (should work fine, but gives warnings about not being
+    able to parse all chunks)
+  * RIFF.AVI (playtime will probably be wrong, is only based on
+    "movi" chunk that fits in the first 2GB, should issue error
+    to show that playtime is incorrect. Other data should be mostly
+    correct, assuming that data is constant throughout the file)
+
+
+
+Known Bugs/Issues in other programs
+-----------------------------------
+http://www.getid3.org/phpBB3/viewtopic.php?t=25
+
+* Windows Media Player (up to v11) and iTunes (up to v10+) do
+    not correctly handle ID3v2.3 tags with UTF-16BE+BOM
+    encoding (they assume the data is UTF-16LE+BOM and either
+    crash (WMP) or output Asian character set (iTunes)
+* Winamp (up to v2.80 at least) does not support ID3v2.4 tags,
+    only ID3v2.3
+    see: http://forums.winamp.com/showthread.php?postid=387524
+* Some versions of Helium2 (www.helium2.com) do not write
+    ID3v2.4-compliant Frame Sizes, even though the tag is marked
+    as ID3v2.4)  (detected by getID3())
+* MP3ext V3.3.17 places a non-compliant padding string at the end
+    of the ID3v2 header. This is supposedly fixed in v3.4b21 but
+    only if you manually add a registry key. This fix is not yet
+    confirmed.  (detected by getID3())
+* CDex v1.40 (fixed by v1.50b7) writes non-compliant Ogg comment
+    strings, supposed to be in the format "NAME=value" but actually
+    written just "value"  (detected by getID3())
+* Oggenc 0.9-rc3 flags the encoded file as ABR whether it's
+    actually ABR or VBR.
+* iTunes (versions "X v2.0.3", "v3.0.1" are known-guilty, probably
+    other versions are too) writes ID3v2.3 comment tags using a
+    frame name 'COM ' which is not valid for ID3v2.3+ (it's an
+    ID3v2.2-style frame name)  (detected by getID3())
+* MP2enc does not encode mono CBR MP2 files properly (half speed
+    sound and double playtime)
+* MP2enc does not encode mono VBR MP2 files properly (actually
+    encoded as stereo)
+* tooLAME does not encode mono VBR MP2 files properly (actually
+    encoded as stereo)
+* AACenc encodes files in VBR mode (actually ABR) even if CBR is
+   specified
+* AAC/ADIF - bitrate_mode = cbr for vbr files
+* LAME 3.90-3.92 prepends one frame of null data (space for the
+  LAME/VBR header, but it never gets written) when encoding in CBR
+  mode with the DLL
+* Ahead Nero encodes TwinVQF with a DSIZ value (which is supposed
+  to be the filesize in bytes) of "0" for TwinVQF v1.0 and "1" for
+  TwinVQF v2.0  (detected by getID3())
+* Ahead Nero encodes TwinVQF files 1 second shorter than they
+  should be
+* AAC-ADTS files are always actually encoded VBR, even if CBR mode
+  is specified (the CBR-mode switches on the encoder enable ABR
+  mode, not CBR as such, but it's not possible to tell the
+  difference between such ABR files and true VBR)
+* STREAMINFO.audio_signature in OggFLAC is always null. "The reason
+  it's like that is because there is no seeking support in
+  libOggFLAC yet, so it has no way to go back and write the
+  computed sum after encoding. Seeking support in Ogg FLAC is the
+  #1 item for the next release." - Josh Coalson (FLAC developer)
+  NOTE: getID3() will calculate md5_data in a method similar to
+  other file formats, but that value cannot be compared to the
+  md5_data value from FLAC data in a FLAC file format.
+* STREAMINFO.audio_signature is not calculated in FLAC v0.3.0 &
+  v0.4.0 - getID3() will calculate md5_data in a method similar to
+  other file formats, but that value cannot be compared to the
+  md5_data value from FLAC v0.5.0+
+* RioPort (various versions including 2.0 and 3.11) tags ID3v2 with
+  a WCOM frame that has no data portion
+* Earlier versions of Coolplayer adds illegal ID3 tags to Ogg Vorbis
+  files, thus making them corrupt.
+* Meracl ID3 Tag Writer v1.3.4 (and older) incorrectly truncates the
+  last byte of data from an MP3 file when appending a new ID3v1 tag.
+  (detected by getID3())
+* Lossless-Audio files encoded with and without the -noseek switch
+  do actually differ internally and therefore cannot match md5_data
+* iTunes has been known to append a new ID3v1 tag on the end of an
+  existing ID3v1 tag when ID3v2 tag is also present
+  (detected by getID3())
+* MediaMonkey may write a blank RGAD ID3v2 frame but put actual
+  replay gain adjustments in a series of user-defined TXXX frames
+  (detected and handled by getID3() since v1.9.2)
+
+
+
+
+Reference material:
+===========================================================================
+
+[www.id3.org material now mirrored at http://id3lib.sourceforge.net/id3/]
+* http://www.id3.org/id3v2.4.0-structure.txt
+* http://www.id3.org/id3v2.4.0-frames.txt
+* http://www.id3.org/id3v2.4.0-changes.txt
+* http://www.id3.org/id3v2.3.0.txt
+* http://www.id3.org/id3v2-00.txt
+* http://www.id3.org/mp3frame.html
+* http://minnie.tuhs.org/pipermail/mp3encoder/2001-January/001800.html <mathewhendry@hotmail.com>
+* http://www.dv.co.yu/mpgscript/mpeghdr.htm
+* http://www.mp3-tech.org/programmer/frame_header.html
+* http://users.belgacom.net/gc247244/extra/tag.html
+* http://gabriel.mp3-tech.org/mp3infotag.html
+* http://www.id3.org/iso4217.html
+* http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
+* http://www.xiph.org/ogg/vorbis/doc/framing.html
+* http://www.xiph.org/ogg/vorbis/doc/v-comment.html
+* http://leknor.com/code/php/class.ogg.php.txt
+* http://www.id3.org/iso639-2.html
+* http://www.id3.org/lyrics3.html
+* http://www.id3.org/lyrics3200.html
+* http://www.psc.edu/general/software/packages/ieee/ieee.html
+* http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee-expl.html
+* http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html
+* http://www.jmcgowan.com/avi.html
+* http://www.wotsit.org/
+* http://www.herdsoft.com/ti/davincie/davp3xo2.htm
+* http://www.mathdogs.com/vorbis-illuminated/bitstream-appendix.html
+* "Standard MIDI File Format" by Dustin Caldwell (from www.wotsit.org)
+* http://midistudio.com/Help/GMSpecs_Patches.htm
+* http://www.xiph.org/archives/vorbis/200109/0459.html
+* http://www.replaygain.org/
+* http://www.lossless-audio.com/
+* http://download.microsoft.com/download/winmediatech40/Doc/1.0/WIN98MeXP/EN-US/ASF_Specification_v.1.0.exe
+* http://mediaxw.sourceforge.net/files/doc/Active%20Streaming%20Format%20(ASF)%201.0%20Specification.pdf
+* http://www.uni-jena.de/~pfk/mpp/sv8/ (archived at http://www.hydrogenaudio.org/musepack/klemm/www.personal.uni-jena.de/~pfk/mpp/sv8/)
+* http://jfaul.de/atl/
+* http://www.uni-jena.de/~pfk/mpp/ (archived at http://www.hydrogenaudio.org/musepack/klemm/www.personal.uni-jena.de/~pfk/mpp/)
+* http://www.libpng.org/pub/png/spec/png-1.2-pdg.html
+* http://www.real.com/devzone/library/creating/rmsdk/doc/rmff.htm
+* http://www.fastgraph.com/help/bmp_os2_header_format.html
+* http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
+* http://flac.sourceforge.net/format.html
+* http://www.research.att.com/projects/mpegaudio/mpeg2.html
+* http://www.audiocoding.com/wiki/index.php?page=AAC
+* http://libmpeg.org/mpeg4/doc/w2203tfs.pdf
+* http://www.geocities.com/xhelmboyx/quicktime/formats/qtm-layout.txt
+* http://developer.apple.com/techpubs/quicktime/qtdevdocs/RM/frameset.htm
+* http://www.nullsoft.com/nsv/
+* http://www.wotsit.org/download.asp?f=iso9660
+* http://sandbox.mc.edu/~bennet/cs110/tc/tctod.html
+* http://www.cdroller.com/htm/readdata.html
+* http://www.speex.org/manual/node10.html
+* http://www.harmony-central.com/Computer/Programming/aiff-file-format.doc
+* http://www.faqs.org/rfcs/rfc2361.html
+* http://ghido.shelter.ro/
+* http://www.ebu.ch/tech_t3285.pdf
+* http://www.sr.se/utveckling/tu/bwf
+* http://ftp.aessc.org/pub/aes46-2002.pdf
+* http://cartchunk.org:8080/
+* http://www.broadcastpapers.com/radio/cartchunk01.htm
+* http://www.hr/josip/DSP/AudioFile2.html
+* http://home.attbi.com/~chris.bagwell/AudioFormats-11.html
+* http://www.pure-mac.com/extkey.html
+* http://cesnet.dl.sourceforge.net/sourceforge/bonkenc/bonk-binary-format-0.9.txt
+* http://www.headbands.com/gspot/
+* http://www.openswf.org/spec/SWFfileformat.html
+* http://j-faul.virtualave.net/
+* http://www.btinternet.com/~AnthonyJ/Atari/programming/avr_format.html
+* http://cui.unige.ch/OSG/info/AudioFormats/ap11.html
+* http://sswf.sourceforge.net/SWFalexref.html
+* http://www.geocities.com/xhelmboyx/quicktime/formats/qti-layout.txt
+* http://www-lehre.informatik.uni-osnabrueck.de/~fbstark/diplom/docs/swf/Flash_Uncovered.htm
+* http://developer.apple.com/quicktime/icefloe/dispatch012.html
+* http://www.csdn.net/Dev/Format/graphics/PCD.htm
+* http://tta.iszf.irk.ru/
+* http://www.atsc.org/standards/a_52a.pdf
+* http://www.alanwood.net/unicode/
+* http://www.freelists.org/archives/matroska-devel/07-2003/msg00010.html
+* http://www.its.msstate.edu/net/real/reports/config/tags.stats
+* http://homepages.slingshot.co.nz/~helmboy/quicktime/formats/qtm-layout.txt
+* http://brennan.young.net/Comp/LiveStage/things.html
+* http://www.multiweb.cz/twoinches/MP3inside.htm
+* http://www.geocities.co.jp/SiliconValley-Oakland/3664/alittle.html#GenreExtended
+* http://www.mactech.com/articles/mactech/Vol.06/06.01/SANENormalized/
+* http://www.unicode.org/unicode/faq/utf_bom.html
+* http://tta.corecodec.org/?menu=format
+* http://www.scvi.net/nsvformat.htm
+* http://pda.etsi.org/pda/queryform.asp
+* http://cpansearch.perl.org/src/RGIBSON/Audio-DSS-0.02/lib/Audio/DSS.pm
+* http://trac.musepack.net/trac/wiki/SV8Specification
+* http://wyday.com/cuesharp/specification.php
+* http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
diff --git a/wp-includes/SimplePie/Misc.php b/wp-includes/SimplePie/Misc.php
index 5d7367f64..1c1b61841 100644
--- a/wp-includes/SimplePie/Misc.php
+++ b/wp-includes/SimplePie/Misc.php
@@ -124,7 +124,7 @@ class SimplePie_Misc
 						{
 							$attribs[$j][2] = $attribs[$j][1];
 						}
-						$return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
+						$return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]));
 					}
 				}
 			}
diff --git a/wp-includes/Text/Diff.php b/wp-includes/Text/Diff.php
index 3ba7b4c7e..dc24b67f7 100644
--- a/wp-includes/Text/Diff.php
+++ b/wp-includes/Text/Diff.php
@@ -205,7 +205,7 @@ class Text_Diff {
      * @param string $line  The line to trim.
      * @param integer $key  The index of the line in the array. Not used.
      */
-    function trimNewlines(&$line, $key)
+    static function trimNewlines(&$line, $key)
     {
         $line = str_replace(array("\n", "\r"), '', $line);
     }
@@ -377,7 +377,7 @@ class Text_Diff_Op_copy extends Text_Diff_Op {
 
     function &reverse()
     {
-        $reverse = &new Text_Diff_Op_copy($this->final, $this->orig);
+        $reverse = new Text_Diff_Op_copy($this->final, $this->orig);
         return $reverse;
     }
 
@@ -399,7 +399,7 @@ class Text_Diff_Op_delete extends Text_Diff_Op {
 
     function &reverse()
     {
-        $reverse = &new Text_Diff_Op_add($this->orig);
+        $reverse = new Text_Diff_Op_add($this->orig);
         return $reverse;
     }
 
@@ -421,7 +421,7 @@ class Text_Diff_Op_add extends Text_Diff_Op {
 
     function &reverse()
     {
-        $reverse = &new Text_Diff_Op_delete($this->final);
+        $reverse = new Text_Diff_Op_delete($this->final);
         return $reverse;
     }
 
@@ -443,7 +443,7 @@ class Text_Diff_Op_change extends Text_Diff_Op {
 
     function &reverse()
     {
-        $reverse = &new Text_Diff_Op_change($this->final, $this->orig);
+        $reverse = new Text_Diff_Op_change($this->final, $this->orig);
         return $reverse;
     }
 
diff --git a/wp-includes/Text/Diff/Engine/native.php b/wp-includes/Text/Diff/Engine/native.php
index 93eaef220..e908cfecc 100644
--- a/wp-includes/Text/Diff/Engine/native.php
+++ b/wp-includes/Text/Diff/Engine/native.php
@@ -104,7 +104,7 @@ class Text_Diff_Engine_native {
                 ++$yi;
             }
             if ($copy) {
-                $edits[] = &new Text_Diff_Op_copy($copy);
+                $edits[] = new Text_Diff_Op_copy($copy);
             }
 
             // Find deletes & adds.
@@ -119,11 +119,11 @@ class Text_Diff_Engine_native {
             }
 
             if ($delete && $add) {
-                $edits[] = &new Text_Diff_Op_change($delete, $add);
+                $edits[] = new Text_Diff_Op_change($delete, $add);
             } elseif ($delete) {
-                $edits[] = &new Text_Diff_Op_delete($delete);
+                $edits[] = new Text_Diff_Op_delete($delete);
             } elseif ($add) {
-                $edits[] = &new Text_Diff_Op_add($add);
+                $edits[] = new Text_Diff_Op_add($add);
             }
         }
 
diff --git a/wp-includes/Text/Diff/Engine/string.php b/wp-includes/Text/Diff/Engine/string.php
index 59eb8adb4..0f3b3745a 100644
--- a/wp-includes/Text/Diff/Engine/string.php
+++ b/wp-includes/Text/Diff/Engine/string.php
@@ -99,7 +99,7 @@ class Text_Diff_Engine_string {
                 do {
                     $diff1[] = substr($diff[$i], 1);
                 } while (++$i < $end && substr($diff[$i], 0, 1) == ' ');
-                $edits[] = &new Text_Diff_Op_copy($diff1);
+                $edits[] = new Text_Diff_Op_copy($diff1);
                 break;
 
             case '+':
@@ -107,7 +107,7 @@ class Text_Diff_Engine_string {
                 do {
                     $diff1[] = substr($diff[$i], 1);
                 } while (++$i < $end && substr($diff[$i], 0, 1) == '+');
-                $edits[] = &new Text_Diff_Op_add($diff1);
+                $edits[] = new Text_Diff_Op_add($diff1);
                 break;
 
             case '-':
@@ -121,9 +121,9 @@ class Text_Diff_Engine_string {
                     $diff2[] = substr($diff[$i++], 1);
                 }
                 if (count($diff2) == 0) {
-                    $edits[] = &new Text_Diff_Op_delete($diff1);
+                    $edits[] = new Text_Diff_Op_delete($diff1);
                 } else {
-                    $edits[] = &new Text_Diff_Op_change($diff1, $diff2);
+                    $edits[] = new Text_Diff_Op_change($diff1, $diff2);
                 }
                 break;
 
@@ -189,7 +189,7 @@ class Text_Diff_Engine_string {
                 $array[] = substr($diff[$j++], 2);
             }
             if (count($array) > 0) {
-                $edits[] = &new Text_Diff_Op_copy($array);
+                $edits[] = new Text_Diff_Op_copy($array);
             }
 
             if ($i < $max_i) {
@@ -203,21 +203,21 @@ class Text_Diff_Engine_string {
                             $diff2[] = substr($diff[$j++], 2);
                         }
                     } while (++$i < $max_i && substr($diff[$i], 0, 1) == '!');
-                    $edits[] = &new Text_Diff_Op_change($diff1, $diff2);
+                    $edits[] = new Text_Diff_Op_change($diff1, $diff2);
                     break;
 
                 case '+':
                     do {
                         $diff1[] = substr($diff[$i], 2);
                     } while (++$i < $max_i && substr($diff[$i], 0, 1) == '+');
-                    $edits[] = &new Text_Diff_Op_add($diff1);
+                    $edits[] = new Text_Diff_Op_add($diff1);
                     break;
 
                 case '-':
                     do {
                         $diff1[] = substr($diff[$i], 2);
                     } while (++$i < $max_i && substr($diff[$i], 0, 1) == '-');
-                    $edits[] = &new Text_Diff_Op_delete($diff1);
+                    $edits[] = new Text_Diff_Op_delete($diff1);
                     break;
                 }
             }
@@ -229,14 +229,14 @@ class Text_Diff_Engine_string {
                     do {
                         $diff2[] = substr($diff[$j++], 2);
                     } while ($j < $max_j && substr($diff[$j], 0, 1) == '+');
-                    $edits[] = &new Text_Diff_Op_add($diff2);
+                    $edits[] = new Text_Diff_Op_add($diff2);
                     break;
 
                 case '-':
                     do {
                         $diff2[] = substr($diff[$j++], 2);
                     } while ($j < $max_j && substr($diff[$j], 0, 1) == '-');
-                    $edits[] = &new Text_Diff_Op_delete($diff2);
+                    $edits[] = new Text_Diff_Op_delete($diff2);
                     break;
                 }
             }
diff --git a/wp-includes/Text/Diff/Engine/xdiff.php b/wp-includes/Text/Diff/Engine/xdiff.php
index b9f173604..02ce84807 100644
--- a/wp-includes/Text/Diff/Engine/xdiff.php
+++ b/wp-includes/Text/Diff/Engine/xdiff.php
@@ -45,15 +45,15 @@ class Text_Diff_Engine_xdiff {
             }
             switch ($line[0]) {
             case ' ':
-                $edits[] = &new Text_Diff_Op_copy(array(substr($line, 1)));
+                $edits[] = new Text_Diff_Op_copy(array(substr($line, 1)));
                 break;
 
             case '+':
-                $edits[] = &new Text_Diff_Op_add(array(substr($line, 1)));
+                $edits[] = new Text_Diff_Op_add(array(substr($line, 1)));
                 break;
 
             case '-':
-                $edits[] = &new Text_Diff_Op_delete(array(substr($line, 1)));
+                $edits[] = new Text_Diff_Op_delete(array(substr($line, 1)));
                 break;
             }
         }
diff --git a/wp-includes/Text/Diff/Renderer.php b/wp-includes/Text/Diff/Renderer.php
index 922f4c09c..95c6db4b8 100644
--- a/wp-includes/Text/Diff/Renderer.php
+++ b/wp-includes/Text/Diff/Renderer.php
@@ -98,7 +98,7 @@ class Text_Diff_Renderer {
                             /* Create a new block with as many lines as we need
                              * for the trailing context. */
                             $context = array_slice($edit->orig, 0, $ntrail);
-                            $block[] = &new Text_Diff_Op_copy($context);
+                            $block[] = new Text_Diff_Op_copy($context);
                         }
                         /* @todo */
                         $output .= $this->_block($x0, $ntrail + $xi - $x0,
@@ -118,7 +118,7 @@ class Text_Diff_Renderer {
                     $y0 = $yi - count($context);
                     $block = array();
                     if ($context) {
-                        $block[] = &new Text_Diff_Op_copy($context);
+                        $block[] = new Text_Diff_Op_copy($context);
                     }
                 }
                 $block[] = $edit;
diff --git a/wp-includes/admin-bar.php b/wp-includes/admin-bar.php
index 6af102145..756fc1260 100644
--- a/wp-includes/admin-bar.php
+++ b/wp-includes/admin-bar.php
@@ -8,8 +8,8 @@
 /**
  * Instantiate the admin bar object and set it up as a global for access elsewhere.
  *
- * To hide the admin bar, you're looking in the wrong place. Unhooking this function will not
- * properly remove the admin bar. For that, use show_admin_bar(false) or the show_admin_bar filter.
+ * UNHOOKING THIS FUNCTION WILL NOT PROPERLY REMOVE THE ADMIN BAR.
+ * For that, use show_admin_bar(false) or the 'show_admin_bar' filter.
  *
  * @since 3.1.0
  * @access private
@@ -36,7 +36,9 @@ function _wp_admin_bar_init() {
 
 	return true;
 }
-add_action( 'init', '_wp_admin_bar_init' ); // Don't remove. Wrong way to disable.
+// Don't remove. Wrong way to disable.
+add_action( 'template_redirect', '_wp_admin_bar_init', 0 );
+add_action( 'admin_init', '_wp_admin_bar_init' );
 
 /**
  * Render the admin bar to the page based on the $wp_admin_bar->menu member var.
@@ -174,8 +176,8 @@ function wp_admin_bar_my_account_menu( $wp_admin_bar ) {
 	$user_info  = get_avatar( $user_id, 64 );
 	$user_info .= "<span class='display-name'>{$current_user->display_name}</span>";
 
-	if ( $current_user->display_name !== $current_user->user_nicename )
-		$user_info .= "<span class='username'>{$current_user->user_nicename}</span>";
+	if ( $current_user->display_name !== $current_user->user_login )
+		$user_info .= "<span class='username'>{$current_user->user_login}</span>";
 
 	$wp_admin_bar->add_menu( array(
 		'parent' => 'user-actions',
@@ -227,9 +229,7 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
 		$blogname = sprintf( __('Global Dashboard: %s'), esc_html( $current_site->site_name ) );
 	}
 
-	$title = wp_html_excerpt( $blogname, 40 );
-	if ( $title != $blogname )
-		$title = trim( $title ) . '&hellip;';
+	$title = wp_html_excerpt( $blogname, 40, '&hellip;' );
 
 	$wp_admin_bar->add_menu( array(
 		'id'    => 'site-name',
@@ -429,7 +429,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
 		if ( 'post' == $current_screen->base
 			&& 'add' != $current_screen->action
 			&& ( $post_type_object = get_post_type_object( $post->post_type ) )
-			&& current_user_can( $post_type_object->cap->read_post, $post->ID )
+			&& current_user_can( 'read_post', $post->ID )
 			&& ( $post_type_object->public )
 			&& ( $post_type_object->show_in_admin_bar ) )
 		{
@@ -457,7 +457,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( $post_type_object->cap->edit_post, $current_object->ID )
+			&& current_user_can( 'edit_post', $current_object->ID )
 			&& $post_type_object->show_ui && $post_type_object->show_in_admin_bar )
 		{
 			$wp_admin_bar->add_menu( array(
diff --git a/wp-includes/atomlib.php b/wp-includes/atomlib.php
index c6f2f2475..4dcddc99c 100644
--- a/wp-includes/atomlib.php
+++ b/wp-includes/atomlib.php
@@ -131,8 +131,8 @@ class AtomParser {
 
             if(!xml_parse($parser, $data, feof($fp))) {
                 trigger_error(sprintf(__('XML error: %s at line %d')."\n",
-                    xml_error_string(xml_get_error_code($xml_parser)),
-                    xml_get_current_line_number($xml_parser)));
+                    xml_error_string(xml_get_error_code($parser)),
+                    xml_get_current_line_number($parser)));
                 $ret = false;
                 break;
             }
diff --git a/wp-includes/author-template.php b/wp-includes/author-template.php
index 1e65baa1e..2a8949896 100644
--- a/wp-includes/author-template.php
+++ b/wp-includes/author-template.php
@@ -134,7 +134,7 @@ function the_author_meta($field = '', $user_id = false) {
  */
 function get_the_author_link() {
 	if ( get_the_author_meta('url') ) {
-		return '<a href="' . get_the_author_meta('url') . '" title="' . esc_attr( sprintf(__("Visit %s&#8217;s website"), get_the_author()) ) . '" rel="author external">' . get_the_author() . '</a>';
+		return '<a href="' . esc_url( get_the_author_meta('url') ) . '" title="' . esc_attr( sprintf(__("Visit %s&#8217;s website"), get_the_author()) ) . '" rel="author external">' . get_the_author() . '</a>';
 	} else {
 		return get_the_author();
 	}
@@ -200,7 +200,7 @@ function the_author_posts_link($deprecated = '') {
 		return false;
 	$link = sprintf(
 		'<a href="%1$s" title="%2$s" rel="author">%3$s</a>',
-		get_author_posts_url( $authordata->ID, $authordata->user_nicename ),
+		esc_url( get_author_posts_url( $authordata->ID, $authordata->user_nicename ) ),
 		esc_attr( sprintf( __( 'Posts by %s' ), get_the_author() ) ),
 		get_the_author()
 	);
@@ -244,7 +244,7 @@ function get_author_posts_url($author_id, $author_nicename = '') {
  * <li>optioncount (boolean) (false): Show the count in parenthesis next to the
  * author's name.</li>
  * <li>exclude_admin (boolean) (true): Exclude the 'admin' user that is
- * installed bydefault.</li>
+ * installed by default.</li>
  * <li>show_fullname (boolean) (false): Show their full names.</li>
  * <li>hide_empty (boolean) (true): Don't show authors without any posts.</li>
  * <li>feed (string) (''): If isn't empty, show links to author's feeds.</li>
@@ -372,10 +372,10 @@ function wp_list_authors($args = '') {
 function is_multi_author() {
 	global $wpdb;
 
-	if ( false === ( $is_multi_author = wp_cache_get('is_multi_author', 'posts') ) ) {
+	if ( false === ( $is_multi_author = get_transient( 'is_multi_author' ) ) ) {
 		$rows = (array) $wpdb->get_col("SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 2");
 		$is_multi_author = 1 < count( $rows ) ? 1 : 0;
-		wp_cache_set('is_multi_author', $is_multi_author, 'posts');
+		set_transient( 'is_multi_author', $is_multi_author );
 	}
 
 	return apply_filters( 'is_multi_author', (bool) $is_multi_author );
@@ -387,6 +387,6 @@ function is_multi_author() {
  * @private
  */
 function __clear_multi_author_cache() {
-	wp_cache_delete('is_multi_author', 'posts');
+	delete_transient( 'is_multi_author' );
 }
 add_action('transition_post_status', '__clear_multi_author_cache');
diff --git a/wp-includes/bookmark.php b/wp-includes/bookmark.php
index ab4b8c8c6..9a3ac6107 100644
--- a/wp-includes/bookmark.php
+++ b/wp-includes/bookmark.php
@@ -186,7 +186,7 @@ function get_bookmarks($args = '') {
 	}
 
 	if ( ! empty($search) ) {
-		$search = like_escape($search);
+		$search = esc_sql( like_escape( $search ) );
 		$search = " AND ( (link_url LIKE '%$search%') OR (link_name LIKE '%$search%') OR (link_description LIKE '%$search%') ) ";
 	}
 
diff --git a/wp-includes/cache.php b/wp-includes/cache.php
index 933c7b2ec..af1c2adac 100644
--- a/wp-includes/cache.php
+++ b/wp-includes/cache.php
@@ -19,7 +19,7 @@
  * @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 unknown
+ * @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;
@@ -85,7 +85,7 @@ function wp_cache_delete($key, $group = '') {
  * @uses $wp_object_cache Object Cache Class
  * @see WP_Object_Cache::flush()
  *
- * @return bool Always returns true
+ * @return bool False on failure, true on success
  */
 function wp_cache_flush() {
 	global $wp_object_cache;
@@ -152,7 +152,7 @@ function wp_cache_init() {
  * @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 cache key and group already exist, true on success
+ * @return bool False if not exists, true if contents were replaced
  */
 function wp_cache_replace($key, $data, $group = '', $expire = 0) {
 	global $wp_object_cache;
@@ -171,7 +171,7 @@ function wp_cache_replace($key, $data, $group = '', $expire = 0) {
  * @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 cache key and group already exist, true on success
+ * @return bool False on failure, true on success
  */
 function wp_cache_set($key, $data, $group = '', $expire = 0) {
 	global $wp_object_cache;
diff --git a/wp-includes/canonical.php b/wp-includes/canonical.php
index 7cd12564f..423dcc636 100644
--- a/wp-includes/canonical.php
+++ b/wp-includes/canonical.php
@@ -18,7 +18,7 @@
  * one or the other.
  *
  * Prevents redirection for feeds, trackbacks, searches, comment popup, and
- * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7,
+ * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7+,
  * page/post previews, WP admin, Trackbacks, robots.txt, searches, or on POST
  * requests.
  *
@@ -272,9 +272,9 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 				$redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
 			}
 
-			$redirect['path'] = user_trailingslashit( preg_replace('|/index.php/?$|', '/', $redirect['path']) ); // strip off trailing /index.php/
-			if ( !empty( $addl_path ) && $wp_rewrite->using_index_permalinks() && strpos($redirect['path'], '/index.php/') === false )
-				$redirect['path'] = trailingslashit($redirect['path']) . 'index.php/';
+			$redirect['path'] = user_trailingslashit( preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/?$|', '/', $redirect['path']) ); // strip off trailing /index.php/
+			if ( !empty( $addl_path ) && $wp_rewrite->using_index_permalinks() && strpos($redirect['path'], '/' . $wp_rewrite->index . '/') === false )
+				$redirect['path'] = trailingslashit($redirect['path']) . $wp_rewrite->index . '/';
 			if ( !empty( $addl_path ) )
 				$redirect['path'] = trailingslashit($redirect['path']) . $addl_path;
 			$redirect_url = $redirect['scheme'] . '://' . $redirect['host'] . $redirect['path'];
@@ -324,7 +324,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 		unset($redirect['port']);
 
 	// trailing /index.php
-	$redirect['path'] = preg_replace('|/index.php/*?$|', '/', $redirect['path']);
+	$redirect['path'] = preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/*?$|', '/', $redirect['path']);
 
 	// Remove trailing spaces from the path
 	$redirect['path'] = preg_replace( '#(%20| )+$#', '', $redirect['path'] );
@@ -337,7 +337,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 		$redirect['query'] = trim(preg_replace( '#(^|&)(p|page_id|cat|tag)=?(&|$)#', '&', $redirect['query']), '&');
 
 		// Redirect obsolete feeds
-		$redirect['query'] = preg_replace( '#(^|&)feed=rss(&|$)#', '$1feed=rss2$3', $redirect['query'] );
+		$redirect['query'] = preg_replace( '#(^|&)feed=rss(&|$)#', '$1feed=rss2$2', $redirect['query'] );
 
 		// Remove redundant leading ampersands
 		$redirect['query'] = preg_replace( '#^\??&*?#', '', $redirect['query'] );
@@ -345,7 +345,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 
 	// strip /index.php/ when we're not using PATHINFO permalinks
 	if ( !$wp_rewrite->using_index_permalinks() )
-		$redirect['path'] = str_replace('/index.php/', '/', $redirect['path']);
+		$redirect['path'] = str_replace( '/' . $wp_rewrite->index . '/', '/', $redirect['path'] );
 
 	// trailing slashes
 	if ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() && !is_404() && (!is_front_page() || ( is_front_page() && (get_query_var('paged') > 1) ) ) ) {
diff --git a/wp-includes/capabilities.php b/wp-includes/capabilities.php
index 3503316cc..c3bb58f62 100644
--- a/wp-includes/capabilities.php
+++ b/wp-includes/capabilities.php
@@ -158,7 +158,7 @@ class WP_Roles {
 	 * @param string $role Role name.
 	 * @param string $display_name Role display name.
 	 * @param array $capabilities List of role capabilities in the above format.
-	 * @return null|WP_Role WP_Role object if role is added, null if already exists.
+	 * @return WP_Role|null WP_Role object if role is added, null if already exists.
 	 */
 	function add_role( $role, $display_name, $capabilities = array() ) {
 		if ( isset( $this->roles[$role] ) )
@@ -239,7 +239,7 @@ class WP_Roles {
 	 * @access public
 	 *
 	 * @param string $role Role name.
-	 * @return object|null Null, if role does not exist. WP_Role object, if found.
+	 * @return WP_Role|null WP_Role object if found, null if the role does not exist.
 	 */
 	function get_role( $role ) {
 		if ( isset( $this->role_objects[$role] ) )
@@ -535,7 +535,9 @@ class WP_User {
 			// to int 1.
 			if ( ! is_numeric( $value ) )
 				return false;
-			$value = absint( $value );
+			$value = intval( $value );
+			if ( $value < 1 )
+				return false;
 		} else {
 			$value = trim( $value );
 		}
@@ -803,6 +805,7 @@ class WP_User {
 		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 );
@@ -812,7 +815,7 @@ class WP_User {
 		update_user_meta( $this->ID, $this->cap_key, $this->caps );
 		$this->get_role_caps();
 		$this->update_user_level_from_caps();
-		do_action( 'set_user_role', $this->ID, $role );
+		do_action( 'set_user_role', $this->ID, $role, $old_roles );
 	}
 
 	/**
@@ -1159,8 +1162,7 @@ function map_meta_cap( $cap, $user_id ) {
 	case 'delete_post_meta':
 	case 'add_post_meta':
 		$post = get_post( $args[0] );
-		$post_type_object = get_post_type_object( $post->post_type );
-		$caps = map_meta_cap( $post_type_object->cap->edit_post, $user_id, $post->ID );
+		$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
 
 		$meta_key = isset( $args[ 1 ] ) ? $args[ 1 ] : false;
 
@@ -1175,9 +1177,7 @@ function map_meta_cap( $cap, $user_id ) {
 	case 'edit_comment':
 		$comment = get_comment( $args[0] );
 		$post = get_post( $comment->comment_post_ID );
-		$post_type_object = get_post_type_object( $post->post_type );
-
-		$caps = map_meta_cap( $post_type_object->cap->edit_post, $user_id, $post->ID );
+		$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
 		break;
 	case 'unfiltered_upload':
 		if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) )  )
@@ -1371,7 +1371,7 @@ function user_can( $user, $capability ) {
  * @since 2.0.0
  *
  * @param string $role Role name.
- * @return object
+ * @return WP_Role|null WP_Role object if found, null if the role does not exist.
  */
 function get_role( $role ) {
 	global $wp_roles;
@@ -1391,7 +1391,7 @@ function get_role( $role ) {
  * @param string $role Role name.
  * @param string $display_name Display name for role.
  * @param array $capabilities List of capabilities, e.g. array( 'edit_posts' => true, 'delete_posts' => false );
- * @return null|WP_Role WP_Role object if role is added, null if already exists.
+ * @return WP_Role|null WP_Role object if role is added, null if already exists.
  */
 function add_role( $role, $display_name, $capabilities = array() ) {
 	global $wp_roles;
diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php
index e45734abb..96a61cf35 100644
--- a/wp-includes/category-template.php
+++ b/wp-includes/category-template.php
@@ -37,7 +37,7 @@ function get_category_link( $category ) {
  * @param string $separator Optional, default is '/'. How to separate categories.
  * @param bool $nicename Optional, default is false. Whether to use nice name for display.
  * @param array $visited Optional. Already linked to categories to prevent duplicates.
- * @return string
+ * @return string|WP_Error A list of category parents on success, WP_Error on failure.
  */
 function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
 	$chain = '';
@@ -131,7 +131,7 @@ function _usort_terms_by_ID( $a, $b ) {
  * @since 0.71
  *
  * @param int $cat_ID Category ID.
- * @return string Category name.
+ * @return string|WP_Error Category name on success, WP_Error on failure.
  */
 function get_the_category_by_ID( $cat_ID ) {
 	$cat_ID = (int) $cat_ID;
@@ -671,7 +671,7 @@ function wp_generate_tag_cloud( $tags, $args = '' ) {
 		$tag_link = '#' != $tag->link ? esc_url( $tag->link ) : '#';
 		$tag_id = isset($tags[ $key ]->id) ? $tags[ $key ]->id : $key;
 		$tag_name = $tags[ $key ]->name;
-		$a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . esc_attr( call_user_func( $topic_count_text_callback, $real_count ) ) . "' style='font-size: " .
+		$a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . esc_attr( call_user_func( $topic_count_text_callback, $real_count, $tag, $args ) ) . "' style='font-size: " .
 			str_replace( ',', '.', ( $smallest + ( ( $count - $min_count ) * $font_step ) ) )
 			. "$unit;'>$tag_name</a>";
 	}
@@ -933,7 +933,7 @@ class Walker_CategoryDropdown extends Walker {
 	 * @param int $depth Depth of category. Used for padding.
 	 * @param array $args Uses 'selected' and 'show_count' keys, if they exist.
 	 */
-	function start_el( &$output, $category, $depth, $args, $id = 0 ) {
+	function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
 		$pad = str_repeat('&nbsp;', $depth * 3);
 
 		$cat_name = apply_filters('list_cats', $category->name, $category);
@@ -980,7 +980,7 @@ function get_tag_link( $tag ) {
  * @uses apply_filters() Calls 'get_the_tags' filter on the list of post tags.
  *
  * @param int $id Post ID.
- * @return array
+ * @return array|bool Array of tag objects on success, false on failure.
  */
 function get_the_tags( $id = 0 ) {
 	return apply_filters( 'get_the_tags', get_the_terms( $id, 'post_tag' ) );
@@ -996,7 +996,7 @@ function get_the_tags( $id = 0 ) {
  * @param string $sep Optional. Between tags.
  * @param string $after Optional. After tags.
  * @param int $id Optional. Post ID. Defaults to the current post.
- * @return string
+ * @return string|bool|WP_Error A list of tags on success, false or WP_Error on failure.
  */
 function get_the_tag_list( $before = '', $sep = '', $after = '', $id = 0 ) {
 	return apply_filters( 'the_tags', get_the_term_list( $id, 'post_tag', $before, $sep, $after ), $before, $sep, $after, $id );
@@ -1010,7 +1010,6 @@ function get_the_tag_list( $before = '', $sep = '', $after = '', $id = 0 ) {
  * @param string $before Optional. Before list.
  * @param string $sep Optional. Separate items using this.
  * @param string $after Optional. After list.
- * @return string
  */
 function the_tags( $before = null, $sep = ', ', $after = '' ) {
 	if ( null === $before )
@@ -1054,9 +1053,9 @@ function term_description( $term = 0, $taxonomy = 'post_tag' ) {
  *
  * @since 2.5.0
  *
- * @param mixed $post Post ID or object.
+ * @param int|object $post Post ID or object.
  * @param string $taxonomy Taxonomy name.
- * @return array|bool False on failure. Array of term objects on success.
+ * @return array|bool|WP_Error Array of term objects on success, false or WP_Error on failure.
  */
 function get_the_terms( $post, $taxonomy ) {
 	if ( ! $post = get_post( $post ) )
@@ -1086,7 +1085,7 @@ function get_the_terms( $post, $taxonomy ) {
  * @param string $before Optional. Before list.
  * @param string $sep Optional. Separate items using this.
  * @param string $after Optional. After list.
- * @return string
+ * @return string|bool|WP_Error A list of terms on success, false or WP_Error on failure.
  */
 function get_the_term_list( $id, $taxonomy, $before = '', $sep = '', $after = '' ) {
 	$terms = get_the_terms( $id, $taxonomy );
diff --git a/wp-includes/class-feed.php b/wp-includes/class-feed.php
index 491d775e1..bdad84db6 100644
--- a/wp-includes/class-feed.php
+++ b/wp-includes/class-feed.php
@@ -69,7 +69,6 @@ class WP_SimplePie_File extends SimplePie_File {
 			$args = array(
 				'timeout' => $this->timeout,
 				'redirection' => $this->redirects,
-				'reject_unsafe_urls' => true,
 			);
 
 			if ( !empty($this->headers) )
@@ -78,7 +77,7 @@ class WP_SimplePie_File extends SimplePie_File {
 			if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified
 				$args['user-agent'] = $this->useragent;
 
-			$res = wp_remote_request($url, $args);
+			$res = wp_safe_remote_request($url, $args);
 
 			if ( is_wp_error($res) ) {
 				$this->error = 'WP HTTP Error: ' . $res->get_error_message();
diff --git a/wp-includes/class-http.php b/wp-includes/class-http.php
index 0358932ac..b824285da 100644
--- a/wp-includes/class-http.php
+++ b/wp-includes/class-http.php
@@ -96,7 +96,8 @@ class WP_Http {
 			'decompress' => true,
 			'sslverify' => true,
 			'stream' => false,
-			'filename' => null
+			'filename' => null,
+			'limit_response_size' => null,
 		);
 
 		// Pre-parse for the HEAD checks.
@@ -118,10 +119,11 @@ class WP_Http {
 		if ( false !== $pre )
 			return $pre;
 
-		if ( $r['reject_unsafe_urls'] )
-			$url = wp_http_validate_url( $url );
-		if ( function_exists( 'wp_kses_bad_protocol' ) )
+		if ( function_exists( 'wp_kses_bad_protocol' ) ) {
+			if ( $r['reject_unsafe_urls'] )
+				$url = wp_http_validate_url( $url );
 			$url = wp_kses_bad_protocol( $url, array( 'http', 'https', 'ssl' ) );
+		}
 
 		$arrURL = @parse_url( $url );
 
@@ -141,14 +143,14 @@ class WP_Http {
 		unset( $homeURL );
 
 		// If we are streaming to a file but no filename was given drop it in the WP temp dir
-		// and pick it's name using the basename of the $url
+		// and pick its name using the basename of the $url
 		if ( $r['stream']  && empty( $r['filename'] ) )
 			$r['filename'] = get_temp_dir() . basename( $url );
 
 		// Force some settings if we are streaming to a file and check for existence and perms of destination directory
 		if ( $r['stream'] ) {
 			$r['blocking'] = true;
-			if ( ! call_user_func( 'WIN' === strtoupper( substr( PHP_OS, 0, 3 ) ) ? 'win_is_writable' : 'is_writable', dirname( $r['filename'] ) ) )
+			if ( ! wp_is_writable( dirname( $r['filename'] ) ) )
 				return new WP_Error( 'http_request_failed', __( 'Destination directory for file streaming does not exist or is not writable.' ) );
 		}
 
@@ -173,8 +175,10 @@ class WP_Http {
 		// Construct Cookie: header if any cookies are set
 		WP_Http::buildCookieHeader( $r );
 
-		if ( WP_Http_Encoding::is_available() )
-			$r['headers']['Accept-Encoding'] = WP_Http_Encoding::accept_encoding();
+		if ( ! isset( $r['headers']['Accept-Encoding'] ) ) {
+			if ( $encoding = WP_Http_Encoding::accept_encoding( $url, $r ) )
+				$r['headers']['Accept-Encoding'] = $encoding;
+		}
 
 		if ( ( ! is_null( $r['body'] ) && '' != $r['body'] ) || 'POST' == $r['method'] || 'PUT' == $r['method'] ) {
 			if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) {
@@ -328,7 +332,7 @@ class WP_Http {
 	 * @param string $strResponse The full response string
 	 * @return array Array with 'headers' and 'body' keys.
 	 */
-	function processResponse($strResponse) {
+	public static function processResponse($strResponse) {
 		$res = explode("\r\n\r\n", $strResponse, 2);
 
 		return array('headers' => $res[0], 'body' => isset($res[1]) ? $res[1] : '');
@@ -537,7 +541,7 @@ class WP_Http {
 		if ( !empty($wildcard_regex) )
 			return !preg_match($wildcard_regex, $check['host']);
 		else
-			return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If its in the array, then we can't access it.
+			return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If it's in the array, then we can't access it.
 
 	}
 
@@ -562,7 +566,7 @@ class WP_Http {
 		// Start off with the Absolute URL path
 		$path = ! empty( $url_parts['path'] ) ? $url_parts['path'] : '/';
 
-		// If the it's a root-relative path, then great
+		// If it's a root-relative path, then great
 		if ( ! empty( $relative_url_parts['path'] ) && '/' == $relative_url_parts['path'][0] ) {
 			$path = $relative_url_parts['path'];
 
@@ -738,6 +742,10 @@ class WP_Http_Fsockopen {
 
 		$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'] ) {
@@ -748,30 +756,45 @@ class WP_Http_Fsockopen {
 			if ( ! $stream_handle )
 				return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
 
-			while ( ! feof($handle) ) {
-				$block = fread( $handle, 4096 );
-				if ( $bodyStarted ) {
-					fwrite( $stream_handle, $block );
-				} else {
+			$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;
-						fwrite( $stream_handle, $process['body'] );
+						$block = $process['body'];
 						unset( $strResponse );
 						$process['body'] = '';
 					}
 				}
+
+				if ( isset( $r['limit_response_size'] ) && ( $bytes_written + strlen( $block ) ) > $r['limit_response_size'] )
+					$block = substr( $block, 0, ( $r['limit_response_size'] - $bytes_written ) );
+
+				$bytes_written += fwrite( $stream_handle, $block );
+
+				$keep_reading = !isset( $r['limit_response_size'] ) || $bytes_written < $r['limit_response_size'];
 			}
 
 			fclose( $stream_handle );
 
 		} else {
-			while ( ! feof($handle) )
-				$strResponse .= fread( $handle, 4096 );
+			$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 );
@@ -797,6 +820,9 @@ class WP_Http_Fsockopen {
 		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'] );
+
 		return array( 'headers' => $arrHeaders['headers'], 'body' => $process['body'], 'response' => $arrHeaders['response'], 'cookies' => $arrHeaders['cookies'], 'filename' => $r['filename'] );
 	}
 
@@ -941,6 +967,7 @@ class WP_Http_Streams {
 			return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
 		}
 
+		$max_bytes = isset( $r['limit_response_size'] ) ? intval( $r['limit_response_size'] ) : -1;
 		if ( $r['stream'] ) {
 			if ( ! WP_DEBUG )
 				$stream_handle = @fopen( $r['filename'], 'w+' );
@@ -950,12 +977,12 @@ class WP_Http_Streams {
 			if ( ! $stream_handle )
 				return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
 
-			stream_copy_to_stream( $handle, $stream_handle );
+			stream_copy_to_stream( $handle, $stream_handle, $max_bytes );
 
 			fclose( $stream_handle );
 			$strResponse = '';
 		} else {
-			$strResponse = stream_get_contents( $handle );
+			$strResponse = stream_get_contents( $handle, $max_bytes );
 		}
 
 		$meta = stream_get_meta_data( $handle );
@@ -1022,7 +1049,7 @@ class WP_Http_Streams {
 class WP_Http_Curl {
 
 	/**
-	 * Temporary header storage for use with streaming to a file.
+	 * Temporary header storage for during requests.
 	 *
 	 * @since 3.2.0
 	 * @access private
@@ -1030,6 +1057,33 @@ class WP_Http_Curl {
 	 */
 	private $headers = '';
 
+	/**
+	 * Temporary body storage for during requests.
+	 *
+	 * @since 3.6.0
+	 * @access private
+	 * @var string
+	 */
+	private $body = '';
+
+	/**
+	 * The maximum amount of data to recieve 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;
+
 	/**
 	 * Send a HTTP request to a URI using cURL extension.
 	 *
@@ -1121,20 +1175,28 @@ class WP_Http_Curl {
 				break;
 		}
 
-		if ( true === $r['blocking'] )
+		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 )
-				$stream_handle = @fopen( $r['filename'], 'w+' );
+				$this->stream_handle = @fopen( $r['filename'], 'w+' );
 			else
-				$stream_handle = fopen( $r['filename'], 'w+' );
-			if ( ! $stream_handle )
+				$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'] ) );
-			curl_setopt( $handle, CURLOPT_FILE, $stream_handle );
+		} else {
+			$this->stream_handle = false;
 		}
 
 		if ( !empty( $r['headers'] ) ) {
@@ -1158,27 +1220,39 @@ class WP_Http_Curl {
 		// 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() );
 		}
 
 		$theResponse = curl_exec( $handle );
-		$theBody = '';
 		$theHeaders = WP_Http::processHeaders( $this->headers );
+		$theBody = $this->body;
 
-		if ( strlen($theResponse) > 0 && ! is_bool( $theResponse ) ) // is_bool: when using $args['stream'], curl_exec will return (bool)true
-			$theBody = $theResponse;
+		$this->headers = '';
+		$this->body = '';
 
 		// If no response
-		if ( 0 == strlen( $theResponse ) && empty( $theHeaders['headers'] ) ) {
-			if ( $curl_error = curl_error( $handle ) )
+		if ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) {
+			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 ) ) )
+			}
+			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.' ) );
+			}
 		}
 
-		$this->headers = '';
-
 		$response = array();
 		$response['code'] = curl_getinfo( $handle, CURLINFO_HTTP_CODE );
 		$response['message'] = get_status_header_desc($response['code']);
@@ -1186,7 +1260,7 @@ class WP_Http_Curl {
 		curl_close( $handle );
 
 		if ( $r['stream'] )
-			fclose( $stream_handle );
+			fclose( $this->stream_handle );
 
 		// See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
 		if ( ! empty( $theHeaders['headers']['location'] ) && 0 !== $r['_redirection'] ) { // _redirection: The requested number of redirections
@@ -1217,6 +1291,28 @@ class WP_Http_Curl {
 		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 as "completed"
+	 *
+	 * @since 3.6.0
+	 * @access private
+	 * @return int
+	 */
+	private function stream_body( $handle, $data ) {
+		if ( $this->max_body_length && ( strlen( $this->body ) + strlen( $data ) ) > $this->max_body_length )
+			$data = substr( $data, 0, ( $this->max_body_length - strlen( $this->body ) ) );
+
+		if ( $this->stream_handle )
+			fwrite( $this->stream_handle, $data );
+		else
+			$this->body .= $data;
+
+		return strlen( $data );
+	}
+
 	/**
 	 * Whether this class can be used for retrieving an URL.
 	 *
@@ -1743,16 +1839,29 @@ class WP_Http_Encoding {
 	 *
 	 * @return string Types of encoding to accept.
 	 */
-	public static function accept_encoding() {
+	public static function accept_encoding( $url, $args ) {
 		$type = array();
-		if ( function_exists( 'gzinflate' ) )
-			$type[] = 'deflate;q=1.0';
+		$compression_enabled = WP_Http_Encoding::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 ( function_exists( 'gzuncompress' ) )
-			$type[] = 'compress;q=0.5';
+		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';
+		}
 
-		if ( function_exists( 'gzdecode' ) )
-			$type[] = 'gzip;q=0.5';
+		$type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args );
 
 		return implode(', ', $type);
 	}
diff --git a/wp-includes/class-json.php b/wp-includes/class-json.php
index 58f6f7de2..417592fb8 100644
--- a/wp-includes/class-json.php
+++ b/wp-includes/class-json.php
@@ -1,5 +1,5 @@
 <?php
-if ( !class_exists( 'Services_JSON' ) ) :
+if ( ! class_exists( 'Services_JSON' ) ) :
 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 /**
  * Converts to and from JSON format.
@@ -46,20 +46,20 @@ if ( !class_exists( 'Services_JSON' ) ) :
  * DAMAGE.
  *
  * @category
- * @package		Services_JSON
- * @author		Michal Migurski <mike-json@teczno.com>
- * @author		Matt Knapp <mdknapp[at]gmail[dot]com>
- * @author		Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
- * @copyright	2005 Michal Migurski
- * @version     CVS: $Id: JSON.php 288200 2009-09-09 15:41:29Z alan_k $
- * @license		http://www.opensource.org/licenses/bsd-license.php
- * @link		http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ * @package     Services_JSON
+ * @author      Michal Migurski <mike-json@teczno.com>
+ * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright   2005 Michal Migurski
+ * @version     CVS: $Id: JSON.php 305040 2010-11-02 23:19:03Z alan_k $
+ * @license     http://www.opensource.org/licenses/bsd-license.php
+ * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
  */
 
 /**
  * Marker constant for Services_JSON::decode(), used to flag stack state
  */
-define('SERVICES_JSON_SLICE', 1);
+define('SERVICES_JSON_SLICE',   1);
 
 /**
  * Marker constant for Services_JSON::decode(), used to flag stack state
@@ -91,6 +91,11 @@ define('SERVICES_JSON_LOOSE_TYPE', 16);
  */
 define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
 
+/**
+ * Behavior switch for Services_JSON::decode()
+ */
+define('SERVICES_JSON_USE_TO_JSON', 64);
+
 /**
  * Converts to and from JSON format.
  *
@@ -114,749 +119,818 @@ define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
  */
 class Services_JSON
 {
- /**
-	* constructs a new JSON instance
-	*
-	* @param int $use object behavior flags; combine with boolean-OR
-	*
-	*						possible values:
-	*						- SERVICES_JSON_LOOSE_TYPE:  loose typing.
-	*								"{...}" syntax creates associative arrays
-	*								instead of objects in decode().
-	*						- SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
-	*								Values which can't be encoded (e.g. resources)
-	*								appear as NULL instead of throwing errors.
-	*								By default, a deeply-nested resource will
-	*								bubble up with an error, so all return values
-	*								from encode() should be checked with isError()
-	*/
-	function Services_JSON($use = 0)
-	{
-		$this->use = $use;
-	}
-
- /**
-	* convert a string from one UTF-16 char to one UTF-8 char
-	*
-	* Normally should be handled by mb_convert_encoding, but
-	* provides a slower PHP-only method for installations
-	* that lack the multibye string extension.
-	*
-	* @param	string  $utf16  UTF-16 character
-	* @return string  UTF-8 character
-	* @access private
-	*/
-	function utf162utf8($utf16)
-	{
-		// oh please oh please oh please oh please oh please
-		if(function_exists('mb_convert_encoding')) {
-			return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
-		}
-
-		$bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);
-
-		switch(true) {
-			case ((0x7F & $bytes) == $bytes):
-				// this case should never be reached, because we are in ASCII range
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr(0x7F & $bytes);
-
-			case (0x07FF & $bytes) == $bytes:
-				// return a 2-byte UTF-8 character
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr(0xC0 | (($bytes >> 6) & 0x1F))
-					. chr(0x80 | ($bytes & 0x3F));
-
-			case (0xFFFF & $bytes) == $bytes:
-				// return a 3-byte UTF-8 character
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr(0xE0 | (($bytes >> 12) & 0x0F))
-					. chr(0x80 | (($bytes >> 6) & 0x3F))
-					. chr(0x80 | ($bytes & 0x3F));
-		}
-
-		// ignoring UTF-32 for now, sorry
-		return '';
-	}
-
- /**
-	* convert a string from one UTF-8 char to one UTF-16 char
-	*
-	* Normally should be handled by mb_convert_encoding, but
-	* provides a slower PHP-only method for installations
-	* that lack the multibye string extension.
-	*
-	* @param	string  $utf8 UTF-8 character
-	* @return string  UTF-16 character
-	* @access private
-	*/
-	function utf82utf16($utf8)
-	{
-		// oh please oh please oh please oh please oh please
-		if(function_exists('mb_convert_encoding')) {
-			return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
-		}
-
-		switch(strlen($utf8)) {
-			case 1:
-				// this case should never be reached, because we are in ASCII range
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return $utf8;
-
-			case 2:
-				// return a UTF-16 character from a 2-byte UTF-8 char
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr(0x07 & (ord($utf8[0]) >> 2))
-					. chr((0xC0 & (ord($utf8[0]) << 6))
-						| (0x3F & ord($utf8[1])));
-
-			case 3:
-				// return a UTF-16 character from a 3-byte UTF-8 char
-				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-				return chr((0xF0 & (ord($utf8[0]) << 4))
-						| (0x0F & (ord($utf8[1]) >> 2)))
-					. chr((0xC0 & (ord($utf8[1]) << 6))
-						| (0x7F & ord($utf8[2])));
-		}
-
-		// ignoring UTF-32 for now, sorry
-		return '';
-	}
-
- /**
-	* encodes an arbitrary variable into JSON format (and sends JSON Header)
-	*
-	* @param	mixed $var	any number, boolean, string, array, or object to be encoded.
-	*						see argument 1 to Services_JSON() above for array-parsing behavior.
-	*						if var is a strng, note that encode() always expects it
-	*						to be in ASCII or UTF-8 format!
-	*
-	* @return mixed JSON string representation of input var or an error if a problem occurs
-	* @access public
-	*/
-	function encode($var)
-	{
-		header('Content-type: application/json');
-		return $this->_encode($var);
-	}
-	/**
-	* encodes an arbitrary variable into JSON format without JSON Header - warning - may allow CSS!!!!)
-	*
-	* @param	mixed $var	any number, boolean, string, array, or object to be encoded.
-	*						see argument 1 to Services_JSON() above for array-parsing behavior.
-	*						if var is a strng, note that encode() always expects it
-	*						to be in ASCII or UTF-8 format!
-	*
-	* @return mixed JSON string representation of input var or an error if a problem occurs
-	* @access public
-	*/
-	function encodeUnsafe($var)
-	{
-		return $this->_encode($var);
-	}
-	/**
-	* PRIVATE CODE that does the work of encodes an arbitrary variable into JSON format
-	*
-	* @param	mixed $var	any number, boolean, string, array, or object to be encoded.
-	*						see argument 1 to Services_JSON() above for array-parsing behavior.
-	*						if var is a strng, note that encode() always expects it
-	*						to be in ASCII or UTF-8 format!
-	*
-	* @return mixed JSON string representation of input var or an error if a problem occurs
-	* @access public
-	*/
-	function _encode($var)
-	{
-
-		switch (gettype($var)) {
-			case 'boolean':
-				return $var ? 'true' : 'false';
-
-			case 'NULL':
-				return 'null';
-
-			case 'integer':
-				return (int) $var;
-
-			case 'double':
-			case 'float':
-				return (float) $var;
-
-			case 'string':
-				// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
-				$ascii = '';
-				$strlen_var = strlen($var);
-
-			/*
-				* Iterate over every character in the string,
-				* escaping with a slash or encoding to UTF-8 where necessary
-				*/
-				for ($c = 0; $c < $strlen_var; ++$c) {
-
-					$ord_var_c = ord($var[$c]);
-
-					switch (true) {
-						case $ord_var_c == 0x08:
-							$ascii .= '\b';
-							break;
-						case $ord_var_c == 0x09:
-							$ascii .= '\t';
-							break;
-						case $ord_var_c == 0x0A:
-							$ascii .= '\n';
-							break;
-						case $ord_var_c == 0x0C:
-							$ascii .= '\f';
-							break;
-						case $ord_var_c == 0x0D:
-							$ascii .= '\r';
-							break;
-
-						case $ord_var_c == 0x22:
-						case $ord_var_c == 0x2F:
-						case $ord_var_c == 0x5C:
-							// double quote, slash, slosh
-							$ascii .= '\\'.$var[$c];
-							break;
-
-						case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
-							// characters U-00000000 - U-0000007F (same as ASCII)
-							$ascii .= $var[$c];
-							break;
-
-						case (($ord_var_c & 0xE0) == 0xC0):
-							// characters U-00000080 - U-000007FF, mask 110XXXXX
-							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-							if ($c+1 >= $strlen_var) {
-								$c += 1;
-								$ascii .= '?';
-								break;
-							}
-
-							$char = pack('C*', $ord_var_c, ord($var[$c + 1]));
-							$c += 1;
-							$utf16 = $this->utf82utf16($char);
-							$ascii .= sprintf('\u%04s', bin2hex($utf16));
-							break;
-
-						case (($ord_var_c & 0xF0) == 0xE0):
-							if ($c+2 >= $strlen_var) {
-								$c += 2;
-								$ascii .= '?';
-								break;
-							}
-							// characters U-00000800 - U-0000FFFF, mask 1110XXXX
-							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-							$char = pack('C*', $ord_var_c,
-										@ord($var[$c + 1]),
-										@ord($var[$c + 2]));
-							$c += 2;
-							$utf16 = $this->utf82utf16($char);
-							$ascii .= sprintf('\u%04s', bin2hex($utf16));
-							break;
-
-						case (($ord_var_c & 0xF8) == 0xF0):
-							if ($c+3 >= $strlen_var) {
-								$c += 3;
-								$ascii .= '?';
-								break;
-							}
-							// characters U-00010000 - U-001FFFFF, mask 11110XXX
-							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-							$char = pack('C*', $ord_var_c,
-										ord($var[$c + 1]),
-										ord($var[$c + 2]),
-										ord($var[$c + 3]));
-							$c += 3;
-							$utf16 = $this->utf82utf16($char);
-							$ascii .= sprintf('\u%04s', bin2hex($utf16));
-							break;
-
-						case (($ord_var_c & 0xFC) == 0xF8):
-							// characters U-00200000 - U-03FFFFFF, mask 111110XX
-							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-							if ($c+4 >= $strlen_var) {
-								$c += 4;
-								$ascii .= '?';
-								break;
-							}
-							$char = pack('C*', $ord_var_c,
-										ord($var[$c + 1]),
-										ord($var[$c + 2]),
-										ord($var[$c + 3]),
-										ord($var[$c + 4]));
-							$c += 4;
-							$utf16 = $this->utf82utf16($char);
-							$ascii .= sprintf('\u%04s', bin2hex($utf16));
-							break;
-
-						case (($ord_var_c & 0xFE) == 0xFC):
-						if ($c+5 >= $strlen_var) {
-								$c += 5;
-								$ascii .= '?';
-								break;
-							}
-							// characters U-04000000 - U-7FFFFFFF, mask 1111110X
-							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-							$char = pack('C*', $ord_var_c,
-										ord($var[$c + 1]),
-										ord($var[$c + 2]),
-										ord($var[$c + 3]),
-										ord($var[$c + 4]),
-										ord($var[$c + 5]));
-							$c += 5;
-							$utf16 = $this->utf82utf16($char);
-							$ascii .= sprintf('\u%04s', bin2hex($utf16));
-							break;
-					}
-				}
-				return  '"'.$ascii.'"';
-
-			case 'array':
-			/*
-				* As per JSON spec if any array key is not an integer
-				* we must treat the the whole array as an object. We
-				* also try to catch a sparsely populated associative
-				* array with numeric keys here because some JS engines
-				* will create an array with empty indexes up to
-				* max_index which can cause memory issues and because
-				* the keys, which may be relevant, will be remapped
-				* otherwise.
-				*
-				* As per the ECMA and JSON specification an object may
-				* have any string as a property. Unfortunately due to
-				* a hole in the ECMA specification if the key is a
-				* ECMA reserved word or starts with a digit the
-				* parameter is only accessible using ECMAScript's
-				* bracket notation.
-				*/
-
-				// treat as a JSON object
-				if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
-					$properties = array_map(array($this, 'name_value'),
-											array_keys($var),
-											array_values($var));
-
-					foreach($properties as $property) {
-						if(Services_JSON::isError($property)) {
-							return $property;
-						}
-					}
-
-					return '{' . join(',', $properties) . '}';
-				}
-
-				// treat it like a regular array
-				$elements = array_map(array($this, '_encode'), $var);
-
-				foreach($elements as $element) {
-					if(Services_JSON::isError($element)) {
-						return $element;
-					}
-				}
-
-				return '[' . join(',', $elements) . ']';
-
-			case 'object':
-				$vars = get_object_vars($var);
-
-				$properties = array_map(array($this, 'name_value'),
-										array_keys($vars),
-										array_values($vars));
-
-				foreach($properties as $property) {
-					if(Services_JSON::isError($property)) {
-						return $property;
-					}
-				}
-
-				return '{' . join(',', $properties) . '}';
-
-			default:
-				return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
-					? 'null'
-					: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
-		}
-	}
-
- /**
-	* array-walking function for use in generating JSON-formatted name-value pairs
-	*
-	* @param	string  $name name of key to use
-	* @param	mixed $value  reference to an array element to be encoded
-	*
-	* @return string  JSON-formatted name-value pair, like '"name":value'
-	* @access private
-	*/
-	function name_value($name, $value)
-	{
-		$encoded_value = $this->_encode($value);
-
-		if(Services_JSON::isError($encoded_value)) {
-			return $encoded_value;
-		}
-
-		return $this->_encode(strval($name)) . ':' . $encoded_value;
-	}
-
- /**
-	* reduce a string by removing leading and trailing comments and whitespace
-	*
-	* @param	$str	string	string value to strip of comments and whitespace
-	*
-	* @return string  string value stripped of comments and whitespace
-	* @access private
-	*/
-	function reduce_string($str)
-	{
-		$str = preg_replace(array(
-
-				// eliminate single line comments in '// ...' form
-				'#^\s*//(.+)$#m',
-
-				// eliminate multi-line comments in '/* ... */' form, at start of string
-				'#^\s*/\*(.+)\*/#Us',
-
-				// eliminate multi-line comments in '/* ... */' form, at end of string
-				'#/\*(.+)\*/\s*$#Us'
-
-			), '', $str);
-
-		// eliminate extraneous space
-		return trim($str);
-	}
-
- /**
-	* decodes a JSON string into appropriate variable
-	*
-	* @param	string  $str	JSON-formatted string
-	*
-	* @return mixed number, boolean, string, array, or object
-	*				corresponding to given JSON input string.
-	*				See argument 1 to Services_JSON() above for object-output behavior.
-	*				Note that decode() always returns strings
-	*				in ASCII or UTF-8 format!
-	* @access public
-	*/
-	function decode($str)
-	{
-		$str = $this->reduce_string($str);
-
-		switch (strtolower($str)) {
-			case 'true':
-				return true;
-
-			case 'false':
-				return false;
-
-			case 'null':
-				return null;
-
-			default:
-				$m = array();
-
-				if (is_numeric($str)) {
-					// Lookie-loo, it's a number
-
-					// This would work on its own, but I'm trying to be
-					// good about returning integers where appropriate:
-					// return (float)$str;
-
-					// Return float or int, as appropriate
-					return ((float)$str == (integer)$str)
-						? (integer)$str
-						: (float)$str;
-
-				} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
-					// STRINGS RETURNED IN UTF-8 FORMAT
-					$delim = substr($str, 0, 1);
-					$chrs = substr($str, 1, -1);
-					$utf8 = '';
-					$strlen_chrs = strlen($chrs);
-
-					for ($c = 0; $c < $strlen_chrs; ++$c) {
-
-						$substr_chrs_c_2 = substr($chrs, $c, 2);
-						$ord_chrs_c = ord($chrs[$c]);
-
-						switch (true) {
-							case $substr_chrs_c_2 == '\b':
-								$utf8 .= chr(0x08);
-								++$c;
-								break;
-							case $substr_chrs_c_2 == '\t':
-								$utf8 .= chr(0x09);
-								++$c;
-								break;
-							case $substr_chrs_c_2 == '\n':
-								$utf8 .= chr(0x0A);
-								++$c;
-								break;
-							case $substr_chrs_c_2 == '\f':
-								$utf8 .= chr(0x0C);
-								++$c;
-								break;
-							case $substr_chrs_c_2 == '\r':
-								$utf8 .= chr(0x0D);
-								++$c;
-								break;
-
-							case $substr_chrs_c_2 == '\\"':
-							case $substr_chrs_c_2 == '\\\'':
-							case $substr_chrs_c_2 == '\\\\':
-							case $substr_chrs_c_2 == '\\/':
-								if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
-								($delim == "'" && $substr_chrs_c_2 != '\\"')) {
-									$utf8 .= $chrs[++$c];
-								}
-								break;
-
-							case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
-								// single, escaped unicode character
-								$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
-									. chr(hexdec(substr($chrs, ($c + 4), 2)));
-								$utf8 .= $this->utf162utf8($utf16);
-								$c += 5;
-								break;
-
-							case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
-								$utf8 .= $chrs[$c];
-								break;
-
-							case ($ord_chrs_c & 0xE0) == 0xC0:
-								// characters U-00000080 - U-000007FF, mask 110XXXXX
-								//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-								$utf8 .= substr($chrs, $c, 2);
-								++$c;
-								break;
-
-							case ($ord_chrs_c & 0xF0) == 0xE0:
-								// characters U-00000800 - U-0000FFFF, mask 1110XXXX
-								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-								$utf8 .= substr($chrs, $c, 3);
-								$c += 2;
-								break;
-
-							case ($ord_chrs_c & 0xF8) == 0xF0:
-								// characters U-00010000 - U-001FFFFF, mask 11110XXX
-								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-								$utf8 .= substr($chrs, $c, 4);
-								$c += 3;
-								break;
-
-							case ($ord_chrs_c & 0xFC) == 0xF8:
-								// characters U-00200000 - U-03FFFFFF, mask 111110XX
-								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-								$utf8 .= substr($chrs, $c, 5);
-								$c += 4;
-								break;
-
-							case ($ord_chrs_c & 0xFE) == 0xFC:
-								// characters U-04000000 - U-7FFFFFFF, mask 1111110X
-								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-								$utf8 .= substr($chrs, $c, 6);
-								$c += 5;
-								break;
-
-						}
-
-					}
-
-					return $utf8;
-
-				} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
-					// array, or object notation
-
-					if ($str[0] == '[') {
-						$stk = array(SERVICES_JSON_IN_ARR);
-						$arr = array();
-					} else {
-						if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
-							$stk = array(SERVICES_JSON_IN_OBJ);
-							$obj = array();
-						} else {
-							$stk = array(SERVICES_JSON_IN_OBJ);
-							$obj = new stdClass();
-						}
-					}
-
-					array_push($stk, array('what'  => SERVICES_JSON_SLICE,
-										'where' => 0,
-										'delim' => false));
-
-					$chrs = substr($str, 1, -1);
-					$chrs = $this->reduce_string($chrs);
-
-					if ($chrs == '') {
-						if (reset($stk) == SERVICES_JSON_IN_ARR) {
-							return $arr;
-
-						} else {
-							return $obj;
-
-						}
-					}
-
-					//print("\nparsing {$chrs}\n");
-
-					$strlen_chrs = strlen($chrs);
-
-					for ($c = 0; $c <= $strlen_chrs; ++$c) {
-
-						$top = end($stk);
-						$substr_chrs_c_2 = substr($chrs, $c, 2);
-
-						if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
-							// found a comma that is not inside a string, array, etc.,
-							// OR we've reached the end of the character list
-							$slice = substr($chrs, $top['where'], ($c - $top['where']));
-							array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
-							//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
-							if (reset($stk) == SERVICES_JSON_IN_ARR) {
-								// we are in an array, so just push an element onto the stack
-								array_push($arr, $this->decode($slice));
-
-							} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
-								// we are in an object, so figure
-								// out the property name and set an
-								// element in an associative array,
-								// for now
-								$parts = array();
-
-								if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
-									// "name":value pair
-									$key = $this->decode($parts[1]);
-									$val = $this->decode($parts[2]);
-
-									if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
-										$obj[$key] = $val;
-									} else {
-										$obj->$key = $val;
-									}
-								} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
-									// name:value pair, where name is unquoted
-									$key = $parts[1];
-									$val = $this->decode($parts[2]);
-
-									if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
-										$obj[$key] = $val;
-									} else {
-										$obj->$key = $val;
-									}
-								}
-
-							}
-
-						} elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
-							// found a quote, and we are not inside a string
-							array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
-							//print("Found start of string at {$c}\n");
-
-						} elseif (($chrs[$c] == $top['delim']) &&
-								($top['what'] == SERVICES_JSON_IN_STR) &&
-								((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
-							// found a quote, we're in a string, and it's not escaped
-							// we know that it's not escaped becase there is _not_ an
-							// odd number of backslashes at the end of the string so far
-							array_pop($stk);
-							//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
-
-						} elseif (($chrs[$c] == '[') &&
-								in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
-							// found a left-bracket, and we are in an array, object, or slice
-							array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
-							//print("Found start of array at {$c}\n");
-
-						} elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
-							// found a right-bracket, and we're in an array
-							array_pop($stk);
-							//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
-						} elseif (($chrs[$c] == '{') &&
-								in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
-							// found a left-brace, and we are in an array, object, or slice
-							array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
-							//print("Found start of object at {$c}\n");
-
-						} elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
-							// found a right-brace, and we're in an object
-							array_pop($stk);
-							//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
-						} elseif (($substr_chrs_c_2 == '/*') &&
-								in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
-							// found a comment start, and we are in an array, object, or slice
-							array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
-							$c++;
-							//print("Found start of comment at {$c}\n");
-
-						} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
-							// found a comment end, and we're in one now
-							array_pop($stk);
-							$c++;
-
-							for ($i = $top['where']; $i <= $c; ++$i)
-								$chrs = substr_replace($chrs, ' ', $i, 1);
-
-							//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
-						}
-
-					}
-
-					if (reset($stk) == SERVICES_JSON_IN_ARR) {
-						return $arr;
-
-					} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
-						return $obj;
-
-					}
-
-				}
-		}
-	}
-
-	/**
-	* @todo Ultimately, this should just call PEAR::isError()
-	*/
-	function isError($data, $code = null)
-	{
-		if (class_exists('pear')) {
-			return PEAR::isError($data, $code);
-		} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
-								is_subclass_of($data, 'services_json_error'))) {
-			return true;
-		}
-
-		return false;
-	}
+   /**
+    * constructs a new JSON instance
+    *
+    * @param    int     $use    object behavior flags; combine with boolean-OR
+    *
+    *                           possible values:
+    *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
+    *                                   "{...}" syntax creates associative arrays
+    *                                   instead of objects in decode().
+    *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
+    *                                   Values which can't be encoded (e.g. resources)
+    *                                   appear as NULL instead of throwing errors.
+    *                                   By default, a deeply-nested resource will
+    *                                   bubble up with an error, so all return values
+    *                                   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, 
+    *                                   strings or numbers, if you return an object, make sure it does
+    *                                   not have a toJSON method, otherwise an error will occur.
+    */
+    function Services_JSON($use = 0)
+    {
+        $this->use = $use;
+        $this->_mb_strlen            = function_exists('mb_strlen');
+        $this->_mb_convert_encoding  = function_exists('mb_convert_encoding');
+        $this->_mb_substr            = function_exists('mb_substr');
+    }
+    // private - cache the mbstring lookup results..
+    var $_mb_strlen = false;
+    var $_mb_substr = false;
+    var $_mb_convert_encoding = false;
+    
+   /**
+    * convert a string from one UTF-16 char to one UTF-8 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf16  UTF-16 character
+    * @return   string  UTF-8 character
+    * @access   private
+    */
+    function utf162utf8($utf16)
+    {
+        // oh please oh please oh please oh please oh please
+        if($this->_mb_convert_encoding) {
+            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+        }
+
+        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+
+        switch(true) {
+            case ((0x7F & $bytes) == $bytes):
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x7F & $bytes);
+
+            case (0x07FF & $bytes) == $bytes:
+                // return a 2-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xC0 | (($bytes >> 6) & 0x1F))
+                     . chr(0x80 | ($bytes & 0x3F));
+
+            case (0xFFFF & $bytes) == $bytes:
+                // return a 3-byte UTF-8 character
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0xE0 | (($bytes >> 12) & 0x0F))
+                     . chr(0x80 | (($bytes >> 6) & 0x3F))
+                     . chr(0x80 | ($bytes & 0x3F));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * convert a string from one UTF-8 char to one UTF-16 char
+    *
+    * Normally should be handled by mb_convert_encoding, but
+    * provides a slower PHP-only method for installations
+    * that lack the multibye string extension.
+    *
+    * @param    string  $utf8   UTF-8 character
+    * @return   string  UTF-16 character
+    * @access   private
+    */
+    function utf82utf16($utf8)
+    {
+        // oh please oh please oh please oh please oh please
+        if($this->_mb_convert_encoding) {
+            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+        }
+
+        switch($this->strlen8($utf8)) {
+            case 1:
+                // this case should never be reached, because we are in ASCII range
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return $utf8;
+
+            case 2:
+                // return a UTF-16 character from a 2-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr(0x07 & (ord($utf8{0}) >> 2))
+                     . chr((0xC0 & (ord($utf8{0}) << 6))
+                         | (0x3F & ord($utf8{1})));
+
+            case 3:
+                // return a UTF-16 character from a 3-byte UTF-8 char
+                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                return chr((0xF0 & (ord($utf8{0}) << 4))
+                         | (0x0F & (ord($utf8{1}) >> 2)))
+                     . chr((0xC0 & (ord($utf8{1}) << 6))
+                         | (0x7F & ord($utf8{2})));
+        }
+
+        // ignoring UTF-32 for now, sorry
+        return '';
+    }
+
+   /**
+    * encodes an arbitrary variable into JSON format (and sends JSON Header)
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encode($var)
+    {
+        header('Content-type: application/json');
+        return $this->encodeUnsafe($var);
+    }
+    /**
+    * encodes an arbitrary variable into JSON format without JSON Header - warning - may allow XSS!!!!)
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function encodeUnsafe($var)
+    {
+        // see bug #16908 - regarding numeric locale printing
+        $lc = setlocale(LC_NUMERIC, 0);
+        setlocale(LC_NUMERIC, 'C');
+        $ret = $this->_encode($var);
+        setlocale(LC_NUMERIC, $lc);
+        return $ret;
+        
+    }
+    /**
+    * PRIVATE CODE that does the work of encodes an arbitrary variable into JSON format 
+    *
+    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
+    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
+    *                           if var is a strng, note that encode() always expects it
+    *                           to be in ASCII or UTF-8 format!
+    *
+    * @return   mixed   JSON string representation of input var or an error if a problem occurs
+    * @access   public
+    */
+    function _encode($var) 
+    {
+         
+        switch (gettype($var)) {
+            case 'boolean':
+                return $var ? 'true' : 'false';
+
+            case 'NULL':
+                return 'null';
+
+            case 'integer':
+                return (int) $var;
+
+            case 'double':
+            case 'float':
+                return  (float) $var;
+
+            case 'string':
+                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+                $ascii = '';
+                $strlen_var = $this->strlen8($var);
+
+               /*
+                * Iterate over every character in the string,
+                * escaping with a slash or encoding to UTF-8 where necessary
+                */
+                for ($c = 0; $c < $strlen_var; ++$c) {
+
+                    $ord_var_c = ord($var{$c});
+
+                    switch (true) {
+                        case $ord_var_c == 0x08:
+                            $ascii .= '\b';
+                            break;
+                        case $ord_var_c == 0x09:
+                            $ascii .= '\t';
+                            break;
+                        case $ord_var_c == 0x0A:
+                            $ascii .= '\n';
+                            break;
+                        case $ord_var_c == 0x0C:
+                            $ascii .= '\f';
+                            break;
+                        case $ord_var_c == 0x0D:
+                            $ascii .= '\r';
+                            break;
+
+                        case $ord_var_c == 0x22:
+                        case $ord_var_c == 0x2F:
+                        case $ord_var_c == 0x5C:
+                            // double quote, slash, slosh
+                            $ascii .= '\\'.$var{$c};
+                            break;
+
+                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+                            // characters U-00000000 - U-0000007F (same as ASCII)
+                            $ascii .= $var{$c};
+                            break;
+
+                        case (($ord_var_c & 0xE0) == 0xC0):
+                            // characters U-00000080 - U-000007FF, mask 110XXXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            if ($c+1 >= $strlen_var) {
+                                $c += 1;
+                                $ascii .= '?';
+                                break;
+                            }
+                            
+                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+                            $c += 1;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF0) == 0xE0):
+                            if ($c+2 >= $strlen_var) {
+                                $c += 2;
+                                $ascii .= '?';
+                                break;
+                            }
+                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         @ord($var{$c + 1}),
+                                         @ord($var{$c + 2}));
+                            $c += 2;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xF8) == 0xF0):
+                            if ($c+3 >= $strlen_var) {
+                                $c += 3;
+                                $ascii .= '?';
+                                break;
+                            }
+                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}));
+                            $c += 3;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFC) == 0xF8):
+                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            if ($c+4 >= $strlen_var) {
+                                $c += 4;
+                                $ascii .= '?';
+                                break;
+                            }
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}));
+                            $c += 4;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+
+                        case (($ord_var_c & 0xFE) == 0xFC):
+                        if ($c+5 >= $strlen_var) {
+                                $c += 5;
+                                $ascii .= '?';
+                                break;
+                            }
+                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                            $char = pack('C*', $ord_var_c,
+                                         ord($var{$c + 1}),
+                                         ord($var{$c + 2}),
+                                         ord($var{$c + 3}),
+                                         ord($var{$c + 4}),
+                                         ord($var{$c + 5}));
+                            $c += 5;
+                            $utf16 = $this->utf82utf16($char);
+                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
+                            break;
+                    }
+                }
+                return  '"'.$ascii.'"';
+
+            case 'array':
+               /*
+                * As per JSON spec if any array key is not an integer
+                * we must treat the the whole array as an object. We
+                * also try to catch a sparsely populated associative
+                * array with numeric keys here because some JS engines
+                * will create an array with empty indexes up to
+                * max_index which can cause memory issues and because
+                * the keys, which may be relevant, will be remapped
+                * otherwise.
+                *
+                * As per the ECMA and JSON specification an object may
+                * have any string as a property. Unfortunately due to
+                * a hole in the ECMA specification if the key is a
+                * ECMA reserved word or starts with a digit the
+                * parameter is only accessible using ECMAScript's
+                * bracket notation.
+                */
+
+                // treat as a JSON object
+                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+                    $properties = array_map(array($this, 'name_value'),
+                                            array_keys($var),
+                                            array_values($var));
+
+                    foreach($properties as $property) {
+                        if(Services_JSON::isError($property)) {
+                            return $property;
+                        }
+                    }
+
+                    return '{' . join(',', $properties) . '}';
+                }
+
+                // treat it like a regular array
+                $elements = array_map(array($this, '_encode'), $var);
+
+                foreach($elements as $element) {
+                    if(Services_JSON::isError($element)) {
+                        return $element;
+                    }
+                }
+
+                return '[' . join(',', $elements) . ']';
+
+            case 'object':
+            
+                // support toJSON methods.
+                if (($this->use & SERVICES_JSON_USE_TO_JSON) && method_exists($var, 'toJSON')) {
+                    // this may end up allowing unlimited recursion
+                    // so we check the return value to make sure it's not got the same method.
+                    $recode = $var->toJSON();
+                    
+                    if (method_exists($recode, 'toJSON')) {
+                        
+                        return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                        ? 'null'
+                        : new Services_JSON_Error(get_class($var).
+                            " toJSON returned an object with a toJSON method.");
+                            
+                    }
+                    
+                    return $this->_encode( $recode );
+                } 
+                
+                $vars = get_object_vars($var);
+                
+                $properties = array_map(array($this, 'name_value'),
+                                        array_keys($vars),
+                                        array_values($vars));
+
+                foreach($properties as $property) {
+                    if(Services_JSON::isError($property)) {
+                        return $property;
+                    }
+                }
+
+                return '{' . join(',', $properties) . '}';
+
+            default:
+                return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
+                    ? 'null'
+                    : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
+        }
+    }
+
+   /**
+    * array-walking function for use in generating JSON-formatted name-value pairs
+    *
+    * @param    string  $name   name of key to use
+    * @param    mixed   $value  reference to an array element to be encoded
+    *
+    * @return   string  JSON-formatted name-value pair, like '"name":value'
+    * @access   private
+    */
+    function name_value($name, $value)
+    {
+        $encoded_value = $this->_encode($value);
+
+        if(Services_JSON::isError($encoded_value)) {
+            return $encoded_value;
+        }
+
+        return $this->_encode(strval($name)) . ':' . $encoded_value;
+    }
+
+   /**
+    * reduce a string by removing leading and trailing comments and whitespace
+    *
+    * @param    $str    string      string value to strip of comments and whitespace
+    *
+    * @return   string  string value stripped of comments and whitespace
+    * @access   private
+    */
+    function reduce_string($str)
+    {
+        $str = preg_replace(array(
+
+                // eliminate single line comments in '// ...' form
+                '#^\s*//(.+)$#m',
+
+                // eliminate multi-line comments in '/* ... */' form, at start of string
+                '#^\s*/\*(.+)\*/#Us',
+
+                // eliminate multi-line comments in '/* ... */' form, at end of string
+                '#/\*(.+)\*/\s*$#Us'
+
+            ), '', $str);
+
+        // eliminate extraneous space
+        return trim($str);
+    }
+
+   /**
+    * decodes a JSON string into appropriate variable
+    *
+    * @param    string  $str    JSON-formatted string
+    *
+    * @return   mixed   number, boolean, string, array, or object
+    *                   corresponding to given JSON input string.
+    *                   See argument 1 to Services_JSON() above for object-output behavior.
+    *                   Note that decode() always returns strings
+    *                   in ASCII or UTF-8 format!
+    * @access   public
+    */
+    function decode($str)
+    {
+        $str = $this->reduce_string($str);
+
+        switch (strtolower($str)) {
+            case 'true':
+                return true;
+
+            case 'false':
+                return false;
+
+            case 'null':
+                return null;
+
+            default:
+                $m = array();
+
+                if (is_numeric($str)) {
+                    // Lookie-loo, it's a number
+
+                    // This would work on its own, but I'm trying to be
+                    // good about returning integers where appropriate:
+                    // return (float)$str;
+
+                    // Return float or int, as appropriate
+                    return ((float)$str == (integer)$str)
+                        ? (integer)$str
+                        : (float)$str;
+
+                } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
+                    // STRINGS RETURNED IN UTF-8 FORMAT
+                    $delim = $this->substr8($str, 0, 1);
+                    $chrs = $this->substr8($str, 1, -1);
+                    $utf8 = '';
+                    $strlen_chrs = $this->strlen8($chrs);
+
+                    for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+                        $substr_chrs_c_2 = $this->substr8($chrs, $c, 2);
+                        $ord_chrs_c = ord($chrs{$c});
+
+                        switch (true) {
+                            case $substr_chrs_c_2 == '\b':
+                                $utf8 .= chr(0x08);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\t':
+                                $utf8 .= chr(0x09);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\n':
+                                $utf8 .= chr(0x0A);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\f':
+                                $utf8 .= chr(0x0C);
+                                ++$c;
+                                break;
+                            case $substr_chrs_c_2 == '\r':
+                                $utf8 .= chr(0x0D);
+                                ++$c;
+                                break;
+
+                            case $substr_chrs_c_2 == '\\"':
+                            case $substr_chrs_c_2 == '\\\'':
+                            case $substr_chrs_c_2 == '\\\\':
+                            case $substr_chrs_c_2 == '\\/':
+                                if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+                                   ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+                                    $utf8 .= $chrs{++$c};
+                                }
+                                break;
+
+                            case preg_match('/\\\u[0-9A-F]{4}/i', $this->substr8($chrs, $c, 6)):
+                                // single, escaped unicode character
+                                $utf16 = chr(hexdec($this->substr8($chrs, ($c + 2), 2)))
+                                       . chr(hexdec($this->substr8($chrs, ($c + 4), 2)));
+                                $utf8 .= $this->utf162utf8($utf16);
+                                $c += 5;
+                                break;
+
+                            case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
+                                $utf8 .= $chrs{$c};
+                                break;
+
+                            case ($ord_chrs_c & 0xE0) == 0xC0:
+                                // characters U-00000080 - U-000007FF, mask 110XXXXX
+                                //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= $this->substr8($chrs, $c, 2);
+                                ++$c;
+                                break;
+
+                            case ($ord_chrs_c & 0xF0) == 0xE0:
+                                // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= $this->substr8($chrs, $c, 3);
+                                $c += 2;
+                                break;
+
+                            case ($ord_chrs_c & 0xF8) == 0xF0:
+                                // characters U-00010000 - U-001FFFFF, mask 11110XXX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= $this->substr8($chrs, $c, 4);
+                                $c += 3;
+                                break;
+
+                            case ($ord_chrs_c & 0xFC) == 0xF8:
+                                // characters U-00200000 - U-03FFFFFF, mask 111110XX
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= $this->substr8($chrs, $c, 5);
+                                $c += 4;
+                                break;
+
+                            case ($ord_chrs_c & 0xFE) == 0xFC:
+                                // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+                                // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+                                $utf8 .= $this->substr8($chrs, $c, 6);
+                                $c += 5;
+                                break;
+
+                        }
+
+                    }
+
+                    return $utf8;
+
+                } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+                    // array, or object notation
+
+                    if ($str{0} == '[') {
+                        $stk = array(SERVICES_JSON_IN_ARR);
+                        $arr = array();
+                    } else {
+                        if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = array();
+                        } else {
+                            $stk = array(SERVICES_JSON_IN_OBJ);
+                            $obj = new stdClass();
+                        }
+                    }
+
+                    array_push($stk, array('what'  => SERVICES_JSON_SLICE,
+                                           'where' => 0,
+                                           'delim' => false));
+
+                    $chrs = $this->substr8($str, 1, -1);
+                    $chrs = $this->reduce_string($chrs);
+
+                    if ($chrs == '') {
+                        if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                            return $arr;
+
+                        } else {
+                            return $obj;
+
+                        }
+                    }
+
+                    //print("\nparsing {$chrs}\n");
+
+                    $strlen_chrs = $this->strlen8($chrs);
+
+                    for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+                        $top = end($stk);
+                        $substr_chrs_c_2 = $this->substr8($chrs, $c, 2);
+
+                        if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+                            // found a comma that is not inside a string, array, etc.,
+                            // OR we've reached the end of the character list
+                            $slice = $this->substr8($chrs, $top['where'], ($c - $top['where']));
+                            array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+                            //print("Found split at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                            if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                                // we are in an array, so just push an element onto the stack
+                                array_push($arr, $this->decode($slice));
+
+                            } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                                // we are in an object, so figure
+                                // out the property name and set an
+                                // element in an associative array,
+                                // for now
+                                $parts = array();
+                                
+                               if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:/Uis', $slice, $parts)) {
+ 	                              // "name":value pair
+                                    $key = $this->decode($parts[1]);
+                                    $val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B"));
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                } elseif (preg_match('/^\s*(\w+)\s*:/Uis', $slice, $parts)) {
+                                    // name:value pair, where name is unquoted
+                                    $key = $parts[1];
+                                    $val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B"));
+
+                                    if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
+                                        $obj[$key] = $val;
+                                    } else {
+                                        $obj->$key = $val;
+                                    }
+                                }
+
+                            }
+
+                        } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+                            // found a quote, and we are not inside a string
+                            array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+                            //print("Found start of string at {$c}\n");
+
+                        } elseif (($chrs{$c} == $top['delim']) &&
+                                 ($top['what'] == SERVICES_JSON_IN_STR) &&
+                                 (($this->strlen8($this->substr8($chrs, 0, $c)) - $this->strlen8(rtrim($this->substr8($chrs, 0, $c), '\\'))) % 2 != 1)) {
+                            // found a quote, we're in a string, and it's not escaped
+                            // we know that it's not escaped becase there is _not_ an
+                            // odd number of backslashes at the end of the string so far
+                            array_pop($stk);
+                            //print("Found end of string at {$c}: ".$this->substr8($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '[') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-bracket, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
+                            //print("Found start of array at {$c}\n");
+
+                        } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+                            // found a right-bracket, and we're in an array
+                            array_pop($stk);
+                            //print("Found end of array at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($chrs{$c} == '{') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a left-brace, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+                            //print("Found start of object at {$c}\n");
+
+                        } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+                            // found a right-brace, and we're in an object
+                            array_pop($stk);
+                            //print("Found end of object at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        } elseif (($substr_chrs_c_2 == '/*') &&
+                                 in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
+                            // found a comment start, and we are in an array, object, or slice
+                            array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
+                            $c++;
+                            //print("Found start of comment at {$c}\n");
+
+                        } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
+                            // found a comment end, and we're in one now
+                            array_pop($stk);
+                            $c++;
+
+                            for ($i = $top['where']; $i <= $c; ++$i)
+                                $chrs = substr_replace($chrs, ' ', $i, 1);
+
+                            //print("Found end of comment at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+                        }
+
+                    }
+
+                    if (reset($stk) == SERVICES_JSON_IN_ARR) {
+                        return $arr;
+
+                    } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
+                        return $obj;
+
+                    }
+
+                }
+        }
+    }
+
+    /**
+     * @todo Ultimately, this should just call PEAR::isError()
+     */
+    function isError($data, $code = null)
+    {
+        if (class_exists('pear')) {
+            return PEAR::isError($data, $code);
+        } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
+                                 is_subclass_of($data, 'services_json_error'))) {
+            return true;
+        }
+
+        return false;
+    }
+    
+    /**
+    * Calculates length of string in bytes
+    * @param string 
+    * @return integer length
+    */
+    function strlen8( $str ) 
+    {
+        if ( $this->_mb_strlen ) {
+            return mb_strlen( $str, "8bit" );
+        }
+        return strlen( $str );
+    }
+    
+    /**
+    * Returns part of a string, interpreting $start and $length as number of bytes.
+    * @param string 
+    * @param integer start 
+    * @param integer length 
+    * @return integer length
+    */
+    function substr8( $string, $start, $length=false ) 
+    {
+        if ( $length === false ) {
+            $length = $this->strlen8( $string ) - $start;
+        }
+        if ( $this->_mb_substr ) {
+            return mb_substr( $string, $start, $length, "8bit" );
+        }
+        return substr( $string, $start, $length );
+    }
+
 }
 
 if (class_exists('PEAR_Error')) {
 
-	class Services_JSON_Error extends PEAR_Error
-	{
-		function Services_JSON_Error($message = 'unknown error', $code = null,
-									$mode = null, $options = null, $userinfo = null)
-		{
-			parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
-		}
-	}
+    class Services_JSON_Error extends PEAR_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+            parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
+        }
+    }
 
 } else {
 
-	/**
-	* @todo Ultimately, this class shall be descended from PEAR_Error
-	*/
-	class Services_JSON_Error
-	{
-		function Services_JSON_Error($message = 'unknown error', $code = null,
-									$mode = null, $options = null, $userinfo = null)
-		{
-
-		}
-	}
-
+    /**
+     * @todo Ultimately, this class shall be descended from PEAR_Error
+     */
+    class Services_JSON_Error
+    {
+        function Services_JSON_Error($message = 'unknown error', $code = null,
+                                     $mode = null, $options = null, $userinfo = null)
+        {
+
+        }
+    }
+    
 }
+
 endif;
diff --git a/wp-includes/class-oembed.php b/wp-includes/class-oembed.php
index 5ff2a2e05..a880448db 100644
--- a/wp-includes/class-oembed.php
+++ b/wp-includes/class-oembed.php
@@ -30,12 +30,14 @@ class WP_oEmbed {
 		// The WP_Embed class disables discovery for non-unfiltered_html users, so only providers in this array will be used for them.
 		// Add to this list using the wp_oembed_add_provider() function (see its PHPDoc for details).
 		$this->providers = apply_filters( 'oembed_providers', array(
-			'#https?://(www\.)?youtube.com/watch.*#i'            => array( 'http://www.youtube.com/oembed',                     true  ),
+			'#https?://(www\.)?youtube\.com/watch.*#i'           => array( 'http://www.youtube.com/oembed',                     true  ),
 			'http://youtu.be/*'                                  => array( 'http://www.youtube.com/oembed',                     false ),
 			'http://blip.tv/*'                                   => array( 'http://blip.tv/oembed/',                            false ),
 			'#https?://(www\.)?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( 'http://www.flickr.com/services/oembed/',            true  ),
+			'http://flic.kr/*'                                   => array( 'http://www.flickr.com/services/oembed/',            false ),
 			'#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  ),
 			'#https?://(www\.)?viddler\.com/.*#i'                => array( 'http://lab.viddler.com/services/oembed/',           true  ),
@@ -47,10 +49,13 @@ class WP_oEmbed {
 			'http://wordpress.tv/*'                              => array( 'http://wordpress.tv/oembed/',                       false ),
 			'#https?://(.+\.)?polldaddy\.com/.*#i'               => array( 'http://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( 'http://api.twitter.com/1/statuses/oembed.{format}', true  ),
+			'#https?://(www\.)?twitter\.com/.+?/status(es)?/.*#i'=> array( 'http://api.twitter.com/1/statuses/oembed.{format}', true  ),
  			'#https?://(www\.)?soundcloud\.com/.*#i'             => array( 'http://soundcloud.com/oembed',                      true  ),
-			'#https?://(www\.)?slideshare.net/*#'                => array( 'http://www.slideshare.net/api/oembed/2',            true  ),
+			'#https?://(www\.)?slideshare\.net/*#'               => array( 'http://www.slideshare.net/api/oembed/2',            true  ),
 			'#http://instagr(\.am|am\.com)/p/.*#i'               => array( 'http://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  ),
 		) );
 
 		// Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
@@ -108,7 +113,7 @@ class WP_oEmbed {
 		$providers = array();
 
 		// Fetch URL content
-		if ( $html = wp_remote_retrieve_body( wp_remote_get( $url, array( 'reject_unsafe_urls' => true ) ) ) ) {
+		if ( $html = wp_remote_retrieve_body( wp_safe_remote_get( $url ) ) ) {
 
 			// <link> types that contain oEmbed provider URLs
 			$linktypes = apply_filters( 'oembed_linktypes', array(
@@ -190,7 +195,7 @@ class WP_oEmbed {
 	 */
 	function _fetch_with_format( $provider_url_with_args, $format ) {
 		$provider_url_with_args = add_query_arg( 'format', $format, $provider_url_with_args );
-		$response = wp_remote_get( $provider_url_with_args, array( 'reject_unsafe_urls' => true ) );
+		$response = wp_safe_remote_get( $provider_url_with_args );
 		if ( 501 == wp_remote_retrieve_response_code( $response ) )
 			return new WP_Error( 'not-implemented' );
 		if ( ! $body = wp_remote_retrieve_body( $response ) )
@@ -216,27 +221,52 @@ class WP_oEmbed {
 	 * @access private
 	 */
 	function _parse_xml( $response_body ) {
-		if ( !function_exists('simplexml_load_string') ) {
-			return false;
-		}
 		if ( ! function_exists( 'libxml_disable_entity_loader' ) )
 			return false;
 
 		$loader = libxml_disable_entity_loader( true );
-
 		$errors = libxml_use_internal_errors( true );
-		$data = simplexml_load_string( $response_body );
+
+		$return = $this->_parse_xml_body( $response_body );
+
 		libxml_use_internal_errors( $errors );
+		libxml_disable_entity_loader( $loader );
 
-		$return = false;
-		if ( is_object( $data ) ) {
-			$return = new stdClass;
-			foreach ( $data as $key => $value ) {
-				$return->$key = (string) $value;
-			}
+		return $return;
+	}
+
+	/**
+	 * Helper function for parsing an XML response body.
+	 *
+	 * @since 3.6.0
+	 * @access private
+	 */
+	private function _parse_xml_body( $response_body ) {
+		if ( ! function_exists( 'simplexml_import_dom' ) || ! class_exists( 'DOMDocument' ) )
+			return false;
+
+		$dom = new DOMDocument;
+		$success = $dom->loadXML( $response_body );
+		if ( ! $success )
+			return false;
+
+		if ( isset( $dom->doctype ) )
+			return false;
+
+		foreach ( $dom->childNodes as $child ) {
+			if ( XML_DOCUMENT_TYPE_NODE === $child->nodeType )
+				return false;
+		}
+
+		$xml = simplexml_import_dom( $dom );
+		if ( ! $xml )
+			return false;
+
+		$return = new stdClass;
+		foreach ( $xml as $key => $value ) {
+			$return->$key = (string) $value;
 		}
 
-		libxml_disable_entity_loader( $loader );
 		return $return;
 	}
 
diff --git a/wp-includes/class-phpmailer.php b/wp-includes/class-phpmailer.php
index df533c271..38ac37626 100644
--- a/wp-includes/class-phpmailer.php
+++ b/wp-includes/class-phpmailer.php
@@ -2,7 +2,7 @@
 /*~ class.phpmailer.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
-|   Version: 5.2.1                                                          |
+|   Version: 5.2.4                                                          |
 |      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
 | ------------------------------------------------------------------------- |
 |     Admin: Jim Jagielski (project admininistrator)                        |
@@ -23,7 +23,7 @@
 */
 
 /**
- * PHPMailer - PHP email transport class
+ * PHPMailer - PHP email creation and transport class
  * NOTE: Requires PHP version 5 or later
  * @package PHPMailer
  * @author Andy Prevost
@@ -31,12 +31,15 @@
  * @author Jim Jagielski
  * @copyright 2010 - 2012 Jim Jagielski
  * @copyright 2004 - 2009 Andy Prevost
- * @version $Id: class.phpmailer.php 450 2010-06-23 16:46:33Z coolbru $
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
 if (version_compare(PHP_VERSION, '5.0.0', '<') ) exit("Sorry, this version of PHPMailer will only run on PHP version 5 or greater!\n");
 
+/**
+ * PHP email creation and transport class
+ * @package PHPMailer
+ */
 class PHPMailer {
 
   /////////////////////////////////////////////////
@@ -93,6 +96,13 @@ class PHPMailer {
    */
   public $Sender            = '';
 
+  /**
+   * Sets the Return-Path of the message.  If empty, it will
+   * be set to either From or Sender.
+   * @var string
+   */
+  public $ReturnPath        = '';
+
   /**
    * Sets the Subject of the message.
    * @var string
@@ -130,11 +140,11 @@ class PHPMailer {
   protected $MIMEHeader     = '';
 
   /**
-   * Stores the complete sent MIME message (Body and Headers)
+   * Stores the extra header list which CreateHeader() doesn't fold in
    * @var string
    * @access protected
   */
-  protected $SentMIMEMessage     = '';
+  protected $mailHeader     = '';
 
   /**
    * Sets word wrapping on the body of the message to a given number of
@@ -155,6 +165,13 @@ class PHPMailer {
    */
   public $Sendmail          = '/usr/sbin/sendmail';
 
+  /**
+   * Determine if mail() uses a fully sendmail compatible MTA that
+   * supports sendmail's "-oi -f" options
+   * @var boolean
+   */
+  public $UseSendmailOptions	= true;
+  
   /**
    * Path to PHPMailer plugins.  Useful if the SMTP class
    * is in a different directory than the PHP include path.
@@ -183,12 +200,21 @@ class PHPMailer {
    */
   public $MessageID         = '';
 
+  /**
+   * Sets the message Date to be used in the Date header.
+   * If empty, the current date will be added.
+   * @var string
+   */
+  public $MessageDate       = '';
+
   /////////////////////////////////////////////////
   // PROPERTIES FOR SMTP
   /////////////////////////////////////////////////
 
   /**
-   * Sets the SMTP hosts.  All hosts must be separated by a
+   * Sets the SMTP hosts.
+   *
+   * All hosts must be separated by a
    * semicolon.  You can also specify a different port
    * for each host by using this format: [hostname:port]
    * (e.g. "smtp1.example.com:25;smtp2.example.com").
@@ -210,8 +236,7 @@ class PHPMailer {
   public $Helo          = '';
 
   /**
-   * Sets connection prefix.
-   * Options are "", "ssl" or "tls"
+   * Sets connection prefix. Options are "", "ssl" or "tls"
    * @var string
    */
   public $SMTPSecure    = '';
@@ -234,6 +259,24 @@ class PHPMailer {
    */
   public $Password      = '';
 
+  /**
+   *  Sets SMTP auth type. Options are LOGIN | PLAIN | NTLM  (default LOGIN)
+   *  @var string
+   */
+  public $AuthType      = '';
+  
+  /**
+   *  Sets SMTP realm.
+   *  @var string
+   */
+  public $Realm         = '';
+
+  /**
+   *  Sets SMTP workstation.
+   *  @var string
+   */
+  public $Workstation   = '';
+
   /**
    * Sets the SMTP server timeout in seconds.
    * This function will not work with the win32 version.
@@ -247,6 +290,13 @@ class PHPMailer {
    */
   public $SMTPDebug     = false;
 
+  /**
+   * Sets the function/method to use for debugging output.
+   * Right now we only honor "echo" or "error_log"
+   * @var string
+   */
+  public $Debugoutput     = "echo";
+
   /**
    * Prevents the SMTP connection from being closed after each mail
    * sending.  If this is set to true then to close the connection
@@ -269,53 +319,69 @@ class PHPMailer {
   public $SingleToArray = array();
 
  /**
-   * Provides the ability to change the line ending
+   * Provides the ability to change the generic line ending
+   * NOTE: The default remains '\n'. We force CRLF where we KNOW
+   *        it must be used via self::CRLF
    * @var string
    */
   public $LE              = "\n";
 
-  /**
-   * Used with DKIM DNS Resource Record
+   /**
+   * Used with DKIM Signing
+   * required parameter if DKIM is enabled
+   *
+   * domain selector example domainkey
    * @var string
    */
-  public $DKIM_selector   = 'phpmailer';
+  public $DKIM_selector   = '';
 
   /**
-   * Used with DKIM DNS Resource Record
-   * optional, in format of email address 'you@yourdomain.com'
+   * Used with DKIM Signing
+   * required if DKIM is enabled, in format of email address 'you@yourdomain.com' typically used as the source of the email
    * @var string
    */
   public $DKIM_identity   = '';
 
   /**
-   * Used with DKIM DNS Resource Record
+   * Used with DKIM Signing
+   * optional parameter if your private key requires a passphras
    * @var string
    */
   public $DKIM_passphrase   = '';
 
   /**
-   * Used with DKIM DNS Resource Record
-   * optional, in format of email address 'you@yourdomain.com'
+   * Used with DKIM Singing
+   * required if DKIM is enabled, in format of email address 'domain.com'
    * @var string
    */
   public $DKIM_domain     = '';
 
   /**
-   * Used with DKIM DNS Resource Record
-   * optional, in format of email address 'you@yourdomain.com'
+   * Used with DKIM Signing
+   * required if DKIM is enabled, path to private key file
    * @var string
    */
   public $DKIM_private    = '';
 
   /**
-   * Callback Action function name
-   * the function that handles the result of the send email action. Parameters:
+   * Callback Action function name.
+   * The function that handles the result of the send email action.
+   * It is called out by Send() for each email sent.
+   *
+   * Value can be:
+   * - 'function_name' for function names
+   * - 'Class::Method' for static method calls
+   * - array($object, 'Method') for calling methods on $object
+   * See http://php.net/is_callable manual page for more details.
+   *
+   * Parameters:
    *   bool    $result        result of the send action
    *   string  $to            email address of the recipient
    *   string  $cc            cc email addresses
    *   string  $bcc           bcc email addresses
    *   string  $subject       the subject
    *   string  $body          the email body
+   *   string  $from          email address of sender
    * @var string
    */
   public $action_function = ''; //'callbackAction';
@@ -324,11 +390,11 @@ class PHPMailer {
    * Sets the PHPMailer Version number
    * @var string
    */
-  public $Version         = '5.2.1';
+  public $Version         = '5.2.4';
 
   /**
    * What to use in the X-Mailer header
-   * @var string
+   * @var string NULL for default, whitespace for None, or actual string to use
    */
   public $XMailer         = '';
 
@@ -336,21 +402,85 @@ class PHPMailer {
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
 
-  protected   $smtp           = NULL;
+  /**
+   * @var SMTP An instance of the SMTP sender class
+   * @access protected
+   */
+  protected   $smtp           = null;
+  /**
+   * @var array An array of 'to' addresses
+   * @access protected
+   */
   protected   $to             = array();
+  /**
+   * @var array An array of 'cc' addresses
+   * @access protected
+   */
   protected   $cc             = array();
+  /**
+   * @var array An array of 'bcc' addresses
+   * @access protected
+   */
   protected   $bcc            = array();
+  /**
+   * @var array An array of reply-to name and address
+   * @access protected
+   */
   protected   $ReplyTo        = array();
+  /**
+   * @var array An array of all kinds of addresses: to, cc, bcc, replyto
+   * @access protected
+   */
   protected   $all_recipients = array();
+  /**
+   * @var array An array of attachments
+   * @access protected
+   */
   protected   $attachment     = array();
+  /**
+   * @var array An array of custom headers
+   * @access protected
+   */
   protected   $CustomHeader   = array();
+  /**
+   * @var string The message's MIME type
+   * @access protected
+   */
   protected   $message_type   = '';
+  /**
+   * @var array An array of MIME boundary strings
+   * @access protected
+   */
   protected   $boundary       = array();
+  /**
+   * @var array An array of available languages
+   * @access protected
+   */
   protected   $language       = array();
+  /**
+   * @var integer The number of errors encountered
+   * @access protected
+   */
   protected   $error_count    = 0;
+  /**
+   * @var string The filename of a DKIM certificate file
+   * @access protected
+   */
   protected   $sign_cert_file = '';
+  /**
+   * @var string The filename of a DKIM key file
+   * @access protected
+   */
   protected   $sign_key_file  = '';
+  /**
+   * @var string The password of a DKIM key
+   * @access protected
+   */
   protected   $sign_key_pass  = '';
+  /**
+   * @var boolean Whether to throw exceptions for errors
+   * @access protected
+   */
   protected   $exceptions     = false;
 
   /////////////////////////////////////////////////
@@ -360,11 +490,46 @@ class PHPMailer {
   const STOP_MESSAGE  = 0; // message only, continue processing
   const STOP_CONTINUE = 1; // message?, likely ok to continue processing
   const STOP_CRITICAL = 2; // message, plus full stop, critical error reached
-
+  const CRLF = "\r\n";     // SMTP RFC specified EOL
+  
   /////////////////////////////////////////////////
   // METHODS, VARIABLES
   /////////////////////////////////////////////////
 
+  /**
+   * Calls actual mail() function, but in a safe_mode aware fashion
+   * Also, unless sendmail_path points to sendmail (or something that
+   * claims to be sendmail), don't pass params (not a perfect fix,
+   * but it will do)
+   * @param string $to To
+   * @param string $subject Subject
+   * @param string $body Message Body
+   * @param string $header Additional Header(s)
+   * @param string $params Params
+   * @access private
+   * @return bool
+   */
+  private function mail_passthru($to, $subject, $body, $header, $params) {
+    if ( ini_get('safe_mode') || !($this->UseSendmailOptions) ) {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header);
+    } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header, $params);
+    }
+    return $rt;
+  }
+
+  /**
+   * Outputs debugging info via user-defined method
+   * @param string $str
+   */
+  private function edebug($str) {
+    if ($this->Debugoutput == "error_log") {
+        error_log($str);
+    } else {
+        echo $str;
+    }
+  }
+
   /**
    * Constructor
    * @param boolean $exceptions Should we throw external exceptions?
@@ -476,6 +641,7 @@ class PHPMailer {
    * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo'
    * @param string $address The email address to send to
    * @param string $name
+   * @throws phpmailerException
    * @return boolean true on success, false if address already used or invalid in some way
    * @access protected
    */
@@ -485,20 +651,20 @@ class PHPMailer {
       if ($this->exceptions) {
         throw new phpmailerException('Invalid recipient array: ' . $kind);
       }
-	  if ($this->SMTPDebug) {
-        echo $this->Lang('Invalid recipient array').': '.$kind;
+      if ($this->SMTPDebug) {
+        $this->edebug($this->Lang('Invalid recipient array').': '.$kind);
       }
       return false;
     }
     $address = trim($address);
     $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
-    if (!self::ValidateAddress($address)) {
+    if (!$this->ValidateAddress($address)) {
       $this->SetError($this->Lang('invalid_address').': '. $address);
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
-	  if ($this->SMTPDebug) {
-        echo $this->Lang('invalid_address').': '.$address;
+      if ($this->SMTPDebug) {
+        $this->edebug($this->Lang('invalid_address').': '.$address);
       }
       return false;
     }
@@ -521,18 +687,20 @@ class PHPMailer {
  * Set the From and FromName properties
  * @param string $address
  * @param string $name
+ * @param int $auto Also set Reply-To and Sender
+   * @throws phpmailerException
  * @return boolean
  */
   public function SetFrom($address, $name = '', $auto = 1) {
     $address = trim($address);
     $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
-    if (!self::ValidateAddress($address)) {
+    if (!$this->ValidateAddress($address)) {
       $this->SetError($this->Lang('invalid_address').': '. $address);
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
-	  if ($this->SMTPDebug) {
-        echo $this->Lang('invalid_address').': '.$address;
+      if ($this->SMTPDebug) {
+        $this->edebug($this->Lang('invalid_address').': '.$address);
       }
       return false;
     }
@@ -551,25 +719,31 @@ class PHPMailer {
 
   /**
    * Check that a string looks roughly like an email address should
-   * Static so it can be used without instantiation
-   * Tries to use PHP built-in validator in the filter extension (from PHP 5.2), falls back to a reasonably competent regex validator
-   * Conforms approximately to RFC2822
-   * @link http://www.hexillion.com/samples/#Regex Original pattern found here
+   * Static so it can be used without instantiation, public so people can overload
+   * Conforms to RFC5322: Uses *correct* regex on which FILTER_VALIDATE_EMAIL is
+   * based; So why not use FILTER_VALIDATE_EMAIL? Because it was broken to
+   * not allow a@b type valid addresses :(
+   * Some Versions of PHP break on the regex though, likely due to PCRE, so use
+   * the older validation method for those users. (http://php.net/manual/en/pcre.installation.php)
+   * @link http://squiloople.com/2009/12/20/email-address-validation/
+   * @copyright regex Copyright Michael Rushton 2009-10 | http://squiloople.com/ | Feel free to use and redistribute this code. But please keep this copyright notice.
    * @param string $address The email address to check
    * @return boolean
    * @static
    * @access public
    */
   public static function ValidateAddress($address) {
-    if (function_exists('filter_var')) { //Introduced in PHP 5.2
-      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
-        return false;
-      } else {
-        return true;
-      }
+	if ((defined('PCRE_VERSION')) && (version_compare(PCRE_VERSION, '8.0') >= 0)) {
+	  return preg_match('/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>\x0D\x0A)?[	 ])+|(?>[	 ]*\x0D\x0A)?[	 ]+)?)(\((?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}|(?!(?:.*[a-f0-9][:\]]){7,})((?6)(?>:(?6)){0,5})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f0-9]:){5,})(?8)?::(?>((?6)(?>:(?6)){0,3}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', $address);
+	} elseif (function_exists('filter_var')) { //Introduced in PHP 5.2
+        if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
+          return false;
+        } else {
+          return true;
+        }
     } else {
-      return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
-    }
+        return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
+	}
   }
 
   /////////////////////////////////////////////////
@@ -580,6 +754,7 @@ class PHPMailer {
    * Creates message and assigns Mailer. If the message is
    * not sent successfully then it returns false.  Use the ErrorInfo
    * variable to view description of the error.
+   * @throws phpmailerException
    * @return bool
    */
   public function Send() {
@@ -587,7 +762,7 @@ class PHPMailer {
       if(!$this->PreSend()) return false;
       return $this->PostSend();
     } catch (phpmailerException $e) {
-	  $this->SentMIMEMessage = '';
+      $this->mailHeader = '';
       $this->SetError($e->getMessage());
       if ($this->exceptions) {
         throw $e;
@@ -596,9 +771,14 @@ class PHPMailer {
     }
   }
 
-  protected function PreSend() {
+  /**
+   * Prep mail by constructing all message entities
+   * @throws phpmailerException
+   * @return bool
+   */
+  public function PreSend() {
     try {
-	  $mailHeader = "";
+      $this->mailHeader = "";
       if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
         throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
       }
@@ -619,26 +799,25 @@ class PHPMailer {
       $this->MIMEBody = $this->CreateBody();
 
       // To capture the complete message when using mail(), create
-	  // an extra header list which CreateHeader() doesn't fold in
+      // an extra header list which CreateHeader() doesn't fold in
       if ($this->Mailer == 'mail') {
         if (count($this->to) > 0) {
-          $mailHeader .= $this->AddrAppend("To", $this->to);
+          $this->mailHeader .= $this->AddrAppend("To", $this->to);
         } else {
-          $mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;");
+          $this->mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;");
         }
-        $mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject))));
+        $this->mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject))));
         // if(count($this->cc) > 0) {
-            // $mailHeader .= $this->AddrAppend("Cc", $this->cc);
+            // $this->mailHeader .= $this->AddrAppend("Cc", $this->cc);
         // }
       }
 
       // digitally sign with DKIM if enabled
-      if ($this->DKIM_domain && $this->DKIM_private) {
+      if (!empty($this->DKIM_domain) && !empty($this->DKIM_private) && !empty($this->DKIM_selector) && !empty($this->DKIM_domain) && file_exists($this->DKIM_private)) {
         $header_dkim = $this->DKIM_Add($this->MIMEHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody);
         $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader;
       }
 
-      $this->SentMIMEMessage = sprintf("%s%s\r\n\r\n%s",$this->MIMEHeader,$mailHeader,$this->MIMEBody);
       return true;
 
     } catch (phpmailerException $e) {
@@ -650,7 +829,13 @@ class PHPMailer {
     }
   }
 
-  protected function PostSend() {
+  /**
+   * Actual Email transport function
+   * Send the email via the selected mechanism
+   * @throws phpmailerException
+   * @return bool
+   */
+  public function PostSend() {
     try {
       // Choose the mailer and send through it
       switch($this->Mailer) {
@@ -663,34 +848,34 @@ class PHPMailer {
         default:
           return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
       }
-
     } catch (phpmailerException $e) {
       $this->SetError($e->getMessage());
       if ($this->exceptions) {
         throw $e;
       }
-	  if ($this->SMTPDebug) {
-        echo $e->getMessage()."\n";
+      if ($this->SMTPDebug) {
+        $this->edebug($e->getMessage()."\n");
       }
-      return false;
     }
+    return false;
   }
 
   /**
    * Sends mail using the $Sendmail program.
    * @param string $header The message headers
    * @param string $body The message body
+   * @throws phpmailerException
    * @access protected
    * @return bool
    */
   protected function SendmailSend($header, $body) {
     if ($this->Sender != '') {
-      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
+      $sendmail = sprintf("%s -oi -f%s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
     } else {
       $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
     }
     if ($this->SingleTo === true) {
-      foreach ($this->SingleToArray as $key => $val) {
+      foreach ($this->SingleToArray as $val) {
         if(!@$mail = popen($sendmail, 'w')) {
           throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
         }
@@ -726,6 +911,7 @@ class PHPMailer {
    * Sends mail using the PHP mail() function.
    * @param string $header The message headers
    * @param string $body The message body
+     * @throws phpmailerException
    * @access protected
    * @return bool
    */
@@ -739,38 +925,25 @@ class PHPMailer {
     if (empty($this->Sender)) {
       $params = "-oi ";
     } else {
-      $params = sprintf("-oi -f %s", $this->Sender);
+      $params = sprintf("-oi -f%s", $this->Sender);
     }
     if ($this->Sender != '' and !ini_get('safe_mode')) {
       $old_from = ini_get('sendmail_from');
       ini_set('sendmail_from', $this->Sender);
-      if ($this->SingleTo === true && count($toArr) > 1) {
-        foreach ($toArr as $key => $val) {
-          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
-          // implement call back function if it exists
-          $isSent = ($rt == 1) ? 1 : 0;
-          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
-        }
-      } else {
-        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+    }
+      $rt = false;
+    if ($this->SingleTo === true && count($toArr) > 1) {
+      foreach ($toArr as $val) {
+        $rt = $this->mail_passthru($val, $this->Subject, $body, $header, $params);
         // implement call back function if it exists
         $isSent = ($rt == 1) ? 1 : 0;
-        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
+        $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
       }
     } else {
-      if ($this->SingleTo === true && count($toArr) > 1) {
-        foreach ($toArr as $key => $val) {
-          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
-          // implement call back function if it exists
-          $isSent = ($rt == 1) ? 1 : 0;
-          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
-        }
-      } else {
-        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
-        // implement call back function if it exists
-        $isSent = ($rt == 1) ? 1 : 0;
-        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
-      }
+      $rt = $this->mail_passthru($to, $this->Subject, $body, $header, $params);
+      // implement call back function if it exists
+      $isSent = ($rt == 1) ? 1 : 0;
+      $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
     }
     if (isset($old_from)) {
       ini_set('sendmail_from', $old_from);
@@ -786,6 +959,7 @@ class PHPMailer {
    * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
    * @param string $header The message headers
    * @param string $body The message body
+   * @throws phpmailerException
    * @uses SMTP
    * @access protected
    * @return bool
@@ -799,7 +973,8 @@ class PHPMailer {
     }
     $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
     if(!$this->smtp->Mail($smtp_from)) {
-      throw new phpmailerException($this->Lang('from_failed') . $smtp_from, self::STOP_CRITICAL);
+      $this->SetError($this->Lang('from_failed') . $smtp_from . " : " . implode(",",$this->smtp->getError())) ;
+      throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL);
     }
 
     // Attempt to send attach all recipients
@@ -850,6 +1025,9 @@ class PHPMailer {
     }
     if($this->SMTPKeepAlive == true) {
       $this->smtp->Reset();
+    } else {
+        $this->smtp->Quit();
+        $this->smtp->Close();
     }
     return true;
   }
@@ -859,13 +1037,15 @@ class PHPMailer {
    * Returns false if the operation failed.
    * @uses SMTP
    * @access public
+   * @throws phpmailerException
    * @return bool
    */
   public function SmtpConnect() {
     if(is_null($this->smtp)) {
-      $this->smtp = new SMTP();
+      $this->smtp = new SMTP;
     }
 
+    $this->smtp->Timeout = $this->Timeout;
     $this->smtp->do_debug = $this->SMTPDebug;
     $hosts = explode(';', $this->Host);
     $index = 0;
@@ -893,7 +1073,7 @@ class PHPMailer {
 
           if ($tls) {
             if (!$this->smtp->StartTLS()) {
-              throw new phpmailerException($this->Lang('tls'));
+              throw new phpmailerException($this->Lang('connect_host'));
             }
 
             //We must resend HELO after tls negotiation
@@ -902,19 +1082,20 @@ class PHPMailer {
 
           $connection = true;
           if ($this->SMTPAuth) {
-            if (!$this->smtp->Authenticate($this->Username, $this->Password)) {
+            if (!$this->smtp->Authenticate($this->Username, $this->Password, $this->AuthType,
+                                           $this->Realm, $this->Workstation)) {
               throw new phpmailerException($this->Lang('authenticate'));
             }
           }
         }
         $index++;
-        if (!$connection) {
-          throw new phpmailerException($this->Lang('connect_host'));
-        }
+      if (!$connection) {
+        throw new phpmailerException($this->Lang('connect_host'));
+      }
       }
     } catch (phpmailerException $e) {
       $this->smtp->Reset();
-	  if ($this->exceptions) {
+      if ($this->exceptions) {
         throw $e;
       }
     }
@@ -926,7 +1107,7 @@ class PHPMailer {
    * @return void
    */
   public function SmtpClose() {
-    if(!is_null($this->smtp)) {
+    if ($this->smtp !== null) {
       if($this->smtp->Connected()) {
         $this->smtp->Quit();
         $this->smtp->Close();
@@ -939,28 +1120,30 @@ class PHPMailer {
   * Returns false if it cannot load the language file.  The default language is English.
   * @param string $langcode ISO 639-1 2-character language code (e.g. Portuguese: "br")
   * @param string $lang_path Path to the language file directory
+   * @return bool
   * @access public
   */
   function SetLanguage($langcode = 'en', $lang_path = 'language/') {
     //Define full set of translatable strings
     $PHPMAILER_LANG = array(
-      'provide_address' => 'You must provide at least one recipient email address.',
+      'authenticate'         => 'SMTP Error: Could not authenticate.',
+      'connect_host'         => 'SMTP Error: Could not connect to SMTP host.',
+      'data_not_accepted'    => 'SMTP Error: Data not accepted.',
+      'empty_message'        => 'Message body empty',
+      'encoding'             => 'Unknown encoding: ',
+      'execute'              => 'Could not execute: ',
+      'file_access'          => 'Could not access file: ',
+      'file_open'            => 'File Error: Could not open file: ',
+      'from_failed'          => 'The following From address failed: ',
+      'instantiate'          => 'Could not instantiate mail function.',
+      'invalid_address'      => 'Invalid address',
       'mailer_not_supported' => ' mailer is not supported.',
-      'execute' => 'Could not execute: ',
-      'instantiate' => 'Could not instantiate mail function.',
-      'authenticate' => 'SMTP Error: Could not authenticate.',
-      'from_failed' => 'The following From address failed: ',
-      'recipients_failed' => 'SMTP Error: The following recipients failed: ',
-      'data_not_accepted' => 'SMTP Error: Data not accepted.',
-      'connect_host' => 'SMTP Error: Could not connect to SMTP host.',
-      'file_access' => 'Could not access file: ',
-      'file_open' => 'File Error: Could not open file: ',
-      'encoding' => 'Unknown encoding: ',
-      'signing' => 'Signing Error: ',
-      'smtp_error' => 'SMTP server error: ',
-      'empty_message' => 'Message body empty',
-      'invalid_address' => 'Invalid address',
-      'variable_set' => 'Cannot set or reset variable: '
+      'provide_address'      => 'You must provide at least one recipient email address.',
+      'recipients_failed'    => 'SMTP Error: The following recipients failed: ',
+      'signing'              => 'Signing Error: ',
+      'smtp_connect_failed'  => 'SMTP Connect() failed.',
+      'smtp_error'           => 'SMTP server error: ',
+      'variable_set'         => 'Cannot set or reset variable: '
     );
     //Overwrite language-specific strings. This way we'll never have missing translations - no more "language string failed to load"!
     $l = true;
@@ -986,6 +1169,8 @@ class PHPMailer {
   /**
    * Creates recipient headers.
    * @access public
+   * @param string $type
+   * @param array $addr
    * @return string
    */
   public function AddrAppend($type, $addr) {
@@ -1003,6 +1188,7 @@ class PHPMailer {
   /**
    * Formats an address correctly.
    * @access public
+   * @param string $addr
    * @return string
    */
   public function AddrFormat($addr) {
@@ -1028,13 +1214,15 @@ class PHPMailer {
     // If utf-8 encoding is used, we will need to make sure we don't
     // split multibyte characters when we wrap
     $is_utf8 = (strtolower($this->CharSet) == "utf-8");
+    $lelen = strlen($this->LE);
+    $crlflen = strlen(self::CRLF);
 
     $message = $this->FixEOL($message);
-    if (substr($message, -1) == $this->LE) {
-      $message = substr($message, 0, -1);
+    if (substr($message, -$lelen) == $this->LE) {
+      $message = substr($message, 0, -$lelen);
     }
 
-    $line = explode($this->LE, $message);
+    $line = explode($this->LE, $message);   // Magic. We know FixEOL uses $LE
     $message = '';
     for ($i = 0 ;$i < count($line); $i++) {
       $line_part = explode(' ', $line[$i]);
@@ -1042,7 +1230,7 @@ class PHPMailer {
       for ($e = 0; $e<count($line_part); $e++) {
         $word = $line_part[$e];
         if ($qp_mode and (strlen($word) > $length)) {
-          $space_left = $length - strlen($buf) - 1;
+          $space_left = $length - strlen($buf) - $crlflen;
           if ($e != 0) {
             if ($space_left > 20) {
               $len = $space_left;
@@ -1056,7 +1244,7 @@ class PHPMailer {
               $part = substr($word, 0, $len);
               $word = substr($word, $len);
               $buf .= ' ' . $part;
-              $message .= $buf . sprintf("=%s", $this->LE);
+              $message .= $buf . sprintf("=%s", self::CRLF);
             } else {
               $message .= $buf . $soft_break;
             }
@@ -1075,7 +1263,7 @@ class PHPMailer {
             $word = substr($word, $len);
 
             if (strlen($word) > 0) {
-              $message .= $part . sprintf("=%s", $this->LE);
+              $message .= $part . sprintf("=%s", self::CRLF);
             } else {
               $buf = $part;
             }
@@ -1090,7 +1278,7 @@ class PHPMailer {
           }
         }
       }
-      $message .= $buf . $this->LE;
+      $message .= $buf . self::CRLF;
     }
 
     return $message;
@@ -1175,8 +1363,15 @@ class PHPMailer {
     $this->boundary[2] = 'b2_' . $uniq_id;
     $this->boundary[3] = 'b3_' . $uniq_id;
 
-    $result .= $this->HeaderLine('Date', self::RFCDate());
-    if($this->Sender == '') {
+    if ($this->MessageDate == '') {
+      $result .= $this->HeaderLine('Date', self::RFCDate());
+    } else {
+      $result .= $this->HeaderLine('Date', $this->MessageDate);
+    }
+
+    if ($this->ReturnPath) {
+      $result .= $this->HeaderLine('Return-Path', trim($this->ReturnPath));
+    } elseif ($this->Sender == '') {
       $result .= $this->HeaderLine('Return-Path', trim($this->From));
     } else {
       $result .= $this->HeaderLine('Return-Path', trim($this->Sender));
@@ -1195,7 +1390,7 @@ class PHPMailer {
           $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
         }
       }
-	}
+    }
 
     $from = array();
     $from[0][0] = trim($this->From);
@@ -1227,10 +1422,13 @@ class PHPMailer {
       $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
     }
     $result .= $this->HeaderLine('X-Priority', $this->Priority);
-    if($this->XMailer) {
-      $result .= $this->HeaderLine('X-Mailer', $this->XMailer);
+    if ($this->XMailer == '') {
+        $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)');
     } else {
-      $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)');
+      $myXmailer = trim($this->XMailer);
+      if ($myXmailer) {
+        $result .= $this->HeaderLine('X-Mailer', $myXmailer);
+      }
     }
 
     if($this->ConfirmReadingTo != '') {
@@ -1257,10 +1455,6 @@ class PHPMailer {
   public function GetMailMIME() {
     $result = '';
     switch($this->message_type) {
-      case 'plain':
-        $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
-        $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset="'.$this->CharSet.'"');
-        break;
       case 'inline':
         $result .= $this->HeaderLine('Content-Type', 'multipart/related;');
         $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
@@ -1277,10 +1471,15 @@ class PHPMailer {
         $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
         $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
         break;
+      default:
+        // Catches case 'plain': and case '':
+        $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
+        $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset='.$this->CharSet);
+        break;
     }
 
     if($this->Mailer != 'mail') {
-      $result .= $this->LE.$this->LE;
+      $result .= $this->LE;
     }
 
     return $result;
@@ -1292,28 +1491,26 @@ class PHPMailer {
    * @return string
    */
   public function GetSentMIMEMessage() {
-    return $this->SentMIMEMessage;
+    return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
   }
 
 
   /**
    * Assembles the message body.  Returns an empty string on failure.
    * @access public
+   * @throws phpmailerException
    * @return string The assembled message body
    */
   public function CreateBody() {
     $body = '';
 
     if ($this->sign_key_file) {
-      $body .= $this->GetMailMIME();
+      $body .= $this->GetMailMIME().$this->LE;
     }
 
     $this->SetWordWrap();
 
     switch($this->message_type) {
-      case 'plain':
-        $body .= $this->EncodeString($this->Body, $this->Encoding);
-        break;
       case 'inline':
         $body .= $this->GetBoundary($this->boundary[1], '', '', '');
         $body .= $this->EncodeString($this->Body, $this->Encoding);
@@ -1398,6 +1595,10 @@ class PHPMailer {
         $body .= $this->LE;
         $body .= $this->AttachAll("attachment", $this->boundary[1]);
         break;
+      default:
+        // catch case 'plain' and case ''
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        break;
     }
 
     if ($this->IsError()) {
@@ -1430,6 +1631,10 @@ class PHPMailer {
   /**
    * Returns the start of a message boundary.
    * @access protected
+   * @param string $boundary
+   * @param string $charSet
+   * @param string $contentType
+   * @param string $encoding
    * @return string
    */
   protected function GetBoundary($boundary, $charSet, $contentType, $encoding) {
@@ -1444,7 +1649,7 @@ class PHPMailer {
       $encoding = $this->Encoding;
     }
     $result .= $this->TextLine('--' . $boundary);
-    $result .= sprintf("Content-Type: %s; charset=\"%s\"", $contentType, $charSet);
+    $result .= sprintf("Content-Type: %s; charset=%s", $contentType, $charSet);
     $result .= $this->LE;
     $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
     $result .= $this->LE;
@@ -1455,6 +1660,7 @@ class PHPMailer {
   /**
    * Returns the end of a message boundary.
    * @access protected
+   * @param string $boundary
    * @return string
    */
   protected function EndBoundary($boundary) {
@@ -1478,6 +1684,8 @@ class PHPMailer {
   /**
    *  Returns a formatted header line.
    * @access public
+   * @param string $name
+   * @param string $value
    * @return string
    */
   public function HeaderLine($name, $value) {
@@ -1487,6 +1695,7 @@ class PHPMailer {
   /**
    * Returns a formatted mail line.
    * @access public
+   * @param string $value
    * @return string
    */
   public function TextLine($value) {
@@ -1505,6 +1714,7 @@ class PHPMailer {
    * @param string $name Overrides the attachment name.
    * @param string $encoding File encoding (see $Encoding).
    * @param string $type File extension (MIME) type.
+   * @throws phpmailerException
    * @return bool
    */
   public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
@@ -1533,8 +1743,8 @@ class PHPMailer {
       if ($this->exceptions) {
         throw $e;
       }
-	  if ($this->SMTPDebug) {
-        echo $e->getMessage()."\n";
+      if ($this->SMTPDebug) {
+        $this->edebug($e->getMessage()."\n");
       }
       if ( $e->getCode() == self::STOP_CRITICAL ) {
         return false;
@@ -1555,6 +1765,8 @@ class PHPMailer {
    * Attaches all fs, string, and binary attachments to the message.
    * Returns an empty string on failure.
    * @access protected
+   * @param string $disposition_type
+   * @param string $boundary
    * @return string
    */
   protected function AttachAll($disposition_type, $boundary) {
@@ -1568,6 +1780,8 @@ class PHPMailer {
       // CHECK IF IT IS A VALID DISPOSITION_FILTER
       if($attachment[6] == $disposition_type) {
         // Check for string attachment
+        $string = '';
+        $path = '';
         $bString = $attachment[5];
         if ($bString) {
           $string = $attachment[0];
@@ -1624,6 +1838,7 @@ class PHPMailer {
    * Returns an empty string on failure.
    * @param string $path The full path to the file
    * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+   * @throws phpmailerException
    * @see EncodeFile()
    * @access protected
    * @return string
@@ -1633,28 +1848,28 @@ class PHPMailer {
       if (!is_readable($path)) {
         throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
       }
-      if (function_exists('get_magic_quotes')) {
-        function get_magic_quotes() {
-          return false;
-        }
-      }
-	  $magic_quotes = get_magic_quotes_runtime();
-	  if ($magic_quotes) {
+      //  if (!function_exists('get_magic_quotes')) {
+      //    function get_magic_quotes() {
+      //      return false;
+      //    }
+      //  }
+      $magic_quotes = get_magic_quotes_runtime();
+      if ($magic_quotes) {
         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
           set_magic_quotes_runtime(0);
         } else {
-		  ini_set('magic_quotes_runtime', 0);
-		}
-	  }
+          ini_set('magic_quotes_runtime', 0); 
+        }
+      }
       $file_buffer  = file_get_contents($path);
       $file_buffer  = $this->EncodeString($file_buffer, $encoding);
-	  if ($magic_quotes) {
+      if ($magic_quotes) {
         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
           set_magic_quotes_runtime($magic_quotes);
         } else {
-		  ini_set('magic_quotes_runtime', $magic_quotes);
-	    }
-	  }
+          ini_set('magic_quotes_runtime', $magic_quotes); 
+        }
+      }
       return $file_buffer;
     } catch (Exception $e) {
       $this->SetError($e->getMessage());
@@ -1699,6 +1914,8 @@ class PHPMailer {
   /**
    * Encode a header string to best (shortest) of Q, B, quoted or none.
    * @access public
+   * @param string $str
+   * @param string $position
    * @return string
    */
   public function EncodeHeader($str, $position = 'text') {
@@ -1737,7 +1954,7 @@ class PHPMailer {
       if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
         // Use a custom function which correctly encodes and wraps long
         // multibyte strings without breaking lines within a character
-        $encoded = $this->Base64EncodeWrapMB($str);
+        $encoded = $this->Base64EncodeWrapMB($str, "\n");
       } else {
         $encoded = base64_encode($str);
         $maxlen -= $maxlen % 4;
@@ -1747,7 +1964,7 @@ class PHPMailer {
       $encoding = 'Q';
       $encoded = $this->EncodeQ($str, $position);
       $encoded = $this->WrapText($encoded, $maxlen, true);
-      $encoded = str_replace('='.$this->LE, "\n", trim($encoded));
+      $encoded = str_replace('='.self::CRLF, "\n", trim($encoded));
     }
 
     $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
@@ -1776,12 +1993,16 @@ class PHPMailer {
    * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
    * @access public
    * @param string $str multi-byte text to wrap encode
+   * @param string $lf string to use as linefeed/end-of-line
    * @return string
    */
-  public function Base64EncodeWrapMB($str) {
+  public function Base64EncodeWrapMB($str, $lf=null) {
     $start = "=?".$this->CharSet."?B?";
     $end = "?=";
     $encoded = "";
+    if ($lf === null) {
+      $lf = $this->LE;
+    }
 
     $mb_length = mb_strlen($str, $this->CharSet);
     // Each line must have length <= 75, including $start and $end
@@ -1802,11 +2023,11 @@ class PHPMailer {
       }
       while (strlen($chunk) > $length);
 
-      $encoded .= $chunk . $this->LE;
+      $encoded .= $chunk . $lf;
     }
 
     // Chomp the last linefeed
-    $encoded = substr($encoded, 0, -strlen($this->LE));
+    $encoded = substr($encoded, 0, -strlen($lf));
     return $encoded;
   }
 
@@ -1814,8 +2035,10 @@ class PHPMailer {
   * Encode string to quoted-printable.
   * Only uses standard PHP, slow, but will always work
   * @access public
-  * @param string $string the text to encode
+   * @param string $input
   * @param integer $line_max Number of chars allowed on a line before wrapping
+   * @param bool $space_conv
+   * @internal param string $string the text to encode
   * @return string
   */
   public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) {
@@ -1840,8 +2063,8 @@ class PHPMailer {
             $c = '=20';
           }
         } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
-          $h2 = floor($dec/16);
-          $h1 = floor($dec%16);
+          $h2 = (integer)floor($dec/16);
+          $h1 = (integer)floor($dec%16);
           $c = $escape.$hex[$h2].$hex[$h1];
         }
         if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
@@ -1901,29 +2124,37 @@ class PHPMailer {
    * @return string
    */
   public function EncodeQ($str, $position = 'text') {
-    // There should not be any EOL in the string
-    $encoded = preg_replace('/[\r\n]*/', '', $str);
-
+    //There should not be any EOL in the string
+	$pattern="";
+    $encoded = str_replace(array("\r", "\n"), '', $str);
     switch (strtolower($position)) {
       case 'phrase':
-        $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        $pattern = '^A-Za-z0-9!*+\/ -';
         break;
+
       case 'comment':
-        $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        $pattern = '\(\)"';
+        //note that we dont break here!
+        //for this reason we build the $pattern withoud including delimiters and []
+
       case 'text':
       default:
-        // Replace every high ascii, control =, ? and _ characters
-        //TODO using /e (equivalent to eval()) is probably not a good idea
-        $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
-                                "'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded);
+        //Replace every high ascii, control =, ? and _ characters
+        //We put \075 (=) as first value to make sure it's the first one in being converted, preventing double encode
+        $pattern = '\075\000-\011\013\014\016-\037\077\137\177-\377' . $pattern;
         break;
     }
+    
+    if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
+      foreach (array_unique($matches[0]) as $char) {
+        $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
+      }
+    }
+    
+    //Replace every spaces to _ (more readable than =20)
+    return str_replace(' ', '_', $encoded);
+}
 
-    // Replace every spaces to _ (more readable than =20)
-    $encoded = str_replace(' ', '_', $encoded);
-
-    return $encoded;
-  }
 
   /**
    * Adds a string or binary attachment (non-filesystem) to the list.
@@ -1989,12 +2220,25 @@ class PHPMailer {
     return true;
   }
 
-  public function AddStringEmbeddedImage($string, $cid, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') {
+  /**
+   * Adds an embedded stringified attachment.  This can include images, sounds, and
+   * just about any other document.  Make sure to set the $type to an
+   * image type.  For JPEG images use "image/jpeg" and for GIF images
+   * use "image/gif".
+   * @param string $string The attachment.
+   * @param string $cid Content ID of the attachment.  Use this to identify
+   *        the Id for accessing the image in an HTML form.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  public function AddStringEmbeddedImage($string, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
     // Append to $attachment array
     $this->attachment[] = array(
       0 => $string,
-      1 => $filename,
-      2 => basename($filename),
+      1 => $name,
+      2 => $name,
       3 => $encoding,
       4 => $type,
       5 => true,  // isStringAttachment
@@ -2017,6 +2261,10 @@ class PHPMailer {
     return false;
   }
 
+  /**
+   * Returns true if an attachment (non-inline) is present.
+   * @return bool
+   */
   public function AttachmentExists() {
     foreach($this->attachment as $attachment) {
       if ($attachment[6] == 'attachment') {
@@ -2026,8 +2274,12 @@ class PHPMailer {
     return false;
   }
 
+  /**
+   * Does this message have an alternative body set?
+   * @return bool
+   */
   public function AlternativeExists() {
-    return strlen($this->AltBody)>0;
+    return !empty($this->AltBody);
   }
 
   /////////////////////////////////////////////////
@@ -2111,6 +2363,7 @@ class PHPMailer {
   /**
    * Adds the error message to the error container.
    * @access protected
+   * @param string $msg
    * @return void
    */
   protected function SetError($msg) {
@@ -2160,6 +2413,7 @@ class PHPMailer {
   /**
    * Returns a message in the appropriate language.
    * @access protected
+   * @param string $key
    * @return string
    */
   protected function Lang($key) {
@@ -2184,30 +2438,44 @@ class PHPMailer {
   }
 
   /**
-   * Changes every end of line from CR or LF to CRLF.
+   * Changes every end of line from CRLF, CR or LF to $this->LE.
    * @access public
+   * @param string $str String to FixEOL
    * @return string
    */
   public function FixEOL($str) {
-    $str = str_replace("\r\n", "\n", $str);
-    $str = str_replace("\r", "\n", $str);
-    $str = str_replace("\n", $this->LE, $str);
-    return $str;
+	// condense down to \n
+	$nstr = str_replace(array("\r\n", "\r"), "\n", $str);
+	// Now convert LE as needed
+	if ($this->LE !== "\n") {
+		$nstr = str_replace("\n", $this->LE, $nstr);
+	}
+    return  $nstr;
   }
 
   /**
-   * Adds a custom header.
+   * Adds a custom header. $name value can be overloaded to contain
+   * both header name and value (name:value)
    * @access public
+   * @param string $name custom header name
+   * @param string $value header value
    * @return void
    */
-  public function AddCustomHeader($custom_header) {
-    $this->CustomHeader[] = explode(':', $custom_header, 2);
+  public function AddCustomHeader($name, $value=null) {
+	if ($value === null) {
+		// Value passed in as name:value
+		$this->CustomHeader[] = explode(':', $name, 2);
+	} else {
+		$this->CustomHeader[] = array($name, $value);
+	}
   }
 
   /**
    * Evaluates the message and returns modifications for inline images and backgrounds
    * @access public
-   * @return $message
+   * @param string $message Text to be HTML modified
+   * @param string $basedir baseline directory for path
+   * @return string $message
    */
   public function MsgHTML($message, $basedir = '') {
     preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
@@ -2217,13 +2485,15 @@ class PHPMailer {
         if (!preg_match('#^[A-z]+://#', $url)) {
           $filename = basename($url);
           $directory = dirname($url);
-          ($directory == '.') ? $directory='': '';
-          $cid = 'cid:' . md5($filename);
+          if ($directory == '.') {
+            $directory = '';
+          }
+          $cid = 'cid:' . md5($url);
           $ext = pathinfo($filename, PATHINFO_EXTENSION);
           $mimeType  = self::_mime_types($ext);
           if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; }
           if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; }
-          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) {
+          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($url), $filename, 'base64', $mimeType) ) {
             $message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"".$cid."\"", $message);
           }
         }
@@ -2231,40 +2501,42 @@ class PHPMailer {
     }
     $this->IsHTML(true);
     $this->Body = $message;
-	if (empty($this->AltBody)) {
-		$textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
-		if (!empty($textMsg)) {
-			$this->AltBody = html_entity_decode($textMsg, ENT_QUOTES, $this->CharSet);
-		}
-	}
+    if (empty($this->AltBody)) {
+        $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
+        if (!empty($textMsg)) {
+            $this->AltBody = html_entity_decode($textMsg, ENT_QUOTES, $this->CharSet);
+        }
+    }
     if (empty($this->AltBody)) {
       $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
     }
-	return $message;
+    return $message;
   }
 
   /**
    * Gets the MIME type of the embedded or inline image
-   * @param string File extension
+   * @param string $ext File extension
    * @access public
    * @return string MIME type of ext
    * @static
    */
   public static function _mime_types($ext = '') {
     $mimes = array(
+      'xl'    =>  'application/excel',
       'hqx'   =>  'application/mac-binhex40',
       'cpt'   =>  'application/mac-compactpro',
-      'doc'   =>  'application/msword',
       'bin'   =>  'application/macbinary',
+      'doc'   =>  'application/msword',
+      'word'  =>  'application/msword',
+      'class' =>  'application/octet-stream',
+      'dll'   =>  'application/octet-stream',
       'dms'   =>  'application/octet-stream',
+      'exe'   =>  'application/octet-stream',
       'lha'   =>  'application/octet-stream',
       'lzh'   =>  'application/octet-stream',
-      'exe'   =>  'application/octet-stream',
-      'class' =>  'application/octet-stream',
       'psd'   =>  'application/octet-stream',
-      'so'    =>  'application/octet-stream',
       'sea'   =>  'application/octet-stream',
-      'dll'   =>  'application/octet-stream',
+      'so'    =>  'application/octet-stream',
       'oda'   =>  'application/oda',
       'pdf'   =>  'application/pdf',
       'ai'    =>  'application/postscript',
@@ -2282,9 +2554,9 @@ class PHPMailer {
       'dxr'   =>  'application/x-director',
       'dvi'   =>  'application/x-dvi',
       'gtar'  =>  'application/x-gtar',
-      'php'   =>  'application/x-httpd-php',
-      'php4'  =>  'application/x-httpd-php',
       'php3'  =>  'application/x-httpd-php',
+      'php4'  =>  'application/x-httpd-php',
+      'php'   =>  'application/x-httpd-php',
       'phtml' =>  'application/x-httpd-php',
       'phps'  =>  'application/x-httpd-php-source',
       'js'    =>  'application/x-javascript',
@@ -2292,53 +2564,50 @@ class PHPMailer {
       'sit'   =>  'application/x-stuffit',
       'tar'   =>  'application/x-tar',
       'tgz'   =>  'application/x-tar',
-      'xhtml' =>  'application/xhtml+xml',
       'xht'   =>  'application/xhtml+xml',
+      'xhtml' =>  'application/xhtml+xml',
       'zip'   =>  'application/zip',
       'mid'   =>  'audio/midi',
       'midi'  =>  'audio/midi',
-      'mpga'  =>  'audio/mpeg',
       'mp2'   =>  'audio/mpeg',
       'mp3'   =>  'audio/mpeg',
+      'mpga'  =>  'audio/mpeg',
       'aif'   =>  'audio/x-aiff',
-      'aiff'  =>  'audio/x-aiff',
       'aifc'  =>  'audio/x-aiff',
+      'aiff'  =>  'audio/x-aiff',
       'ram'   =>  'audio/x-pn-realaudio',
       'rm'    =>  'audio/x-pn-realaudio',
       'rpm'   =>  'audio/x-pn-realaudio-plugin',
       'ra'    =>  'audio/x-realaudio',
-      'rv'    =>  'video/vnd.rn-realvideo',
       'wav'   =>  'audio/x-wav',
       'bmp'   =>  'image/bmp',
       'gif'   =>  'image/gif',
       'jpeg'  =>  'image/jpeg',
-      'jpg'   =>  'image/jpeg',
       'jpe'   =>  'image/jpeg',
+      'jpg'   =>  'image/jpeg',
       'png'   =>  'image/png',
       'tiff'  =>  'image/tiff',
       'tif'   =>  'image/tiff',
+      'eml'   =>  'message/rfc822',
       'css'   =>  'text/css',
       'html'  =>  'text/html',
       'htm'   =>  'text/html',
       'shtml' =>  'text/html',
-      'txt'   =>  'text/plain',
-      'text'  =>  'text/plain',
       'log'   =>  'text/plain',
+      'text'  =>  'text/plain',
+      'txt'   =>  'text/plain',
       'rtx'   =>  'text/richtext',
       'rtf'   =>  'text/rtf',
       'xml'   =>  'text/xml',
       'xsl'   =>  'text/xml',
       'mpeg'  =>  'video/mpeg',
-      'mpg'   =>  'video/mpeg',
       'mpe'   =>  'video/mpeg',
-      'qt'    =>  'video/quicktime',
+      'mpg'   =>  'video/mpeg',
       'mov'   =>  'video/quicktime',
+      'qt'    =>  'video/quicktime',
+      'rv'    =>  'video/vnd.rn-realvideo',
       'avi'   =>  'video/x-msvideo',
-      'movie' =>  'video/x-sgi-movie',
-      'doc'   =>  'application/msword',
-      'word'  =>  'application/msword',
-      'xl'    =>  'application/excel',
-      'eml'   =>  'message/rfc822'
+      'movie' =>  'video/x-sgi-movie'
     );
     return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
   }
@@ -2353,6 +2622,8 @@ class PHPMailer {
   * @param string $name Parameter Name
   * @param mixed $value Parameter Value
   * NOTE: will not work with arrays, there are no arrays to set/reset
+   * @throws phpmailerException
+   * @return bool
   * @todo Should this not be using __set() magic function?
   */
   public function set($name, $value = '') {
@@ -2378,15 +2649,14 @@ class PHPMailer {
    * @return string
    */
   public function SecureHeader($str) {
-    $str = str_replace("\r", '', $str);
-    $str = str_replace("\n", '', $str);
-    return trim($str);
+    return trim(str_replace(array("\r", "\n"), '', $str));
   }
 
   /**
    * Set the private key file and password to sign the message.
    *
    * @access public
+   * @param $cert_filename
    * @param string $key_filename Parameter File Name
    * @param string $key_pass Password for private key
    */
@@ -2400,11 +2670,10 @@ class PHPMailer {
    * Set the private key file and password to sign the message.
    *
    * @access public
-   * @param string $key_filename Parameter File Name
-   * @param string $key_pass Password for private key
+   * @param string $txt
+   * @return string
    */
   public function DKIM_QP($txt) {
-    $tmp = '';
     $line = '';
     for ($i = 0; $i < strlen($txt); $i++) {
       $ord = ord($txt[$i]);
@@ -2422,6 +2691,7 @@ class PHPMailer {
    *
    * @access public
    * @param string $s Header
+   * @return string
    */
   public function DKIM_Sign($s) {
     $privKeyStr = file_get_contents($this->DKIM_private);
@@ -2433,6 +2703,7 @@ class PHPMailer {
     if (openssl_sign($s, $signature, $privKey)) {
       return base64_encode($signature);
     }
+    return '';
   }
 
   /**
@@ -2440,6 +2711,7 @@ class PHPMailer {
    *
    * @access public
    * @param string $s Header
+   * @return string
    */
   public function DKIM_HeaderC($s) {
     $s = preg_replace("/\r\n\s+/", " ", $s);
@@ -2459,6 +2731,7 @@ class PHPMailer {
    *
    * @access public
    * @param string $body Message Body
+   * @return string
    */
   public function DKIM_BodyC($body) {
     if ($body == '') return "\r\n";
@@ -2479,6 +2752,7 @@ class PHPMailer {
    * @param string $headers_line Header lines
    * @param string $subject Subject
    * @param string $body Body
+   * @return string
    */
   public function DKIM_Add($headers_line, $subject, $body) {
     $DKIMsignatureType    = 'rsa-sha1'; // Signature & hash algorithms
@@ -2487,6 +2761,8 @@ class PHPMailer {
     $DKIMtime             = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
     $subject_header       = "Subject: $subject";
     $headers              = explode($this->LE, $headers_line);
+	$from_header          = "";
+	$to_header            = "";
     foreach($headers as $header) {
       if (strpos($header, 'From:') === 0) {
         $from_header = $header;
@@ -2512,18 +2788,36 @@ class PHPMailer {
                 "\tb=";
     $toSign   = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs);
     $signed   = $this->DKIM_Sign($toSign);
-    return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n";
+    return "X-PHPMAILER-DKIM: code.google.com/a/apache-extras.org/p/phpmailer/\r\n".$dkimhdrs.$signed."\r\n";
   }
 
-  protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body) {
-    if (!empty($this->action_function) && function_exists($this->action_function)) {
-      $params = array($isSent, $to, $cc, $bcc, $subject, $body);
+  /**
+   * Perform callback
+   * @param boolean $isSent
+   * @param string $to
+   * @param string $cc
+   * @param string $bcc
+   * @param string $subject
+   * @param string $body
+   * @param string $from
+   */
+  protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from=null) {
+    if (!empty($this->action_function) && is_callable($this->action_function)) {
+      $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from);
       call_user_func_array($this->action_function, $params);
     }
   }
 }
 
+/**
+ * Exception handler for PHPMailer
+ * @package PHPMailer
+ */
 class phpmailerException extends Exception {
+  /**
+   * Prettify error message output
+   * @return string
+   */
   public function errorMessage() {
     $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />\n";
     return $errorMsg;
diff --git a/wp-includes/class-smtp.php b/wp-includes/class-smtp.php
index 6977bffad..72361bbbb 100644
--- a/wp-includes/class-smtp.php
+++ b/wp-includes/class-smtp.php
@@ -2,7 +2,7 @@
 /*~ class.smtp.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
-|   Version: 5.2.1                                                          |
+|   Version: 5.2.4                                                          |
 |      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
 | ------------------------------------------------------------------------- |
 |     Admin: Jim Jagielski (project admininistrator)                        |
@@ -32,15 +32,15 @@
  * @author Jim Jagielski
  * @copyright 2010 - 2012 Jim Jagielski
  * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
- * @version $Id: class.smtp.php 450 2010-06-23 16:46:33Z coolbru $
  */
 
 /**
- * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP
- * commands except TURN which will always return a not implemented
- * error. SMTP also provides some utility methods for sending mail
- * to an SMTP server.
- * original author: Chris Ryan
+ * PHP RFC821 SMTP client
+ *
+ * Implements all the RFC 821 SMTP commands except TURN which will always return a not implemented error.
+ * SMTP also provides some utility methods for sending mail to an SMTP server.
+ * @author Chris Ryan
+ * @package PHPMailer
  */
 
 class SMTP {
@@ -51,7 +51,7 @@ class SMTP {
   public $SMTP_PORT = 25;
 
   /**
-   *  SMTP reply line ending
+   *  SMTP reply line ending (don't change)
    *  @var string
    */
   public $CRLF = "\r\n";
@@ -62,30 +62,70 @@ class SMTP {
    */
   public $do_debug;       // the level of debug to perform
 
+  /**
+   * Sets the function/method to use for debugging output.
+   * Right now we only honor "echo" or "error_log"
+   * @var string
+   */
+  public $Debugoutput     = "echo";
+
   /**
    *  Sets VERP use on/off (default is off)
    *  @var bool
    */
   public $do_verp = false;
 
+  /**
+   * Sets the SMTP timeout value for reads, in seconds
+   * @var int
+   */
+  public $Timeout         = 15;
+
+  /**
+   * Sets the SMTP timelimit value for reads, in seconds
+   * @var int
+   */
+  public $Timelimit       = 30;
+
   /**
    * Sets the SMTP PHPMailer Version number
    * @var string
    */
-  public $Version         = '5.2.1';
+  public $Version         = '5.2.4';
 
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
 
-  private $smtp_conn; // the socket to the server
-  private $error;     // error if any on the last call
-  private $helo_rply; // the reply the server sent to us for HELO
+  /**
+   * @var resource The socket to the server
+   */
+  private $smtp_conn;
+  /**
+   * @var string Error message, if any, for the last call
+   */
+  private $error;
+  /**
+   * @var string The reply the server sent to us for HELO
+   */
+  private $helo_rply;
+
+  /**
+   * Outputs debugging info via user-defined method
+   * @param string $str
+   */
+  private function edebug($str) {
+    if ($this->Debugoutput == "error_log") {
+        error_log($str);
+    } else {
+        echo $str;
+    }
+  }
 
   /**
    * Initialize the class so that the data is in a known state.
    * @access public
-   * @return void
+   * @return SMTP
    */
   public function __construct() {
     $this->smtp_conn = 0;
@@ -110,6 +150,9 @@ class SMTP {
    * SMTP CODE SUCCESS: 220
    * SMTP CODE FAILURE: 421
    * @access public
+   * @param string $host
+   * @param int $port
+   * @param int $tval
    * @return bool
    */
   public function Connect($host, $port = 0, $tval = 30) {
@@ -139,21 +182,26 @@ class SMTP {
                            "errno" => $errno,
                            "errstr" => $errstr);
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />');
       }
       return false;
     }
 
     // SMTP server can take longer to respond, give longer timeout for first read
     // Windows does not have support for this timeout function
-    if(substr(PHP_OS, 0, 3) != "WIN")
-     socket_set_timeout($this->smtp_conn, $tval, 0);
+    if(substr(PHP_OS, 0, 3) != "WIN") {
+     $max = ini_get('max_execution_time');
+     if ($max != 0 && $tval > $max) { // don't bother if unlimited
+      @set_time_limit($tval);
+     }
+     stream_set_timeout($this->smtp_conn, $tval, 0);
+    }
 
     // get any announcement
     $announce = $this->get_lines();
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />');
     }
 
     return true;
@@ -182,7 +230,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 220) {
@@ -191,7 +239,7 @@ class SMTP {
                "smtp_code" => $code,
                "smtp_msg"  => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -208,60 +256,164 @@ class SMTP {
    * Performs SMTP authentication.  Must be run after running the
    * Hello() method.  Returns true if successfully authenticated.
    * @access public
+   * @param string $username
+   * @param string $password
+   * @param string $authtype
+   * @param string $realm
+   * @param string $workstation
    * @return bool
    */
-  public function Authenticate($username, $password) {
-    // Start authentication
-    fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
-
-    $rply = $this->get_lines();
-    $code = substr($rply,0,3);
-
-    if($code != 334) {
-      $this->error =
-        array("error" => "AUTH not accepted from server",
-              "smtp_code" => $code,
-              "smtp_msg" => substr($rply,4));
-      if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
-      }
-      return false;
-    }
-
-    // Send encoded username
-    fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
-
-    $rply = $this->get_lines();
-    $code = substr($rply,0,3);
-
-    if($code != 334) {
-      $this->error =
-        array("error" => "Username not accepted from server",
-              "smtp_code" => $code,
-              "smtp_msg" => substr($rply,4));
-      if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
-      }
-      return false;
-    }
-
-    // Send encoded password
-    fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
-
-    $rply = $this->get_lines();
-    $code = substr($rply,0,3);
-
-    if($code != 235) {
-      $this->error =
-        array("error" => "Password not accepted from server",
-              "smtp_code" => $code,
-              "smtp_msg" => substr($rply,4));
-      if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
-      }
-      return false;
+  public function Authenticate($username, $password, $authtype='LOGIN', $realm='', $workstation='') {
+    if (empty($authtype)) {
+      $authtype = 'LOGIN';
+    }
+
+    switch ($authtype) {
+      case 'PLAIN':
+        // Start authentication
+        fputs($this->smtp_conn,"AUTH PLAIN" . $this->CRLF);
+    
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+    
+        if($code != 334) {
+          $this->error =
+            array("error" => "AUTH not accepted from server",
+                  "smtp_code" => $code,
+                  "smtp_msg" => substr($rply,4));
+          if($this->do_debug >= 1) {
+            $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
+          }
+          return false;
+        }
+        // Send encoded username and password
+        fputs($this->smtp_conn, base64_encode("\0".$username."\0".$password) . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+    
+        if($code != 235) {
+          $this->error =
+            array("error" => "Authentication not accepted from server",
+                  "smtp_code" => $code,
+                  "smtp_msg" => substr($rply,4));
+          if($this->do_debug >= 1) {
+            $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
+          }
+          return false;
+        }
+        break;
+      case 'LOGIN':
+        // Start authentication
+        fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
+    
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+    
+        if($code != 334) {
+          $this->error =
+            array("error" => "AUTH not accepted from server",
+                  "smtp_code" => $code,
+                  "smtp_msg" => substr($rply,4));
+          if($this->do_debug >= 1) {
+            $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
+          }
+          return false;
+        }
+    
+        // Send encoded username
+        fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
+    
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+    
+        if($code != 334) {
+          $this->error =
+            array("error" => "Username not accepted from server",
+                  "smtp_code" => $code,
+                  "smtp_msg" => substr($rply,4));
+          if($this->do_debug >= 1) {
+            $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
+          }
+          return false;
+        }
+    
+        // Send encoded password
+        fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
+    
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+    
+        if($code != 235) {
+          $this->error =
+            array("error" => "Password not accepted from server",
+                  "smtp_code" => $code,
+                  "smtp_msg" => substr($rply,4));
+          if($this->do_debug >= 1) {
+            $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
+          }
+          return false;
+        }
+        break;
+      case 'NTLM':
+        /*
+         * ntlm_sasl_client.php
+         ** Bundled with Permission
+         **
+         ** How to telnet in windows: http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx
+         ** PROTOCOL Documentation http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication
+         */
+        require_once('ntlm_sasl_client.php');
+        $temp = new stdClass();
+        $ntlm_client = new ntlm_sasl_client_class;
+        if(! $ntlm_client->Initialize($temp)){//let's test if every function its available
+            $this->error = array("error" => $temp->error);
+            if($this->do_debug >= 1) {
+                $this->edebug("You need to enable some modules in your php.ini file: " . $this->error["error"] . $this->CRLF);
+            }
+            return false;
+        }
+        $msg1 = $ntlm_client->TypeMsg1($realm, $workstation);//msg1
+        
+        fputs($this->smtp_conn,"AUTH NTLM " . base64_encode($msg1) . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+        
+
+        if($code != 334) {
+            $this->error =
+                array("error" => "AUTH not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF);
+            }
+            return false;
+        }
+        
+        $challange = substr($rply,3);//though 0 based, there is a white space after the 3 digit number....//msg2
+        $challange = base64_decode($challange);
+        $ntlm_res = $ntlm_client->NTLMResponse(substr($challange,24,8),$password);
+        $msg3 = $ntlm_client->TypeMsg3($ntlm_res,$username,$realm,$workstation);//msg3
+        // Send encoded username
+        fputs($this->smtp_conn, base64_encode($msg3) . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($code != 235) {
+            $this->error =
+                array("error" => "Could not authenticate",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF);
+            }
+            return false;
+        }
+        break;
     }
-
     return true;
   }
 
@@ -276,7 +428,7 @@ class SMTP {
       if($sock_status["eof"]) {
         // the socket is valid but we are not connected
         if($this->do_debug >= 1) {
-            echo "SMTP -> NOTICE:" . $this->CRLF . "EOF caught while checking if connected";
+            $this->edebug("SMTP -> NOTICE:" . $this->CRLF . "EOF caught while checking if connected");
         }
         $this->Close();
         return false;
@@ -324,6 +476,7 @@ class SMTP {
    * SMTP CODE FAILURE: 451,554
    * SMTP CODE ERROR  : 500,501,503,421
    * @access public
+   * @param string $msg_data
    * @return bool
    */
   public function Data($msg_data) {
@@ -341,7 +494,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 354) {
@@ -350,7 +503,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -435,7 +588,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250) {
@@ -444,7 +597,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -461,6 +614,7 @@ class SMTP {
    * SMTP CODE SUCCESS: 250
    * SMTP CODE ERROR  : 500, 501, 504, 421
    * @access public
+   * @param string $host
    * @return bool
    */
   public function Hello($host = '') {
@@ -491,6 +645,8 @@ class SMTP {
   /**
    * Sends a HELO/EHLO command.
    * @access private
+   * @param string $hello
+   * @param string $host
    * @return bool
    */
   private function SendHello($hello, $host) {
@@ -500,7 +656,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER: " . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER: " . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250) {
@@ -509,7 +665,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -531,6 +687,7 @@ class SMTP {
    * SMTP CODE SUCCESS: 552,451,452
    * SMTP CODE SUCCESS: 500,501,421
    * @access public
+   * @param string $from
    * @return bool
    */
   public function Mail($from) {
@@ -542,14 +699,14 @@ class SMTP {
       return false;
     }
 
-    $useVerp = ($this->do_verp ? "XVERP" : "");
+    $useVerp = ($this->do_verp ? " XVERP" : "");
     fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF);
 
     $rply = $this->get_lines();
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250) {
@@ -558,7 +715,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -574,6 +731,7 @@ class SMTP {
    * SMTP CODE SUCCESS: 221
    * SMTP CODE ERROR  : 500
    * @access public
+   * @param bool $close_on_error
    * @return bool
    */
   public function Quit($close_on_error = true) {
@@ -592,7 +750,7 @@ class SMTP {
     $byemsg = $this->get_lines();
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $byemsg . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $byemsg . $this->CRLF . '<br />');
     }
 
     $rval = true;
@@ -606,7 +764,7 @@ class SMTP {
                  "smtp_rply" => substr($byemsg,4));
       $rval = false;
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $e["error"] . ": " . $byemsg . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $e["error"] . ": " . $byemsg . $this->CRLF . '<br />');
       }
     }
 
@@ -627,6 +785,7 @@ class SMTP {
    * SMTP CODE FAILURE: 550,551,552,553,450,451,452
    * SMTP CODE ERROR  : 500,501,503,421
    * @access public
+   * @param string $to
    * @return bool
    */
   public function Recipient($to) {
@@ -644,7 +803,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250 && $code != 251) {
@@ -653,7 +812,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -687,7 +846,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250) {
@@ -696,7 +855,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -718,6 +877,7 @@ class SMTP {
    * SMTP CODE SUCCESS: 552,451,452
    * SMTP CODE SUCCESS: 500,501,502,421
    * @access public
+   * @param string $from
    * @return bool
    */
   public function SendAndMail($from) {
@@ -735,7 +895,7 @@ class SMTP {
     $code = substr($rply,0,3);
 
     if($this->do_debug >= 2) {
-      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />');
     }
 
     if($code != 250) {
@@ -744,7 +904,7 @@ class SMTP {
               "smtp_code" => $code,
               "smtp_msg" => substr($rply,4));
       if($this->do_debug >= 1) {
-        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />');
       }
       return false;
     }
@@ -768,7 +928,7 @@ class SMTP {
     $this->error = array("error" => "This method, TURN, of the SMTP ".
                                     "is not implemented");
     if($this->do_debug >= 1) {
-      echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF . '<br />';
+      $this->edebug("SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF . '<br />');
     }
     return false;
   }
@@ -797,22 +957,47 @@ class SMTP {
    */
   private function get_lines() {
     $data = "";
-    while(!feof($this->smtp_conn)) {
+    $endtime = 0;
+    /* If for some reason the fp is bad, don't inf loop */
+    if (!is_resource($this->smtp_conn)) {
+      return $data;
+    }
+    stream_set_timeout($this->smtp_conn, $this->Timeout);
+    if ($this->Timelimit > 0) {
+      $endtime = time() + $this->Timelimit;
+    }
+    while(is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
       $str = @fgets($this->smtp_conn,515);
       if($this->do_debug >= 4) {
-        echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />';
-        echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />');
+        $this->edebug("SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />');
       }
       $data .= $str;
       if($this->do_debug >= 4) {
-        echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '<br />';
+        $this->edebug("SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '<br />');
       }
       // if 4th character is a space, we are done reading, break the loop
       if(substr($str,3,1) == " ") { break; }
+      // Timed-out? Log and break
+      $info = stream_get_meta_data($this->smtp_conn);
+      if ($info['timed_out']) {
+        if($this->do_debug >= 4) {
+          $this->edebug("SMTP -> get_lines(): timed-out (" . $this->Timeout . " seconds) <br />");
+        }
+        break;
+      }
+      // Now check if reads took too long
+      if ($endtime) {
+        if (time() > $endtime) {
+          if($this->do_debug >= 4) {
+            $this->edebug("SMTP -> get_lines(): timelimit reached (" . $this->Timelimit . " seconds) <br />");
+          }
+          break;
+        }
+      }
     }
     return $data;
   }
 
 }
-
 ?>
diff --git a/wp-includes/class-snoopy.php b/wp-includes/class-snoopy.php
index 66ff71fc3..2c59c4811 100644
--- a/wp-includes/class-snoopy.php
+++ b/wp-includes/class-snoopy.php
@@ -910,7 +910,7 @@ class Snoopy
 			return false;
 		}
 
-		// check if there is a a redirect meta tag
+		// check if there is a redirect meta tag
 
 		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
 
@@ -1010,7 +1010,7 @@ class Snoopy
 		if($this->read_timeout > 0)
 			$cmdline_params .= " -m ".$this->read_timeout;
 
-		$headerfile = tempnam($temp_dir, "sno");
+		$headerfile = tempnam($this->temp_dir, "sno");
 
 		exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);
 
@@ -1057,7 +1057,7 @@ class Snoopy
 			$this->headers[] = $result_headers[$currentHeader];
 		}
 
-		// check if there is a a redirect meta tag
+		// check if there is a redirect meta tag
 
 		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
 		{
diff --git a/wp-includes/class-wp-customize-control.php b/wp-includes/class-wp-customize-control.php
index d24a5f2e7..fde856158 100644
--- a/wp-includes/class-wp-customize-control.php
+++ b/wp-includes/class-wp-customize-control.php
@@ -384,7 +384,7 @@ class WP_Customize_Color_Control extends WP_Customize_Control {
 		<label>
 			<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
 			<div class="customize-control-content">
-				<input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e( 'Hex Value' ); ?>"<?php echo $default_attr ?> />
+				<input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e( 'Hex Value' ); ?>"<?php echo $default_attr; ?> />
 			</div>
 		</label>
 		<?php
@@ -593,9 +593,7 @@ class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
 	 */
 	public function tab_upload_new() {
 		if ( ! _device_can_upload() ) {
-			?>
-			<p><?php _e('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.'); ?></p>
-			<?php
+			echo '<p>' . sprintf( __('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.'), 'http://wordpress.org/mobile/' ) . '</p>';
 		} else {
 			?>
 			<div class="upload-dropzone">
diff --git a/wp-includes/class-wp-customize-manager.php b/wp-includes/class-wp-customize-manager.php
index 4be338969..cad9f1351 100644
--- a/wp-includes/class-wp-customize-manager.php
+++ b/wp-includes/class-wp-customize-manager.php
@@ -310,7 +310,7 @@ final class WP_Customize_Manager {
 	public function post_value( $setting ) {
 		if ( ! isset( $this->_post_values ) ) {
 			if ( isset( $_POST['customized'] ) )
-				$this->_post_values = json_decode( stripslashes( $_POST['customized'] ), true );
+				$this->_post_values = json_decode( wp_unslash( $_POST['customized'] ), true );
 			else
 				$this->_post_values = false;
 		}
@@ -512,6 +512,8 @@ final class WP_Customize_Manager {
 			$setting->save();
 		}
 
+		do_action( 'customize_save_after', $this );
+
 		die;
 	}
 
@@ -897,9 +899,7 @@ final class WP_Customize_Manager {
 		if ( $menus ) {
 			$choices = array( 0 => __( '&mdash; Select &mdash;' ) );
 			foreach ( $menus as $menu ) {
-				$truncated_name = wp_html_excerpt( $menu->name, 40 );
-				$truncated_name = ( $truncated_name == $menu->name ) ? $menu->name : trim( $truncated_name ) . '&hellip;';
-				$choices[ $menu->term_id ] = $truncated_name;
+				$choices[ $menu->term_id ] = wp_html_excerpt( $menu->name, 40, '&hellip;' );
 			}
 
 			foreach ( $locations as $location => $description ) {
@@ -975,6 +975,7 @@ final class WP_Customize_Manager {
 	 * Callback for validating the header_textcolor value.
 	 *
 	 * Accepts 'blank', and otherwise uses sanitize_hex_color_no_hash().
+	 * Returns default text color if hex color is empty.
 	 *
 	 * @since 3.4.0
 	 *
@@ -982,7 +983,14 @@ final class WP_Customize_Manager {
 	 * @return string
 	 */
 	public function _sanitize_header_textcolor( $color ) {
-		return ( 'blank' === $color ) ? 'blank' : sanitize_hex_color_no_hash( $color );
+		if ( 'blank' === $color )
+			return 'blank';
+
+		$color = sanitize_hex_color_no_hash( $color );
+		if ( empty( $color ) )
+			$color = get_theme_support( 'custom-header', 'default-text-color' );
+
+		return $color;
 	}
 };
 
diff --git a/wp-includes/class-wp-customize-section.php b/wp-includes/class-wp-customize-section.php
index fb854110f..63051be61 100644
--- a/wp-includes/class-wp-customize-section.php
+++ b/wp-includes/class-wp-customize-section.php
@@ -79,9 +79,9 @@ class WP_Customize_Section {
 	 */
 	protected function render() {
 		?>
-		<li id="customize-section-<?php echo esc_attr( $this->id ); ?>" class="control-section customize-section">
-			<h3 class="customize-section-title" tabindex="0" title="<?php echo esc_attr( $this->description ); ?>"><?php echo esc_html( $this->title ); ?></h3>
-			<ul class="customize-section-content">
+		<li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="control-section accordion-section">
+			<h3 class="accordion-section-title" tabindex="0" title="<?php echo esc_attr( $this->description ); ?>"><?php echo esc_html( $this->title ); ?></h3>
+			<ul class="accordion-section-content">
 				<?php
 				foreach ( $this->controls as $control )
 					$control->maybe_render();
diff --git a/wp-includes/class-wp-customize-setting.php b/wp-includes/class-wp-customize-setting.php
index dd49f79f2..c8542efef 100644
--- a/wp-includes/class-wp-customize-setting.php
+++ b/wp-includes/class-wp-customize-setting.php
@@ -144,7 +144,7 @@ class WP_Customize_Setting {
 	 * @return mixed Null if an input isn't valid, otherwise the sanitized value.
 	 */
 	public function sanitize( $value ) {
-		$value = stripslashes_deep( $value );
+		$value = wp_unslash( $value );
 		return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
 	}
 
diff --git a/wp-includes/class-wp-editor.php b/wp-includes/class-wp-editor.php
index 38ab7c262..9ab3feb5c 100644
--- a/wp-includes/class-wp-editor.php
+++ b/wp-includes/class-wp-editor.php
@@ -152,7 +152,6 @@ final class _WP_Editors {
 	}
 
 	public static function editor_settings($editor_id, $set) {
-		global $editor_styles;
 		$first_run = false;
 
 		if ( empty(self::$first_init) ) {
@@ -176,7 +175,7 @@ final class _WP_Editors {
 				$qtInit = array_merge($qtInit, $set['quicktags']);
 
 			if ( empty($qtInit['buttons']) )
-				$qtInit['buttons'] = 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
+				$qtInit['buttons'] = 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close';
 
 			if ( $set['dfw'] )
 				$qtInit['buttons'] .= ',fullscreen';
@@ -193,7 +192,7 @@ final class _WP_Editors {
 				self::$baseurl = includes_url('js/tinymce');
 				self::$mce_locale = $mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1
 				$no_captions = (bool) apply_filters( 'disable_captions', '' );
-				$plugins = array( 'inlinepopups', 'spellchecker', 'tabfocus', 'paste', 'media', 'fullscreen', 'wordpress', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' );
+				$plugins = array( 'inlinepopups', 'tabfocus', 'paste', 'media', 'fullscreen', 'wordpress', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' );
 				$first_run = true;
 				$ext_plugins = '';
 
@@ -286,20 +285,22 @@ final class _WP_Editors {
 				self::$plugins = $plugins;
 				self::$ext_plugins = $ext_plugins;
 
-				/*
-				translators: These languages show up in the spellchecker drop-down menu, in the order specified, and with the first
-				language listed being the default language. They must be comma-separated and take the format of name=code, where name
-				is the language name (which you may internationalize), and code is a valid ISO 639 language code. Please test the
-				spellchecker with your values.
-				*/
-				$mce_spellchecker_languages = __( 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv' );
-
-				/*
-				The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
-				By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
-				The + sign marks the default language. More: http://www.tinymce.com/wiki.php/Plugin:spellchecker.
-				*/
-				$mce_spellchecker_languages = apply_filters( 'mce_spellchecker_languages', '+' . $mce_spellchecker_languages );
+				if ( in_array( 'spellchecker', $plugins ) ) {
+					/*
+					translators: These languages show up in the spellchecker drop-down menu, in the order specified, and with the first
+					language listed being the default language. They must be comma-separated and take the format of name=code, where name
+					is the language name (which you may internationalize), and code is a valid ISO 639 language code. Please test the
+					spellchecker with your values.
+					*/
+					$mce_spellchecker_languages = __( 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv' );
+
+					/*
+					The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
+					By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
+					The + sign marks the default language. More: http://www.tinymce.com/wiki.php/Plugin:spellchecker.
+					*/
+					$mce_spellchecker_languages = apply_filters( 'mce_spellchecker_languages', '+' . $mce_spellchecker_languages );
+				}
 
 				self::$first_init = array(
 					'mode' => 'exact',
@@ -307,7 +308,6 @@ final class _WP_Editors {
 					'theme' => 'advanced',
 					'skin' => 'wp_theme',
 					'language' => self::$mce_locale,
-					'spellchecker_languages' => $mce_spellchecker_languages,
 					'theme_advanced_toolbar_location' => 'top',
 					'theme_advanced_toolbar_align' => 'left',
 					'theme_advanced_statusbar_location' => 'bottom',
@@ -344,20 +344,36 @@ final class _WP_Editors {
 					'paste_strip_class_attributes' => 'all',
 					'paste_text_use_dialog' => true,
 					'webkit_fake_resize' => false,
-					'spellchecker_rpc_url' => self::$baseurl . '/plugins/spellchecker/rpc.php',
+					'preview_styles' => 'font-family font-weight text-decoration text-transform',
 					'schema' => 'html5',
 					'wpeditimage_disable_captions' => $no_captions,
 					'wp_fullscreen_content_css' => self::$baseurl . '/plugins/wpfullscreen/css/wp-fullscreen.css',
 					'plugins' => implode( ',', $plugins )
 				);
 
+				if ( in_array( 'spellchecker', $plugins ) ) {
+					self::$first_init['spellchecker_rpc_url'] = self::$baseurl . '/plugins/spellchecker/rpc.php';
+					self::$first_init['spellchecker_languages'] = $mce_spellchecker_languages;
+				}
+
 				// load editor_style.css if the current theme supports it
-				if ( ! empty( $editor_styles ) && is_array( $editor_styles ) ) {
+				if ( ! empty( $GLOBALS['editor_styles'] ) && is_array( $GLOBALS['editor_styles'] ) ) {
+					$editor_styles = $GLOBALS['editor_styles'];
+
 					$mce_css = array();
-					$editor_styles = array_unique($editor_styles);
+					$editor_styles = array_unique( array_filter( $editor_styles ) );
 					$style_uri = get_stylesheet_directory_uri();
 					$style_dir = get_stylesheet_directory();
 
+					// Support externally referenced styles (like, say, fonts).
+					foreach ( $editor_styles as $key => $file ) {
+						if ( preg_match( '~^(https?:)?//~', $file ) ) {
+							$mce_css[] = esc_url_raw( $file );
+							unset( $editor_styles[ $key ] );
+						}
+					}
+
+					// Look in a parent theme first, that way child theme CSS overrides.
 					if ( is_child_theme() ) {
 						$template_uri = get_template_directory_uri();
 						$template_dir = get_template_directory();
@@ -396,8 +412,16 @@ final class _WP_Editors {
 
 			$body_class = $editor_id;
 
-			if ( $post = get_post() )
-				$body_class .= ' post-type-' . $post->post_type;
+			if ( $post = get_post() ) {
+				$body_class .= ' post-type-' . sanitize_html_class( $post->post_type ) . ' post-status-' . sanitize_html_class( $post->post_status );
+				if ( post_type_supports( $post->post_type, 'post-formats' ) ) {
+					$post_format = get_post_format( $post );
+					if ( $post_format && ! is_wp_error( $post_format ) )
+						$body_class .= ' post-format-' . sanitize_html_class( $post_format );
+					else
+						$body_class .= ' post-format-standard';
+				}
+			}
 
 			if ( !empty($set['tinymce']['body_class']) ) {
 				$body_class .= ' ' . $set['tinymce']['body_class'];
diff --git a/wp-includes/class-wp-error.php b/wp-includes/class-wp-error.php
index a3331da95..bbfcebc44 100644
--- a/wp-includes/class-wp-error.php
+++ b/wp-includes/class-wp-error.php
@@ -194,13 +194,11 @@ class WP_Error {
 /**
  * Check whether variable is a WordPress Error.
  *
- * Looks at the object and if a WP_Error class. Does not check to see if the
- * parent is also WP_Error, so can't inherit WP_Error and still use this
- * function.
+ * Returns true if $thing is an object of the WP_Error class.
  *
  * @since 2.1.0
  *
- * @param mixed $thing Check if unknown variable is WordPress Error object.
+ * @param mixed $thing Check if unknown variable is a WP_Error object.
  * @return bool True, if WP_Error. False, if not WP_Error.
  */
 function is_wp_error($thing) {
diff --git a/wp-includes/class-wp-image-editor-gd.php b/wp-includes/class-wp-image-editor-gd.php
index b0781b572..12aaece1e 100644
--- a/wp-includes/class-wp-image-editor-gd.php
+++ b/wp-includes/class-wp-image-editor-gd.php
@@ -97,6 +97,11 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
 		if ( ! $size )
 			return new WP_Error( 'invalid_image', __('Could not read image size.'), $this->file );
 
+		if ( function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' ) ) {
+			imagealphablending( $this->image, false );
+			imagesavealpha( $this->image, true );
+		}
+
 		$this->update_size( $size[0], $size[1] );
 		$this->mime_type = $size['mime'];
 
@@ -173,10 +178,13 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
 	 * Processes current image and saves to disk
 	 * multiple sizes from single source.
 	 *
+	 * 'width' and 'height' are required.
+	 * 'crop' defaults to false when not provided.
+	 *
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+	 * @param array $sizes { {'width'=>int, 'height'=>int, ['crop'=>bool]}, ... }
 	 * @return array
 	 */
 	public function multi_resize( $sizes ) {
@@ -184,6 +192,12 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
 		$orig_size = $this->size;
 
 		foreach ( $sizes as $size => $size_data ) {
+			if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
+				continue;
+
+			if ( ! isset( $size_data['crop'] ) )
+				$size_data['crop'] = false;
+
 			$image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
 
 			if( ! is_wp_error( $image ) ) {
@@ -279,8 +293,8 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param boolean $horz Horizontal Flip
-	 * @param boolean $vert Vertical Flip
+	 * @param boolean $horz Flip along Horizontal Axis
+	 * @param boolean $vert Flip along Vertical Axis
 	 * @returns boolean|WP_Error
 	 */
 	public function flip( $horz, $vert ) {
@@ -387,4 +401,22 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
 				return imagejpeg( $this->image, null, $this->quality );
 		}
 	}
+
+	/**
+	 * Either calls editor's save function or handles file as a stream.
+	 *
+	 * @since 3.5.0
+	 * @access protected
+	 *
+	 * @param string|stream $filename
+	 * @param callable $function
+	 * @param array $arguments
+	 * @return boolean
+	 */
+	protected function make_image( $filename, $function, $arguments ) {
+		if ( wp_is_stream( $filename ) )
+			$arguments[1] = null;
+
+		return parent::make_image( $filename, $function, $arguments );
+	}
 }
diff --git a/wp-includes/class-wp-image-editor-imagick.php b/wp-includes/class-wp-image-editor-imagick.php
index 21e4e0cac..f803943a4 100644
--- a/wp-includes/class-wp-image-editor-imagick.php
+++ b/wp-includes/class-wp-image-editor-imagick.php
@@ -19,7 +19,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 	protected $image = null; // Imagick Object
 
 	function __destruct() {
-		if ( $this->image ) {
+		if ( $this->image instanceof Imagick ) {
 			// we don't need the original in memory anymore
 			$this->image->clear();
 			$this->image->destroy();
@@ -97,7 +97,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 				return false;
 
 		try {
-			return ( (bool) Imagick::queryFormats( $imagick_extension ) );
+			return ( (bool) @Imagick::queryFormats( $imagick_extension ) );
 		}
 		catch ( Exception $e ) {
 			return false;
@@ -113,7 +113,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 	 * @return boolean|WP_Error True if loaded; WP_Error on failure.
 	 */
 	public function load() {
-		if ( $this->image )
+		if ( $this->image instanceof Imagick )
 			return true;
 
 		if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) )
@@ -245,10 +245,13 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 	 * Processes current image and saves to disk
 	 * multiple sizes from single source.
 	 *
+	 * 'width' and 'height' are required.
+	 * 'crop' defaults to false when not provided.
+	 *
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+	 * @param array $sizes { {'width'=>int, 'height'=>int, ['crop'=>bool]}, ... }
 	 * @return array
 	 */
 	public function multi_resize( $sizes ) {
@@ -260,6 +263,12 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 			if ( ! $this->image )
 				$this->image = $orig_image->getImage();
 
+			if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
+				continue;
+
+			if ( ! isset( $size_data['crop'] ) )
+				$size_data['crop'] = false;
+
 			$resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
 
 			if( ! is_wp_error( $resize_result ) ) {
@@ -356,8 +365,8 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param boolean $horz Horizontal Flip
-	 * @param boolean $vert Vertical Flip
+	 * @param boolean $horz Flip along Horizontal Axis
+	 * @param boolean $vert Flip along Vertical Axis
 	 * @returns boolean|WP_Error
 	 */
 	public function flip( $horz, $vert ) {
diff --git a/wp-includes/class-wp-image-editor.php b/wp-includes/class-wp-image-editor.php
index 099df1e0f..3c2e1b3d4 100644
--- a/wp-includes/class-wp-image-editor.php
+++ b/wp-includes/class-wp-image-editor.php
@@ -97,11 +97,14 @@ abstract class WP_Image_Editor {
 	 * Processes current image and saves to disk
 	 * multiple sizes from single source.
 	 *
+	 * 'width' and 'height' are required.
+	 * 'crop' defaults to false when not provided.
+	 *
 	 * @since 3.5.0
 	 * @access public
 	 * @abstract
 	 *
-	 * @param array $sizes { {'width'=>int, 'height'=>int, 'crop'=>bool}, ... }
+	 * @param array $sizes { {'width'=>int, 'height'=>int, ['crop'=>bool]}, ... }
 	 * @return array
 	 */
 	abstract public function multi_resize( $sizes );
@@ -144,8 +147,8 @@ abstract class WP_Image_Editor {
 	 * @access public
 	 * @abstract
 	 *
-	 * @param boolean $horz Horizontal Flip
-	 * @param boolean $vert Vertical Flip
+	 * @param boolean $horz Flip along Horizontal Axis
+	 * @param boolean $vert Flip along Vertical Axis
 	 * @return boolean|WP_Error
 	 */
 	abstract public function flip( $horz, $vert );
@@ -324,11 +327,11 @@ abstract class WP_Image_Editor {
 	 * @return boolean
 	 */
 	protected function make_image( $filename, $function, $arguments ) {
-		$dst_file = $filename;
-
 		if ( $stream = wp_is_stream( $filename ) ) {
-			$filename = null;
 			ob_start();
+		} else {
+			// The directory containing the original file may no longer exist when using a replication plugin. 
+			wp_mkdir_p( dirname( $filename ) ); 
 		}
 
 		$result = call_user_func_array( $function, $arguments );
@@ -336,7 +339,7 @@ abstract class WP_Image_Editor {
 		if ( $result && $stream ) {
 			$contents = ob_get_contents();
 
-			$fp = fopen( $dst_file, 'w' );
+			$fp = fopen( $filename, 'w' );
 
 			if ( ! $fp )
 				return false;
diff --git a/wp-includes/class-wp-theme.php b/wp-includes/class-wp-theme.php
index 7585fba95..0d47f025c 100644
--- a/wp-includes/class-wp-theme.php
+++ b/wp-includes/class-wp-theme.php
@@ -37,11 +37,12 @@ final class WP_Theme implements ArrayAccess {
 	 * @var array
 	 */
 	private static $default_themes = array(
-		'classic'      => 'WordPress Classic',
-		'default'      => 'WordPress Default',
-		'twentyten'    => 'Twenty Ten',
-		'twentyeleven' => 'Twenty Eleven',
-		'twentytwelve' => 'Twenty Twelve',
+		'classic'        => 'WordPress Classic',
+		'default'        => 'WordPress Default',
+		'twentyten'      => 'Twenty Ten',
+		'twentyeleven'   => 'Twenty Eleven',
+		'twentytwelve'   => 'Twenty Twelve',
+		'twentythirteen' => 'Twenty Thirteen',
 	);
 
 	/**
@@ -86,7 +87,7 @@ final class WP_Theme implements ArrayAccess {
 	/**
 	 * The directory name of the theme's files, inside the theme root.
 	 *
-	 * In the case of a child theme, this is directory name of the the child theme.
+	 * In the case of a child theme, this is directory name of the child theme.
 	 * Otherwise, 'stylesheet' is the same as 'template'.
 	 *
 	 * @access private
@@ -719,7 +720,7 @@ final class WP_Theme implements ArrayAccess {
 	/**
 	 * The directory name of the theme's "stylesheet" files, inside the theme root.
 	 *
-	 * In the case of a child theme, this is directory name of the the child theme.
+	 * In the case of a child theme, this is directory name of the child theme.
 	 * Otherwise, get_stylesheet() is the same as get_template().
 	 *
 	 * @since 3.4.0
diff --git a/wp-includes/class-wp-walker.php b/wp-includes/class-wp-walker.php
index df9d9b61f..655e7f467 100644
--- a/wp-includes/class-wp-walker.php
+++ b/wp-includes/class-wp-walker.php
@@ -80,7 +80,7 @@ class Walker {
 	 *
 	 * @param string $output Passed by reference. Used to append additional content.
 	 */
-	function start_el( &$output, $object, $depth, $args, $current_object_id = 0 )  {}
+	function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 )  {}
 
 	/**
 	 * Ends the element output, if needed.
@@ -115,7 +115,7 @@ class Walker {
 	 * @param string $output Passed by reference. Used to append additional content.
 	 * @return null Null on failure with no changes to parameters.
 	 */
-	function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
+	function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
 
 		if ( !$element )
 			return;
@@ -123,7 +123,7 @@ class Walker {
 		$id_field = $this->db_fields['id'];
 
 		//display this element
-		if ( is_array( $args[0] ) )
+		if ( isset( $args[0] ) && is_array( $args[0] ) )
 			$args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
 		$cb_args = array_merge( array(&$output, $element, $depth), $args);
 		call_user_func_array(array($this, 'start_el'), $cb_args);
diff --git a/wp-includes/class-wp-xmlrpc-server.php b/wp-includes/class-wp-xmlrpc-server.php
index e4a2d961f..922e0284a 100644
--- a/wp-includes/class-wp-xmlrpc-server.php
+++ b/wp-includes/class-wp-xmlrpc-server.php
@@ -12,8 +12,8 @@
  * pingback. Additional WordPress API for managing comments, pages, posts,
  * options, etc.
  *
- * Since WordPress 2.6.0, WordPress XMLRPC server can be disabled in the
- * administration panels.
+ * As of WordPress 3.5.0, XML-RPC is enabled by default. It can be disabled
+ * via the xmlrpc_enabled filter found in wp_xmlrpc_server::login().
  *
  * @package WordPress
  * @subpackage Publishing
@@ -211,28 +211,22 @@ class wp_xmlrpc_server extends IXR_Server {
 	}
 
 	/**
-	 * Sanitize string or array of strings for database.
+	 * Escape string or array of strings for database.
 	 *
 	 * @since 1.5.2
 	 *
-	 * @param string|array $array Sanitize single string or array of strings.
-	 * @return string|array Type matches $array and sanitized for the database.
+	 * @param string|array $data Escape single string or array of strings.
+	 * @return string|array Type matches $data and sanitized for the database.
 	 */
-	function escape(&$array) {
-		global $wpdb;
-
-		if (!is_array($array)) {
-			return($wpdb->escape($array));
-		} else {
-			foreach ( (array) $array as $k => $v ) {
-				if ( is_array($v) ) {
-					$this->escape($array[$k]);
-				} else if ( is_object($v) ) {
-					//skip
-				} else {
-					$array[$k] = $wpdb->escape($v);
-				}
-			}
+	function escape( &$data ) {
+		if ( ! is_array( $data ) )
+			return wp_slash( $data );
+
+		foreach ( $data as &$v ) {
+			if ( is_array( $v ) )
+				$this->escape( $v );
+			elseif ( ! is_object( $v ) )
+				$v = wp_slash( $v );
 		}
 	}
 
@@ -280,16 +274,16 @@ class wp_xmlrpc_server extends IXR_Server {
 				$meta['id'] = (int) $meta['id'];
 				$pmeta = get_metadata_by_mid( 'post', $meta['id'] );
 				if ( isset($meta['key']) ) {
-					$meta['key'] = stripslashes( $meta['key'] );
-					if ( $meta['key'] != $pmeta->meta_key )
+					$meta['key'] = wp_unslash( $meta['key'] );
+					if ( $meta['key'] !== $pmeta->meta_key )
 						continue;
-					$meta['value'] = stripslashes_deep( $meta['value'] );
+					$meta['value'] = wp_unslash( $meta['value'] );
 					if ( current_user_can( 'edit_post_meta', $post_id, $meta['key'] ) )
 						update_metadata_by_mid( 'post', $meta['id'], $meta['value'] );
 				} elseif ( current_user_can( 'delete_post_meta', $post_id, $pmeta->meta_key ) ) {
 					delete_metadata_by_mid( 'post', $meta['id'] );
 				}
-			} elseif ( current_user_can( 'add_post_meta', $post_id, stripslashes( $meta['key'] ) ) ) {
+			} elseif ( current_user_can( 'add_post_meta', $post_id, wp_unslash( $meta['key'] ) ) ) {
 				add_post_meta( $post_id, $meta['key'], $meta['value'] );
 			}
 		}
@@ -318,15 +312,25 @@ class wp_xmlrpc_server extends IXR_Server {
 				'value'         => $wp_version
 			),
 			'blog_url'          => array(
-				'desc'          => __( 'Site URL' ),
+				'desc'          => __( 'WordPress Address (URL)' ),
 				'readonly'      => true,
 				'option'        => 'siteurl'
 			),
 			'home_url'          => array(
-				'desc'          => __( 'Home URL' ),
+				'desc'          => __( 'Site Address (URL)' ),
 				'readonly'      => true,
 				'option'        => 'home'
 			),
+			'login_url'          => array(
+				'desc'          => __( 'Login Address (URL)' ),
+				'readonly'      => true,
+				'value'         => wp_login_url( )
+			),
+			'admin_url'          => array(
+				'desc'          => __( 'The URL to the admin area' ),
+				'readonly'      => true,
+				'value'         => get_admin_url( )
+			),
 			'image_default_link_type' => array(
 				'desc'          => __( 'Image default link type' ),
 				'readonly'      => true,
@@ -562,13 +566,13 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( ! is_array( $_term) )
 			$_term = get_object_vars( $_term );
 
-		// For Intergers which may be largeer than XMLRPC supports ensure we return strings.
+		// For integers which may be larger than XML-RPC supports ensure we return strings.
 		$_term['term_id'] = strval( $_term['term_id'] );
 		$_term['term_group'] = strval( $_term['term_group'] );
 		$_term['term_taxonomy_id'] = strval( $_term['term_taxonomy_id'] );
 		$_term['parent'] = strval( $_term['parent'] );
 
-		// Count we are happy to return as an Integer because people really shouldn't use Terms that much.
+		// Count we are happy to return as an integer because people really shouldn't use terms that much.
 		$_term['count'] = intval( $_term['count'] );
 
 		return apply_filters( 'xmlrpc_prepare_term', $_term, $term );
@@ -1007,7 +1011,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( $update ) {
 			if ( ! get_post( $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'Invalid post ID.' ) );
-			if ( ! current_user_can( $post_type->cap->edit_post, $post_data['ID'] ) )
+			if ( ! current_user_can( 'edit_post', $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
 			if ( $post_data['post_type'] != get_post_type( $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'The post type may not be changed.' ) );
@@ -1317,8 +1321,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( empty( $post['ID'] ) )
 			return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
-		$post_type = get_post_type_object( $post['post_type'] );
-		if ( ! current_user_can( $post_type->cap->delete_post, $post_id ) )
+		if ( ! current_user_can( 'delete_post', $post_id ) )
 			return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
 
 		$result = wp_delete_post( $post_id );
@@ -1399,8 +1402,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( empty( $post['ID'] ) )
 			return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
-		$post_type = get_post_type_object( $post['post_type'] );
-		if ( ! current_user_can( $post_type->cap->edit_post, $post_id ) )
+		if ( ! current_user_can( 'edit_post', $post_id ) )
 			return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
 		return $this->_prepare_post( $post, $fields );
@@ -1495,8 +1497,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		$struct = array();
 
 		foreach ( $posts_list as $post ) {
-			$post_type = get_post_type_object( $post['post_type'] );
-			if ( ! current_user_can( $post_type->cap->edit_post, $post['ID'] ) )
+			if ( ! current_user_can( 'edit_post', $post['ID'] ) )
 				continue;
 
 			$struct[] = $this->_prepare_post( $post, $fields );
@@ -2978,9 +2979,9 @@ class wp_xmlrpc_server extends IXR_Server {
 		$comment['comment_post_ID'] = $post_id;
 
 		if ( $logged_in ) {
-			$comment['comment_author'] = $wpdb->escape( $user->display_name );
-			$comment['comment_author_email'] = $wpdb->escape( $user->user_email );
-			$comment['comment_author_url'] = $wpdb->escape( $user->user_url );
+			$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 );
 			$comment['user_ID'] = $user->ID;
 		} else {
 			$comment['comment_author'] = '';
@@ -3192,6 +3193,7 @@ class wp_xmlrpc_server extends IXR_Server {
 	 */
 	function _getOptions($options) {
 		$data = array();
+		$can_manage = current_user_can( 'manage_options' );
 		foreach ( $options as $option ) {
 			if ( array_key_exists( $option, $this->blog_options ) ) {
 				$data[$option] = $this->blog_options[$option];
@@ -3200,6 +3202,9 @@ class wp_xmlrpc_server extends IXR_Server {
 					$data[$option]['value'] = get_option( $data[$option]['option'] );
 					unset($data[$option]['option']);
 				}
+
+				if ( ! $can_manage )
+					$data[$option]['readonly'] = true;
 			}
 		}
 
@@ -3535,7 +3540,7 @@ class wp_xmlrpc_server extends IXR_Server {
 			return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
 
 		// Check if revisions are enabled.
-		if ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) )
+		if ( ! wp_revisions_enabled( $post ) )
 			return new IXR_Error( 401, __( 'Sorry, revisions are disabled.' ) );
 
 		$revisions = wp_get_post_revisions( $post_id );
@@ -3602,7 +3607,7 @@ class wp_xmlrpc_server extends IXR_Server {
 			return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
 		// Check if revisions are disabled.
-		if ( ! WP_POST_REVISIONS || ! post_type_supports( $post->post_type, 'revisions' ) )
+		if ( ! wp_revisions_enabled( $post ) )
 			return new IXR_Error( 401, __( 'Sorry, revisions are disabled.' ) );
 
 		$post = wp_restore_post_revision( $revision_id );
@@ -3746,9 +3751,9 @@ class wp_xmlrpc_server extends IXR_Server {
 
 		$categories = implode(',', wp_get_post_categories($post_ID));
 
-		$content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
+		$content  = '<title>'.wp_unslash($post_data['post_title']).'</title>';
 		$content .= '<category>'.$categories.'</category>';
-		$content .= stripslashes($post_data['post_content']);
+		$content .= wp_unslash($post_data['post_content']);
 
 		$struct = array(
 			'userid'    => $post_data['post_author'],
@@ -3784,6 +3789,9 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
+		if ( ! current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit posts on this site.' ) );
+
 		do_action('xmlrpc_call', 'blogger.getRecentPosts');
 
 		$posts_list = wp_get_recent_posts( $query );
@@ -3800,9 +3808,9 @@ class wp_xmlrpc_server extends IXR_Server {
 			$post_date  = $this->_convert_date( $entry['post_date'] );
 			$categories = implode(',', wp_get_post_categories($entry['ID']));
 
-			$content  = '<title>'.stripslashes($entry['post_title']).'</title>';
+			$content  = '<title>'.wp_unslash($entry['post_title']).'</title>';
 			$content .= '<category>'.$categories.'</category>';
-			$content .= stripslashes($entry['post_content']);
+			$content .= wp_unslash($entry['post_content']);
 
 			$struct[] = array(
 				'userid' => $entry['post_author'],
@@ -4300,22 +4308,20 @@ class wp_xmlrpc_server extends IXR_Server {
 		return strval($post_ID);
 	}
 
-	function add_enclosure_if_new($post_ID, $enclosure) {
+	function add_enclosure_if_new( $post_ID, $enclosure ) {
 		if ( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) {
-
-			$encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'];
+			$encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'] . "\n";
 			$found = false;
-			foreach ( (array) get_post_custom($post_ID) as $key => $val) {
-				if ($key == 'enclosure') {
-					foreach ( (array) $val as $enc ) {
-						if ($enc == $encstring) {
-							$found = true;
-							break 2;
-						}
+			if ( $enclosures = get_post_meta( $post_ID, 'enclosure' ) ) {
+				foreach ( $enclosures as $enc ) {
+					// This method used to omit the trailing new line. #23219
+					if ( rtrim( $enc, "\n" ) == rtrim( $encstring, "\n" ) ) {
+						$found = true;
+						break;
 					}
 				}
 			}
-			if (!$found)
+			if ( ! $found )
 				add_post_meta( $post_ID, 'enclosure', $encstring );
 		}
 	}
@@ -4335,7 +4341,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		$attachments = $wpdb->get_results( "SELECT ID, guid FROM {$wpdb->posts} WHERE post_parent = '0' AND post_type = 'attachment'" );
 		if ( is_array( $attachments ) ) {
 			foreach ( $attachments as $file ) {
-				if ( strpos( $post_content, $file->guid ) !== false )
+				if ( ! empty( $file->guid ) && strpos( $post_content, $file->guid ) !== false )
 					$wpdb->update($wpdb->posts, array('post_parent' => $post_ID), array('ID' => $file->ID) );
 			}
 		}
@@ -4757,6 +4763,9 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
+		if ( ! current_user_can( 'edit_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you cannot edit posts on this site.' ) );
+
 		do_action('xmlrpc_call', 'metaWeblog.getRecentPosts');
 
 		$posts_list = wp_get_recent_posts( $query );
@@ -4908,8 +4917,8 @@ class wp_xmlrpc_server extends IXR_Server {
 		global $wpdb;
 
 		$blog_ID     = (int) $args[0];
-		$username  = $wpdb->escape($args[1]);
-		$password   = $wpdb->escape($args[2]);
+		$username  = $this->escape($args[1]);
+		$password   = $this->escape($args[2]);
 		$data        = $args[3];
 
 		$name = sanitize_file_name( $data['name'] );
@@ -5380,7 +5389,12 @@ class wp_xmlrpc_server extends IXR_Server {
 		sleep(1);
 
 		// Let's check the remote site
-		$linea = wp_remote_retrieve_body( wp_remote_get( $pagelinkedfrom, array( 'timeout' => 10, 'redirection' => 0, 'reject_unsafe_urls' => true ) ) );
+		$http_api_args = array(
+			'timeout' => 10,
+			'redirection' => 0,
+			'limit_response_size' => 153600, // 150 KB
+		);
+		$linea = wp_remote_retrieve_body( wp_safe_remote_get( $pagelinkedfrom, $http_api_args ) );
 
 		if ( !$linea )
 	  		return $this->pingback_error( 16, __( 'The source URL does not exist.' ) );
@@ -5389,7 +5403,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
 		// Work around bug in strip_tags():
 		$linea = str_replace('<!DOC', '<DOC', $linea);
-		$linea = preg_replace( '/[\s\r\n\t]+/', ' ', $linea ); // normalize spaces
+		$linea = preg_replace( '/[\r\n\t ]+/', ' ', $linea ); // normalize spaces
 		$linea = preg_replace( "/<\/*(h1|h2|h3|h4|h5|h6|p|th|td|li|dt|dd|pre|caption|input|textarea|button|body)[^>]*>/", "\n\n", $linea );
 
 		preg_match('|<title>([^<]*?)</title>|is', $linea, $matchtitle);
@@ -5417,7 +5431,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
 				// prevent really long link text
 				if ( strlen($context[1]) > 100 )
-					$context[1] = substr($context[1], 0, 100) . '...';
+					$context[1] = substr($context[1], 0, 100) . '&#8230;';
 
 				$marker = '<wpcontext>'.$context[1].'</wpcontext>';    // set up our marker
 				$excerpt= str_replace($context[0], $marker, $excerpt); // swap out the link for our marker
@@ -5435,8 +5449,8 @@ class wp_xmlrpc_server extends IXR_Server {
 
 		$pagelinkedfrom = str_replace('&', '&amp;', $pagelinkedfrom);
 
-		$context = '[...] ' . esc_html( $excerpt ) . ' [...]';
-		$pagelinkedfrom = $wpdb->escape( $pagelinkedfrom );
+		$context = '[&#8230;] ' . esc_html( $excerpt ) . ' [&#8230;]';
+		$pagelinkedfrom = $this->escape( $pagelinkedfrom );
 
 		$comment_post_ID = (int) $post_ID;
 		$comment_author = $title;
diff --git a/wp-includes/class-wp.php b/wp-includes/class-wp.php
index c76030b32..dc7768865 100644
--- a/wp-includes/class-wp.php
+++ b/wp-includes/class-wp.php
@@ -25,7 +25,7 @@ class WP {
 	 * @since 2.0.0
 	 * @var array
 	 */
-	var $private_query_vars = array('offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in');
+	var $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent__in', 'post_parent__not_in' );
 
 	/**
 	 * Extra query variables set by the user.
@@ -356,7 +356,7 @@ class WP {
 
 			// Support for Conditional GET
 			if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
-				$client_etag = stripslashes(stripslashes($_SERVER['HTTP_IF_NONE_MATCH']));
+				$client_etag = wp_unslash( $_SERVER['HTTP_IF_NONE_MATCH'] );
 			else $client_etag = false;
 
 			$client_last_modified = empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? '' : trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php
index f75929b4a..38f3f9fcf 100644
--- a/wp-includes/class.wp-scripts.php
+++ b/wp-includes/class.wp-scripts.php
@@ -133,6 +133,9 @@ class WP_Scripts extends WP_Dependencies {
 	 * Localizes only if the script has already been added
 	 */
 	function localize( $handle, $object_name, $l10n ) {
+		if ( $handle === 'jquery' )
+			$handle = 'jquery-core';
+
 		if ( is_array($l10n) && isset($l10n['l10n_print_after']) ) { // back compat, preserve the code in 'l10n_print_after' if present
 			$after = $l10n['l10n_print_after'];
 			unset($l10n['l10n_print_after']);
diff --git a/wp-includes/class.wp-styles.php b/wp-includes/class.wp-styles.php
index fdfe5afe3..b1241b304 100644
--- a/wp-includes/class.wp-styles.php
+++ b/wp-includes/class.wp-styles.php
@@ -50,7 +50,7 @@ class WP_Styles extends WP_Dependencies {
 				$this->concat .= "$handle,";
 				$this->concat_version .= "$handle$ver";
 
-				$this->print_code .= $this->get_data( $handle, 'after' );
+				$this->print_code .= $this->print_inline_style( $handle, false );
 
 				return true;
 			}
diff --git a/wp-includes/comment-template.php b/wp-includes/comment-template.php
index 8be25e10d..9a09d28d5 100644
--- a/wp-includes/comment-template.php
+++ b/wp-includes/comment-template.php
@@ -393,8 +393,8 @@ function comment_date( $d = '', $comment_ID = 0 ) {
 /**
  * Retrieve the excerpt of the current comment.
  *
- * Will cut each word and only output the first 20 words with '...' at the end.
- * If the word count is less than 20, then no truncating is done and no '...'
+ * Will cut each word and only output the first 20 words with '&hellip;' at the end.
+ * If the word count is less than 20, then no truncating is done and no '&hellip;'
  * will appear.
  *
  * @since 1.5.0
@@ -419,7 +419,7 @@ function get_comment_excerpt( $comment_ID = 0 ) {
 	for ($i=0; $i<$k; $i++) {
 		$excerpt .= $blah[$i] . ' ';
 	}
-	$excerpt .= ($use_dotdotdot) ? '...' : '';
+	$excerpt .= ($use_dotdotdot) ? '&hellip;' : '';
 	return apply_filters('get_comment_excerpt', $excerpt);
 }
 
@@ -516,7 +516,7 @@ function get_comment_link( $comment = null, $args = array() ) {
  * @return string The link to the comments
  */
 function get_comments_link($post_id = 0) {
-	return get_permalink($post_id) . '#comments';
+	return apply_filters( 'get_comments_link', get_permalink( $post_id ) . '#comments', $post_id );
 }
 
 /**
@@ -532,7 +532,7 @@ function comments_link( $deprecated = '', $deprecated_2 = '' ) {
 		_deprecated_argument( __FUNCTION__, '0.72' );
 	if ( !empty( $deprecated_2 ) )
 		_deprecated_argument( __FUNCTION__, '1.3' );
-	echo get_comments_link();
+	echo esc_url( get_comments_link() );
 }
 
 /**
@@ -1244,11 +1244,11 @@ class Walker_Comment extends Walker {
 			case 'div':
 				break;
 			case 'ol':
-				echo "<ol class='children'>\n";
+				echo '<ol class="children">' . "\n";
 				break;
 			default:
 			case 'ul':
-				echo "<ul class='children'>\n";
+				echo '<ul class="children">' . "\n";
 				break;
 		}
 	}
@@ -1268,11 +1268,11 @@ class Walker_Comment extends Walker {
 			case 'div':
 				break;
 			case 'ol':
-				echo "</ol>\n";
+				echo "</ol><!-- .children -->\n";
 				break;
 			default:
 			case 'ul':
-				echo "</ul>\n";
+				echo "</ul><!-- .children -->\n";
 				break;
 		}
 	}
@@ -1295,7 +1295,7 @@ class Walker_Comment extends Walker {
 	 *  2.2
 	 *
 	 */
-	function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
+	function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
 
 		if ( !$element )
 			return;
@@ -1325,18 +1325,72 @@ class Walker_Comment extends Walker {
 	 * @param int $depth Depth of comment in reference to parents.
 	 * @param array $args
 	 */
-	function start_el( &$output, $comment, $depth, $args, $id = 0 ) {
+	function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) {
 		$depth++;
 		$GLOBALS['comment_depth'] = $depth;
 		$GLOBALS['comment'] = $comment;
 
-		if ( !empty($args['callback']) ) {
-			call_user_func($args['callback'], $comment, $args, $depth);
+		if ( !empty( $args['callback'] ) ) {
+			call_user_func( $args['callback'], $comment, $args, $depth );
 			return;
 		}
 
-		extract($args, EXTR_SKIP);
+		if ( ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) && $args['short_ping'] ) {
+			$this->ping( $comment, $depth, $args );
+		} elseif ( 'html5' === $args['format'] ) {
+			$this->html5_comment( $comment, $depth, $args );
+		} else {
+			$this->comment( $comment, $depth, $args );
+		}
+	}
+
+	/**
+	 * @see Walker::end_el()
+	 * @since 2.7.0
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param object $comment
+	 * @param int $depth Depth of comment.
+	 * @param array $args
+	 */
+	function end_el( &$output, $comment, $depth = 0, $args = array() ) {
+		if ( !empty( $args['end-callback'] ) ) {
+			call_user_func( $args['end-callback'], $comment, $args, $depth );
+			return;
+		}
+		if ( 'div' == $args['style'] )
+			echo "</div><!-- #comment-## -->\n";
+		else
+			echo "</li><!-- #comment-## -->\n";
+	}
+
+	/**
+	 * @since 3.6
+	 * @access protected
+	 *
+	 * @param object $comment
+	 * @param int $depth Depth of comment.
+	 * @param array $args
+	 */
+	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
+	}
 
+	/**
+	 * @since 3.6
+	 * @access protected
+	 *
+	 * @param object $comment Comment to display.
+	 * @param int $depth Depth of comment.
+	 * @param array $args Optional args.
+	 */
+	protected function comment( $comment, $depth, $args ) {
 		if ( 'div' == $args['style'] ) {
 			$tag = 'div';
 			$add_below = 'comment';
@@ -1345,30 +1399,30 @@ class Walker_Comment extends Walker {
 			$add_below = 'div-comment';
 		}
 ?>
-		<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
+		<<?php echo $tag; ?> <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?> id="comment-<?php comment_ID(); ?>">
 		<?php if ( 'div' != $args['style'] ) : ?>
-		<div id="div-comment-<?php comment_ID() ?>" class="comment-body">
+		<div id="div-comment-<?php comment_ID(); ?>" class="comment-body">
 		<?php endif; ?>
 		<div class="comment-author vcard">
-		<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?>
-		<?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
+			<?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 ($comment->comment_approved == '0') : ?>
-		<em class="comment-awaiting-moderation"><?php _e('Your comment is awaiting moderation.') ?></em>
+		<?php if ( '0' == $comment->comment_approved ) : ?>
+		<em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em>
 		<br />
-<?php endif; ?>
+		<?php endif; ?>
 
-		<div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>">
+		<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
 			<?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;','' );
+				printf( __( '%1$s at %2$s' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), '&nbsp;&nbsp;', '' );
 			?>
 		</div>
 
 		<?php comment_text() ?>
 
 		<div class="reply">
-		<?php comment_reply_link(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'] ) ) ); ?>
 		</div>
 		<?php if ( 'div' != $args['style'] ) : ?>
 		</div>
@@ -1377,25 +1431,48 @@ class Walker_Comment extends Walker {
 	}
 
 	/**
-	 * @see Walker::end_el()
-	 * @since 2.7.0
+	 * @since 3.6
+	 * @access protected
 	 *
-	 * @param string $output Passed by reference. Used to append additional content.
-	 * @param object $comment
+	 * @param object $comment Comment to display.
 	 * @param int $depth Depth of comment.
-	 * @param array $args
+	 * @param array $args Optional args.
 	 */
-	function end_el(&$output, $comment, $depth = 0, $args = array() ) {
-		if ( !empty($args['end-callback']) ) {
-			call_user_func($args['end-callback'], $comment, $args, $depth);
-			return;
-		}
-		if ( 'div' == $args['style'] )
-			echo "</div>\n";
-		else
-			echo "</li>\n";
+	protected function html5_comment( $comment, $depth, $args ) {
+		$tag = ( 'div' === $args['style'] ) ? 'div' : 'li';
+?>
+		<<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( empty( $args['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 ) ); ?>">
+							<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 -->
+
+				<div class="reply">
+					<?php comment_reply_link( array_merge( $args, array( 'add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
+				</div><!-- .reply -->
+			</article><!-- .comment-body -->
+<?php
 	}
-
 }
 
 /**
@@ -1417,8 +1494,21 @@ function wp_list_comments($args = array(), $comments = null ) {
 	$comment_alt = $comment_thread_alt = 0;
 	$comment_depth = 1;
 
-	$defaults = array('walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all',
-		'page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '');
+	$defaults = array(
+		'walker'            => null,
+		'max_depth'         => '',
+		'style'             => 'ul',
+		'callback'          => null,
+		'end-callback'      => null,
+		'type'              => 'all',
+		'page'              => '',
+		'per_page'          => '',
+		'avatar_size'       => 32,
+		'reverse_top_level' => null,
+		'reverse_children'  => '',
+		'format'            => current_theme_supports( 'html5', 'comment-list' ) ? 'html5' : 'xhtml',
+		'short_ping'        => false,
+	);
 
 	$r = wp_parse_args( $args, $defaults );
 
@@ -1507,10 +1597,8 @@ function wp_list_comments($args = array(), $comments = null ) {
  * @return void
  */
 function comment_form( $args = array(), $post_id = null ) {
-	global $id;
-
 	if ( null === $post_id )
-		$post_id = $id;
+		$post_id = get_the_ID();
 	else
 		$id = $post_id;
 
@@ -1518,21 +1606,25 @@ function comment_form( $args = array(), $post_id = null ) {
 	$user = wp_get_current_user();
 	$user_identity = $user->exists() ? $user->display_name : '';
 
-	$req = get_option( 'require_name_email' );
+	if ( ! isset( $args['format'] ) )
+		$args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml';
+
+	$req      = get_option( 'require_name_email' );
 	$aria_req = ( $req ? " aria-required='true'" : '' );
-	$fields =  array(
+	$html5    = 'html5' === $args['format'];
+	$fields   =  array(
 		'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
 		            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
 		'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
-		            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
-		'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
-		            '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
+		            '<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
+		'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label> ' .
+		            '<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
 	);
 
 	$required_text = sprintf( ' ' . __('Required fields are marked %s'), '<span class="required">*</span>' );
 	$defaults = array(
 		'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
-		'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
+		'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
 		'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>',
 		'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>',
 		'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
@@ -1543,6 +1635,7 @@ function comment_form( $args = array(), $post_id = null ) {
 		'title_reply_to'       => __( 'Leave a Reply to %s' ),
 		'cancel_reply_link'    => __( 'Cancel reply' ),
 		'label_submit'         => __( 'Post Comment' ),
+		'format'               => 'xhtml',
 	);
 
 	$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
@@ -1550,13 +1643,13 @@ function comment_form( $args = array(), $post_id = null ) {
 	?>
 		<?php if ( comments_open( $post_id ) ) : ?>
 			<?php do_action( 'comment_form_before' ); ?>
-			<div id="respond">
-				<h3 id="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>
+			<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']; ?>
 					<?php 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'] ); ?>">
+					<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' ); ?>
 						<?php if ( is_user_logged_in() ) : ?>
 							<?php echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity ); ?>
diff --git a/wp-includes/comment.php b/wp-includes/comment.php
index 5476b930c..4d4c9bc49 100644
--- a/wp-includes/comment.php
+++ b/wp-includes/comment.php
@@ -250,8 +250,10 @@ class WP_Comment_Query {
 		// $args can be whatever, only use the args defined in defaults to compute the key
 		$key = md5( serialize( compact(array_keys($defaults)) )  );
 		$last_changed = wp_cache_get( 'last_changed', 'comment' );
-		if ( ! $last_changed )
-			$last_changed = wp_cache_set( 'last_changed', 1, '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' ) )
@@ -415,7 +417,7 @@ class WP_Comment_Query {
  *
  * @return array List of comment statuses.
  */
-function get_comment_statuses( ) {
+function get_comment_statuses() {
 	$status = array(
 		'hold'		=> __('Unapproved'),
 		/* translators: comment status  */
@@ -537,7 +539,7 @@ function get_comment_count( $post_id = 0 ) {
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Metadata value.
  * @param bool $unique Optional, default is false. Whether the same key should not be added.
- * @return bool False for failure. True for success.
+ * @return int|bool Meta ID on success, false on failure.
  */
 function add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false) {
 	return add_metadata('comment', $comment_id, $meta_key, $meta_value, $unique);
@@ -557,7 +559,7 @@ function add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false)
  * @param int $comment_id comment ID
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Optional. Metadata value.
- * @return bool False for failure. True for success.
+ * @return bool True on success, false on failure.
  */
 function delete_comment_meta($comment_id, $meta_key, $meta_value = '') {
 	return delete_metadata('comment', $comment_id, $meta_key, $meta_value);
@@ -596,7 +598,7 @@ function get_comment_meta($comment_id, $key = '', $single = false) {
  * @param string $meta_key Metadata key.
  * @param mixed $meta_value Metadata value.
  * @param mixed $prev_value Optional. Previous value to check before removing.
- * @return bool False on failure, true if success.
+ * @return bool True on success, false on failure.
  */
 function update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value = '') {
 	return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value);
@@ -632,21 +634,21 @@ function wp_set_comment_cookies($comment, $user) {
 function sanitize_comment_cookies() {
 	if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) {
 		$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['comment_author_'.COOKIEHASH]);
-		$comment_author = stripslashes($comment_author);
+		$comment_author = wp_unslash($comment_author);
 		$comment_author = esc_attr($comment_author);
 		$_COOKIE['comment_author_'.COOKIEHASH] = $comment_author;
 	}
 
 	if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ) {
 		$comment_author_email = apply_filters('pre_comment_author_email', $_COOKIE['comment_author_email_'.COOKIEHASH]);
-		$comment_author_email = stripslashes($comment_author_email);
+		$comment_author_email = wp_unslash($comment_author_email);
 		$comment_author_email = esc_attr($comment_author_email);
 		$_COOKIE['comment_author_email_'.COOKIEHASH] = $comment_author_email;
 	}
 
 	if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ) {
 		$comment_author_url = apply_filters('pre_comment_author_url', $_COOKIE['comment_author_url_'.COOKIEHASH]);
-		$comment_author_url = stripslashes($comment_author_url);
+		$comment_author_url = wp_unslash($comment_author_url);
 		$_COOKIE['comment_author_url_'.COOKIEHASH] = $comment_author_url;
 	}
 }
@@ -669,10 +671,10 @@ function wp_allow_comment($commentdata) {
 
 	// Simple duplicate check
 	// expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
-	$dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_parent = '$comment_parent' AND comment_approved != 'trash' AND ( comment_author = '$comment_author' ";
+	$dupe = $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = %s AND comment_approved != 'trash' AND ( comment_author = %s ", wp_unslash( $comment_post_ID ), wp_unslash( $comment_parent ), wp_unslash( $comment_author ) );
 	if ( $comment_author_email )
-		$dupe .= "OR comment_author_email = '$comment_author_email' ";
-	$dupe .= ") AND comment_content = '$comment_content' LIMIT 1";
+		$dupe .= $wpdb->prepare( "OR comment_author_email = %s ", wp_unslash( $comment_author_email ) );
+	$dupe .= $wpdb->prepare( ") AND comment_content = %s LIMIT 1", wp_unslash( $comment_content ) );
 	if ( $wpdb->get_var($dupe) ) {
 		do_action( 'comment_duplicate_trigger', $commentdata );
 		if ( defined('DOING_AJAX') )
@@ -992,7 +994,7 @@ function wp_count_comments( $post_id = 0 ) {
  *
  * @param int $comment_id Comment ID
  * @param bool $force_delete Whether to bypass trash and force deletion. Default is false.
- * @return bool False if delete comment query failure, true on success.
+ * @return bool True on success, false on failure.
  */
 function wp_delete_comment($comment_id, $force_delete = false) {
 	global $wpdb;
@@ -1042,7 +1044,7 @@ function wp_delete_comment($comment_id, $force_delete = false) {
  * @uses wp_delete_comment() if trash is disabled
  *
  * @param int $comment_id Comment ID.
- * @return mixed False on failure
+ * @return bool True on success, false on failure.
  */
 function wp_trash_comment($comment_id) {
 	if ( !EMPTY_TRASH_DAYS )
@@ -1071,7 +1073,7 @@ function wp_trash_comment($comment_id) {
  * @uses do_action() on 'untrashed_comment' after untrashing
  *
  * @param int $comment_id Comment ID.
- * @return mixed False on failure
+ * @return bool True on success, false on failure.
  */
 function wp_untrash_comment($comment_id) {
 	if ( ! (int)$comment_id )
@@ -1101,7 +1103,7 @@ function wp_untrash_comment($comment_id) {
  * @uses do_action() on 'spammed_comment' after spamming
  *
  * @param int $comment_id Comment ID.
- * @return mixed False on failure
+ * @return bool True on success, false on failure.
  */
 function wp_spam_comment($comment_id) {
 	if ( !$comment = get_comment($comment_id) )
@@ -1126,7 +1128,7 @@ function wp_spam_comment($comment_id) {
  * @uses do_action() on 'unspammed_comment' after unspamming
  *
  * @param int $comment_id Comment ID.
- * @return mixed False on failure
+ * @return bool True on success, false on failure.
  */
 function wp_unspam_comment($comment_id) {
 	if ( ! (int)$comment_id )
@@ -1260,7 +1262,7 @@ function wp_get_current_commenter() {
  */
 function wp_insert_comment($commentdata) {
 	global $wpdb;
-	extract(stripslashes_deep($commentdata), EXTR_SKIP);
+	extract(wp_unslash($commentdata), EXTR_SKIP);
 
 	if ( ! isset($comment_author_IP) )
 		$comment_author_IP = '';
@@ -1290,12 +1292,7 @@ function wp_insert_comment($commentdata) {
 	$comment = get_comment($id);
 	do_action('wp_insert_comment', $id, $comment);
 
-	if ( function_exists( 'wp_cache_incr' ) ) {
-		wp_cache_incr( 'last_changed', 1, 'comment' );
-	} else {
-		$last_changed = wp_cache_get( 'last_changed', 'comment' );
-		wp_cache_set( 'last_changed', $last_changed + 1, 'comment' );
-	}
+	wp_cache_set( 'last_changed', microtime(), 'comment' );
 
 	return $id;
 }
@@ -1388,7 +1385,7 @@ function wp_new_comment( $commentdata ) {
 	$commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0;
 
 	$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['REMOTE_ADDR'] );
-	$commentdata['comment_agent']     = substr($_SERVER['HTTP_USER_AGENT'], 0, 254);
+	$commentdata['comment_agent']     = isset( $_SERVER['HTTP_USER_AGENT'] ) ? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '';
 
 	$commentdata['comment_date']     = current_time('mysql');
 	$commentdata['comment_date_gmt'] = current_time('mysql', 1);
@@ -1426,7 +1423,7 @@ function wp_new_comment( $commentdata ) {
  * @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.
- * @return bool False on failure or deletion and true on success.
+ * @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) {
 	global $wpdb;
@@ -1495,7 +1492,7 @@ function wp_update_comment($commentarr) {
 	$comment = get_comment($commentarr['comment_ID'], ARRAY_A);
 
 	// Escape data pulled from DB.
-	$comment = esc_sql($comment);
+	$comment = wp_slash($comment);
 
 	$old_status = $comment['comment_approved'];
 
@@ -1505,7 +1502,7 @@ function wp_update_comment($commentarr) {
 	$commentarr = wp_filter_comment( $commentarr );
 
 	// Now extract the merged array.
-	extract(stripslashes_deep($commentarr), EXTR_SKIP);
+	extract(wp_unslash($commentarr), EXTR_SKIP);
 
 	$comment_content = apply_filters('comment_save_pre', $comment_content);
 
@@ -1604,7 +1601,7 @@ function wp_update_comment_count($post_id, $do_deferred=false) {
  * @uses do_action() Calls 'edit_posts' hook on $post_id and $post
  *
  * @param int $post_id Post ID
- * @return bool False on '0' $post_id or if post with ID does not exist. True on success.
+ * @return bool True on success, false on '0' $post_id or if post with ID does not exist.
  */
 function wp_update_comment_count_now($post_id) {
 	global $wpdb;
@@ -1661,7 +1658,7 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) {
 	if ( 0 === strpos($url, $uploads_dir['baseurl']) )
 		return false;
 
-	$response = wp_remote_head( $url, array( 'timeout' => 2, 'httpversion' => '1.0', 'reject_unsafe_urls' => true ) );
+	$response = wp_safe_remote_head( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
 
 	if ( is_wp_error( $response ) )
 		return false;
@@ -1673,8 +1670,8 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) {
 	if ( preg_match('#(image|audio|video|model)/#is', wp_remote_retrieve_header( $response, 'content-type' )) )
 		return false;
 
-	// Now do a GET since we're going to look in the html headers (and we're sure its not a binary file)
-	$response = wp_remote_get( $url, array( 'timeout' => 2, 'httpversion' => '1.0', 'reject_unsafe_urls' => true ) );
+	// Now do a GET since we're going to look in the html headers (and we're sure it's not a binary file)
+	$response = wp_safe_remote_get( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
 
 	if ( is_wp_error( $response ) )
 		return false;
@@ -1752,11 +1749,11 @@ function do_trackbacks($post_id) {
 	}
 
 	if ( empty($post->post_excerpt) )
-		$excerpt = apply_filters('the_content', $post->post_content);
+		$excerpt = apply_filters('the_content', $post->post_content, $post->ID);
 	else
 		$excerpt = apply_filters('the_excerpt', $post->post_excerpt);
 	$excerpt = str_replace(']]>', ']]&gt;', $excerpt);
-	$excerpt = wp_html_excerpt($excerpt, 252) . '...';
+	$excerpt = wp_html_excerpt($excerpt, 252, '&#8230;');
 
 	$post_title = apply_filters('the_title', $post->post_title, $post->ID);
 	$post_title = strip_tags($post_title);
@@ -1848,6 +1845,7 @@ function pingback($content, $post_ID) {
 		endif;
 	endforeach;
 
+	$post_links = array_unique( $post_links );
 	do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post_ID ) );
 
 	foreach ( (array) $post_links as $pagelinkedto ) {
@@ -1908,7 +1906,6 @@ function trackback($trackback_url, $title, $excerpt, $ID) {
 
 	$options = array();
 	$options['timeout'] = 4;
-	$options['reject_unsafe_urls'] = true;
 	$options['body'] = array(
 		'title' => $title,
 		'url' => get_permalink($ID),
@@ -1916,7 +1913,7 @@ function trackback($trackback_url, $title, $excerpt, $ID) {
 		'excerpt' => $excerpt
 	);
 
-	$response = wp_remote_post($trackback_url, $options);
+	$response = wp_safe_remote_post( $trackback_url, $options );
 
 	if ( is_wp_error( $response ) )
 		return;
@@ -2000,12 +1997,7 @@ function clean_comment_cache($ids) {
 	foreach ( (array) $ids as $id )
 		wp_cache_delete($id, 'comment');
 
-	if ( function_exists( 'wp_cache_incr' ) ) {
-		wp_cache_incr( 'last_changed', 1, 'comment' );
-	} else {
-		$last_changed = wp_cache_get( 'last_changed', 'comment' );
-		wp_cache_set( 'last_changed', $last_changed + 1, 'comment' );
-	}
+	wp_cache_set( 'last_changed', microtime(), 'comment' );
 }
 
 /**
diff --git a/wp-includes/cron.php b/wp-includes/cron.php
index 4e469a051..6668dc546 100644
--- a/wp-includes/cron.php
+++ b/wp-includes/cron.php
@@ -230,7 +230,7 @@ function spawn_cron( $gmt_time = 0 ) {
 		set_transient( 'doing_cron', $doing_wp_cron );
 
 		ob_start();
-		wp_redirect( add_query_arg('doing_wp_cron', $doing_wp_cron, stripslashes($_SERVER['REQUEST_URI'])) );
+		wp_redirect( add_query_arg( 'doing_wp_cron', $doing_wp_cron, wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
 		echo ' ';
 
 		// flush any buffers and send the headers
diff --git a/wp-includes/css/admin-bar.css b/wp-includes/css/admin-bar.css
index 6f462e9cd..270fa9a0a 100644
--- a/wp-includes/css/admin-bar.css
+++ b/wp-includes/css/admin-bar.css
@@ -13,6 +13,10 @@
 	-webkit-box-sizing: content-box;
 	-moz-box-sizing:    content-box;
 	box-sizing:         content-box;
+	-webkit-transition: none;
+	-moz-transition:    none;
+	-o-transition:      none;
+	transition:         none;
 }
 
 #wpadminbar ul li:before,
diff --git a/wp-includes/css/admin-bar.min.css b/wp-includes/css/admin-bar.min.css
index 0a9b1dcf0..bac06caf9 100644
--- a/wp-includes/css/admin-bar.min.css
+++ b/wp-includes/css/admin-bar.min.css
@@ -1 +1 @@
-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:0;border:0;text-decoration:none;background:0}#wpadminbar a:focus,#wpadminbar a:active,#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,#wpadminbar div{outline:0}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar .quicklinks{border-left:1px solid transparent}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;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;margin:0 -1px 0 0}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:0}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px}#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 .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{color:#fafafa;background:#222;background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(to top,#3a3a3a,#222)}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;border-right-color:transparent;border-left-color:transparent}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none}#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:#21759b}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background: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;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline}#wpadminbar .quicklinks li .blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue.png') no-repeat;height:16px;width:16px;display:inline-block}#wpadminbar #wp-admin-bar-search .ab-item{padding:0}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent}#wpadminbar #adminbarsearch{height:28px;padding:0 2px}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:0;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:3px 2px;background-repeat:no-repeat;outline:0;cursor:pointer;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);cursor:text}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-button{display:none}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px}#wpadminbar .ab-label{margin-left:4px}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:0 -76px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -159px;background-repeat:no-repeat}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-1px -134px;background-repeat:no-repeat}#wpadminbar span.count-0{display:none}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -182px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize{display:none}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wpadminbar .menupop .menupop>.ab-item,#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item,#wpadminbar #adminbarsearch .adminbar-input,#wp-admin-bar-wp-logo>.ab-item .ab-icon,#wp-admin-bar-updates>.ab-item .ab-icon,#wp-admin-bar-comments>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite-2x.png?d=20120830);background-size:20px 220px}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue-2x.png') no-repeat;background-size:16px 16px}}#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:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;text-shadow:none;border-radius:3px;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}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}
\ No newline at end of file
+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:0;border:0;text-decoration:none;background:0}#wpadminbar a:focus,#wpadminbar a:active,#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,#wpadminbar div{outline:0}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar .quicklinks{border-left:1px solid transparent}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;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;margin:0 -1px 0 0}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:0}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px}#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 .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{color:#fafafa;background:#222;background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(to top,#3a3a3a,#222)}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;border-right-color:transparent;border-left-color:transparent}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none}#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:#21759b}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right;background:#464646;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#373737),color-stop(18%,#464646));background-image:-webkit-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737 0,#464646 5px);background-image:-o-linear-gradient(bottom,#373737 0,#464646 5px);background-image:linear-gradient(to top,#373737 0,#464646 5px)}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background: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;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline}#wpadminbar .quicklinks li .blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue.png') no-repeat;height:16px;width:16px;display:inline-block}#wpadminbar #wp-admin-bar-search .ab-item{padding:0}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent}#wpadminbar #adminbarsearch{height:28px;padding:0 2px}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:0;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:3px 2px;background-repeat:no-repeat;outline:0;cursor:pointer;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);cursor:text}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-button{display:none}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px}#wpadminbar .ab-label{margin-left:4px}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:0 -76px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -159px;background-repeat:no-repeat}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-1px -134px;background-repeat:no-repeat}#wpadminbar span.count-0{display:none}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20120830);background-position:-2px -182px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize,.no-customize-support.wp-core-ui .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.customize-support.wp-core-ui .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize{display:none}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wpadminbar .menupop .menupop>.ab-item,#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item,#wpadminbar #adminbarsearch .adminbar-input,#wp-admin-bar-wp-logo>.ab-item .ab-icon,#wp-admin-bar-updates>.ab-item .ab-icon,#wp-admin-bar-comments>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite-2x.png?d=20120830);background-size:20px 220px}#wpadminbar .quicklinks li div.blavatar{background:url('../images/wpmini-blue-2x.png') no-repeat;background-size:16px 16px}}#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:bold;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;text-shadow:none;border-radius:3px;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}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}
\ No newline at end of file
diff --git a/wp-includes/css/editor.css b/wp-includes/css/editor.css
index 6fa48c300..172856087 100644
--- a/wp-includes/css/editor.css
+++ b/wp-includes/css/editor.css
@@ -252,9 +252,9 @@
 	border-top-right-radius: 2px;
 }
 
-/*.wp_themeSkin .mceListBox .mceLast {
-	display: none;
-}*/
+.wp_themeSkin .mceListBoxMenu .mce_formatPreview {
+	line-height: normal;
+}
 
 .wp_themeSkin .mceListBox .mceOpen,
 .wp_themeSkin .mceListBoxHover .mceOpen,
@@ -586,7 +586,7 @@
 
 .wp_themeSkin .mce_h1 span.mceText {
 	font-weight: bolder;
-	font-size: 17px;
+	font-size: 18px;
 }
 
 .wp_themeSkin .mce_h2 span.mceText {
@@ -596,22 +596,22 @@
 
 .wp_themeSkin .mce_h3 span.mceText {
 	font-weight: bolder;
-	font-size: 15px;
+	font-size: 14px;
 }
 
 .wp_themeSkin .mce_h4 span.mceText {
 	font-weight: bolder;
-	font-size: 14px;
+	font-size: 12px;
 }
 
 .wp_themeSkin .mce_h5 span.mceText {
 	font-weight: bolder;
-	font-size: 13px;
+	font-size: 11px;
 }
 
 .wp_themeSkin .mce_h6 span.mceText {
 	font-weight: bolder;
-	font-size: 12px;
+	font-size: 10px;
 }
 
 /* Theme */
@@ -975,7 +975,7 @@
 }
 
 .wp-editor-container {
-    border-width: 1px;
+	border-width: 1px;
 	border-style: solid;
 	-webkit-border-top-right-radius: 3px;
 	-webkit-border-top-left-radius: 3px;
@@ -1004,7 +1004,7 @@
 
 .wp-switch-editor {
 	height: 18px;
-    font: 13px/18px Arial,Helvetica,sans-serif normal;
+	font: 13px/18px Arial,Helvetica,sans-serif normal;
 	margin: 5px 5px 0 0;
 	padding: 4px 5px 2px;
 	float: right;
@@ -1367,12 +1367,12 @@ html[dir="rtl"] .wp-switch-editor {
 	float: right;
 }
 
-/*
- * Based on:
- * jQuery UI CSS Framework @VERSION
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Theming/API
@@ -1380,78 +1380,249 @@ html[dir="rtl"] .wp-switch-editor {
 
 /* Layout helpers
 ----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+	z-index: 100;
+}
+
 
 /* Interaction Cues
 ----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
+.ui-state-disabled {
+	cursor: default !important;
+}
+
 
 /* Icons
 ----------------------------------*/
 
 /* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
 
 /* Misc visuals
 ----------------------------------*/
 
 /* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
 
-/*
- * jQuery UI Resizable
+
+/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Resizable#theming
  */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+	display: none;
+}
+.ui-resizable-n {
+	cursor: n-resize;
+	height: 7px;
+	width: 100%;
+	top: -5px;
+	left: 0;
+}
+.ui-resizable-s {
+	cursor: s-resize;
+	height: 7px;
+	width: 100%;
+	bottom: -5px;
+	left: 0;
+}
+.ui-resizable-e {
+	cursor: e-resize;
+	width: 7px;
+	right: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-w {
+	cursor: w-resize;
+	width: 7px;
+	left: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-se {
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+	right: 1px;
+	bottom: 1px;
+}
+.ui-resizable-sw {
+	cursor: sw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	bottom: -5px;
+}
+.ui-resizable-nw {
+	cursor: nw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	top: -5px;
+}
+.ui-resizable-ne {
+	cursor: ne-resize;
+	width: 9px;
+	height: 9px;
+	right: -5px;
+	top: -5px;
+}
 
-/*
- * jQuery UI Dialog
+/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Dialog#theming
  */
-.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
-.wp-dialog .ui-dialog-titlebar { position: relative; }
-.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
-.wp-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
+.ui-dialog {
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 21px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	margin-top: .5em;
+	padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+	margin: .5em .4em .5em 0;
+	cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
 
 /* WP jQuery Dialog Theme */
 .wp-dialog {
+	padding: 0;
+	z-index: 300002;
 	border: 1px solid #999;
 	-webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
 	box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+	background-color: #f5f5f5;
+	-webkit-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	border-top-right-radius: 4px;
 }
 
 .wp-dialog .ui-dialog-title {
@@ -1467,36 +1638,29 @@ html[dir="rtl"] .wp-switch-editor {
 	font-size: 11px;
 	line-height: 18px;
 	color: #e5e5e5;
-}
-
-.wp-dialog {
-	background-color: #fff;
-	-webkit-border-top-left-radius: 4px;
-	-webkit-border-top-right-radius: 4px;
-	border-top-left-radius: 4px;
-	border-top-right-radius: 4px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
 	-webkit-border-top-left-radius: 3px;
-	-webkit-border-top-right-radius: 3px;
 	border-top-left-radius: 3px;
+	-webkit-border-top-right-radius: 3px;
 	border-top-right-radius: 3px;
 }
 
+.wp-dialog .ui-dialog-content {
+	padding: 0;
+}
+
 .wp-dialog .ui-dialog-titlebar-close {
-	position: absolute;
+	cursor: pointer;
+	-webkit-appearance: none;
+	border: 0;
 	width: 29px;
 	height: 16px;
-	top: 2px;
+	top: 13px;
 	right: 6px;
 	background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
-	padding: 0;
 }
 
-.rtl .wp-dialog .ui-dialog-titlebar-close {
-	right: auto;
-	left: 6px;
+.wp-dialog .ui-dialog-titlebar-close .ui-button-text {
+	display: none;
 }
 
 .wp-dialog .ui-dialog-titlebar-close:hover,
@@ -1505,11 +1669,17 @@ html[dir="rtl"] .wp-switch-editor {
 }
 
 .ui-widget-overlay {
+	z-index: 300001;
 	background-color: #000;
 	opacity: 0.6;
 	filter: alpha(opacity=60);
 }
 
+.rtl .wp-dialog .ui-dialog-titlebar-close {
+	right: auto;
+	left: 6px;
+}
+
 /*
 RTL
 */
@@ -1678,12 +1848,14 @@ RTL
 }
 
 #wp-fullscreen-title {
-    font-size: 1.7em;
-    line-height: 100%;
-    outline: medium none;
-    padding: 6px 7px;
-    width: 100%;
-    margin-bottom: 30px;
+	font-size: 1.7em;
+	line-height: 100%;
+	outline: medium none;
+	padding: 6px 7px;
+	width: 100%;
+	margin-bottom: 30px;
+	-webkit-box-shadow: none;
+	box-shadow: none;
 }
 
 #wp-fullscreen-container {
@@ -1717,6 +1889,8 @@ RTL
 	overflow-y: hidden;
 	outline: none;
 	resize: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
 }
 
 #wp-fullscreen-tagline {
@@ -2113,4 +2287,3 @@ RTL
 		background-size: 19px 69px;
 	}
 }
-
diff --git a/wp-includes/css/editor.min.css b/wp-includes/css/editor.min.css
index 4edf0da66..a7c553043 100644
--- a/wp-includes/css/editor.min.css
+++ b/wp-includes/css/editor.min.css
@@ -1 +1,28 @@
-.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default}.wp_themeSkin table td{vertical-align:middle}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#555}.wp_themeSkin iframe{display:block}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff}.wp_themeSkin .mceToolbar{padding:1px}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0}.wp_themeSkin table.mceLayout{border:0}.wp_themeSkin .mceStatusbar{display:block;font-family:sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0}.wp_themeSkin .mceStatusbar *{color:#555}.wp_themeSkin .mceStatusbar div{float:left;padding:2px}.rtl .wp_themeSkin .mceStatusbar div{float:right}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline}.wp_themeSkin table.mceToolbar{margin:0 6px 2px}.wp_themeSkin table.mceToolbar :active,.wp_themeSkin table.mceToolbar :focus,.wp_themeSkin table.mceToolbar:focus,.wp_themeSkin span.mceSeparator:focus{outline:0}.wp_themeSkin #content_toolbar1{margin-top:2px}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.2;filter:alpha(opacity=20)}.wp_themeSkin .mceSeparator{display:none}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block}.wp_themeSkin .mceListBox .mceText{padding:1px 4px 1px 5px;width:70px;text-align:left;text-decoration:none;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;font-family:sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden}.wp_themeSkin .mceListBox{margin:1px;direction:ltr;background-color:#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)}.wp_themeSkin .mceListBox .mceOpen{width:12px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0}.wp_themeSkin .mceListBox .mceFirst a{border-style:solid;border-width:1px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url("../images/down_arrow.gif");background-position:3px 1px;background-repeat:no-repeat}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px}.wp_themeSkin select.mceListBox{font-family:sans-serif;font-size:12px;border-color:#b2b2b2;background-color:#fff}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px}.wp_themeSkin .mceSplitButton{display:block;direction:ltr}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px;border-right:0 none}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px}.wp_themeSkin .mceSplitButton a.mceOpen{width:11px;height:20px;background-position:0 2px;background-repeat:no-repeat;padding:1px 0}.wp_themeSkin .mceSplitButton span.mceOpen{display:none}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30)}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons.png?ver=20120720')}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#bbb}.wp_themeSkin .mceColorSplitMenu td{padding:2px}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd;direction:ltr}.wp_themeSkin .mceNoIcons span.mceIcon{width:0}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px}.wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center}.wp_themeSkin .mceMenu span.mceMenuLine{display:none}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray}.mceRtl .mceListBox .mceText{text-align:right;padding:0 4px 0 0}.mceRtl .mceMenuItem .mceText{text-align:right}.wp_themeSkin .mce_address span.mceText{font-style:italic}.wp_themeSkin .mce_pre span.mceText{font-family:monospace}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:17px}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:15px}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:14px}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:13px}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:12px}.wp_themeSkin span.mce_undo{background-position:-500px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0}.wp_themeSkin span.mce_redo{background-position:-480px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0}.wp_themeSkin span.mce_bullist{background-position:-40px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0}.wp_themeSkin span.mce_numlist{background-position:-60px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-60px 0}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0}.wp_themeSkin span.mce_charmap{background-position:-420px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0}.wp_themeSkin span.mce_bold{background-position:0 -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:0 0}.wp_themeSkin span.mce_italic{background-position:-20px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-20px 0}.wp_themeSkin span.mce_underline{background-position:-280px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 0}.wp_themeSkin span.mce_justifyleft{background-position:-100px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 0}.wp_themeSkin span.mce_justifyright{background-position:-140px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-140px 0}.wp_themeSkin span.mce_justifycenter{background-position:-120px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 0}.wp_themeSkin span.mce_justifyfull{background-position:-300px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 0}.wp_themeSkin span.mce_indent{background-position:-460px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-460px 0}.wp_themeSkin span.mce_outdent{background-position:-440px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 0}.wp_themeSkin span.mce_link{background-position:-160px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-160px 0}.wp_themeSkin span.mce_unlink{background-position:-180px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0}.wp_themeSkin span.mce_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-520px 0}.wp_themeSkin span.mce_removeformat{background-position:-380px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-380px 0}.wp_themeSkin span.mce_strikethrough{background-position:-540px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-320px -20px}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonSelected span.mce_forecolor{background-position:-320px 0}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_media{background-position:-400px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-400px 0}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0}.wp_themeSkin span.mce_spellchecker{background-position:-220px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonSelected span.mce_spellchecker{background-position:-220px 0}.wp_themeSkin span.mce_wp_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-520px 0}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0}.wp_themeSkin span.mce_wp_more{background-position:-200px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-200px 0}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px}.wp_themeSkin span.mce_anchor{background-position:-200px 0}.wp_themeSkin span.mce_sub{background-position:-600px 0}.wp_themeSkin span.mce_sup{background-position:-620px 0}.wp_themeSkin span.mce_newdocument{background-position:-520px 0}.wp_themeSkin span.mce_image{background-position:-380px 0}.wp_themeSkin span.mce_code{background-position:-260px 0}.wp_themeSkin span.mce_hr{background-position:-360px 0}.wp_themeSkin span.mce_visualaid{background-position:-660px 0}.wp_themeSkin span.mce_paste{background-position:-560px 0}.wp_themeSkin span.mce_copy{background-position:-700px 0}.wp_themeSkin span.mce_cut{background-position:-680px 0}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0}.wp_themeSkin span.mce_advhr{background-position:-0px -20px}.wp_themeSkin span.mce_ltr{background-position:-20px -20px}.wp_themeSkin span.mce_rtl{background-position:-40px -20px}.wp_themeSkin span.mce_emotions{background-position:-60px -20px}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px}.wp_themeSkin span.mce_iespell{background-position:-120px -20px}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px}.wp_themeSkin span.mce_absolute{background-position:-180px -20px}.wp_themeSkin span.mce_backward{background-position:-200px -20px}.wp_themeSkin span.mce_forward{background-position:-220px -20px}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px}.wp_themeSkin span.mce_selectall{background-position:-400px -20px}.wp_themeSkin span.mce_preview{background-position:-420px -20px}.wp_themeSkin span.mce_print{background-position:-440px -20px}.wp_themeSkin span.mce_cancel{background-position:-460px -20px}.wp_themeSkin span.mce_save{background-position:-480px -20px}.wp_themeSkin span.mce_replace{background-position:-500px -20px}.wp_themeSkin span.mce_search{background-position:-520px -20px}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px}.wp_themeSkin span.mce_table{background-position:-580px -20px}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px}.wp_themeSkin span.mce_col_after{background-position:-680px -20px}.wp_themeSkin span.mce_col_before{background-position:-700px -20px}.wp_themeSkin span.mce_row_after{background-position:-720px -20px}.wp_themeSkin span.mce_row_before{background-position:-740px -20px}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px}.wp_themeSkin span.mce_table_props{background-position:-980px -20px}.wp_themeSkin span.mce_row_props{background-position:-780px -20px}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px}.wp_themeSkin span.mce_template{background-position:-820px -20px}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px}.wp_themeSkin span.mce_abbr{background-position:-860px -20px}.wp_themeSkin span.mce_acronym{background-position:-880px -20px}.wp_themeSkin span.mce_attribs{background-position:-900px -20px}.wp_themeSkin span.mce_cite{background-position:-920px -20px}.wp_themeSkin span.mce_del{background-position:-940px -20px}.wp_themeSkin span.mce_ins{background-position:-960px -20px}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px}.wp_themeSkin span.mce_restoredraft{background-position:-20px -40px}.wp_themeSkin span.mce_visualblocks{background-position:-40px -40px}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px}.wp_themeSkin .mceListBox .mceText{border-right:0 none}.wp_themeSkin iframe{background:transparent}.wp_themeSkin .mceButton{border-color:transparent}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:transparent}.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin table.mceSplitButton:hover{border-color:#bbb;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#fff);background-image:-moz-linear-gradient(bottom,#e5e5e5,#fff);background-image:-o-linear-gradient(bottom,#e5e5e5,#fff);background-image:linear-gradient(to top,#e5e5e5,#fff)}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin .mceSplitButtonSelected table,.wp_themeSkin .mceSplitButtonSelected table:hover{outline:0;border-color:#999 #ccc #ccc #999;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6f6f6),to(#e3e3e3));background-image:-webkit-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-moz-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-o-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:linear-gradient(to top,#f6f6f6,#e3e3e3)}.wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#999 #ccc #ccc #999}.wp_themeSkin .mceButtonDisabled{border-color:transparent}.wp_themeSkin .mceListBox .mceOpen{border-left:0}.wp_themeSkin .mceListBoxEnabled:hover,.wp_themeSkin .mceListBoxEnabled:active,.wp_themeSkin .mceListBoxHover,.wp_themeSkin .mceListBoxHover:active,.wp_themeSkin .mceListBoxSelected{-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);border-color:#bbb}.wp_themeSkin .mceSplitButton .mceLast span.mceOpen .mceIconOnly{display:block}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:transparent}.wp_themeSkin .mceSplitButton:hover a{border-color:#bbb}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;border-left:0}.wp_themeSkin .mceSplitButtonActive td{-webkit-border-radius:3px;border-radius:3px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}#mceModalBlocker{background:#000}.wp-editor-wrap{position:relative}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;margin:1px 0 0;line-height:150%;border:0 none;outline:0;display:block;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.wp-editor-tools{height:30px;padding:0 10px 0 0}.rtl .wp-editor-tools{padding:0 0 0 10px}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #d1d1d1;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#f4f4f4));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-moz-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-o-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:linear-gradient(to top,#e5e5e5,#f4f4f4)}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999}html[dir="rtl"] .wp-switch-editor{float:left}.wp-switch-editor:active{background-color:#f1f1f1}.wp-switch-editor:hover{text-decoration:none!important}.js .tmce-active .wp-editor-area{color:white}.tmce-active .quicktags-toolbar{display:none}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #f4f4f4;background-color:#f4f4f4;color:#555}.wp-media-buttons .button{margin-right:5px}.rtl .wp-media-buttons .button{margin-right:0;margin-left:5px}.wp-media-buttons .insert-media{padding-left:.4em}.rtl .wp-media-buttons .insert-media{padding-left:10px;padding-right:.4em}.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:16px;height:16px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:url('../../wp-admin/images/media-button.png') no-repeat top left}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:29px}.quicktags-toolbar>div{padding:2px 4px 0}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.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:bold}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:155000}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc}#wp-link{background-color:#f5f5f5;line-height:1.4em;font-size:12px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type="text"]{-webkit-box-sizing:border-box}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px}#wp-link p.howto{margin:3px}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px}#wp-link .toggle-arrow-active{background-position:center left}#wp-link label input[type="text"]{width:360px;margin-top:5px}#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}#wp-link .link-search-field{float:left;width:220px}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper .spinner{display:none;vertical-align:text-bottom}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333}#wp-link li.selected{background:#ddd;color:#333}#wp-link li.selected .item-title{font-weight:bold}#wp-link .item-title{display:inline-block;width:80%}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0}#wp-link #search-results{display:none}#wp-link #search-panel{float:left;width:100%}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .river-waiting .spinner{margin:0 auto;display:block}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#fff;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.rtl .wp-dialog .ui-dialog-titlebar-close{right:auto;left:6px}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0}.rtl #wp-link #link-options label span,.rtl #wp-link #search-panel label span.search-label{text-align:left;padding-right:0;padding-left:5px}.rtl #wp-link #link-options label #url-field{direction:ltr}.rtl #wp-link .link-search-field,.rtl #wp-link .link-search-wrapper span{float:right}.rtl #wp-link .link-target{margin-right:87px;margin-left:0}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0}.rtl #wp-link #search-panel{float:right}.rtl #wp-link-cancel{float:right}.rtl #wp-link-update{float:left}.rtl #wp-link .toggle-arrow{background-position:top right}.rtl #wp-link .toggle-arrow-active{background-position:center right}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px}.rtl .mceListBoxMenu.mceNoIcons{direction:rtl}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block}.fullscreen-fader{z-index:200000}.fullscreen-active .fullscreen-fader{display:none}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;font-size:12px}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px}#wp-fullscreen-container{padding:4px 10px 50px}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:0;resize:none}#wp-fullscreen-tagline{color:#bbb;font-size:18px;float:right;padding-top:5px}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px}#wp-fullscreen-central-toolbar{margin:auto;padding:0}#wp-fullscreen-buttons>div{float:left}#wp-fullscreen-mode-bar{padding:1px 14px 0 0}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:linear-gradient(to top,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:linear-gradient(to bottom,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}#wp-fullscreen-buttons .active a{background:inherit}#wp-fullscreen-buttons .hidden{display:none}#wp-fullscreen-buttons .disabled{opacity:.5}.wp-html-mode #wp-fullscreen-buttons div{display:none}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block}#fullscreen-topbar.fullscreen-make-sticky{display:block!important}#wp-fullscreen-save img{vertical-align:middle}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none}#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button.png');background-position:2px 2px}.fullscreen-active #TB_overlay{z-index:150100}.fullscreen-active #TB_window{z-index:150102}#wp_mce_fullscreen_ifr{background:transparent}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc}#fullscreen-topbar{border-bottom-color:#dfdfdf;background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.fade-trigger{opacity:1}.rtl #wp-fullscreen-tagline{float:left}.rtl #fullscreen-topbar{left:auto;right:0}.rtl #wp-fullscreen-mode-bar,.rtl #wp-fullscreen-button-bar,.rtl #wp-fullscreen-close,.rtl #wp-fullscreen-count{float:right}.rtl #wp-fullscreen-save{float:left}.rtl #wp-fullscreen-save{padding:2px 5px 0 2px}.rtl #wp-fullscreen-buttons>div{float:right}.rtl #wp-fullscreen-mode-bar{padding:1px 0 0 14px}.rtl #wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px}.rtl #wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.rtl #wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.rtl #wp-fullscreen-save img,.rtl #wp-fullscreen-save span{padding-right:0;padding-left:4px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons-2x.png?ver=20120720');background-size:560px 40px}.wp-media-buttons .add_media span.wp-media-buttons-icon,#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button-2x.png');background-size:16px 16px}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow-2x.png') top left no-repeat;background-size:19px 69px}}
\ No newline at end of file
+.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default}.wp_themeSkin table td{vertical-align:middle}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#555}.wp_themeSkin iframe{display:block}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff}.wp_themeSkin .mceToolbar{padding:1px}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0}.wp_themeSkin table.mceLayout{border:0}.wp_themeSkin .mceStatusbar{display:block;font-family:sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0}.wp_themeSkin .mceStatusbar *{color:#555}.wp_themeSkin .mceStatusbar div{float:left;padding:2px}.rtl .wp_themeSkin .mceStatusbar div{float:right}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline}.wp_themeSkin table.mceToolbar{margin:0 6px 2px}.wp_themeSkin table.mceToolbar :active,.wp_themeSkin table.mceToolbar :focus,.wp_themeSkin table.mceToolbar:focus,.wp_themeSkin span.mceSeparator:focus{outline:0}.wp_themeSkin #content_toolbar1{margin-top:2px}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.2;filter:alpha(opacity=20)}.wp_themeSkin .mceSeparator{display:none}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block}.wp_themeSkin .mceListBox .mceText{padding:1px 4px 1px 5px;width:70px;text-align:left;text-decoration:none;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;font-family:sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden}.wp_themeSkin .mceListBox{margin:1px;direction:ltr;background-color:#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)}.wp_themeSkin .mceListBox .mceOpen{width:12px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0}.wp_themeSkin .mceListBox .mceFirst a{border-style:solid;border-width:1px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin .mceListBoxMenu .mce_formatPreview{line-height:normal}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url("../images/down_arrow.gif");background-position:3px 1px;background-repeat:no-repeat}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px}.wp_themeSkin select.mceListBox{font-family:sans-serif;font-size:12px;border-color:#b2b2b2;background-color:#fff}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px}.wp_themeSkin .mceSplitButton{display:block;direction:ltr}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px;border-right:0 none}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px}.wp_themeSkin .mceSplitButton a.mceOpen{width:11px;height:20px;background-position:0 2px;background-repeat:no-repeat;padding:1px 0}.wp_themeSkin .mceSplitButton span.mceOpen{display:none}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30)}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons.png?ver=20120720')}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#bbb}.wp_themeSkin .mceColorSplitMenu td{padding:2px}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd;direction:ltr}.wp_themeSkin .mceNoIcons span.mceIcon{width:0}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px}.wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center}.wp_themeSkin .mceMenu span.mceMenuLine{display:none}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray}.mceRtl .mceListBox .mceText{text-align:right;padding:0 4px 0 0}.mceRtl .mceMenuItem .mceText{text-align:right}.wp_themeSkin .mce_address span.mceText{font-style:italic}.wp_themeSkin .mce_pre span.mceText{font-family:monospace}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:18px}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:14px}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:12px}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:11px}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:10px}.wp_themeSkin span.mce_undo{background-position:-500px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0}.wp_themeSkin span.mce_redo{background-position:-480px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0}.wp_themeSkin span.mce_bullist{background-position:-40px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0}.wp_themeSkin span.mce_numlist{background-position:-60px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-60px 0}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0}.wp_themeSkin span.mce_charmap{background-position:-420px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0}.wp_themeSkin span.mce_bold{background-position:0 -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:0 0}.wp_themeSkin span.mce_italic{background-position:-20px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-20px 0}.wp_themeSkin span.mce_underline{background-position:-280px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 0}.wp_themeSkin span.mce_justifyleft{background-position:-100px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 0}.wp_themeSkin span.mce_justifyright{background-position:-140px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-140px 0}.wp_themeSkin span.mce_justifycenter{background-position:-120px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 0}.wp_themeSkin span.mce_justifyfull{background-position:-300px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 0}.wp_themeSkin span.mce_indent{background-position:-460px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-460px 0}.wp_themeSkin span.mce_outdent{background-position:-440px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 0}.wp_themeSkin span.mce_link{background-position:-160px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-160px 0}.wp_themeSkin span.mce_unlink{background-position:-180px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0}.wp_themeSkin span.mce_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-520px 0}.wp_themeSkin span.mce_removeformat{background-position:-380px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-380px 0}.wp_themeSkin span.mce_strikethrough{background-position:-540px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-320px -20px}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonSelected span.mce_forecolor{background-position:-320px 0}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_media{background-position:-400px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-400px 0}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0}.wp_themeSkin span.mce_spellchecker{background-position:-220px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonSelected span.mce_spellchecker{background-position:-220px 0}.wp_themeSkin span.mce_wp_help{background-position:-520px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-520px 0}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0}.wp_themeSkin span.mce_wp_more{background-position:-200px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-200px 0}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px}.wp_themeSkin span.mce_anchor{background-position:-200px 0}.wp_themeSkin span.mce_sub{background-position:-600px 0}.wp_themeSkin span.mce_sup{background-position:-620px 0}.wp_themeSkin span.mce_newdocument{background-position:-520px 0}.wp_themeSkin span.mce_image{background-position:-380px 0}.wp_themeSkin span.mce_code{background-position:-260px 0}.wp_themeSkin span.mce_hr{background-position:-360px 0}.wp_themeSkin span.mce_visualaid{background-position:-660px 0}.wp_themeSkin span.mce_paste{background-position:-560px 0}.wp_themeSkin span.mce_copy{background-position:-700px 0}.wp_themeSkin span.mce_cut{background-position:-680px 0}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0}.wp_themeSkin span.mce_advhr{background-position:-0px -20px}.wp_themeSkin span.mce_ltr{background-position:-20px -20px}.wp_themeSkin span.mce_rtl{background-position:-40px -20px}.wp_themeSkin span.mce_emotions{background-position:-60px -20px}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px}.wp_themeSkin span.mce_iespell{background-position:-120px -20px}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px}.wp_themeSkin span.mce_absolute{background-position:-180px -20px}.wp_themeSkin span.mce_backward{background-position:-200px -20px}.wp_themeSkin span.mce_forward{background-position:-220px -20px}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px}.wp_themeSkin span.mce_selectall{background-position:-400px -20px}.wp_themeSkin span.mce_preview{background-position:-420px -20px}.wp_themeSkin span.mce_print{background-position:-440px -20px}.wp_themeSkin span.mce_cancel{background-position:-460px -20px}.wp_themeSkin span.mce_save{background-position:-480px -20px}.wp_themeSkin span.mce_replace{background-position:-500px -20px}.wp_themeSkin span.mce_search{background-position:-520px -20px}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px}.wp_themeSkin span.mce_table{background-position:-580px -20px}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px}.wp_themeSkin span.mce_col_after{background-position:-680px -20px}.wp_themeSkin span.mce_col_before{background-position:-700px -20px}.wp_themeSkin span.mce_row_after{background-position:-720px -20px}.wp_themeSkin span.mce_row_before{background-position:-740px -20px}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px}.wp_themeSkin span.mce_table_props{background-position:-980px -20px}.wp_themeSkin span.mce_row_props{background-position:-780px -20px}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px}.wp_themeSkin span.mce_template{background-position:-820px -20px}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px}.wp_themeSkin span.mce_abbr{background-position:-860px -20px}.wp_themeSkin span.mce_acronym{background-position:-880px -20px}.wp_themeSkin span.mce_attribs{background-position:-900px -20px}.wp_themeSkin span.mce_cite{background-position:-920px -20px}.wp_themeSkin span.mce_del{background-position:-940px -20px}.wp_themeSkin span.mce_ins{background-position:-960px -20px}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px}.wp_themeSkin span.mce_restoredraft{background-position:-20px -40px}.wp_themeSkin span.mce_visualblocks{background-position:-40px -40px}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px}.wp_themeSkin .mceListBox .mceText{border-right:0 none}.wp_themeSkin iframe{background:transparent}.wp_themeSkin .mceButton{border-color:transparent}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:transparent}.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin table.mceSplitButton:hover{border-color:#bbb;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#fff);background-image:-moz-linear-gradient(bottom,#e5e5e5,#fff);background-image:-o-linear-gradient(bottom,#e5e5e5,#fff);background-image:linear-gradient(to top,#e5e5e5,#fff)}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin .mceSplitButtonSelected table,.wp_themeSkin .mceSplitButtonSelected table:hover{outline:0;border-color:#999 #ccc #ccc #999;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#f6f6f6),to(#e3e3e3));background-image:-webkit-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-moz-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:-o-linear-gradient(bottom,#f6f6f6,#e3e3e3);background-image:linear-gradient(to top,#f6f6f6,#e3e3e3)}.wp_themeSkin .mceSplitButtonSelected table a.mceOpen,.wp_themeSkin .mceSplitButtonSelected table a.mceAction{border-color:#999 #ccc #ccc #999}.wp_themeSkin .mceButtonDisabled{border-color:transparent}.wp_themeSkin .mceListBox .mceOpen{border-left:0}.wp_themeSkin .mceListBoxEnabled:hover,.wp_themeSkin .mceListBoxEnabled:active,.wp_themeSkin .mceListBoxHover,.wp_themeSkin .mceListBoxHover:active,.wp_themeSkin .mceListBoxSelected{-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.3);border-color:#bbb}.wp_themeSkin .mceSplitButton .mceLast span.mceOpen .mceIconOnly{display:block}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:transparent}.wp_themeSkin .mceSplitButton:hover a{border-color:#bbb}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;border-left:0}.wp_themeSkin .mceSplitButtonActive td{-webkit-border-radius:3px;border-radius:3px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}#mceModalBlocker{background:#000}.wp-editor-wrap{position:relative}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;margin:1px 0 0;line-height:150%;border:0 none;outline:0;display:block;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.wp-editor-tools{height:30px;padding:0 10px 0 0}.rtl .wp-editor-tools{padding:0 0 0 10px}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #d1d1d1;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e5e5e5),to(#f4f4f4));background-image:-webkit-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-moz-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:-o-linear-gradient(bottom,#e5e5e5,#f4f4f4);background-image:linear-gradient(to top,#e5e5e5,#f4f4f4)}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999}html[dir="rtl"] .wp-switch-editor{float:left}.wp-switch-editor:active{background-color:#f1f1f1}.wp-switch-editor:hover{text-decoration:none!important}.js .tmce-active .wp-editor-area{color:white}.tmce-active .quicktags-toolbar{display:none}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #f4f4f4;background-color:#f4f4f4;color:#555}.wp-media-buttons .button{margin-right:5px}.rtl .wp-media-buttons .button{margin-right:0;margin-left:5px}.wp-media-buttons .insert-media{padding-left:.4em}.rtl .wp-media-buttons .insert-media{padding-left:10px;padding-right:.4em}.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:16px;height:16px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:url('../../wp-admin/images/media-button.png') no-repeat top left}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:29px}.quicktags-toolbar>div{padding:2px 4px 0}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.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:bold}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:155000}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc}#wp-link{background-color:#f5f5f5;line-height:1.4em;font-size:12px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type="text"]{-webkit-box-sizing:border-box}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px}#wp-link p.howto{margin:3px}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px}#wp-link .toggle-arrow-active{background-position:center left}#wp-link label input[type="text"]{width:360px;margin-top:5px}#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}#wp-link .link-search-field{float:left;width:220px}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper .spinner{display:none;vertical-align:text-bottom}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333}#wp-link li.selected{background:#ddd;color:#333}#wp-link li.selected .item-title{font-weight:bold}#wp-link .item-title{display:inline-block;width:80%}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0}#wp-link #search-results{display:none}#wp-link #search-panel{float:left;width:100%}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .river-waiting .spinner{margin:0 auto;display:block}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{padding:0;z-index:300002;border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3);background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-content{padding:0}.wp-dialog .ui-dialog-titlebar-close{cursor:pointer;-webkit-appearance:none;border:0;width:29px;height:16px;top:13px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px}.wp-dialog .ui-dialog-titlebar-close .ui-button-text{display:none}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{z-index:300001;background-color:#000;opacity:.6;filter:alpha(opacity=60)}.rtl .wp-dialog .ui-dialog-titlebar-close{right:auto;left:6px}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0}.rtl #wp-link #link-options label span,.rtl #wp-link #search-panel label span.search-label{text-align:left;padding-right:0;padding-left:5px}.rtl #wp-link #link-options label #url-field{direction:ltr}.rtl #wp-link .link-search-field,.rtl #wp-link .link-search-wrapper span{float:right}.rtl #wp-link .link-target{margin-right:87px;margin-left:0}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0}.rtl #wp-link #search-panel{float:right}.rtl #wp-link-cancel{float:right}.rtl #wp-link-update{float:left}.rtl #wp-link .toggle-arrow{background-position:top right}.rtl #wp-link .toggle-arrow-active{background-position:center right}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px}.rtl .mceListBoxMenu.mceNoIcons{direction:rtl}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block}.fullscreen-fader{z-index:200000}.fullscreen-active .fullscreen-fader{display:none}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;font-size:12px}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px;-webkit-box-shadow:none;box-shadow:none}#wp-fullscreen-container{padding:4px 10px 50px}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:0;resize:none;-webkit-box-shadow:none;box-shadow:none}#wp-fullscreen-tagline{color:#bbb;font-size:18px;float:right;padding-top:5px}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px}#wp-fullscreen-central-toolbar{margin:auto;padding:0}#wp-fullscreen-buttons>div{float:left}#wp-fullscreen-mode-bar{padding:1px 14px 0 0}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background:#f4f4f4;background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:linear-gradient(to top,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background:#eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#e4e4e4),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-moz-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:-o-linear-gradient(top,#e4e4e4,#f9f9f9);background-image:linear-gradient(to bottom,#e4e4e4,#f9f9f9)}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}#wp-fullscreen-buttons .active a{background:inherit}#wp-fullscreen-buttons .hidden{display:none}#wp-fullscreen-buttons .disabled{opacity:.5}.wp-html-mode #wp-fullscreen-buttons div{display:none}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block}#fullscreen-topbar.fullscreen-make-sticky{display:block!important}#wp-fullscreen-save img{vertical-align:middle}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none}#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button.png');background-position:2px 2px}.fullscreen-active #TB_overlay{z-index:150100}.fullscreen-active #TB_window{z-index:150102}#wp_mce_fullscreen_ifr{background:transparent}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc}#fullscreen-topbar{border-bottom-color:#dfdfdf;background:#f1f1f1;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.fade-trigger{opacity:1}.rtl #wp-fullscreen-tagline{float:left}.rtl #fullscreen-topbar{left:auto;right:0}.rtl #wp-fullscreen-mode-bar,.rtl #wp-fullscreen-button-bar,.rtl #wp-fullscreen-close,.rtl #wp-fullscreen-count{float:right}.rtl #wp-fullscreen-save{float:left}.rtl #wp-fullscreen-save{padding:2px 5px 0 2px}.rtl #wp-fullscreen-buttons>div{float:right}.rtl #wp-fullscreen-mode-bar{padding:1px 0 0 14px}.rtl #wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px}.rtl #wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.rtl #wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.rtl #wp-fullscreen-save img,.rtl #wp-fullscreen-save span{padding-right:0;padding-left:4px}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url('../images/wpicons-2x.png?ver=20120720');background-size:560px 40px}.wp-media-buttons .add_media span.wp-media-buttons-icon,#wp-fullscreen-buttons #wp_fs_image span.mce_image{background-image:url('../../wp-admin/images/media-button-2x.png');background-size:16px 16px}.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin table.mceListBoxEnabled .mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin .mceSplitButtonActive a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen{background-image:url('../images/down_arrow-2x.gif');background-size:10px 20px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow-2x.png') top left no-repeat;background-size:19px 69px}}
\ No newline at end of file
diff --git a/wp-includes/css/jquery-ui-dialog.css b/wp-includes/css/jquery-ui-dialog.css
index a29e4f651..9c75fbdfc 100644
--- a/wp-includes/css/jquery-ui-dialog.css
+++ b/wp-includes/css/jquery-ui-dialog.css
@@ -1,8 +1,9 @@
-/*
- * jQuery UI CSS Framework @VERSION
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Theming/API
@@ -10,81 +11,249 @@
 
 /* Layout helpers
 ----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+	z-index: 100;
+}
 
 
 /* Interaction Cues
 ----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
+.ui-state-disabled {
+	cursor: default !important;
+}
 
 
 /* Icons
 ----------------------------------*/
 
 /* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
 
 
 /* Misc visuals
 ----------------------------------*/
 
 /* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
 
-/*
- * jQuery UI Resizable
+
+/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Resizable#theming
  */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
-
-/*
- * jQuery UI Dialog
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+	display: none;
+}
+.ui-resizable-n {
+	cursor: n-resize;
+	height: 7px;
+	width: 100%;
+	top: -5px;
+	left: 0;
+}
+.ui-resizable-s {
+	cursor: s-resize;
+	height: 7px;
+	width: 100%;
+	bottom: -5px;
+	left: 0;
+}
+.ui-resizable-e {
+	cursor: e-resize;
+	width: 7px;
+	right: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-w {
+	cursor: w-resize;
+	width: 7px;
+	left: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-se {
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+	right: 1px;
+	bottom: 1px;
+}
+.ui-resizable-sw {
+	cursor: sw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	bottom: -5px;
+}
+.ui-resizable-nw {
+	cursor: nw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	top: -5px;
+}
+.ui-resizable-ne {
+	cursor: ne-resize;
+	width: 9px;
+	height: 9px;
+	right: -5px;
+	top: -5px;
+}
+
+/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
  *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
  * http://jquery.org/license
  *
  * http://docs.jquery.com/UI/Dialog#theming
  */
-.wp-dialog { position: absolute; width: 300px; overflow: hidden; }
-.wp-dialog .ui-dialog-titlebar { position: relative; }
-.wp-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.wp-dialog .ui-dialog-content { position: relative; border: 0; padding: 0; background: none; overflow: auto; zoom: 1; }
-.wp-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.wp-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
+.ui-dialog {
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 21px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	margin-top: .5em;
+	padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+	margin: .5em .4em .5em 0;
+	cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
 
 /* WP jQuery Dialog Theme */
 .wp-dialog {
+	padding: 0;
+	z-index: 300002;
 	border: 1px solid #999;
 	-webkit-box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
 	box-shadow: 0px 0px 16px rgba( 0,0,0,0.3 );
+	background-color: #f5f5f5;
+	-webkit-border-top-left-radius: 4px;
+	border-top-left-radius: 4px;
+	-webkit-border-top-right-radius: 4px;
+	border-top-right-radius: 4px;
 }
 
 .wp-dialog .ui-dialog-title {
@@ -100,31 +269,29 @@
 	font-size: 11px;
 	line-height: 18px;
 	color: #e5e5e5;
-}
-
-.wp-dialog {
-	background-color: #f5f5f5;
-	-webkit-border-top-left-radius: 4px;
-	border-top-left-radius: 4px;
-	-webkit-border-top-right-radius: 4px;
-	border-top-right-radius: 4px;
-}
-
-.wp-dialog .ui-dialog-titlebar {
 	-webkit-border-top-left-radius: 3px;
 	border-top-left-radius: 3px;
 	-webkit-border-top-right-radius: 3px;
 	border-top-right-radius: 3px;
 }
 
+.wp-dialog .ui-dialog-content {
+	padding: 0;
+}
+
 .wp-dialog .ui-dialog-titlebar-close {
-	position: absolute;
+	cursor: pointer;
+	-webkit-appearance: none;
+	border: 0;
 	width: 29px;
 	height: 16px;
-	top: 2px;
+	top: 13px;
 	right: 6px;
 	background: url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;
-	padding: 0;
+}
+
+.wp-dialog .ui-dialog-titlebar-close .ui-button-text {
+	display: none;
 }
 
 .wp-dialog .ui-dialog-titlebar-close:hover,
@@ -133,6 +300,7 @@
 }
 
 .ui-widget-overlay {
+	z-index: 300001;
 	background-color: #000;
 	opacity: 0.6;
 	filter: alpha(opacity=60);
diff --git a/wp-includes/css/jquery-ui-dialog.min.css b/wp-includes/css/jquery-ui-dialog.min.css
index 1e3c78f53..9a9d48e39 100644
--- a/wp-includes/css/jquery-ui-dialog.min.css
+++ b/wp-includes/css/jquery-ui-dialog.min.css
@@ -1 +1,28 @@
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}
\ No newline at end of file
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{padding:0;z-index:300002;border:1px solid #999;-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3);background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-content{padding:0}.wp-dialog .ui-dialog-titlebar-close{cursor:pointer;-webkit-appearance:none;border:0;width:29px;height:16px;top:13px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px}.wp-dialog .ui-dialog-titlebar-close .ui-button-text{display:none}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{z-index:300001;background-color:#000;opacity:.6;filter:alpha(opacity=60)}
\ No newline at end of file
diff --git a/wp-includes/css/media-views-rtl.css b/wp-includes/css/media-views-rtl.css
index 28c78b267..f260bb231 100644
--- a/wp-includes/css/media-views-rtl.css
+++ b/wp-includes/css/media-views-rtl.css
@@ -45,6 +45,10 @@
 	float: right;
 }
 
+.media-sidebar .setting .link-to-custom {
+	direction: ltr;
+}
+
 .media-sidebar .setting span {
 	margin-right: 0;
 	margin-left: 4%;
@@ -282,6 +286,11 @@
 	float: right;
 }
 
+.media-frame .embed-url input,
+.media-frame .link-to-custom {
+	direction: ltr;
+}
+
 /**
  * Responsive layout
  */
diff --git a/wp-includes/css/media-views-rtl.min.css b/wp-includes/css/media-views-rtl.min.css
index 5b98dc219..2636945df 100644
--- a/wp-includes/css/media-views-rtl.min.css
+++ b/wp-includes/css/media-views-rtl.min.css
@@ -1 +1 @@
-.media-modal-close{right:auto;left:7px}.media-toolbar-primary{float:left}.media-toolbar-secondary{float:right}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:0;margin-right:10px;float:right}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:0;margin-left:10px;float:right}.media-sidebar{right:auto;left:0;border-left:0;border-right:1px solid #dfdfdf}.media-sidebar .setting{float:right}.media-sidebar .setting span{margin-right:0;margin-left:4%}.media-sidebar .setting span,.compat-item label span{float:right;text-align:left}.media-sidebar .setting input,.media-sidebar .setting textarea{float:left}.compat-item{float:right}.compat-item .label{margin-right:0;margin-left:4%;float:right;text-align:left}.compat-item .field{float:left;padding-right:0;padding-left:1px}.media-menu{border-right:0;border-left:1px solid #d9d9d9;box-shadow:inset 6px 0 6px -6px rgba(0,0,0,0.2)}.media-router>a{float:right;border-right:0;border-left:1px solid #dfdfdf}.media-router>a:last-child{border-left:0}.media-frame-menu{left:auto;right:0}.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:200px}.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-toolbar,.media-frame.hide-menu .media-frame-content{right:0}.media-frame.hide-menu .media-frame-menu{left:auto;right:-200px}.media-frame select.attachment-filters{margin-right:0;margin-left:10px}.media-toolbar-secondary .search{margin-right:0;margin-left:16px}.attachments{padding-right:0;padding-left:16px}.attachment{float:right}.attachment .thumbnail{left:auto;right:0}.attachment .close{right:auto;left:5px}.attachment .check{right:auto;left:-7px}.attachments-browser .media-toolbar{right:0;left:300px}.attachments-browser .attachments,.attachments-browser .uploader-inline{right:0;left:300px}.attachment-preview .media-progress-bar{left:auto;right:15%}.media-sidebar .media-uploader-status .upload-dismiss-errors{right:auto;left:0}.upload-errors .upload-error-label{margin-right:0;margin-left:8px;float:right;margin-top:-3px}.media-selection{right:0;left:350px;padding:0 16px 0 0}.media-selection .selection-info{margin-right:0;margin-left:10px}.media-selection .selection-info a{float:right;border-right:0;border-left:1px solid #dfdfdf;margin:1px -8px 1px 8px}.media-selection .selection-info a:last-child{border-right:1px;border-left:0;margin-left:0;margin-right:-8px}.media-selection:after{right:auto;left:0;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:-moz-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-o-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))}.attachment-info .thumbnail{float:right;margin-right:0;margin-left:10px}.attachment-info .details{float:right}.attachment-display-settings{float:right}.embed-url span{display:block;padding:4px 2px 6px 0}.media-embed .thumbnail{float:right}.media-embed .setting{float:right}@media only screen and (max-width:900px){.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:140px}.attachments-browser .attachments,.attachments-browser .uploader-inline,.attachments-browser .media-toolbar{right:0;left:180px}}
\ No newline at end of file
+.media-modal-close{right:auto;left:7px}.media-toolbar-primary{float:left}.media-toolbar-secondary{float:right}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:0;margin-right:10px;float:right}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:0;margin-left:10px;float:right}.media-sidebar{right:auto;left:0;border-left:0;border-right:1px solid #dfdfdf}.media-sidebar .setting{float:right}.media-sidebar .setting .link-to-custom{direction:ltr}.media-sidebar .setting span{margin-right:0;margin-left:4%}.media-sidebar .setting span,.compat-item label span{float:right;text-align:left}.media-sidebar .setting input,.media-sidebar .setting textarea{float:left}.compat-item{float:right}.compat-item .label{margin-right:0;margin-left:4%;float:right;text-align:left}.compat-item .field{float:left;padding-right:0;padding-left:1px}.media-menu{border-right:0;border-left:1px solid #d9d9d9;box-shadow:inset 6px 0 6px -6px rgba(0,0,0,0.2)}.media-router>a{float:right;border-right:0;border-left:1px solid #dfdfdf}.media-router>a:last-child{border-left:0}.media-frame-menu{left:auto;right:0}.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:200px}.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-toolbar,.media-frame.hide-menu .media-frame-content{right:0}.media-frame.hide-menu .media-frame-menu{left:auto;right:-200px}.media-frame select.attachment-filters{margin-right:0;margin-left:10px}.media-toolbar-secondary .search{margin-right:0;margin-left:16px}.attachments{padding-right:0;padding-left:16px}.attachment{float:right}.attachment .thumbnail{left:auto;right:0}.attachment .close{right:auto;left:5px}.attachment .check{right:auto;left:-7px}.attachments-browser .media-toolbar{right:0;left:300px}.attachments-browser .attachments,.attachments-browser .uploader-inline{right:0;left:300px}.attachment-preview .media-progress-bar{left:auto;right:15%}.media-sidebar .media-uploader-status .upload-dismiss-errors{right:auto;left:0}.upload-errors .upload-error-label{margin-right:0;margin-left:8px;float:right;margin-top:-3px}.media-selection{right:0;left:350px;padding:0 16px 0 0}.media-selection .selection-info{margin-right:0;margin-left:10px}.media-selection .selection-info a{float:right;border-right:0;border-left:1px solid #dfdfdf;margin:1px -8px 1px 8px}.media-selection .selection-info a:last-child{border-right:1px;border-left:0;margin-left:0;margin-right:-8px}.media-selection:after{right:auto;left:0;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:-moz-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:-o-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))}.attachment-info .thumbnail{float:right;margin-right:0;margin-left:10px}.attachment-info .details{float:right}.attachment-display-settings{float:right}.embed-url span{display:block;padding:4px 2px 6px 0}.media-embed .thumbnail{float:right}.media-embed .setting{float:right}.media-frame .embed-url input,.media-frame .link-to-custom{direction:ltr}@media only screen and (max-width:900px){.media-frame-title,.media-frame-router,.media-frame-content,.media-frame-toolbar{left:0;right:140px}.attachments-browser .attachments,.attachments-browser .uploader-inline,.attachments-browser .media-toolbar{right:0;left:180px}}
\ No newline at end of file
diff --git a/wp-includes/css/wp-auth-check.css b/wp-includes/css/wp-auth-check.css
new file mode 100644
index 000000000..f51017b59
--- /dev/null
+++ b/wp-includes/css/wp-auth-check.css
@@ -0,0 +1,94 @@
+/*------------------------------------------------------------------------------
+ Interim login dialog
+------------------------------------------------------------------------------*/
+
+#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: 0.5;
+	filter: alpha(opacity=50);
+	z-index: 1000000;
+}
+
+#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: #fbfbfb;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	z-index: 1000001;
+}
+
+#wp-auth-check-wrap.fallback #wp-auth-check {
+	max-height: 180px;
+	overflow: auto;
+}
+
+#wp-auth-check-wrap #wp-auth-check-form {
+	background: url(../images/wpspin-2x.gif) no-repeat center center;
+	background-size: 16px 16px;
+	height: 100%;
+}
+
+#wp-auth-check-wrap #wp-auth-check-form iframe {
+	height: 100%;
+	width: 100%;
+	overflow: auto;
+}
+
+#wp-auth-check-wrap .wp-auth-check-close {
+	position: absolute;
+	top: 8px;
+	right: 8px;
+	height: 14px;
+	width: 14px;
+	cursor: pointer;
+	background-image: url(../images/uploader-icons.png);
+	background-repeat: no-repeat;
+	background-position: -100px 0;
+}
+
+#wp-auth-check-wrap .wp-auth-check-close:focus {
+	outline: 1px dotted #888;
+}
+
+#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-fallback,
+#wp-auth-check-wrap.fallback .wp-auth-check-close {
+	display: block;
+}
+
+@media print,
+  (-o-min-device-pixel-ratio: 5/4),
+  (-webkit-min-device-pixel-ratio: 1.25),
+  (min-resolution: 120dpi) {
+	#wp-auth-check-wrap .wp-auth-check-close {
+		background-image: url(../images/uploader-icons-2x.png);
+  		background-size: 134px 15px;
+	}
+}
diff --git a/wp-includes/css/wp-auth-check.min.css b/wp-includes/css/wp-auth-check.min.css
new file mode 100644
index 000000000..734525cd3
--- /dev/null
+++ b/wp-includes/css/wp-auth-check.min.css
@@ -0,0 +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:.5;filter:alpha(opacity=50);z-index:1000000}#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:#fbfbfb;-webkit-border-radius:3px;border-radius:3px;z-index:1000001}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{background:url(../images/wpspin-2x.gif) no-repeat center center;background-size:16px 16px;height:100%}#wp-auth-check-wrap #wp-auth-check-form iframe{height:100%;width:100%;overflow:auto}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;right:8px;height:14px;width:14px;cursor:pointer;background-image:url(../images/uploader-icons.png);background-repeat:no-repeat;background-position:-100px 0}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:1px dotted #888}#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-fallback,#wp-auth-check-wrap.fallback .wp-auth-check-close{display:block}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wp-auth-check-wrap .wp-auth-check-close{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}}
\ No newline at end of file
diff --git a/wp-includes/default-constants.php b/wp-includes/default-constants.php
index bc537a5e0..358c1018f 100644
--- a/wp-includes/default-constants.php
+++ b/wp-includes/default-constants.php
@@ -12,7 +12,7 @@
  *
  * @since 3.0.0
  */
-function wp_initial_constants( ) {
+function wp_initial_constants() {
 	global $blog_id;
 
 	// set memory limits
@@ -75,11 +75,11 @@ function wp_initial_constants( ) {
 
 	// Constants for expressing human-readable intervals
 	// in their respective number of seconds.
- 	define( 'MINUTE_IN_SECONDS', 60 );
- 	define( 'HOUR_IN_SECONDS',   60 * MINUTE_IN_SECONDS );
- 	define( 'DAY_IN_SECONDS',    24 * HOUR_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( 'YEAR_IN_SECONDS',  365 * DAY_IN_SECONDS    );
+	define( 'YEAR_IN_SECONDS',  365 * DAY_IN_SECONDS    );
 }
 
 /**
@@ -89,7 +89,7 @@ function wp_initial_constants( ) {
  *
  * @since 3.0.0
  */
-function wp_plugin_directory_constants( ) {
+function wp_plugin_directory_constants() {
 	if ( !defined('WP_CONTENT_URL') )
 		define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); // full url - WP_CONTENT_DIR is defined further up
 
@@ -150,7 +150,7 @@ function wp_plugin_directory_constants( ) {
  * Defines constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies().
  * @since 3.0.0
  */
-function wp_cookie_constants( ) {
+function wp_cookie_constants() {
 	/**
 	 * Used to guarantee unique hash cookies
 	 * @since 1.5
@@ -235,7 +235,7 @@ function wp_cookie_constants( ) {
  *
  * @since 3.0.0
  */
-function wp_ssl_constants( ) {
+function wp_ssl_constants() {
 	/**
 	 * @since 2.6.0
 	 */
@@ -256,7 +256,7 @@ function wp_ssl_constants( ) {
  *
  * @since 3.0.0
  */
-function wp_functionality_constants( ) {
+function wp_functionality_constants() {
 	/**
 	 * @since 2.5.0
 	 */
@@ -284,7 +284,7 @@ function wp_functionality_constants( ) {
  *
  * @since 3.0.0
  */
-function wp_templating_constants( ) {
+function wp_templating_constants() {
 	/**
 	 * Filesystem path to the current active template directory
 	 * @since 1.5.0
@@ -304,6 +304,6 @@ function wp_templating_constants( ) {
 	 * @since 3.0.0
 	 */
 	if ( !defined('WP_DEFAULT_THEME') )
-		define( 'WP_DEFAULT_THEME', 'twentytwelve' );
+		define( 'WP_DEFAULT_THEME', 'twentythirteen' );
 
 }
diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php
index cc6e07fa9..89b397692 100644
--- a/wp-includes/default-filters.php
+++ b/wp-includes/default-filters.php
@@ -175,6 +175,7 @@ add_filter( 'the_author',         'ent2ncr',      8 );
 // Misc filters
 add_filter( 'option_ping_sites',        'privacy_ping_filter'                 );
 add_filter( 'option_blog_charset',      '_wp_specialchars'                    ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop
+add_filter( 'option_blog_charset',      '_canonical_charset'                  );
 add_filter( 'option_home',              '_config_wp_home'                     );
 add_filter( 'option_siteurl',           '_config_wp_siteurl'                  );
 add_filter( 'tiny_mce_before_init',     '_mce_set_direction'                  );
@@ -195,6 +196,8 @@ add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
 add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri'            );
 add_filter( 'xmlrpc_pingback_error',    'xmlrpc_pingback_error'               );
 
+add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
+
 // Actions
 add_action( 'wp_head',             'wp_enqueue_scripts',              1     );
 add_action( 'wp_head',             'feed_links',                      2     );
@@ -249,7 +252,7 @@ add_action( 'init',                       'smilies_init',
 add_action( 'plugins_loaded',             'wp_maybe_load_widgets',                    0    );
 add_action( 'plugins_loaded',             'wp_maybe_load_embeds',                     0    );
 add_action( 'shutdown',                   'wp_ob_end_flush_all',                      1    );
-add_action( 'pre_post_update',            'wp_save_post_revision'                          );
+add_action( 'post_updated',               'wp_save_post_revision',                   10, 1 );
 add_action( 'publish_post',               '_publish_post_hook',                       5, 1 );
 add_action( 'transition_post_status',     '_transition_post_status',                  5, 3 );
 add_action( 'transition_post_status',     '_update_term_count_on_transition_post_status', 10, 3 );
@@ -290,4 +293,12 @@ add_filter( 'default_option_link_manager_enabled', '__return_true' );
 // This option no longer exists; tell plugins we always support auto-embedding.
 add_filter( 'default_option_embed_autourls', '__return_true' );
 
+// Default settings for heartbeat
+add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' );
+
+// Check if the user is logged out
+add_action( 'admin_enqueue_scripts',     'wp_auth_check_load'   );
+add_filter( 'heartbeat_received',        'wp_auth_check', 10, 2 );
+add_filter( 'heartbeat_nopriv_received', 'wp_auth_check', 10, 2 );
+
 unset($filter, $action);
diff --git a/wp-includes/default-widgets.php b/wp-includes/default-widgets.php
index bcbae03de..09d5811f1 100644
--- a/wp-includes/default-widgets.php
+++ b/wp-includes/default-widgets.php
@@ -315,10 +315,11 @@ class WP_Widget_Meta extends WP_Widget {
 			<li><?php wp_loginout(); ?></li>
 			<li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
 			<li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
-			<li><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>"><?php
-			/* translators: meta widget link text */
-			_e( 'WordPress.org' );
-			?></a></li>
+			<?php echo apply_filters( 'widget_meta_poweredby', sprintf( '<li><a href="%s" title="%s">%s</a></li>',
+				esc_url( __( 'http://wordpress.org/' ) ),
+				esc_attr__( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ),
+				_x( 'WordPress.org', 'meta widget link text' )
+			) ); ?>
 			<?php wp_meta(); ?>
 			</ul>
 <?php
@@ -558,8 +559,10 @@ class WP_Widget_Recent_Posts extends WP_Widget {
 		ob_start();
 		extract($args);
 
-		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base);
-		if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
+		$title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' );
+		$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+		$number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 10;
+		if ( ! $number )
  			$number = 10;
 		$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
 
@@ -593,7 +596,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
 		$instance = $old_instance;
 		$instance['title'] = strip_tags($new_instance['title']);
 		$instance['number'] = (int) $new_instance['number'];
-		$instance['show_date'] = (bool) $new_instance['show_date'];
+		$instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false;
 		$this->flush_widget_cache();
 
 		$alloptions = wp_cache_get( 'alloptions', 'options' );
@@ -674,9 +677,11 @@ class WP_Widget_Recent_Comments extends WP_Widget {
 
  		extract($args, EXTR_SKIP);
  		$output = '';
-		$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Recent Comments' ) : $instance['title'], $instance, $this->id_base );
 
-		if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
+		$title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments' );
+		$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+		$number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
+		if ( ! $number )
  			$number = 5;
 
 		$comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) );
@@ -716,14 +721,14 @@ class WP_Widget_Recent_Comments extends WP_Widget {
 	}
 
 	function form( $instance ) {
-		$title = isset($instance['title']) ? esc_attr($instance['title']) : '';
-		$number = isset($instance['number']) ? absint($instance['number']) : 5;
+		$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( '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>
+		<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
 	}
 }
@@ -861,18 +866,18 @@ function wp_widget_rss_output( $rss, $args = array() ) {
 			$title = __('Untitled');
 
 		$desc = str_replace( array("\n", "\r"), ' ', esc_attr( strip_tags( @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option('blog_charset') ) ) ) );
-		$desc = wp_html_excerpt( $desc, 360 );
+		$excerpt = wp_html_excerpt( $desc, 360 );
 
 		// Append ellipsis. Change existing [...] to [&hellip;].
-		if ( '[...]' == substr( $desc, -5 ) )
-			$desc = substr( $desc, 0, -5 ) . '[&hellip;]';
-		elseif ( '[&hellip;]' != substr( $desc, -10 ) )
-			$desc .= ' [&hellip;]';
+		if ( '[...]' == substr( $excerpt, -5 ) )
+			$excerpt = substr( $excerpt, 0, -5 ) . '[&hellip;]';
+		elseif ( '[&hellip;]' != substr( $excerpt, -10 ) && $desc != $excerpt )
+			$excerpt .= ' [&hellip;]';
 
-		$desc = esc_html( $desc );
+		$excerpt = esc_html( $excerpt );
 
 		if ( $show_summary ) {
-			$summary = "<div class='rssSummary'>$desc</div>";
+			$summary = "<div class='rssSummary'>$excerpt</div>";
 		} else {
 			$summary = '';
 		}
diff --git a/wp-includes/deprecated.php b/wp-includes/deprecated.php
index 655316a0a..d86709a74 100644
--- a/wp-includes/deprecated.php
+++ b/wp-includes/deprecated.php
@@ -394,7 +394,7 @@ function user_can_edit_user($user_id, $other_user) {
  * @param string $cat_name Optional. The category name to use. If no match is found uses all.
  * @param string $before Optional. The html to output before the link.
  * @param string $after Optional. The html to output after the link.
- * @param string $between Optional. The html to output between the link/image and it's description. Not used if no image or $show_images is true.
+ * @param string $between Optional. The html to output between the link/image and its description. Not used if no image or $show_images is true.
  * @param bool $show_images Optional. Whether to show images (if defined).
  * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', 'description' or 'rating'. Or maybe owner.
  *		If you start the name with an underscore the order will be reversed. You can also specify 'rand' as the order which will return links in a
@@ -547,7 +547,7 @@ function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) {
  * @param string $cat_name The category name to use. If no match is found uses all
  * @param string $before The html to output before the link
  * @param string $after The html to output after the link
- * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images is true
+ * @param string $between The html to output between the link/image and its description. Not used if no image or show_images is true
  * @param bool $show_images Whether to show images (if defined).
  * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url',
  *		'description', or 'rating'. Or maybe owner. If you start the name with an
@@ -575,7 +575,7 @@ function get_linksbyname_withrating($cat_name = "noname", $before = '', $after =
  * @param int $category The category to use. If no category supplied uses all
  * @param string $before The html to output before the link
  * @param string $after The html to output after the link
- * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images == true
+ * @param string $between The html to output between the link/image and its description. Not used if no image or show_images == true
  * @param bool $show_images Whether to show images (if defined).
  * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url',
  *		'description', or 'rating'. Or maybe owner. If you start the name with an
@@ -794,12 +794,12 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
  * @deprecated Use get_author_posts_url()
  * @see get_author_posts_url()
  *
- * @param bool $echo Optional.
- * @param int $author_id Required.
+ * @param bool $echo
+ * @param int $author_id
  * @param string $author_nicename Optional.
  * @return string|null
  */
-function get_author_link($echo = false, $author_id, $author_nicename = '') {
+function get_author_link($echo, $author_id, $author_nicename = '') {
 	_deprecated_function( __FUNCTION__, '2.1', 'get_author_posts_url()' );
 
 	$link = get_author_posts_url($author_id, $author_nicename);
@@ -1087,18 +1087,6 @@ function get_links_list($order = 'name') {
  */
 function links_popup_script($text = 'Links', $width=400, $height=400, $file='links.all.php', $count = true) {
 	_deprecated_function( __FUNCTION__, '2.1' );
-
-	if ( $count )
-		$counts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links");
-
-	$javascript = "<a href=\"#\" onclick=\"javascript:window.open('$file?popup=1', '_blank', 'width=$width,height=$height,scrollbars=yes,status=no'); return false\">";
-	$javascript .= $text;
-
-	if ( $count )
-		$javascript .= " ($counts)";
-
-	$javascript .= "</a>\n\n";
-		echo $javascript;
 }
 
 /**
@@ -1691,8 +1679,6 @@ function the_author_ID() {
  * @subpackage Feed
  * @since 0.71
  * @uses apply_filters() Calls 'the_content_rss' on the content before processing.
- * @see get_the_content() For the $more_link_text, $stripteaser, and $more_file
- *		parameters.
  *
  * @deprecated 2.9.0
  * @deprecated Use the_content_feed()
@@ -1706,7 +1692,7 @@ function the_author_ID() {
  */
 function the_content_rss($more_link_text='(more...)', $stripteaser=0, $more_file='', $cut = 0, $encode_html = 0) {
 	_deprecated_function( __FUNCTION__, '2.9', 'the_content_feed' );
-	$content = get_the_content($more_link_text, $stripteaser, $more_file);
+	$content = get_the_content($more_link_text, $stripteaser);
 	$content = apply_filters('the_content_rss', $content);
 	if ( $cut && !$encode_html )
 		$encode_html = 2;
@@ -3335,7 +3321,7 @@ function _save_post_hook() {}
  *
  * @since 2.9.0
  * @deprecated 3.5.0
- * see wp_image_editor_supports()
+ * @see wp_image_editor_supports()
  *
  * @param string $mime_type
  * @return bool
@@ -3364,3 +3350,31 @@ function gd_edit_image_support($mime_type) {
 	}
 	return false;
 }
+
+/**
+ * Converts an integer byte value to a shorthand byte value.
+ *
+ * @since 2.3.0
+ * @deprecated 3.6.0
+ * @deprecated Use size_format()
+ *
+ * @param int $bytes An integer byte value.
+ * @return string A shorthand byte value.
+ */
+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 );
+	$power = (int) $log;
+	$size  = pow( 1024, $log - $power );
+
+	if ( ! is_nan( $size ) && array_key_exists( $power, $units ) ) {
+		$unit = $units[ $power ];
+	} else {
+		$size = $bytes;
+		$unit = $units[0];
+	}
+
+	return $size . $unit;
+}
diff --git a/wp-includes/feed-atom-comments.php b/wp-includes/feed-atom-comments.php
index 174670379..1a89c4795 100644
--- a/wp-includes/feed-atom-comments.php
+++ b/wp-includes/feed-atom-comments.php
@@ -75,7 +75,7 @@ if ( have_comments() ) : while ( have_comments() ) : the_comment();
 		<thr:in-reply-to ref="<?php the_guid(); ?>" href="<?php the_permalink_rss() ?>" type="<?php bloginfo_rss('html_type'); ?>" />
 <?php else : // This comment is in reply to another comment
 	$parent_comment = get_comment($comment->comment_parent);
-	// The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, its more important that they both use the same system
+	// The rel attribute below and the id tag above should be GUIDs, but WP doesn't create them for comments (unlike posts). Either way, it's more important that they both use the same system
 ?>
 		<thr:in-reply-to ref="<?php comment_guid($parent_comment) ?>" href="<?php echo get_comment_link($parent_comment) ?>" type="<?php bloginfo_rss('html_type'); ?>" />
 <?php endif;
diff --git a/wp-includes/feed.php b/wp-includes/feed.php
index 61825f895..e6b9ae0e6 100644
--- a/wp-includes/feed.php
+++ b/wp-includes/feed.php
@@ -198,7 +198,7 @@ function the_permalink_rss() {
  * @return none
  */
 function comments_link_feed() {
-	echo esc_url( get_comments_link() );
+	echo esc_url( apply_filters( 'comments_link_feed', get_comments_link() ) );
 }
 
 /**
@@ -239,7 +239,7 @@ function get_comment_guid($comment_id = null) {
  * @since 1.5.0
  */
 function comment_link() {
-	echo esc_url( get_comment_link() );
+	echo esc_url( apply_filters( 'comment_link', get_comment_link() ) );
 }
 
 /**
@@ -391,7 +391,7 @@ function rss_enclosure() {
 			foreach ( (array) $val as $enc ) {
 				$enclosure = explode("\n", $enc);
 
-				//only get the the first element eg, audio/mpeg from 'audio/mpeg mpga mp2 mp3'
+				// only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3'
 				$t = preg_split('/[ \t]/', trim($enclosure[2]) );
 				$type = $t[0];
 
@@ -488,7 +488,7 @@ function prep_atom_text_construct($data) {
  */
 function self_link() {
 	$host = @parse_url(home_url());
-	echo esc_url( set_url_scheme( 'http://' . $host['host'] . stripslashes($_SERVER['REQUEST_URI']) ) );
+	echo esc_url( apply_filters( 'self_link', set_url_scheme( 'http://' . $host['host'] . wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) );
 }
 
 /**
@@ -520,11 +520,14 @@ function feed_content_type( $type = '' ) {
  *
  * @since 2.8
  *
- * @param string $url URL to retrieve feed
+ * @param mixed $url URL of feed to retrieve. If an array of URLs, the feeds are merged
+ * using SimplePie's multifeed feature.
+ * See also {@link ​http://simplepie.org/wiki/faq/typical_multifeed_gotchas}
+ *
  * @return WP_Error|SimplePie WP_Error object on failure or SimplePie object on success
  */
-function fetch_feed($url) {
-	require_once (ABSPATH . WPINC . '/class-feed.php');
+function fetch_feed( $url ) {
+	require_once ( ABSPATH . WPINC . '/class-feed.php' );
 
 	$feed = new SimplePie();
 
@@ -536,14 +539,14 @@ function fetch_feed($url) {
 	$feed->set_cache_class( 'WP_Feed_Cache' );
 	$feed->set_file_class( 'WP_SimplePie_File' );
 
-	$feed->set_feed_url($url);
+	$feed->set_feed_url( $url );
 	$feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) );
 	do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );
 	$feed->init();
 	$feed->handle_content_type();
 
 	if ( $feed->error() )
-		return new WP_Error('simplepie-error', $feed->error());
+		return new WP_Error( 'simplepie-error', $feed->error() );
 
 	return $feed;
 }
diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php
index a4e429a7f..aef2b6378 100644
--- a/wp-includes/formatting.php
+++ b/wp-includes/formatting.php
@@ -5,7 +5,7 @@
  * Handles many functions for formatting output.
  *
  * @package WordPress
- **/
+ */
 
 /**
  * Replaces common plain text characters into formatted entities
@@ -134,8 +134,8 @@ function wptexturize($text) {
  * Search for disabled element tags. Push element to stack on tag open and pop
  * on tag close. Assumes first character of $text is tag opening.
  *
- * @access private
  * @since 2.9.0
+ * @access private
  *
  * @param string $text Text to check. First character is assumed to be $opening
  * @param array $stack Array used as stack of opened tag elements
@@ -220,7 +220,7 @@ function wpautop($pee, $br = true) {
 
 	$pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
 	// Space things out a little
-	$allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|samp|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
+	$allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|noscript|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
 	$pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
 	$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
 	$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
@@ -262,6 +262,7 @@ function wpautop($pee, $br = true) {
  *
  * @since 3.1.0
  * @access private
+ *
  * @param array $matches preg_replace_callback matches array
  * @return string
  */
@@ -363,6 +364,7 @@ function seems_utf8($str) {
  * &quot;, or ENT_QUOTES to do both. Default is ENT_NOQUOTES where no quotes are encoded.
  *
  * @since 1.2.2
+ * @access private
  *
  * @param string $string The text which is to be encoded.
  * @param mixed $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.
@@ -442,7 +444,7 @@ function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = fals
  * $quote_style can be set to ENT_COMPAT to decode " entities,
  * or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded.
  *
- * @since 2.8
+ * @since 2.8.0
  *
  * @param string $string The text which is to be decoded.
  * @param mixed $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 _wp_specialchars() values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
@@ -499,7 +501,7 @@ function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
 /**
  * Checks for invalid UTF8 in a string.
  *
- * @since 2.8
+ * @since 2.8.0
  *
  * @param string $string The text which is to be checked.
  * @param boolean $strip Optional. Whether to attempt to strip out invalid UTF8. Default is false.
@@ -785,6 +787,19 @@ function remove_accents($string) {
 		chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
 		);
 
+		// Used for locale-specific rules
+		$locale = get_locale();
+
+		if ( 'de_DE' == $locale ) {
+			$chars[ chr(195).chr(132) ] = 'Ae';
+			$chars[ chr(195).chr(164) ] = 'ae';
+			$chars[ chr(195).chr(150) ] = 'Oe';
+			$chars[ chr(195).chr(182) ] = 'oe';
+			$chars[ chr(195).chr(156) ] = 'Ue';
+			$chars[ chr(195).chr(188) ] = 'ue';
+			$chars[ chr(195).chr(159) ] = 'ss';
+		}
+
 		$string = strtr($string, $chars);
 	} else {
 		// Assume ISO-8859-1 if not UTF-8
@@ -811,12 +826,12 @@ function remove_accents($string) {
 }
 
 /**
- * Sanitizes a filename replacing whitespace with dashes
+ * Sanitizes a filename, replacing whitespace with dashes.
  *
  * Removes special characters that are illegal in filenames on certain
  * operating systems and special characters requiring special escaping
  * to manipulate at the command line. Replaces spaces and consecutive
- * dashes with a single dash. Trim period, dash and underscore from beginning
+ * dashes with a single dash. Trims period, dash and underscore from beginning
  * and end of filename.
  *
  * @since 2.1.0
@@ -868,7 +883,7 @@ function sanitize_file_name( $filename ) {
 }
 
 /**
- * Sanitize username stripping out unsafe characters.
+ * Sanitizes a username, stripping out unsafe characters.
  *
  * Removes tags, octets, entities, and if strict is enabled, will only keep
  * alphanumeric, _, space, ., -, @. After sanitizing, it passes the username,
@@ -903,7 +918,7 @@ function sanitize_user( $username, $strict = false ) {
 }
 
 /**
- * Sanitize a string key.
+ * Sanitizes a string key.
  *
  * Keys are used as internal identifiers. Lowercase alphanumeric characters, dashes and underscores are allowed.
  *
@@ -920,7 +935,7 @@ function sanitize_key( $key ) {
 }
 
 /**
- * Sanitizes title or use fallback title.
+ * Sanitizes a title, or returns a fallback title.
  *
  * Specifically, HTML and PHP tags are stripped. Further actions can be added
  * via the plugin API. If $title is empty and $fallback_title is set, the latter
@@ -933,7 +948,7 @@ function sanitize_key( $key ) {
  * @param string $context Optional. The operation for which the string is sanitized
  * @return string The sanitized string.
  */
-function sanitize_title($title, $fallback_title = '', $context = 'save') {
+function sanitize_title( $title, $fallback_title = '', $context = 'save' ) {
 	$raw_title = $title;
 
 	if ( 'save' == $context )
@@ -947,12 +962,23 @@ function sanitize_title($title, $fallback_title = '', $context = 'save') {
 	return $title;
 }
 
-function sanitize_title_for_query($title) {
-	return sanitize_title($title, '', 'query');
+/**
+ * Sanitizes a title with the 'query' context.
+ *
+ * Used for querying the database for a value from URL.
+ *
+ * @since 3.1.0
+ * @uses sanitize_title()
+ *
+ * @param string $title The string to be sanitized.
+ * @return string The sanitized string.
+ */
+function sanitize_title_for_query( $title ) {
+	return sanitize_title( $title, '', 'query' );
 }
 
 /**
- * Sanitizes title, replacing whitespace and a few other characters with dashes.
+ * Sanitizes a title, replacing whitespace and a few other characters with dashes.
  *
  * Limits the output to alphanumeric characters, underscore (_) and dash (-).
  * Whitespace becomes a dash.
@@ -964,7 +990,7 @@ function sanitize_title_for_query($title) {
  * @param string $context Optional. The operation for which the string is sanitized.
  * @return string The sanitized title.
  */
-function sanitize_title_with_dashes($title, $raw_title = '', $context = 'display') {
+function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
 	$title = strip_tags($title);
 	// Preserve escaped octets.
 	$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
@@ -999,8 +1025,10 @@ function sanitize_title_with_dashes($title, $raw_title = '', $context = 'display
 			'%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
 			// copy, reg, deg, hellip and trade
 			'%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
-			// grave accent, acute accent, macron, caron
-			'%cc%80', '%cc%81', '%cc%84', '%cc%8c',
+			// acute accents
+			'%c2%b4', '%cb%8a', '%cc%81', '%cd%81',
+			// grave accent, macron, caron
+			'%cc%80', '%cc%84', '%cc%8c',
 		), '', $title );
 
 		// Convert times to x
@@ -1034,7 +1062,7 @@ function sanitize_sql_orderby( $orderby ){
 }
 
 /**
- * Santizes a html classname to ensure it only contains valid characters
+ * Sanitizes an HTML classname to ensure it only contains valid characters.
  *
  * Strips the string down to A-Z,a-z,0-9,_,-. If this results in an empty
  * string then it will return the alternative value supplied.
@@ -1132,9 +1160,7 @@ function convert_chars($content, $deprecated = '') {
 }
 
 /**
- * Will only balance the tags if forced to and the option is set to balance tags.
- *
- * The option 'use_balanceTags' is used to determine whether the tags will be balanced.
+ * Balances tags if forced to, or if the 'use_balanceTags' option is set to true.
  *
  * @since 0.71
  *
@@ -1143,9 +1169,10 @@ function convert_chars($content, $deprecated = '') {
  * @return string Balanced text
  */
 function balanceTags( $text, $force = false ) {
-	if ( !$force && get_option('use_balanceTags') == 0 )
+	if ( $force || get_option('use_balanceTags') == 1 )
+		return force_balance_tags( $text );
+	else
 		return $text;
-	return force_balance_tags( $text );
 }
 
 /**
@@ -1342,9 +1369,9 @@ function zeroise($number, $threshold) {
  * @return string String with backslashes inserted.
  */
 function backslashit($string) {
-	$string = preg_replace('/^([0-9])/', '\\\\\\\\\1', $string);
-	$string = preg_replace('/([a-z])/i', '\\\\\1', $string);
-	return $string;
+	if ( isset( $string[0] ) && $string[0] >= '0' && $string[0] <= '9' )
+		$string = '\\\\' . $string;
+	return addcslashes( $string, 'A..Za..z' );
 }
 
 /**
@@ -1396,7 +1423,7 @@ function addslashes_gpc($gpc) {
 	if ( get_magic_quotes_gpc() )
 		$gpc = stripslashes($gpc);
 
-	return esc_sql($gpc);
+	return wp_slash($gpc);
 }
 
 /**
@@ -1692,12 +1719,12 @@ function wp_rel_nofollow( $text ) {
 	// This is a pre save filter, so text is already escaped.
 	$text = stripslashes($text);
 	$text = preg_replace_callback('|<a (.+?)>|i', 'wp_rel_nofollow_callback', $text);
-	$text = esc_sql($text);
+	$text = wp_slash($text);
 	return $text;
 }
 
 /**
- * Callback to used to add rel=nofollow string to HTML A element.
+ * Callback to add rel=nofollow string to HTML A element.
  *
  * Will remove already existing rel="nofollow" and rel='nofollow' from the
  * string to prevent from invalidating (X)HTML.
@@ -1868,6 +1895,7 @@ function wp_iso_descrambler($string) {
  *
  * @since 3.1.0
  * @access private
+ *
  * @param array $match The preg_replace_callback matches array
  * @return array Converted chars
  */
@@ -1878,39 +1906,31 @@ function _wp_iso_convert( $match ) {
 /**
  * Returns a date in the GMT equivalent.
  *
- * Requires and returns a date in the Y-m-d H:i:s format. Simply subtracts the
- * value of the 'gmt_offset' option. Return format can be overridden using the
- * $format parameter. The DateTime and DateTimeZone classes are used to respect
- * time zone differences in DST.
+ * Requires and returns a date in the Y-m-d H:i:s format. If there is a
+ * timezone_string available, the date is assumed to be in that timezone,
+ * otherwise it simply subtracts the value of the 'gmt_offset' option. Return
+ * format can be overridden using the $format parameter.
  *
  * @since 1.2.0
  *
- * @uses get_option() to retrieve the the value of 'gmt_offset'.
+ * @uses get_option() to retrieve the value of 'gmt_offset'.
  * @param string $string The date to be converted.
  * @param string $format The format string for the returned date (default is Y-m-d H:i:s)
  * @return string GMT version of the date provided.
  */
-function get_gmt_from_date($string, $format = 'Y-m-d H:i:s') {
-	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);
-	if ( ! $matches )
-		return date( $format, 0 );
-
-	$tz = get_option('timezone_string');
+function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
+	$tz = get_option( 'timezone_string' );
 	if ( $tz ) {
-		date_default_timezone_set( $tz );
-		$datetime = date_create( $string );
+		$datetime = date_create( $string, new DateTimeZone( $tz ) );
 		if ( ! $datetime )
-			return date( $format, 0 );
-
-		$datetime->setTimezone( new DateTimeZone('UTC') );
-		$offset = $datetime->getOffset();
-		$datetime->modify( '+' . $offset / HOUR_IN_SECONDS . ' hours');
-		$string_gmt = gmdate($format, $datetime->format('U'));
-
-		date_default_timezone_set('UTC');
+			return gmdate( $format, 0 );
+		$datetime->setTimezone( new DateTimeZone( 'UTC' ) );
+		$string_gmt = $datetime->format( $format );
 	} else {
-		$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);
+		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 );
+		$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 );
 	}
 	return $string_gmt;
 }
@@ -1918,19 +1938,31 @@ function get_gmt_from_date($string, $format = 'Y-m-d H:i:s') {
 /**
  * Converts a GMT date into the correct format for the blog.
  *
- * Requires and returns in the Y-m-d H:i:s format. Simply adds the value of
- * gmt_offset.Return format can be overridden using the $format parameter
+ * Requires and returns a date in the Y-m-d H:i:s format. If there is a
+ * timezone_string available, the returned date is in that timezone, otherwise
+ * it simply adds the value of gmt_offset. Return format can be overridden
+ * using the $format parameter
  *
  * @since 1.2.0
  *
  * @param string $string The date to be converted.
  * @param string $format The format string for the returned date (default is Y-m-d H:i:s)
- * @return string Formatted date relative to the GMT offset.
+ * @return string Formatted date relative to the timezone / GMT offset.
  */
-function get_date_from_gmt($string, $format = 'Y-m-d H:i:s') {
-	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);
-	$string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
-	$string_localtime = gmdate($format, $string_time + get_option('gmt_offset') * HOUR_IN_SECONDS);
+function get_date_from_gmt( $string, $format = 'Y-m-d H:i:s' ) {
+	$tz = get_option( 'timezone_string' );
+	if ( $tz ) {
+		$datetime = date_create( $string, new DateTimeZone( 'UTC' ) );
+		if ( ! $datetime )
+			return date( $format, 0 );
+		$datetime->setTimezone( new DateTimeZone( $tz ) );
+		$string_localtime = $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 date( $format, 0 );
+		$string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
+		$string_localtime = gmdate( $format, $string_time + get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
+	}
 	return $string_localtime;
 }
 
@@ -2101,27 +2133,42 @@ function sanitize_email( $email ) {
 function human_time_diff( $from, $to = '' ) {
 	if ( empty( $to ) )
 		$to = time();
+
 	$diff = (int) abs( $to - $from );
-	if ( $diff <= HOUR_IN_SECONDS ) {
+
+	if ( $diff < HOUR_IN_SECONDS ) {
 		$mins = round( $diff / MINUTE_IN_SECONDS );
-		if ( $mins <= 1 ) {
+		if ( $mins <= 1 )
 			$mins = 1;
-		}
 		/* translators: min=minute */
 		$since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
-	} elseif ( ( $diff <= DAY_IN_SECONDS ) && ( $diff > HOUR_IN_SECONDS ) ) {
+	} elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
 		$hours = round( $diff / HOUR_IN_SECONDS );
-		if ( $hours <= 1 ) {
+		if ( $hours <= 1 )
 			$hours = 1;
-		}
 		$since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
-	} elseif ( $diff >= DAY_IN_SECONDS ) {
+	} elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
 		$days = round( $diff / DAY_IN_SECONDS );
-		if ( $days <= 1 ) {
+		if ( $days <= 1 )
 			$days = 1;
-		}
 		$since = sprintf( _n( '%s day', '%s days', $days ), $days );
+	} elseif ( $diff < 30 * DAY_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 ) );
+		if ( $months <= 1 )
+			$months = 1;
+		$since = sprintf( _n( '%s month', '%s months', $months ), $months );
+	} elseif ( $diff >= YEAR_IN_SECONDS ) {
+		$years = round( $diff / YEAR_IN_SECONDS );
+		if ( $years <= 1 )
+			$years = 1;
+		$since = sprintf( _n( '%s year', '%s years', $years ), $years );
 	}
+
 	return $since;
 }
 
@@ -2129,11 +2176,11 @@ function human_time_diff( $from, $to = '' ) {
  * Generates an excerpt from the content, if needed.
  *
  * The excerpt word amount will be 55 words and if the amount is greater than
- * that, then the string ' [...]' will be appended to the excerpt. If the string
+ * that, then the string ' [&hellip;]' will be appended to the excerpt. If the string
  * is less than 55 words, then the content will be returned as is.
  *
  * The 55 word limit can be modified by plugins/themes using the excerpt_length filter
- * The ' [...]' string can be modified by plugins/themes using the excerpt_more filter
+ * The ' [&hellip;]' string can be modified by plugins/themes using the excerpt_more filter
  *
  * @since 1.5.0
  *
@@ -2150,7 +2197,7 @@ function wp_trim_excerpt($text = '') {
 		$text = apply_filters('the_content', $text);
 		$text = str_replace(']]>', ']]&gt;', $text);
 		$excerpt_length = apply_filters('excerpt_length', 55);
-		$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
+		$excerpt_more = apply_filters('excerpt_more', ' ' . '[&hellip;]');
 		$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
 	}
 	return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
@@ -2167,7 +2214,7 @@ function wp_trim_excerpt($text = '') {
  *
  * @param string $text Text to trim.
  * @param int $num_words Number of words. Default 55.
- * @param string $more What to append if $text needs to be trimmed. Default '&hellip;'.
+ * @param string $more Optional. What to append if $text needs to be trimmed. Default '&hellip;'.
  * @return string Trimmed text.
  */
 function wp_trim_words( $text, $num_words = 55, $more = null ) {
@@ -2214,7 +2261,6 @@ function ent2ncr($text) {
 	$to_ncr = array(
 		'&quot;' => '&#34;',
 		'&amp;' => '&#38;',
-		'&frasl;' => '&#47;',
 		'&lt;' => '&#60;',
 		'&gt;' => '&#62;',
 		'|' => '&#124;',
@@ -2491,7 +2537,7 @@ function wp_richedit_pre($text) {
 
 	$output = convert_chars($text);
 	$output = wpautop($output);
-	$output = htmlspecialchars($output, ENT_NOQUOTES);
+	$output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) );
 
 	return apply_filters('richedit_pre', $output);
 }
@@ -2509,7 +2555,7 @@ function wp_richedit_pre($text) {
  */
 function wp_htmledit_pre($output) {
 	if ( !empty($output) )
-		$output = htmlspecialchars($output, ENT_NOQUOTES); // convert only < > &
+		$output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > &
 
 	return apply_filters('htmledit_pre', $output);
 }
@@ -2545,17 +2591,19 @@ function _deep_replace( $search, $subject ) {
 }
 
 /**
- * Escapes data for use in a MySQL query
+ * Escapes data for use in a MySQL query.
  *
- * This is just a handy shortcut for $wpdb->escape(), for completeness' sake
+ * Usually you should prepare queries using wpdb::prepare().
+ * Sometimes, spot-escaping is required or useful. One example
+ * is preparing an array for use in an IN clause.
  *
  * @since 2.8.0
- * @param string $sql Unescaped SQL data
- * @return string The cleaned $sql
+ * @param string $data Unescaped data
+ * @return string Escaped data
  */
-function esc_sql( $sql ) {
+function esc_sql( $data ) {
 	global $wpdb;
-	return $wpdb->escape( $sql );
+	return $wpdb->_escape( $data );
 }
 
 /**
@@ -2599,11 +2647,15 @@ function esc_url( $url, $protocols = null, $_context = 'display' ) {
 		$url = str_replace( "'", '&#039;', $url );
 	}
 
-	if ( ! is_array( $protocols ) )
-		$protocols = wp_allowed_protocols();
-	$good_protocol_url = wp_kses_bad_protocol( $url, $protocols );
-	if ( strtolower( $good_protocol_url ) != strtolower( $url ) )
-		return '';
+	if ( '/' === $url[0] ) {
+		$good_protocol_url = $url;
+	} else {
+		if ( ! is_array( $protocols ) )
+			$protocols = wp_allowed_protocols();
+		$good_protocol_url = wp_kses_bad_protocol( $url, $protocols );
+		if ( strtolower( $good_protocol_url ) != strtolower( $url ) )
+			return '';
+	}
 
 	return apply_filters('clean_url', $good_protocol_url, $original_url, $_context);
 }
@@ -2690,18 +2742,18 @@ function esc_attr( $text ) {
 /**
  * Escaping for textarea values.
  *
- * @since 3.1
+ * @since 3.1.0
  *
  * @param string $text
  * @return string
  */
 function esc_textarea( $text ) {
-	$safe_text = htmlspecialchars( $text, ENT_QUOTES );
+	$safe_text = htmlspecialchars( $text, ENT_QUOTES, get_option( 'blog_charset' ) );
 	return apply_filters( 'esc_textarea', $safe_text, $text );
 }
 
 /**
- * Escape a HTML tag name.
+ * Escape an HTML tag name.
  *
  * @since 2.5.0
  *
@@ -2976,7 +3028,7 @@ function wp_pre_kses_less_than_callback( $matches ) {
  * @return string The formatted string.
  */
 function wp_sprintf( $pattern ) {
-	$args = func_get_args( );
+	$args = func_get_args();
 	$len = strlen($pattern);
 	$start = 0;
 	$result = '';
@@ -3085,16 +3137,21 @@ function wp_sprintf_l($pattern, $args) {
  *
  * @since 2.5.0
  *
- * @param integer $str String to get the excerpt from.
+ * @param string $str String to get the excerpt from.
  * @param integer $count Maximum number of characters to take.
+ * @param string $more Optional. What to append if $str needs to be trimmed. Defaults to empty string.
  * @return string The excerpt.
  */
-function wp_html_excerpt( $str, $count ) {
+function wp_html_excerpt( $str, $count, $more = null ) {
+	if ( null === $more )
+		$more = '';
 	$str = wp_strip_all_tags( $str, true );
-	$str = mb_substr( $str, 0, $count );
+	$excerpt = mb_substr( $str, 0, $count );
 	// remove part of an entity at the end
-	$str = preg_replace( '/&[^;\s]{0,6}$/', '', $str );
-	return $str;
+	$excerpt = preg_replace( '/&[^;\s]{0,6}$/', '', $excerpt );
+	if ( $str != $excerpt )
+		$excerpt = trim( $excerpt ) . $more;
+	return $excerpt;
 }
 
 /**
@@ -3170,14 +3227,21 @@ function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
 function _links_add_target( $m ) {
 	global $_links_add_target;
 	$tag = $m[1];
-	$link = preg_replace('|(target=[\'"](.*?)[\'"])|i', '', $m[2]);
+	$link = preg_replace('|(target=([\'"])(.*?)\2)|i', '', $m[2]);
 	return '<' . $tag . $link . ' target="' . esc_attr( $_links_add_target ) . '">';
 }
 
-// normalize EOL characters and strip duplicate whitespace
+/**
+ * Normalize EOL characters and strip duplicate whitespace.
+ *
+ * @since 2.7.0
+ *
+ * @param string $str The string to normalize.
+ * @return string The normalized string.
+ */
 function normalize_whitespace( $str ) {
-	$str  = trim($str);
-	$str  = str_replace("\r", "\n", $str);
+	$str  = trim( $str );
+	$str  = str_replace( "\r", "\n", $str );
 	$str  = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $str );
 	return $str;
 }
@@ -3226,7 +3290,6 @@ function sanitize_text_field($str) {
 		$filtered = trim( preg_replace('/[\r\n\t ]+/', ' ', $filtered) );
 	}
 
-	$match = array();
 	$found = false;
 	while ( preg_match('/%[a-f0-9]{2}/i', $filtered, $match) ) {
 		$filtered = str_replace($match[0], '', $filtered);
@@ -3307,3 +3370,63 @@ function sanitize_trackback_urls( $to_ping ) {
 	$urls_to_ping = implode( "\n", $urls_to_ping );
 	return apply_filters( 'sanitize_trackback_urls', $urls_to_ping, $to_ping );
 }
+
+/**
+ * Add slashes to a string or array of strings.
+ *
+ * This should be used when preparing data for core API that expects slashed data.
+ * This should not be used to escape data going directly into an SQL query.
+ *
+ * @since 3.6.0
+ *
+ * @param string|array $value String or array of strings to slash.
+ * @return string|array Slashed $value
+ */
+function wp_slash( $value ) {
+	if ( is_array( $value ) ) {
+		foreach ( $value as $k => $v ) {
+			if ( is_array( $v ) ) {
+				$value[$k] = wp_slash( $v );
+			} else {
+				$value[$k] = addslashes( $v );
+			}
+		}
+	} else {
+		$value = addslashes( $value );
+	}
+
+	return $value;
+}
+
+/**
+ * Remove slashes from a string or array of strings.
+ *
+ * This should be used to remove slashes from data passed to core API that
+ * expects data to be unslashed.
+ *
+ * @since 3.6.0
+ *
+ * @param string|array $value String or array of strings to unslash.
+ * @return string|array Unslashed $value
+ */
+function wp_unslash( $value ) {
+	return stripslashes_deep( $value );
+}
+
+/**
+ * Extract and return the first URL from passed content.
+ *
+ * @since 3.6.0
+ *
+ * @param string $content A string which might contain a URL.
+ * @return string The found URL.
+ */
+function get_url_in_content( $content ) {
+	if ( empty( $content ) )
+		return '';
+
+	if ( preg_match( '/<a\s[^>]*?href=([\'"])(.+?)\1/is', $content, $matches ) )
+		return esc_url_raw( $matches[2] );
+
+	return false;
+}
diff --git a/wp-includes/functions.php b/wp-includes/functions.php
index e30a01422..f8b424a8b 100644
--- a/wp-includes/functions.php
+++ b/wp-includes/functions.php
@@ -496,14 +496,13 @@ function wp_get_http( $url, $file_path = false, $red = 1 ) {
 
 	$options = array();
 	$options['redirection'] = 5;
-	$options['reject_unsafe_urls'] = true;
 
 	if ( false == $file_path )
 		$options['method'] = 'HEAD';
 	else
 		$options['method'] = 'GET';
 
-	$response = wp_remote_request($url, $options);
+	$response = wp_safe_remote_request( $url, $options );
 
 	if ( is_wp_error( $response ) )
 		return false;
@@ -544,7 +543,7 @@ function wp_get_http_headers( $url, $deprecated = false ) {
 	if ( !empty( $deprecated ) )
 		_deprecated_argument( __FUNCTION__, '2.7' );
 
-	$response = wp_remote_head( $url, array( 'reject_unsafe_urls' => true ) );
+	$response = wp_safe_remote_head( $url );
 
 	if ( is_wp_error( $response ) )
 		return false;
@@ -728,7 +727,7 @@ function remove_query_arg( $key, $query=false ) {
  *
  * @since 0.71
  *
- * @param array $array Array to used to walk while sanitizing contents.
+ * @param array $array Array to walk while sanitizing contents.
  * @return array Sanitized $array.
  */
 function add_magic_quotes( $array ) {
@@ -759,9 +758,8 @@ function wp_remote_fopen( $uri ) {
 
 	$options = array();
 	$options['timeout'] = 10;
-	$options['reject_unsafe_urls'] = true;
 
-	$response = wp_remote_get( $uri, $options );
+	$response = wp_safe_remote_get( $uri, $options );
 
 	if ( is_wp_error( $response ) )
 		return false;
@@ -1170,13 +1168,14 @@ function is_blog_installed() {
  * @subpackage Security
  * @since 2.0.4
  *
- * @param string $actionurl URL to add nonce action
- * @param string $action Optional. Nonce action name
+ * @param string $actionurl URL to add nonce action.
+ * @param string $action Optional. Nonce action name.
+ * @param string $name Optional. Nonce name.
  * @return string URL with nonce action added.
  */
-function wp_nonce_url( $actionurl, $action = -1 ) {
+function wp_nonce_url( $actionurl, $action = -1, $name = '_wpnonce' ) {
 	$actionurl = str_replace( '&amp;', '&', $actionurl );
-	return esc_html( add_query_arg( '_wpnonce', wp_create_nonce( $action ), $actionurl ) );
+	return esc_html( add_query_arg( $name, wp_create_nonce( $action ), $actionurl ) );
 }
 
 /**
@@ -1234,8 +1233,7 @@ function wp_nonce_field( $action = -1, $name = "_wpnonce", $referer = true , $ec
  * @return string Referer field.
  */
 function wp_referer_field( $echo = true ) {
-	$ref = esc_attr( $_SERVER['REQUEST_URI'] );
-	$referer_field = '<input type="hidden" name="_wp_http_referer" value="'. $ref . '" />';
+	$referer_field = '<input type="hidden" name="_wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
 
 	if ( $echo )
 		echo $referer_field;
@@ -1258,9 +1256,10 @@ function wp_referer_field( $echo = true ) {
  * @return string Original referer field.
  */
 function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) {
-	$jump_back_to = ( 'previous' == $jump_back_to ) ? wp_get_referer() : $_SERVER['REQUEST_URI'];
-	$ref = ( wp_get_original_referer() ) ? wp_get_original_referer() : $jump_back_to;
-	$orig_referer_field = '<input type="hidden" name="_wp_original_http_referer" value="' . esc_attr( stripslashes( $ref ) ) . '" />';
+	if ( ! $ref = wp_get_original_referer() ) {
+		$ref = 'previous' == $jump_back_to ? wp_get_referer() : wp_unslash( $_SERVER['REQUEST_URI'] );
+	}
+	$orig_referer_field = '<input type="hidden" name="_wp_original_http_referer" value="' . esc_attr( $ref ) . '" />';
 	if ( $echo )
 		echo $orig_referer_field;
 	return $orig_referer_field;
@@ -1279,12 +1278,12 @@ function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) {
 function wp_get_referer() {
 	$ref = false;
 	if ( ! empty( $_REQUEST['_wp_http_referer'] ) )
-		$ref = $_REQUEST['_wp_http_referer'];
+		$ref = wp_unslash( $_REQUEST['_wp_http_referer'] );
 	else if ( ! empty( $_SERVER['HTTP_REFERER'] ) )
-		$ref = $_SERVER['HTTP_REFERER'];
+		$ref = wp_unslash( $_SERVER['HTTP_REFERER'] );
 
-	if ( $ref && $ref !== $_SERVER['REQUEST_URI'] )
-		return $ref;
+	if ( $ref && $ref !== wp_unslash( $_SERVER['REQUEST_URI'] ) )
+		return wp_unslash( $ref );
 	return false;
 }
 
@@ -1299,7 +1298,7 @@ function wp_get_referer() {
  */
 function wp_get_original_referer() {
 	if ( !empty( $_REQUEST['_wp_original_http_referer'] ) )
-		return $_REQUEST['_wp_original_http_referer'];
+		return wp_unslash( $_REQUEST['_wp_original_http_referer'] );
 	return false;
 }
 
@@ -1418,46 +1417,67 @@ function get_temp_dir() {
 	if ( $temp )
 		return trailingslashit( rtrim( $temp, '\\' ) );
 
-	$is_win = ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3 ) ) );
-
 	if ( function_exists('sys_get_temp_dir') ) {
 		$temp = sys_get_temp_dir();
-		if ( @is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) ) {
+		if ( @is_dir( $temp ) && wp_is_writable( $temp ) )
 			return trailingslashit( rtrim( $temp, '\\' ) );
-		}
 	}
 
 	$temp = ini_get('upload_tmp_dir');
-	if ( is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) )
+	if ( is_dir( $temp ) && wp_is_writable( $temp ) )
 		return trailingslashit( rtrim( $temp, '\\' ) );
 
 	$temp = WP_CONTENT_DIR . '/';
-	if ( is_dir( $temp ) && ( $is_win ? win_is_writable( $temp ) : @is_writable( $temp ) ) )
+	if ( is_dir( $temp ) && wp_is_writable( $temp ) )
 		return $temp;
 
 	$temp = '/tmp/';
 	return $temp;
 }
 
+/**
+ * Determine if a directory is writable.
+ *
+ * This function is used to work around certain ACL issues
+ * in PHP primarily affecting Windows Servers.
+ *
+ * @see win_is_writable()
+ *
+ * @since 3.6.0
+ *
+ * @param string $path
+ * @return bool
+ */
+function wp_is_writable( $path ) {
+	if ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3 ) ) )
+		return win_is_writable( $path );
+	else
+		return @is_writable( $path );
+}
+
 /**
  * Workaround for Windows bug in is_writable() function
  *
+ * PHP has issues with Windows ACL's for determine if a
+ * directory is writable or not, this works around them by
+ * checking the ability to open files rather than relying
+ * upon PHP to interprate the OS ACL.
+ *
+ * @link http://bugs.php.net/bug.php?id=27609
+ * @link http://bugs.php.net/bug.php?id=30931
+ *
  * @since 2.8.0
  *
  * @param string $path
  * @return bool
  */
 function win_is_writable( $path ) {
-	/* will work in despite of Windows ACLs bug
-	 * NOTE: use a trailing slash for folders!!!
-	 * see http://bugs.php.net/bug.php?id=27609
-	 * see http://bugs.php.net/bug.php?id=30931
-	 */
 
-	if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path
+	if ( $path[strlen( $path ) - 1] == '/' ) // if it looks like a directory, check a random file within the directory
 		return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp');
-	else if ( is_dir( $path ) )
+	else if ( is_dir( $path ) ) // If it's a directory (and not a file) check a random file within the directory
 		return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' );
+
 	// check tmp file for read/write capabilities
 	$should_delete_tmp_file = !file_exists( $path );
 	$f = @fopen( $path, 'a' );
@@ -1893,7 +1913,10 @@ function wp_get_mime_types() {
 	'tif|tiff' => 'image/tiff',
 	'ico' => 'image/x-icon',
 	// Video formats
-	'asf|asx|wax|wmv|wmx' => 'video/asf',
+	'asf|asx' => 'video/x-ms-asf',
+	'wmv' => 'video/x-ms-wmv',
+	'wmx' => 'video/x-ms-wmx',
+	'wm' => 'video/x-ms-wm',
 	'avi' => 'video/avi',
 	'divx' => 'video/divx',
 	'flv' => 'video/x-flv',
@@ -1901,6 +1924,7 @@ function wp_get_mime_types() {
 	'mpeg|mpg|mpe' => 'video/mpeg',
 	'mp4|m4v' => 'video/mp4',
 	'ogv' => 'video/ogg',
+	'webm' => 'video/webm',
 	'mkv' => 'video/x-matroska',
 	// Text formats
 	'txt|asc|c|cc|h' => 'text/plain',
@@ -1916,7 +1940,8 @@ function wp_get_mime_types() {
 	'wav' => 'audio/wav',
 	'ogg|oga' => 'audio/ogg',
 	'mid|midi' => 'audio/midi',
-	'wma' => 'audio/wma',
+	'wma' => 'audio/x-ms-wma',
+	'wax' => 'audio/x-ms-wax',
 	'mka' => 'audio/x-matroska',
 	// Misc application formats
 	'rtf' => 'application/rtf',
@@ -1967,6 +1992,10 @@ function wp_get_mime_types() {
 	'odf' => 'application/vnd.oasis.opendocument.formula',
 	// WordPerfect formats
 	'wp|wpd' => 'application/wordperfect',
+	// iWork formats
+	'key' => 'application/vnd.apple.keynote',
+	'numbers' => 'application/vnd.apple.numbers',
+	'pages' => 'application/vnd.apple.pages',
 	) );
 }
 /**
@@ -2718,8 +2747,8 @@ function wp_ob_end_flush_all() {
  * search engines from caching the message. Custom DB messages should do the
  * same.
  *
- * This function was backported to the the WordPress 2.3.2, but originally was
- * added in WordPress 2.5.0.
+ * This function was backported to WordPress 2.3.2, but originally was added
+ * in WordPress 2.5.0.
  *
  * @since 2.3.2
  * @uses $wpdb
@@ -2837,10 +2866,17 @@ function _deprecated_function( $function, $version, $replacement = null ) {
 
 	// Allow plugin to filter the output error trigger
 	if ( WP_DEBUG && apply_filters( 'deprecated_function_trigger_error', true ) ) {
-		if ( ! is_null($replacement) )
-			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $function, $version, $replacement ) );
-		else
-			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
+		if ( function_exists( '__' ) ) {
+			if ( ! is_null( $replacement ) )
+				trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $function, $version, $replacement ) );
+			else
+				trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
+		} else {
+			if ( ! is_null( $replacement ) )
+				trigger_error( sprintf( '%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.', $function, $version, $replacement ) );
+			else
+				trigger_error( sprintf( '%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.', $function, $version ) );
+		}
 	}
 }
 
@@ -2877,10 +2913,17 @@ function _deprecated_file( $file, $version, $replacement = null, $message = '' )
 	// Allow plugin to filter the output error trigger
 	if ( WP_DEBUG && apply_filters( 'deprecated_file_trigger_error', true ) ) {
 		$message = empty( $message ) ? '' : ' ' . $message;
-		if ( ! is_null( $replacement ) )
-			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $file, $version, $replacement ) . $message );
-		else
-			trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $file, $version ) . $message );
+		if ( function_exists( '__' ) ) {
+			if ( ! is_null( $replacement ) )
+				trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.'), $file, $version, $replacement ) . $message );
+			else
+				trigger_error( sprintf( __('%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.'), $file, $version ) . $message );
+		} else {
+			if ( ! is_null( $replacement ) )
+				trigger_error( sprintf( '%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.', $file, $version, $replacement ) . $message );
+			else
+				trigger_error( sprintf( '%1$s is <strong>deprecated</strong> since version %2$s with no alternative available.', $file, $version ) . $message );
+		}
 	}
 }
 /**
@@ -2921,10 +2964,17 @@ function _deprecated_argument( $function, $version, $message = null ) {
 
 	// Allow plugin to filter the output error trigger
 	if ( WP_DEBUG && apply_filters( 'deprecated_argument_trigger_error', true ) ) {
-		if ( ! is_null( $message ) )
-			trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s'), $function, $version, $message ) );
-		else
-			trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
+		if ( function_exists( '__' ) ) {
+			if ( ! is_null( $message ) )
+				trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s'), $function, $version, $message ) );
+			else
+				trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
+		} else {
+			if ( ! is_null( $message ) )
+				trigger_error( sprintf( '%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s', $function, $version, $message ) );
+			else
+				trigger_error( sprintf( '%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available.', $function, $version ) );
+		}
 	}
 }
 
@@ -3011,7 +3061,7 @@ function apache_mod_loaded($mod, $default = false) {
 }
 
 /**
- * Check if IIS 7 supports pretty permalinks.
+ * Check if IIS 7+ supports pretty permalinks.
  *
  * @since 2.8.0
  *
@@ -3022,11 +3072,10 @@ function iis7_supports_permalinks() {
 
 	$supports_permalinks = false;
 	if ( $is_iis7 ) {
-		/* First we check if the DOMDocument class exists. If it does not exist,
-		 * which is the case for PHP 4.X, then we cannot easily update the xml configuration file,
-		 * hence we just bail out and tell user that pretty permalinks cannot be used.
-		 * This is not a big issue because PHP 4.X is going to be deprecated and for IIS it
-		 * is recommended to use PHP 5.X NTS.
+		/* First we check if the DOMDocument class exists. If it does not exist, then we cannot
+		 * easily update the xml configuration file, hence we just bail out and tell user that
+		 * pretty permalinks cannot be used.
+		 *
 		 * Next we check if the URL Rewrite Module 1.1 is loaded and enabled for the web site. When
 		 * URL Rewrite 1.1 is loaded it always sets a server variable called 'IIS_UrlRewriteModule'.
 		 * Lastly we make sure that PHP is running via FastCGI. This is important because if it runs
@@ -3308,7 +3357,7 @@ function _wp_timezone_choice_usort_callback( $a, $b ) {
 }
 
 /**
- * Gives a nicely formatted list of timezone strings. // temporary! Not in final
+ * Gives a nicely formatted list of timezone strings.
  *
  * @since 2.9.0
  *
@@ -3866,3 +3915,129 @@ function wp_is_stream( $path ) {
 function wp_checkdate( $month, $day, $year, $source_date ) {
 	return apply_filters( 'wp_checkdate', checkdate( $month, $day, $year ), $source_date );
 }
+
+/**
+ * Load the auth check for monitoring whether the user is still logged in.
+ *
+ * Can be disabled with remove_action( 'admin_enqueue_scripts', 'wp_auth_check_load' );
+ *
+ * This is disabled for certain screens where a login screen could cause an
+ * inconvenient interruption. A filter called wp_auth_check_load can be used
+ * for fine-grained control.
+ *
+ * @since 3.6.0
+ */
+function wp_auth_check_load() {
+	if ( ! is_admin() && ! is_user_logged_in() )
+		return;
+
+	if ( defined( 'IFRAME_REQUEST' ) )
+		return;
+
+	$screen = get_current_screen();
+	$hidden = array( 'update', 'update-network', 'update-core', 'update-core-network', 'upgrade', 'upgrade-network', 'network' );
+	$show = ! in_array( $screen->id, $hidden );
+
+	if ( apply_filters( 'wp_auth_check_load', $show, $screen ) ) {
+		wp_enqueue_style( 'wp-auth-check' );
+		wp_enqueue_script( 'wp-auth-check' );
+
+		add_action( 'admin_print_footer_scripts', 'wp_auth_check_html', 5 );
+		add_action( 'wp_print_footer_scripts', 'wp_auth_check_html', 5 );
+	}
+}
+
+/**
+ * Output the HTML that shows the wp-login dialog when the user is no longer logged in.
+ *
+ * @since 3.6.0
+ */
+function wp_auth_check_html() {
+	$login_url = wp_login_url();
+	$current_domain = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'];
+	$same_domain = ( strpos( $login_url, $current_domain ) === 0 );
+
+	if ( $same_domain && force_ssl_login() && ! force_ssl_admin() )
+		$same_domain = false;
+
+	// Let plugins change this if they know better.
+	$same_domain = apply_filters( 'wp_auth_check_same_domain', $same_domain );
+	$wrap_class = $same_domain ? 'hidden' : 'hidden fallback';
+
+	?>
+	<div id="wp-auth-check-wrap" class="<?php echo $wrap_class; ?>">
+	<div id="wp-auth-check-bg"></div>
+	<div id="wp-auth-check">
+	<div class="wp-auth-check-close" tabindex="0" title="<?php esc_attr_e('Close'); ?>"></div>
+	<?php
+
+	if ( $same_domain ) {
+		?>
+		<div id="wp-auth-check-form" data-src="<?php echo esc_url( add_query_arg( array( 'interim-login' => 1 ), $login_url ) ); ?>"></div>
+		<?php
+	}
+
+	?>
+	<div class="wp-auth-fallback">
+		<p><b class="wp-auth-fallback-expired" tabindex="0"><?php _e('Session expired'); ?></b></p>
+		<p><a href="<?php echo esc_url( $login_url ); ?>" target="_blank"><?php _e('Please log in again.'); ?></a>
+		<?php _e('The login page will open in a new window. After logging in you can close it and return to this page.'); ?></p>
+	</div>
+	</div>
+	</div>
+	<?php
+}
+
+/**
+ * Check whether a user is still logged in, for the heartbeat.
+ *
+ * Send a result that shows a log-in box if the user is no longer logged in,
+ * or if their cookie is within the grace period.
+ *
+ * @since 3.6.0
+ */
+function wp_auth_check( $response, $data ) {
+	$response['wp-auth-check'] = is_user_logged_in() && empty( $GLOBALS['login_grace_period'] );
+	return $response;
+}
+
+/**
+ * Return RegEx body to liberally match an opening HTML tag that:
+ * 1. Is self-closing or
+ * 2. Has no body but has a closing tag of the same name or
+ * 3. Contains a body and a closing tag of the same name
+ *
+ * Note: this RegEx does not balance inner tags and does not attempt to produce valid HTML
+ *
+ * @since 3.6.0
+ *
+ * @param string $tag An HTML tag name. Example: 'video'
+ * @return string
+ */
+function get_tag_regex( $tag ) {
+	if ( empty( $tag ) )
+		return;
+	return sprintf( '<%1$s[^<]*(?:>[\s\S]*<\/%1$s>|\s*\/>)', tag_escape( $tag ) );
+}
+
+/**
+ * Return a canonical form of the provided charset appropriate for passing to PHP
+ * functions such as htmlspecialchars() and charset html attributes.
+ *
+ * @link http://core.trac.wordpress.org/ticket/23688
+ * @since 3.6.0
+ *
+ * @param string A charset name
+ * @return string The canonical form of the charset
+ */
+function _canonical_charset( $charset ) {
+	if ( 'UTF-8' === $charset || 'utf-8' === $charset || 'utf8' === $charset ||
+		'UTF8' === $charset )
+		return 'UTF-8';
+
+	if ( 'ISO-8859-1' === $charset || 'iso-8859-1' === $charset ||
+		'iso8859-1' === $charset || 'ISO8859-1' === $charset )
+		return 'ISO-8859-1';
+
+	return $charset;
+}
diff --git a/wp-includes/functions.wp-scripts.php b/wp-includes/functions.wp-scripts.php
index 49b760f04..32778ab5a 100644
--- a/wp-includes/functions.wp-scripts.php
+++ b/wp-includes/functions.wp-scripts.php
@@ -27,7 +27,7 @@ function wp_print_scripts( $handles = false ) {
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 
 		if ( !$handles )
 			return array(); // No need to instantiate if nothing is there.
@@ -54,7 +54,7 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_scripts = new WP_Scripts();
 	}
 
@@ -66,7 +66,7 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f
 /**
  * Wrapper for $wp_scripts->localize().
  *
- * Used to localizes a script.
+ * Used to localize a script.
  * Works only if the script has already been added.
  * Accepts an associative array $l10n and creates JS object:
  * "$object_name" = {
@@ -88,7 +88,7 @@ function wp_localize_script( $handle, $object_name, $l10n ) {
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 
 		return false;
 	}
@@ -107,10 +107,30 @@ function wp_deregister_script( $handle ) {
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_scripts = new WP_Scripts();
 	}
 
+	// Do not allow accidental or negligent deregistering of critical scripts in the admin. Show minimal remorse if the correct hook is used.
+	if ( is_admin() && 'admin_enqueue_scripts' !== current_filter() ) {
+		$no = array(
+			'jquery', 'jquery-core', 'jquery-migrate', 'jquery-ui-core', 'jquery-ui-accordion',
+			'jquery-ui-autocomplete', 'jquery-ui-button', 'jquery-ui-datepicker', 'jquery-ui-dialog',
+			'jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-menu', 'jquery-ui-mouse',
+			'jquery-ui-position', 'jquery-ui-progressbar', 'jquery-ui-resizable', 'jquery-ui-selectable',
+			'jquery-ui-slider', 'jquery-ui-sortable', 'jquery-ui-spinner', 'jquery-ui-tabs',
+			'jquery-ui-tooltip', 'jquery-ui-widget',
+			'underscore', 'backbone',
+		);
+
+		if ( in_array( $handle, $no ) ) {
+			$message = sprintf( __( 'Do not deregister the %1$s script in the administration area. To target the frontend theme, use the %2$s hook.' ),
+				"<code>$handle</code>", '<code>wp_enqueue_scripts</code>' );
+			_doing_it_wrong( __FUNCTION__, $message, '3.6' );
+			return;
+		}
+	}
+
 	$wp_scripts->remove( $handle );
 }
 
@@ -127,7 +147,7 @@ function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_scripts = new WP_Scripts();
 	}
 
@@ -151,7 +171,7 @@ function wp_dequeue_script( $handle ) {
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_scripts = new WP_Scripts();
 	}
 
@@ -177,7 +197,7 @@ function wp_script_is( $handle, $list = 'enqueued' ) {
 	if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_scripts = new WP_Scripts();
 	}
 
diff --git a/wp-includes/functions.wp-styles.php b/wp-includes/functions.wp-styles.php
index 49095f3b7..617fd8241 100644
--- a/wp-includes/functions.wp-styles.php
+++ b/wp-includes/functions.wp-styles.php
@@ -28,7 +28,7 @@ function wp_print_styles( $handles = false ) {
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 
 		if ( !$handles )
 			return array(); // No need to instantiate if nothing is there.
@@ -55,7 +55,7 @@ function wp_add_inline_style( $handle, $data ) {
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
@@ -83,7 +83,7 @@ function wp_register_style( $handle, $src, $deps = array(), $ver = false, $media
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
@@ -104,7 +104,7 @@ function wp_deregister_style( $handle ) {
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
@@ -135,7 +135,7 @@ function wp_enqueue_style( $handle, $src = false, $deps = array(), $ver = false,
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
@@ -157,7 +157,7 @@ function wp_dequeue_style( $handle ) {
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
@@ -184,9 +184,35 @@ function wp_style_is( $handle, $list = 'enqueued' ) {
 	if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
 		if ( ! did_action( 'init' ) )
 			_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
-				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>init</code>' ), '3.3' );
+				'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
 		$wp_styles = new WP_Styles();
 	}
 
 	return (bool) $wp_styles->query( $handle, $list );
 }
+
+/**
+ * Add metadata to CSS style files.
+ *
+ * Works only if the stylesheet has already been added.
+ * Possible values for $key and $value:
+ *
+ * conditional string      comments for IE 6, lte IE 7 etc.
+ * rtl         bool|string to declare an RTL stylesheet
+ * suffix      string      optional suffix, used in combination with RTL
+ * alt         bool        for rel="alternate stylesheet"
+ * title       string      for preferred/alternate stylesheets
+ *
+ * @since 3.6.0
+ * @see WP_Dependencies::add_data()
+ *
+ * @param string $handle Script name.
+ * @param string $key Name of data point for which we're storing a value.
+ *  Values are 'conditional', 'rtl', and 'suffix', and 'alt', 'title'.
+ * @param mixed $data
+ * @return bool True on success, false on failure.
+ */
+function wp_style_add_data( $handle, $key, $value ) {
+	global $wp_styles;
+	return $wp_styles->add_data( $handle, $key, $value );
+}
diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php
index af3d572e5..b58676247 100644
--- a/wp-includes/general-template.php
+++ b/wp-includes/general-template.php
@@ -25,7 +25,8 @@ function get_header( $name = null ) {
 	do_action( 'get_header', $name );
 
 	$templates = array();
-	if ( isset($name) )
+	$name = (string) $name;
+	if ( '' !== $name )
 		$templates[] = "header-{$name}.php";
 
 	$templates[] = 'header.php';
@@ -54,7 +55,8 @@ function get_footer( $name = null ) {
 	do_action( 'get_footer', $name );
 
 	$templates = array();
-	if ( isset($name) )
+	$name = (string) $name;
+	if ( '' !== $name )
 		$templates[] = "footer-{$name}.php";
 
 	$templates[] = 'footer.php';
@@ -83,7 +85,8 @@ function get_sidebar( $name = null ) {
 	do_action( 'get_sidebar', $name );
 
 	$templates = array();
-	if ( isset($name) )
+	$name = (string) $name;
+	if ( '' !== $name )
 		$templates[] = "sidebar-{$name}.php";
 
 	$templates[] = 'sidebar.php';
@@ -120,7 +123,8 @@ function get_template_part( $slug, $name = null ) {
 	do_action( "get_template_part_{$slug}", $slug, $name );
 
 	$templates = array();
-	if ( isset($name) )
+	$name = (string) $name;
+	if ( '' !== $name )
 		$templates[] = "{$slug}-{$name}.php";
 
 	$templates[] = "{$slug}.php";
@@ -141,34 +145,56 @@ function get_template_part( $slug, $name = null ) {
  * form into the sidebar and also by the search widget in WordPress.
  *
  * There is also an action that is called whenever the function is run called,
- * 'get_search_form'. This can be useful for outputting JavaScript that the
+ * 'pre_get_search_form'. This can be useful for outputting JavaScript that the
  * search relies on or various formatting that applies to the beginning of the
  * search. To give a few examples of what it can be used for.
  *
  * @since 2.7.0
+ * @uses apply_filters() Calls 'search_form_format' filter to determine which type to use for the search field.
+ *  If set to 'html5', it changes to search input type and adds placeholder text.
+ *
  * @param boolean $echo Default to echo and not return the form.
  * @return string|null String when retrieving, null when displaying or if searchform.php exists.
  */
-function get_search_form($echo = true) {
-	do_action( 'get_search_form' );
+function get_search_form( $echo = true ) {
+	do_action( 'pre_get_search_form' );
+
+	$format = current_theme_supports( 'html5', 'search-form' ) ? 'html5' : 'xhtml';
+	$format = apply_filters( 'search_form_format', $format );
 
-	$search_form_template = locate_template('searchform.php');
+	$search_form_template = locate_template( 'searchform.php' );
 	if ( '' != $search_form_template ) {
-		require($search_form_template);
-		return;
+		ob_start();
+		require( $search_form_template );
+		$form = ob_get_clean();
+	} else {
+		if ( 'html5' == $format ) {
+			$form = '<form role="search" method="get" class="search-form" action="' . esc_url( home_url( '/' ) ) . '">
+				<label>
+					<span class="screen-reader-text">' . _x( 'Search for:', 'label' ) . '</span>
+					<input type="search" class="search-field" placeholder="' . esc_attr_x( 'Search &hellip;', 'placeholder' ) . '" value="' . get_search_query() . '" name="s" title="' . _x( 'Search for:', 'label' ) . '" />
+				</label>
+				<input type="submit" class="search-submit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />
+			</form>';
+		} else {
+			$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . esc_url( home_url( '/' ) ) . '">
+				<div>
+					<label class="screen-reader-text" for="s">' . _x( 'Search for:', 'label' ) . '</label>
+					<input type="text" value="' . get_search_query() . '" name="s" id="s" />
+					<input type="submit" id="searchsubmit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />
+				</div>
+			</form>';
+		}
 	}
 
-	$form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
-	<div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
-	<input type="text" value="' . get_search_query() . '" name="s" id="s" />
-	<input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
-	</div>
-	</form>';
+	$result = apply_filters( 'get_search_form', $form );
+	if ( null === $result )
+		$result = $form;
 
 	if ( $echo )
-		echo apply_filters('get_search_form', $form);
+		echo $result;
 	else
-		return apply_filters('get_search_form', $form);
+		return $result;
 }
 
 /**
@@ -199,12 +225,12 @@ function wp_loginout($redirect = '', $echo = true) {
 /**
  * Returns the Log Out URL.
  *
- * Returns the URL that allows the user to log out of the site
+ * Returns the URL that allows the user to log out of the site.
  *
  * @since 2.7.0
- * @uses wp_nonce_url() To protect against CSRF
- * @uses site_url() To generate the log in URL
- * @uses apply_filters() calls 'logout_url' hook on final logout url
+ * @uses wp_nonce_url() To protect against CSRF.
+ * @uses site_url() To generate the log out URL.
+ * @uses apply_filters() calls 'logout_url' hook on final logout URL.
  *
  * @param string $redirect Path to redirect to on logout.
  * @return string A log out URL.
@@ -224,11 +250,11 @@ function wp_logout_url($redirect = '') {
 /**
  * Returns the Log In URL.
  *
- * Returns the URL that allows the user to log in to the site
+ * Returns the URL that allows the user to log in to the site.
  *
  * @since 2.7.0
- * @uses site_url() To generate the log in URL
- * @uses apply_filters() calls 'login_url' hook on final login url
+ * @uses site_url() To generate the log in URL.
+ * @uses apply_filters() calls 'login_url' hook on final login URL.
  *
  * @param string $redirect Path to redirect to on login.
  * @param bool $force_reauth Whether to force reauthorization, even if a cookie is present. Default is false.
@@ -246,6 +272,21 @@ function wp_login_url($redirect = '', $force_reauth = false) {
 	return apply_filters('login_url', $login_url, $redirect);
 }
 
+/**
+ * Returns the user registration URL.
+ *
+ * Returns the URL that allows the user to register on the site.
+ *
+ * @since 3.6.0
+ * @uses site_url() To generate the registration URL.
+ * @uses apply_filters() calls 'register_url' hook on final URL.
+ *
+ * @return string
+ */
+function wp_registration_url() {
+	return apply_filters( 'register_url', site_url( 'wp-login.php?action=register', 'login' ) );
+}
+
 /**
  * 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.
@@ -255,21 +296,22 @@ function wp_login_url($redirect = '', $force_reauth = false) {
  * @return string|null String when retrieving, null when displaying.
  */
 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
-	 					'form_id' => 'loginform',
-						'label_username' => __( 'Username' ),
-						'label_password' => __( 'Password' ),
-						'label_remember' => __( 'Remember Me' ),
-						'label_log_in' => __( 'Log In' ),
-						'id_username' => 'user_login',
-						'id_password' => 'user_pass',
-						'id_remember' => 'rememberme',
-						'id_submit' => 'wp-submit',
-						'remember' => true,
-						'value_username' => '',
-						'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked
-					);
+	$defaults = array(
+		'echo' => true,
+		'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], // Default redirect is back to the current page
+		'form_id' => 'loginform',
+		'label_username' => __( 'Username' ),
+		'label_password' => __( 'Password' ),
+		'label_remember' => __( 'Remember Me' ),
+		'label_log_in' => __( 'Log In' ),
+		'id_username' => 'user_login',
+		'id_password' => 'user_pass',
+		'id_remember' => 'rememberme',
+		'id_submit' => 'wp-submit',
+		'remember' => true,
+		'value_username' => '',
+		'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked
+	);
 	$args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) );
 
 	$form = '
@@ -338,7 +380,7 @@ function wp_register( $before = '<li>', $after = '</li>', $echo = true ) {
 
 	if ( ! is_user_logged_in() ) {
 		if ( get_option('users_can_register') )
-			$link = $before . '<a href="' . site_url('wp-login.php?action=register', 'login') . '">' . __('Register') . '</a>' . $after;
+			$link = $before . '<a href="' . esc_url( wp_registration_url() ) . '">' . __('Register') . '</a>' . $after;
 		else
 			$link = '';
 	} else {
@@ -912,103 +954,97 @@ function wp_get_archives($args = '') {
 		$archive_week_end_date_format = get_option('date_format');
 	}
 
-	//filters
 	$where = apply_filters( 'getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
 	$join = apply_filters( 'getarchives_join', '', $r );
 
 	$output = '';
 
+	$last_changed = wp_cache_get( 'last_changed', 'posts' );
+	if ( ! $last_changed ) {
+		$last_changed = microtime();
+		wp_cache_set( 'last_changed', $last_changed, 'posts' );
+	}
+
 	if ( 'monthly' == $type ) {
 		$query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date $order $limit";
-		$key = md5($query);
-		$cache = wp_cache_get( 'wp_get_archives' , 'general');
-		if ( !isset( $cache[ $key ] ) ) {
-			$arcresults = $wpdb->get_results($query);
-			$cache[ $key ] = $arcresults;
-			wp_cache_set( 'wp_get_archives', $cache, 'general' );
-		} else {
-			$arcresults = $cache[ $key ];
+		$key = md5( $query );
+		$key = "wp_get_archives:$key:$last_changed";
+		if ( ! $results = wp_cache_get( $key, 'posts' ) ) {
+			$results = $wpdb->get_results( $query );
+			wp_cache_set( $key, $results, 'posts' );
 		}
-		if ( $arcresults ) {
+		if ( $results ) {
 			$afterafter = $after;
-			foreach ( (array) $arcresults as $arcresult ) {
-				$url = get_month_link( $arcresult->year, $arcresult->month );
+			foreach ( (array) $results as $result ) {
+				$url = get_month_link( $result->year, $result->month );
 				/* translators: 1: month name, 2: 4-digit year */
-				$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
+				$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($result->month), $result->year);
 				if ( $show_post_count )
-					$after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
+					$after = '&nbsp;('.$result->posts.')' . $afterafter;
 				$output .= get_archives_link($url, $text, $format, $before, $after);
 			}
 		}
 	} elseif ('yearly' == $type) {
 		$query = "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date) ORDER BY post_date $order $limit";
-		$key = md5($query);
-		$cache = wp_cache_get( 'wp_get_archives' , 'general');
-		if ( !isset( $cache[ $key ] ) ) {
-			$arcresults = $wpdb->get_results($query);
-			$cache[ $key ] = $arcresults;
-			wp_cache_set( 'wp_get_archives', $cache, 'general' );
-		} else {
-			$arcresults = $cache[ $key ];
+		$key = md5( $query );
+		$key = "wp_get_archives:$key:$last_changed";
+		if ( ! $results = wp_cache_get( $key, 'posts' ) ) {
+			$results = $wpdb->get_results( $query );
+			wp_cache_set( $key, $results, 'posts' );
 		}
-		if ($arcresults) {
+		if ( $results ) {
 			$afterafter = $after;
-			foreach ( (array) $arcresults as $arcresult) {
-				$url = get_year_link($arcresult->year);
-				$text = sprintf('%d', $arcresult->year);
+			foreach ( (array) $results as $result) {
+				$url = get_year_link($result->year);
+				$text = sprintf('%d', $result->year);
 				if ($show_post_count)
-					$after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
+					$after = '&nbsp;('.$result->posts.')' . $afterafter;
 				$output .= get_archives_link($url, $text, $format, $before, $after);
 			}
 		}
 	} elseif ( 'daily' == $type ) {
 		$query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(post_date) ORDER BY post_date $order $limit";
-		$key = md5($query);
-		$cache = wp_cache_get( 'wp_get_archives' , 'general');
-		if ( !isset( $cache[ $key ] ) ) {
-			$arcresults = $wpdb->get_results($query);
-			$cache[ $key ] = $arcresults;
-			wp_cache_set( 'wp_get_archives', $cache, 'general' );
-		} else {
-			$arcresults = $cache[ $key ];
+		$key = md5( $query );
+		$key = "wp_get_archives:$key:$last_changed";
+		if ( ! $results = wp_cache_get( $key, 'posts' ) ) {
+			$results = $wpdb->get_results( $query );
+			$cache[ $key ] = $results;
+			wp_cache_set( $key, $results, 'posts' );
 		}
-		if ( $arcresults ) {
+		if ( $results ) {
 			$afterafter = $after;
-			foreach ( (array) $arcresults as $arcresult ) {
-				$url	= get_day_link($arcresult->year, $arcresult->month, $arcresult->dayofmonth);
-				$date = sprintf('%1$d-%2$02d-%3$02d 00:00:00', $arcresult->year, $arcresult->month, $arcresult->dayofmonth);
+			foreach ( (array) $results as $result ) {
+				$url	= get_day_link($result->year, $result->month, $result->dayofmonth);
+				$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 ($show_post_count)
-					$after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
+					$after = '&nbsp;('.$result->posts.')'.$afterafter;
 				$output .= get_archives_link($url, $text, $format, $before, $after);
 			}
 		}
 	} elseif ( 'weekly' == $type ) {
 		$week = _wp_mysql_week( '`post_date`' );
 		$query = "SELECT DISTINCT $week AS `week`, YEAR( `post_date` ) AS `yr`, DATE_FORMAT( `post_date`, '%Y-%m-%d' ) AS `yyyymmdd`, count( `ID` ) AS `posts` FROM `$wpdb->posts` $join $where GROUP BY $week, YEAR( `post_date` ) ORDER BY `post_date` $order $limit";
-		$key = md5($query);
-		$cache = wp_cache_get( 'wp_get_archives' , 'general');
-		if ( !isset( $cache[ $key ] ) ) {
-			$arcresults = $wpdb->get_results($query);
-			$cache[ $key ] = $arcresults;
-			wp_cache_set( 'wp_get_archives', $cache, 'general' );
-		} else {
-			$arcresults = $cache[ $key ];
+		$key = md5( $query );
+		$key = "wp_get_archives:$key:$last_changed";
+		if ( ! $results = wp_cache_get( $key, 'posts' ) ) {
+			$results = $wpdb->get_results( $query );
+			wp_cache_set( $key, $results, 'posts' );
 		}
 		$arc_w_last = '';
 		$afterafter = $after;
-		if ( $arcresults ) {
-				foreach ( (array) $arcresults as $arcresult ) {
-					if ( $arcresult->week != $arc_w_last ) {
-						$arc_year = $arcresult->yr;
-						$arc_w_last = $arcresult->week;
-						$arc_week = get_weekstartend($arcresult->yyyymmdd, get_option('start_of_week'));
+		if ( $results ) {
+				foreach ( (array) $results as $result ) {
+					if ( $result->week != $arc_w_last ) {
+						$arc_year = $result->yr;
+						$arc_w_last = $result->week;
+						$arc_week = get_weekstartend($result->yyyymmdd, get_option('start_of_week'));
 						$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;', '=', $arcresult->week);
+						$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);
 						$text = $arc_week_start . $archive_week_separator . $arc_week_end;
 						if ($show_post_count)
-							$after = '&nbsp;('.$arcresult->posts.')'.$afterafter;
+							$after = '&nbsp;('.$result->posts.')'.$afterafter;
 						$output .= get_archives_link($url, $text, $format, $before, $after);
 					}
 				}
@@ -1016,23 +1052,20 @@ function wp_get_archives($args = '') {
 	} elseif ( ( 'postbypost' == $type ) || ('alpha' == $type) ) {
 		$orderby = ('alpha' == $type) ? 'post_title ASC ' : 'post_date DESC ';
 		$query = "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $limit";
-		$key = md5($query);
-		$cache = wp_cache_get( 'wp_get_archives' , 'general');
-		if ( !isset( $cache[ $key ] ) ) {
-			$arcresults = $wpdb->get_results($query);
-			$cache[ $key ] = $arcresults;
-			wp_cache_set( 'wp_get_archives', $cache, 'general' );
-		} else {
-			$arcresults = $cache[ $key ];
+		$key = md5( $query );
+		$key = "wp_get_archives:$key:$last_changed";
+		if ( ! $results = wp_cache_get( $key, 'posts' ) ) {
+			$results = $wpdb->get_results( $query );
+			wp_cache_set( $key, $results, 'posts' );
 		}
-		if ( $arcresults ) {
-			foreach ( (array) $arcresults as $arcresult ) {
-				if ( $arcresult->post_date != '0000-00-00 00:00:00' ) {
-					$url  = get_permalink( $arcresult );
-					if ( $arcresult->post_title )
-						$text = strip_tags( apply_filters( 'the_title', $arcresult->post_title, $arcresult->ID ) );
+		if ( $results ) {
+			foreach ( (array) $results as $result ) {
+				if ( $result->post_date != '0000-00-00 00:00:00' ) {
+					$url  = get_permalink( $result );
+					if ( $result->post_title )
+						$text = strip_tags( apply_filters( 'the_title', $result->post_title, $result->ID ) );
 					else
-						$text = $arcresult->ID;
+						$text = $result->ID;
 					$output .= get_archives_link($url, $text, $format, $before, $after);
 				}
 			}
@@ -1552,7 +1585,7 @@ function the_weekday() {
  * @param string $after Optional Output after the date.
  */
 function the_weekday_date($before='',$after='') {
-	global $wp_locale, $day, $previousweekday;
+	global $wp_locale, $currentday, $previousweekday;
 	$the_weekday_date = '';
 	if ( $currentday != $previousweekday ) {
 		$the_weekday_date .= $before;
@@ -1600,7 +1633,7 @@ function feed_links( $args = array() ) {
 		'separator'	=> _x('&raquo;', 'feed link'),
 		/* translators: 1: blog title, 2: separator (raquo) */
 		'feedtitle'	=> __('%1$s %2$s Feed'),
-		/* translators: %s: blog title, 2: separator (raquo) */
+		/* translators: 1: blog title, 2: separator (raquo) */
 		'comstitle'	=> __('%1$s %2$s Comments Feed'),
 	);
 
@@ -2284,3 +2317,23 @@ function __checked_selected_helper( $helper, $current, $echo, $type ) {
 
 	return $result;
 }
+
+/**
+ * Default settings for heartbeat
+ *
+ * Outputs the nonce used in the heartbeat XHR
+ *
+ * @since 3.6.0
+ *
+ * @param array $settings
+ * @return array $settings
+ */
+function wp_heartbeat_settings( $settings ) {
+	if ( ! is_admin() )
+		$settings['ajaxurl'] = admin_url( 'admin-ajax.php', 'relative' );
+
+	if ( is_user_logged_in() )
+		$settings['nonce'] = wp_create_nonce( 'heartbeat-nonce' );
+
+	return $settings;
+}
diff --git a/wp-includes/http.php b/wp-includes/http.php
index a196f688b..59dfa55ce 100644
--- a/wp-includes/http.php
+++ b/wp-includes/http.php
@@ -28,6 +28,90 @@ function _wp_http_get_object() {
 	return $http;
 }
 
+/**
+ * Retrieve the raw response from a safe HTTP request.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @see wp_remote_request() For more information on the response array format
+ * 	and default arguments.
+ *
+ * @since 3.6.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_request( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->request( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from a safe HTTP request using the GET method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @see wp_remote_request() For more information on the response array format
+ * 	and default arguments.
+ *
+ * @since 3.6.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_get( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->get( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from a safe HTTP request using the POST method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @see wp_remote_request() For more information on the response array format
+ * 	and default arguments.
+ *
+ * @since 3.6.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_post( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->post( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from a safe HTTP request using the HEAD method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @see wp_remote_request() For more information on the response array format
+ * 	and default arguments.
+ *
+ * @since 3.6.0
+ *
+ * @param string $url Site URL to retrieve.
+ * @param array $args Optional. Override the defaults.
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_head( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->head( $url, $args );
+}
+
 /**
  * Retrieve the raw response from the HTTP request.
  *
@@ -49,6 +133,25 @@ function _wp_http_get_object() {
  * This function is called first to make the request and there are other API
  * functions to abstract out the above convoluted setup.
  *
+ * List of default arguments:
+ * 'method'      => 'GET'
+ *  - Default 'GET'  for wp_remote_get()
+ *  - Default 'POST' for wp_remote_post()
+ *  - Default 'HEAD' for wp_remote_head()
+ * 'timeout'     => 5
+ * 'redirection' => 5
+ * 'httpversion' => '1.0'
+ * 'user-agent'  => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+ * 'blocking'    => true
+ * 'headers'     => array()
+ * 'cookies'     => array()
+ * 'body'        => null
+ * 'compress'    => false,
+ * 'decompress'  => true,
+ * 'sslverify'   => true,
+ * 'stream'      => false,
+ * 'filename'    => null
+ *
  * @since 2.7.0
  *
  * @param string $url Site URL to retrieve.
@@ -63,7 +166,7 @@ function wp_remote_request($url, $args = array()) {
 /**
  * Retrieve the raw response from the HTTP request using the GET method.
  *
- * @see wp_remote_request() For more information on the response array format.
+ * @see wp_remote_request() For more information on the response array format and default arguments.
  *
  * @since 2.7.0
  *
@@ -79,7 +182,7 @@ function wp_remote_get($url, $args = array()) {
 /**
  * Retrieve the raw response from the HTTP request using the POST method.
  *
- * @see wp_remote_request() For more information on the response array format.
+ * @see wp_remote_request() For more information on the response array format and default arguments.
  *
  * @since 2.7.0
  *
@@ -95,7 +198,7 @@ function wp_remote_post($url, $args = array()) {
 /**
  * Retrieve the raw response from the HTTP request using the HEAD method.
  *
- * @see wp_remote_request() For more information on the response array format.
+ * @see wp_remote_request() For more information on the response array format and default arguments.
  *
  * @since 2.7.0
  *
@@ -320,12 +423,12 @@ function send_origin_headers() {
  * @return mixed URL or false on failure.
  */
 function wp_http_validate_url( $url ) {
-	$url = esc_url_raw( $url, array( 'http', 'https' ) );
+	$url = wp_kses_bad_protocol( $url, array( 'http', 'https' ) );
 	if ( ! $url )
 		return false;
 
 	$parsed_url = @parse_url( $url );
-	if ( ! $parsed_url )
+	if ( ! $parsed_url || empty( $parsed_url['host'] ) )
 		return false;
 
 	if ( isset( $parsed_url['user'] ) || isset( $parsed_url['pass'] ) )
@@ -348,15 +451,16 @@ function wp_http_validate_url( $url ) {
 				$ip = false;
 		}
 		if ( $ip ) {
-			if ( '127.0.0.1' === $ip )
-				return false;
 			$parts = array_map( 'intval', explode( '.', $ip ) );
-			if ( 10 === $parts[0] )
-				return false;
-			if ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
-				return false;
-			if ( 192 === $parts[0] && 168 === $parts[1] )
-				return false;
+			if ( '127.0.0.1' === $ip
+				|| ( 10 === $parts[0] )
+				|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
+				|| ( 192 === $parts[0] && 168 === $parts[1] )
+			) {
+				// If host appears local, reject unless specifically allowed.
+				if ( ! apply_filters( 'http_request_host_is_external', false, $host, $url ) )
+					return false;
+			}
 		}
 	}
 
@@ -372,3 +476,44 @@ function wp_http_validate_url( $url ) {
 
 	return false;
 }
+
+/**
+ * Whitelists allowed redirect hosts for safe HTTP requests as well.
+ *
+ * Attached to the http_request_host_is_external filter.
+ *
+ * @since 3.6.0
+ *
+ * @param bool $is_external
+ * @param string $host
+ * @return bool
+ */
+function allowed_http_request_hosts( $is_external, $host ) {
+	if ( ! $is_external && wp_validate_redirect( 'http://' . $host ) )
+		$is_external = true;
+	return $is_external;
+}
+
+/**
+ * Whitelists any domain in a multisite installation for safe HTTP requests.
+ *
+ * Attached to the http_request_host_is_external filter.
+ *
+ * @since 3.6.0
+ *
+ * @param bool $is_external
+ * @param string $host
+ * @return bool
+ */
+function ms_allowed_http_request_hosts( $is_external, $host ) {
+	global $wpdb, $current_site;
+	static $queried = array();
+	if ( $is_external )
+		return $is_external;
+	if ( $host === $current_site->domain )
+		return true;
+	if ( isset( $queried[ $host ] ) )
+		return $queried[ $host ];
+	$queried[ $host ] = (bool) $wpdb->get_var( $wpdb->prepare( "SELECT domain FROM $wpdb->blogs WHERE domain = %s LIMIT 1", $host ) );
+	return $queried[ $host ];
+}
diff --git a/wp-includes/js/admin-bar.js b/wp-includes/js/admin-bar.js
index cb4e11849..b75823ce8 100644
--- a/wp-includes/js/admin-bar.js
+++ b/wp-includes/js/admin-bar.js
@@ -1,8 +1,9 @@
 // use jQuery and hoverIntent if loaded
 if ( typeof(jQuery) != 'undefined' ) {
-	if ( typeof(jQuery.fn.hoverIntent) == 'undefined' )
-		(function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
-
+	if ( typeof(jQuery.fn.hoverIntent) == 'undefined' ) {
+		// hoverIntent r6 - Copy of wp-includes/js/hoverIntent.min.js
+		(function(a){a.fn.hoverIntent=function(m,d,h){var j={interval:100,sensitivity:7,timeout:0};if(typeof m==="object"){j=a.extend(j,m)}else{if(a.isFunction(d)){j=a.extend(j,{over:m,out:d,selector:h})}else{j=a.extend(j,{over:m,out:m,selector:d})}}var l,k,g,f;var e=function(n){l=n.pageX;k=n.pageY};var c=function(o,n){n.hoverIntent_t=clearTimeout(n.hoverIntent_t);if((Math.abs(g-l)+Math.abs(f-k))<j.sensitivity){a(n).off("mousemove.hoverIntent",e);n.hoverIntent_s=1;return j.over.apply(n,[o])}else{g=l;f=k;n.hoverIntent_t=setTimeout(function(){c(o,n)},j.interval)}};var i=function(o,n){n.hoverIntent_t=clearTimeout(n.hoverIntent_t);n.hoverIntent_s=0;return j.out.apply(n,[o])};var b=function(p){var o=jQuery.extend({},p);var n=this;if(n.hoverIntent_t){n.hoverIntent_t=clearTimeout(n.hoverIntent_t)}if(p.type=="mouseenter"){g=o.pageX;f=o.pageY;a(n).on("mousemove.hoverIntent",e);if(n.hoverIntent_s!=1){n.hoverIntent_t=setTimeout(function(){c(o,n)},j.interval)}}else{a(n).off("mousemove.hoverIntent",e);if(n.hoverIntent_s==1){n.hoverIntent_t=setTimeout(function(){i(o,n)},j.timeout)}}};return this.on({"mouseenter.hoverIntent":b,"mouseleave.hoverIntent":b},j.selector)}})(jQuery);
+	}
 	jQuery(document).ready(function($){
 		var adminbar = $('#wpadminbar'), refresh, touchOpen, touchClose, disableHoverIntent = false;
 
@@ -124,12 +125,25 @@ if ( typeof(jQuery) != 'undefined' ) {
 
 			var id = $(this).attr('href');
 
-			if ( $.browser.webkit && id && id.charAt(0) == '#' ) {
+			var ua = navigator.userAgent.toLowerCase();
+			if ( ua.indexOf('applewebkit') != -1 && id && id.charAt(0) == '#' ) {
 				setTimeout(function () {
 					$(id).focus();
 				}, 100);
 			}
 		});
+
+		// Empty sessionStorage on logging out
+		if ( 'sessionStorage' in window ) {
+			$('#wp-admin-bar-logout a').click( function() {
+				try {
+					for ( var key in sessionStorage ) {
+						if ( key.indexOf('wp-autosave-') != -1 )
+							sessionStorage.removeItem(key);
+					}
+				} catch(e) {}
+			});
+		}
 	});
 } else {
 	(function(d, w) {
@@ -308,6 +322,17 @@ if ( typeof(jQuery) != 'undefined' ) {
 				addEvent(aB, 'click', function(e) {
 					scrollToTop( e.target || e.srcElement );
 				});
+
+				addEvent( document.getElementById('wp-admin-bar-logout'), 'click', function() {
+					if ( 'sessionStorage' in window ) {
+						try {
+							for ( var key in sessionStorage ) {
+								if ( key.indexOf('wp-autosave-') != -1 )
+									sessionStorage.removeItem(key);
+							}
+						} catch(e) {}
+					}
+				});
 			}
 
 			if ( w.location.hash )
diff --git a/wp-includes/js/admin-bar.min.js b/wp-includes/js/admin-bar.min.js
index b876704ca..0da00594a 100644
--- a/wp-includes/js/admin-bar.min.js
+++ b/wp-includes/js/admin-bar.min.js
@@ -1 +1 @@
-if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(p,r){var g={sensitivity:7,interval:100,timeout:0};g=b.extend(g,r?{over:p,out:r}:p);var a,f,t,v;var u=function(c){a=c.pageX;f=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(t-a)+Math.abs(v-f))<g.sensitivity){b(d).unbind("mousemove",u);d.hoverIntent_s=1;return g.over.apply(d,[c])}else{t=a;v=f;d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}};var s=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return g.out.apply(d,[c])};var x=function(e){var d=this;var c=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(c&&c!=this){try{c=c.parentNode}catch(e){c=this}}if(c==this){if(b.browser.mozilla){if(e.type=="mouseout"){d.mtout=setTimeout(function(){q(e,d)},30)}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}}}return}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}q(e,d)}};var q=function(e,d){var c=jQuery.extend({},e);if(d.hoverIntent_t){d.hoverIntent_t=clearTimeout(d.hoverIntent_t)}if(e.type=="mouseover"){t=c.pageX;v=c.pageY;b(d).bind("mousemove",u);if(d.hoverIntent_s!=1){d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}}else{b(d).unbind("mousemove",u);if(d.hoverIntent_s==1){d.hoverIntent_t=setTimeout(function(){s(c,d)},g.timeout)}}};return this.mouseover(x).mouseout(x)}})(jQuery)}jQuery(document).ready(function(e){var d=e("#wpadminbar"),c,a,b,f=false;c=function(g,j){var k=e(j),h=k.attr("tabindex");if(h){k.attr("tabindex","0").attr("tabindex",h)}};a=function(g){d.find("li.menupop").on("click.wp-mobile-hover",function(i){var h=e(this);if(!h.hasClass("hover")){i.preventDefault();d.find("li.menupop.hover").removeClass("hover");h.addClass("hover")}if(g){e("li.menupop").off("click.wp-mobile-hover");f=false}})};b=function(){var g=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";e(document.body).on(g+".wp-mobile-hover",function(h){if(!e(h.target).closest("#wpadminbar").length){d.find("li.menupop.hover").removeClass("hover")}})};d.removeClass("nojq").removeClass("nojs");if("ontouchstart" in window){d.on("touchstart",function(){a(true);f=true});b()}else{if(/IEMobile\/[1-9]/.test(navigator.userAgent)){a();b()}}d.find("li.menupop").hoverIntent({over:function(g){if(f){return}e(this).addClass("hover")},out:function(g){if(f){return}e(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});if(window.location.hash){window.scrollBy(0,-32)}e("#wp-admin-bar-get-shortlink").click(function(g){g.preventDefault();e(this).addClass("selected").children(".shortlink-input").blur(function(){e(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});e("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(i){if(i.which!=13){return}var h=e(i.target),g=h.closest("ab-sub-wrapper");i.stopPropagation();i.preventDefault();if(!g.length){g=e("#wpadminbar .quicklinks")}g.find(".menupop").removeClass("hover");h.parent().toggleClass("hover");h.siblings(".ab-sub-wrapper").find(".ab-item").each(c)}).each(c);e("#wpadminbar .ab-item").bind("keydown.adminbar",function(h){if(h.which!=27){return}var g=e(h.target);h.stopPropagation();h.preventDefault();g.closest(".hover").removeClass("hover").children(".ab-item").focus();g.siblings(".ab-sub-wrapper").find(".ab-item").each(c)});e("#wpadminbar").click(function(g){if(g.target.id!="wpadminbar"&&g.target.id!="wp-admin-bar-top-secondary"){return}g.preventDefault();e("html, body").animate({scrollTop:0},"fast")});e(".screen-reader-shortcut").keydown(function(g){if(13!=g.which){return}var h=e(this).attr("href");if(e.browser.webkit&&h&&h.charAt(0)=="#"){setTimeout(function(){e(h).focus()},100)}})})}else{(function(j,l){var e=function(o,n,d){if(o.addEventListener){o.addEventListener(n,d,false)}else{if(o.attachEvent){o.attachEvent("on"+n,function(){return d.call(o,window.event)})}}},f,g=new RegExp("\\bhover\\b","g"),b=[],k=new RegExp("\\bselected\\b","g"),h=function(n){var d=b.length;while(d--){if(b[d]&&n==b[d][1]){return b[d][0]}}return false},i=function(u){var o,d,r,n,q,s,v=[],p=0;while(u&&u!=f&&u!=j){if("LI"==u.nodeName.toUpperCase()){v[v.length]=u;d=h(u);if(d){clearTimeout(d)}u.className=u.className?(u.className.replace(g,"")+" hover"):"hover";n=u}u=u.parentNode}if(n&&n.parentNode){q=n.parentNode;if(q&&"UL"==q.nodeName.toUpperCase()){o=q.childNodes.length;while(o--){s=q.childNodes[o];if(s!=n){s.className=s.className?s.className.replace(k,""):""}}}}o=b.length;while(o--){r=false;p=v.length;while(p--){if(v[p]==b[o][1]){r=true}}if(!r){b[o][1].className=b[o][1].className?b[o][1].className.replace(g,""):""}}},m=function(d){while(d&&d!=f&&d!=j){if("LI"==d.nodeName.toUpperCase()){(function(n){var o=setTimeout(function(){n.className=n.className?n.className.replace(g,""):""},500);b[b.length]=[o,n]})(d)}d=d.parentNode}},c=function(q){var o,d,p,n=q.target||q.srcElement;while(true){if(!n||n==j||n==f){return}if(n.id&&n.id=="wp-admin-bar-get-shortlink"){break}n=n.parentNode}if(q.preventDefault){q.preventDefault()}q.returnValue=false;if(-1==n.className.indexOf("selected")){n.className+=" selected"}for(o=0,d=n.childNodes.length;o<d;o++){p=n.childNodes[o];if(p.className&&-1!=p.className.indexOf("shortlink-input")){p.focus();p.select();p.onblur=function(){n.className=n.className?n.className.replace(k,""):""};break}}return false},a=function(n){var s,q,p,d,r,o;if(n.id!="wpadminbar"&&n.id!="wp-admin-bar-top-secondary"){return}s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(s<1){return}o=s>800?130:100;q=Math.min(12,Math.round(s/o));p=s>800?Math.round(s/30):Math.round(s/20);d=[];r=0;while(s){s-=p;if(s<0){s=0}d.push(s);setTimeout(function(){window.scrollTo(0,d.shift())},r*q);r++}};e(l,"load",function(){f=j.getElementById("wpadminbar");if(j.body&&f){j.body.appendChild(f);if(f.className){f.className=f.className.replace(/nojs/,"")}e(f,"mouseover",function(d){i(d.target||d.srcElement)});e(f,"mouseout",function(d){m(d.target||d.srcElement)});e(f,"click",c);e(f,"click",function(d){a(d.target||d.srcElement)})}if(l.location.hash){l.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
+if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(a,v,r){var p={interval:100,sensitivity:7,timeout:0};if(typeof a==="object"){p=b.extend(p,a)}else{if(b.isFunction(v)){p=b.extend(p,{over:a,out:v,selector:r})}else{p=b.extend(p,{over:a,out:a,selector:v})}}var n,o,s,t;var u=function(c){n=c.pageX;o=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(s-n)+Math.abs(t-o))<p.sensitivity){b(d).off("mousemove.hoverIntent",u);d.hoverIntent_s=1;return p.over.apply(d,[c])}else{s=n;t=o;d.hoverIntent_t=setTimeout(function(){w(c,d)},p.interval)}};var q=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return p.out.apply(d,[c])};var x=function(c){var d=jQuery.extend({},c);var e=this;if(e.hoverIntent_t){e.hoverIntent_t=clearTimeout(e.hoverIntent_t)}if(c.type=="mouseenter"){s=d.pageX;t=d.pageY;b(e).on("mousemove.hoverIntent",u);if(e.hoverIntent_s!=1){e.hoverIntent_t=setTimeout(function(){w(d,e)},p.interval)}}else{b(e).off("mousemove.hoverIntent",u);if(e.hoverIntent_s==1){e.hoverIntent_t=setTimeout(function(){q(d,e)},p.timeout)}}};return this.on({"mouseenter.hoverIntent":x,"mouseleave.hoverIntent":x},p.selector)}})(jQuery)}jQuery(document).ready(function(e){var d=e("#wpadminbar"),c,a,b,f=false;c=function(g,j){var k=e(j),h=k.attr("tabindex");if(h){k.attr("tabindex","0").attr("tabindex",h)}};a=function(g){d.find("li.menupop").on("click.wp-mobile-hover",function(i){var h=e(this);if(!h.hasClass("hover")){i.preventDefault();d.find("li.menupop.hover").removeClass("hover");h.addClass("hover")}if(g){e("li.menupop").off("click.wp-mobile-hover");f=false}})};b=function(){var g=/Mobile\/.+Safari/.test(navigator.userAgent)?"touchstart":"click";e(document.body).on(g+".wp-mobile-hover",function(h){if(!e(h.target).closest("#wpadminbar").length){d.find("li.menupop.hover").removeClass("hover")}})};d.removeClass("nojq").removeClass("nojs");if("ontouchstart" in window){d.on("touchstart",function(){a(true);f=true});b()}else{if(/IEMobile\/[1-9]/.test(navigator.userAgent)){a();b()}}d.find("li.menupop").hoverIntent({over:function(g){if(f){return}e(this).addClass("hover")},out:function(g){if(f){return}e(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});if(window.location.hash){window.scrollBy(0,-32)}e("#wp-admin-bar-get-shortlink").click(function(g){g.preventDefault();e(this).addClass("selected").children(".shortlink-input").blur(function(){e(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});e("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(i){if(i.which!=13){return}var h=e(i.target),g=h.closest("ab-sub-wrapper");i.stopPropagation();i.preventDefault();if(!g.length){g=e("#wpadminbar .quicklinks")}g.find(".menupop").removeClass("hover");h.parent().toggleClass("hover");h.siblings(".ab-sub-wrapper").find(".ab-item").each(c)}).each(c);e("#wpadminbar .ab-item").bind("keydown.adminbar",function(h){if(h.which!=27){return}var g=e(h.target);h.stopPropagation();h.preventDefault();g.closest(".hover").removeClass("hover").children(".ab-item").focus();g.siblings(".ab-sub-wrapper").find(".ab-item").each(c)});e("#wpadminbar").click(function(g){if(g.target.id!="wpadminbar"&&g.target.id!="wp-admin-bar-top-secondary"){return}g.preventDefault();e("html, body").animate({scrollTop:0},"fast")});e(".screen-reader-shortcut").keydown(function(h){if(13!=h.which){return}var i=e(this).attr("href");var g=navigator.userAgent.toLowerCase();if(g.indexOf("applewebkit")!=-1&&i&&i.charAt(0)=="#"){setTimeout(function(){e(i).focus()},100)}});if("sessionStorage" in window){e("#wp-admin-bar-logout a").click(function(){try{for(var g in sessionStorage){if(g.indexOf("wp-autosave-")!=-1){sessionStorage.removeItem(g)}}}catch(h){}})}})}else{(function(j,l){var e=function(o,n,d){if(o.addEventListener){o.addEventListener(n,d,false)}else{if(o.attachEvent){o.attachEvent("on"+n,function(){return d.call(o,window.event)})}}},f,g=new RegExp("\\bhover\\b","g"),b=[],k=new RegExp("\\bselected\\b","g"),h=function(n){var d=b.length;while(d--){if(b[d]&&n==b[d][1]){return b[d][0]}}return false},i=function(u){var o,d,r,n,q,s,v=[],p=0;while(u&&u!=f&&u!=j){if("LI"==u.nodeName.toUpperCase()){v[v.length]=u;d=h(u);if(d){clearTimeout(d)}u.className=u.className?(u.className.replace(g,"")+" hover"):"hover";n=u}u=u.parentNode}if(n&&n.parentNode){q=n.parentNode;if(q&&"UL"==q.nodeName.toUpperCase()){o=q.childNodes.length;while(o--){s=q.childNodes[o];if(s!=n){s.className=s.className?s.className.replace(k,""):""}}}}o=b.length;while(o--){r=false;p=v.length;while(p--){if(v[p]==b[o][1]){r=true}}if(!r){b[o][1].className=b[o][1].className?b[o][1].className.replace(g,""):""}}},m=function(d){while(d&&d!=f&&d!=j){if("LI"==d.nodeName.toUpperCase()){(function(n){var o=setTimeout(function(){n.className=n.className?n.className.replace(g,""):""},500);b[b.length]=[o,n]})(d)}d=d.parentNode}},c=function(q){var o,d,p,n=q.target||q.srcElement;while(true){if(!n||n==j||n==f){return}if(n.id&&n.id=="wp-admin-bar-get-shortlink"){break}n=n.parentNode}if(q.preventDefault){q.preventDefault()}q.returnValue=false;if(-1==n.className.indexOf("selected")){n.className+=" selected"}for(o=0,d=n.childNodes.length;o<d;o++){p=n.childNodes[o];if(p.className&&-1!=p.className.indexOf("shortlink-input")){p.focus();p.select();p.onblur=function(){n.className=n.className?n.className.replace(k,""):""};break}}return false},a=function(n){var s,q,p,d,r,o;if(n.id!="wpadminbar"&&n.id!="wp-admin-bar-top-secondary"){return}s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(s<1){return}o=s>800?130:100;q=Math.min(12,Math.round(s/o));p=s>800?Math.round(s/30):Math.round(s/20);d=[];r=0;while(s){s-=p;if(s<0){s=0}d.push(s);setTimeout(function(){window.scrollTo(0,d.shift())},r*q);r++}};e(l,"load",function(){f=j.getElementById("wpadminbar");if(j.body&&f){j.body.appendChild(f);if(f.className){f.className=f.className.replace(/nojs/,"")}e(f,"mouseover",function(d){i(d.target||d.srcElement)});e(f,"mouseout",function(d){m(d.target||d.srcElement)});e(f,"click",c);e(f,"click",function(d){a(d.target||d.srcElement)});e(document.getElementById("wp-admin-bar-logout"),"click",function(){if("sessionStorage" in window){try{for(var d in sessionStorage){if(d.indexOf("wp-autosave-")!=-1){sessionStorage.removeItem(d)}}}catch(n){}}})}if(l.location.hash){l.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
diff --git a/wp-includes/js/autosave.js b/wp-includes/js/autosave.js
index 3920d3606..6cd6a47fd 100644
--- a/wp-includes/js/autosave.js
+++ b/wp-includes/js/autosave.js
@@ -1,8 +1,17 @@
-var autosave, autosaveLast = '', autosavePeriodical, autosaveOldMessage = '', autosaveDelayPreview = false, notSaved = true, blockSave = false, fullscreen, autosaveLockRelease = true;
+var autosave, autosaveLast = '', autosavePeriodical, autosaveDelayPreview = false, notSaved = true, blockSave = false, fullscreen, autosaveLockRelease = true;
 
 jQuery(document).ready( function($) {
 
-	autosaveLast = ( $('#post #title').val() || '' ) + ( $('#post #content').val() || '' );
+	if ( $('#wp-content-wrap').hasClass('tmce-active') && typeof switchEditors != 'undefined' ) {
+		autosaveLast = wp.autosave.getCompareString({
+			post_title : $('#title').val() || '',
+			content : switchEditors.pre_wpautop( $('#content').val() ) || '',
+			excerpt : $('#excerpt').val() || ''
+		});
+	} else {
+		autosaveLast = wp.autosave.getCompareString();
+	}
+
 	autosavePeriodical = $.schedule({time: autosaveL10n.autosaveInterval * 1000, func: function() { autosave(); }, repeat: true, protect: true});
 
 	//Disable autosave after the form has been submitted
@@ -28,21 +37,23 @@ jQuery(document).ready( function($) {
 	});
 
 	window.onbeforeunload = function(){
-		var mce = typeof(tinymce) != 'undefined' ? tinymce.activeEditor : false, title, content;
+		var editor = typeof(tinymce) != 'undefined' ? tinymce.activeEditor : false, compareString;
 
-		if ( mce && !mce.isHidden() ) {
-			if ( mce.isDirty() )
+		if ( editor && ! editor.isHidden() ) {
+			if ( editor.isDirty() )
 				return autosaveL10n.saveAlert;
 		} else {
 			if ( fullscreen && fullscreen.settings.visible ) {
-				title = $('#wp-fullscreen-title').val() || '';
-				content = $("#wp_mce_fullscreen").val() || '';
+				compareString = wp.autosave.getCompareString({
+					post_title: $('#wp-fullscreen-title').val() || '',
+					content: $('#wp_mce_fullscreen').val() || '',
+					excerpt: $('#excerpt').val() || ''
+				});
 			} else {
-				title = $('#post #title').val() || '';
-				content = $('#post #content').val() || '';
+				compareString = wp.autosave.getCompareString();
 			}
 
-			if ( ( title || content ) && title + content != autosaveLast )
+			if ( compareString != autosaveLast )
 				return autosaveL10n.saveAlert;
 		}
 	};
@@ -87,7 +98,8 @@ jQuery(document).ready( function($) {
 		 * Workaround for WebKit bug preventing a form submitting twice to the same action.
 		 * https://bugs.webkit.org/show_bug.cgi?id=28633
 		 */
-		if ( $.browser.safari ) {
+		var ua = navigator.userAgent.toLowerCase();
+		if ( ua.indexOf('safari') != -1 && ua.indexOf('chrome') == -1 ) {
 			$('form#post').attr('action', function(index, value) {
 				return value + '?t=' + new Date().getTime();
 			});
@@ -127,51 +139,46 @@ jQuery(document).ready( function($) {
 			delayed_autosave();
 		});
 	}
+
+	// When connection is lost, keep user from submitting changes.
+	$(document).on('heartbeat-connection-lost.autosave', function( e, error ) {
+		if ( 'timeout' === error ) {
+			var notice = $('#lost-connection-notice');
+			if ( ! wp.autosave.local.hasStorage ) {
+				notice.find('.hide-if-no-sessionstorage').hide();
+			}
+			notice.show();
+			autosave_disable_buttons();
+		}
+	}).on('heartbeat-connection-restored.autosave', function() {
+		$('#lost-connection-notice').hide();
+		autosave_enable_buttons();
+	});
 });
 
-function autosave_parse_response(response) {
-	var res = wpAjax.parseAjaxResponse(response, 'autosave'), message = '', postID, sup;
+function autosave_parse_response( response ) {
+	var res = wpAjax.parseAjaxResponse(response, 'autosave'), post_id, sup;
 
 	if ( res && res.responses && res.responses.length ) {
-		message = res.responses[0].data; // The saved message or error.
-		// someone else is editing: disable autosave, set errors
 		if ( res.responses[0].supplemental ) {
 			sup = res.responses[0].supplemental;
-			if ( 'disable' == sup['disable_autosave'] ) {
-				autosave = function() {};
-				autosaveLockRelease = false;
-				res = { errors: true };
-			}
-
-			if ( sup['active-post-lock'] ) {
-				jQuery('#active_post_lock').val( sup['active-post-lock'] );
-			}
-
-			if ( sup['alert'] ) {
-				jQuery('#autosave-alert').remove();
-				jQuery('#titlediv').after('<div id="autosave-alert" class="error below-h2"><p>' + sup['alert'] + '</p></div>');
-			}
 
-			jQuery.each(sup, function(selector, value) {
-				if ( selector.match(/^replace-/) ) {
-					jQuery('#'+selector.replace('replace-', '')).val(value);
-				}
+			jQuery.each( sup, function( selector, value ) {
+				if ( selector.match(/^replace-/) )
+					jQuery( '#' + selector.replace('replace-', '') ).val( value );
 			});
 		}
 
-		// if no errors: add slug UI
+		// if no errors: add slug UI and update autosave-message
 		if ( !res.errors ) {
-			postID = parseInt( res.responses[0].id, 10 );
-			if ( !isNaN(postID) && postID > 0 ) {
-				autosave_update_slug(postID);
-			}
+			if ( post_id = parseInt( res.responses[0].id, 10 ) )
+				autosave_update_slug( post_id );
+
+			if ( res.responses[0].data ) // update autosave message
+				jQuery('.autosave-message').text( res.responses[0].data );
 		}
 	}
-	if ( message ) { // update autosave message
-		jQuery('.autosave-message').html(message);
-	} else if ( autosaveOldMessage && res ) {
-		jQuery('.autosave-message').html( autosaveOldMessage );
-	}
+
 	return res;
 }
 
@@ -185,15 +192,19 @@ function autosave_saved(response) {
 // called when autosaving new post
 function autosave_saved_new(response) {
 	blockSave = false;
-	var res = autosave_parse_response(response), postID;
+	var res = autosave_parse_response(response), post_id;
+
 	if ( res && res.responses.length && !res.errors ) {
 		// An ID is sent only for real auto-saves, not for autosave=0 "keepalive" saves
-		postID = parseInt( res.responses[0].id, 10 );
-		if ( !isNaN(postID) && postID > 0 ) {
+		post_id = parseInt( res.responses[0].id, 10 );
+
+		if ( post_id ) {
 			notSaved = false;
 			jQuery('#auto_draft').val('0'); // No longer an auto-draft
 		}
+
 		autosave_enable_buttons();
+
 		if ( autosaveDelayPreview ) {
 			autosaveDelayPreview = false;
 			doPreview();
@@ -214,7 +225,13 @@ function autosave_update_slug(post_id) {
 			},
 			function(data) {
 				if ( data !== '-1' ) {
-					jQuery('#edit-slug-box').html(data);
+					var box = jQuery('#edit-slug-box');
+					box.html(data);
+					if (box.hasClass('hidden')) {
+						box.fadeIn('fast', function () {
+							box.removeClass('hidden');
+						});
+					}
 					makeSlugeditClickable();
 				}
 			}
@@ -227,17 +244,22 @@ function autosave_loading() {
 }
 
 function autosave_enable_buttons() {
-	// delay that a bit to avoid some rare collisions while the DOM is being updated.
-	setTimeout(function(){
-		jQuery(':button, :submit', '#submitpost').removeAttr('disabled');
-		jQuery('.spinner', '#submitpost').hide();
-	}, 500);
+	jQuery(document).trigger('autosave-enable-buttons');
+	if ( ! wp.heartbeat || ! wp.heartbeat.hasConnectionError() ) {
+		// delay that a bit to avoid some rare collisions while the DOM is being updated.
+		setTimeout(function(){
+			var parent = jQuery('#submitpost');
+			parent.find(':button, :submit').removeAttr('disabled');
+			parent.find('.spinner').hide();
+		}, 500);
+	}
 }
 
 function autosave_disable_buttons() {
-	jQuery(':button, :submit', '#submitpost').prop('disabled', true);
+	jQuery(document).trigger('autosave-disable-buttons');
+	jQuery('#submitpost').find(':button, :submit').prop('disabled', true);
 	// Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
-	setTimeout(autosave_enable_buttons, 5000);
+	setTimeout( autosave_enable_buttons, 5000 );
 }
 
 function delayed_autosave() {
@@ -249,103 +271,432 @@ function delayed_autosave() {
 }
 
 autosave = function() {
-	// (bool) is rich editor enabled and active
+	var post_data = wp.autosave.getPostData(),
+		compareString,
+		successCallback;
+
 	blockSave = true;
-	var rich = (typeof tinymce != "undefined") && tinymce.activeEditor && !tinymce.activeEditor.isHidden(),
-		post_data, doAutoSave, ed, origStatus, successCallback;
 
-	autosave_disable_buttons();
+	// post_data.content cannot be retrieved at the moment
+	if ( ! post_data.autosave )
+		return false;
 
-	post_data = {
-		action: "autosave",
-		post_ID:  jQuery("#post_ID").val() || 0,
-		autosavenonce: jQuery('#autosavenonce').val(),
-		post_type: jQuery('#post_type').val() || "",
-		autosave: 1
-	};
+	// No autosave while thickbox is open (media buttons)
+	if ( jQuery("#TB_window").css('display') == 'block' )
+		return false;
 
-	jQuery('.tags-input').each( function() {
-		post_data[this.name] = this.value;
-	} );
+	compareString = wp.autosave.getCompareString( post_data );
 
-	// We always send the ajax request in order to keep the post lock fresh.
-	// This (bool) tells whether or not to write the post to the DB during the ajax request.
-	doAutoSave = true;
+	// Nothing to save or no change.
+	if ( compareString == autosaveLast )
+		return false;
 
-	// No autosave while thickbox is open (media buttons)
-	if ( jQuery("#TB_window").css('display') == 'block' )
-		doAutoSave = false;
+	autosaveLast = compareString;
+	jQuery(document).triggerHandler('wpcountwords', [ post_data["content"] ]);
+
+	// Disable buttons until we know the save completed.
+	autosave_disable_buttons();
+
+	if ( post_data["auto_draft"] == '1' ) {
+		successCallback = autosave_saved_new; // new post
+	} else {
+		successCallback = autosave_saved; // pre-existing post
+	}
+
+	jQuery.ajax({
+		data: post_data,
+		beforeSend: autosave_loading,
+		type: "POST",
+		url: ajaxurl,
+		success: successCallback
+	});
+
+	return true;
+}
 
-	/* Gotta do this up here so we can check the length when tinymce is in use */
-	if ( rich && doAutoSave ) {
-		ed = tinymce.activeEditor;
+// Autosave in localStorage
+// set as simple object/mixin for now
+window.wp = window.wp || {};
+wp.autosave = wp.autosave || {};
+
+(function($){
+// Returns the data for saving in both localStorage and autosaves to the server
+wp.autosave.getPostData = function() {
+	var ed = typeof tinymce != 'undefined' ? tinymce.activeEditor : null, post_name, parent_id, cats = [],
+		data = {
+			action: 'autosave',
+			autosave: true,
+			post_id: $('#post_ID').val() || 0,
+			autosavenonce: $('#autosavenonce').val() || '',
+			post_type: $('#post_type').val() || '',
+			post_author: $('#post_author').val() || '',
+			excerpt: $('#excerpt').val() || ''
+		};
+
+	if ( ed && !ed.isHidden() ) {
 		// Don't run while the tinymce spellcheck is on. It resets all found words.
 		if ( ed.plugins.spellchecker && ed.plugins.spellchecker.active ) {
-			doAutoSave = false;
+			data.autosave = false;
+			return data;
 		} else {
-			if ( 'mce_fullscreen' == ed.id || 'wp_mce_fullscreen' == ed.id )
+			if ( 'mce_fullscreen' == ed.id )
 				tinymce.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+
 			tinymce.triggerSave();
 		}
 	}
 
-	if ( fullscreen && fullscreen.settings.visible ) {
-		post_data["post_title"] = jQuery('#wp-fullscreen-title').val() || '';
-		post_data["content"] = jQuery("#wp_mce_fullscreen").val() || '';
+	if ( typeof fullscreen != 'undefined' && fullscreen.settings.visible ) {
+		data['post_title'] = $('#wp-fullscreen-title').val() || '';
+		data['content'] = $('#wp_mce_fullscreen').val() || '';
 	} else {
-		post_data["post_title"] = jQuery("#title").val() || '';
-		post_data["content"] = jQuery("#content").val() || '';
+		data['post_title'] = $('#title').val() || '';
+		data['content'] = $('#content').val() || '';
 	}
 
-	if ( jQuery('#post_name').val() )
-		post_data["post_name"] = jQuery('#post_name').val();
+	/*
+	// We haven't been saving tags with autosave since 2.8... Start again?
+	$('.the-tags').each( function() {
+		data[this.name] = this.value;
+	});
+	*/
 
-	// Nothing to save or no change.
-	if ( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast ) {
-		doAutoSave = false;
-	}
+	$('input[id^="in-category-"]:checked').each( function() {
+		cats.push(this.value);
+	});
+	data['catslist'] = cats.join(',');
 
-	origStatus = jQuery('#original_post_status').val();
+	if ( post_name = $('#post_name').val() )
+		data['post_name'] = post_name;
 
-	goodcats = ([]);
-	jQuery("[name='post_category[]']:checked").each( function(i) {
-		goodcats.push(this.value);
-	} );
-	post_data["catslist"] = goodcats.join(",");
-
-	if ( jQuery("#comment_status").prop("checked") )
-		post_data["comment_status"] = 'open';
-	if ( jQuery("#ping_status").prop("checked") )
-		post_data["ping_status"] = 'open';
-	if ( jQuery("#excerpt").size() )
-		post_data["excerpt"] = jQuery("#excerpt").val();
-	if ( jQuery("#post_author").size() )
-		post_data["post_author"] = jQuery("#post_author").val();
-	if ( jQuery("#parent_id").val() )
-		post_data["parent_id"] = jQuery("#parent_id").val();
-	post_data["user_ID"] = jQuery("#user-id").val();
-	if ( jQuery('#auto_draft').val() == '1' )
-		post_data["auto_draft"] = '1';
-
-	if ( doAutoSave ) {
-		autosaveLast = post_data["post_title"] + post_data["content"];
-		jQuery(document).triggerHandler('wpcountwords', [ post_data["content"] ]);
-	} else {
-		post_data['autosave'] = 0;
+	if ( parent_id = $('#parent_id').val() )
+		data['parent_id'] = parent_id;
+
+	if ( $('#comment_status').prop('checked') )
+		data['comment_status'] = 'open';
+
+	if ( $('#ping_status').prop('checked') )
+		data['ping_status'] = 'open';
+
+	if ( $('#auto_draft').val() == '1' )
+		data['auto_draft'] = '1';
+
+	return data;
+};
+
+// Concatenate title, content and excerpt. Used to track changes when auto-saving.
+wp.autosave.getCompareString = function( post_data ) {
+	if ( typeof post_data === 'object' ) {
+		return ( post_data.post_title || '' ) + '::' + ( post_data.content || '' ) + '::' + ( post_data.excerpt || '' );
 	}
 
-	if ( post_data["auto_draft"] == '1' ) {
-		successCallback = autosave_saved_new; // new post
-	} else {
-		successCallback = autosave_saved; // pre-existing post
+	return ( $('#title').val() || '' ) + '::' + ( $('#content').val() || '' ) + '::' + ( $('#excerpt').val() || '' );
+};
+
+wp.autosave.local = {
+
+	lastSavedData: '',
+	blog_id: 0,
+	hasStorage: false,
+
+	// Check if the browser supports sessionStorage and it's not disabled
+	checkStorage: function() {
+		var test = Math.random(), result = false;
+
+		try {
+			sessionStorage.setItem('wp-test', test);
+			result = sessionStorage.getItem('wp-test') == test;
+			sessionStorage.removeItem('wp-test');
+		} catch(e) {}
+
+		this.hasStorage = result;
+		return result;
+    },
+
+	/**
+	 * Initialize the local storage
+	 *
+	 * @return mixed False if no sessionStorage in the browser or an Object containing all post_data for this blog
+	 */
+	getStorage: function() {
+		var stored_obj = false;
+		// Separate local storage containers for each blog_id
+		if ( this.hasStorage && this.blog_id ) {
+			stored_obj = sessionStorage.getItem( 'wp-autosave-' + this.blog_id );
+
+			if ( stored_obj )
+				stored_obj = JSON.parse( stored_obj );
+			else
+				stored_obj = {};
+		}
+
+		return stored_obj;
+	},
+
+	/**
+	 * Set the storage for this blog
+	 *
+	 * Confirms that the data was saved successfully.
+	 *
+	 * @return bool
+	 */
+	setStorage: function( stored_obj ) {
+		var key;
+
+		if ( this.hasStorage && this.blog_id ) {
+			key = 'wp-autosave-' + this.blog_id;
+			sessionStorage.setItem( key, JSON.stringify( stored_obj ) );
+			return sessionStorage.getItem( key ) !== null;
+		}
+
+		return false;
+	},
+
+	/**
+	 * Get the saved post data for the current post
+	 *
+	 * @return mixed False if no storage or no data or the post_data as an Object
+	 */
+	getData: function() {
+		var stored = this.getStorage(), post_id = $('#post_ID').val();
+
+		if ( !stored || !post_id )
+			return false;
+
+		return stored[ 'post_' + post_id ] || false;
+	},
+
+	/**
+	 * Set (save or delete) post data in the storage.
+	 *
+	 * If stored_data evaluates to 'false' the storage key for the current post will be removed
+	 *
+	 * $param stored_data The post data to store or null/false/empty to delete the key
+	 * @return bool
+	 */
+	setData: function( stored_data ) {
+		var stored = this.getStorage(), post_id = $('#post_ID').val();
+
+		if ( !stored || !post_id )
+			return false;
+
+		if ( stored_data )
+			stored[ 'post_' + post_id ] = stored_data;
+		else if ( stored.hasOwnProperty( 'post_' + post_id ) )
+			delete stored[ 'post_' + post_id ];
+		else
+			return false;
+
+		return this.setStorage(stored);
+	},
+
+	/**
+	 * Save post data for the current post
+	 *
+	 * Runs on a 15 sec. schedule, saves when there are differences in the post title or content.
+	 * When the optional data is provided, updates the last saved post data.
+	 *
+	 * $param data optional Object The post data for saving, minimum 'post_title' and 'content'
+	 * @return bool
+	 */
+	save: function( data ) {
+		var result = false, post_data, compareString;
+
+		if ( ! data ) {
+			post_data = wp.autosave.getPostData();
+		} else {
+			post_data = this.getData() || {};
+			$.extend( post_data, data );
+			post_data.autosave = true;
+		}
+
+		// Cannot get the post data at the moment
+		if ( ! post_data.autosave )
+			return false;
+
+		compareString = wp.autosave.getCompareString( post_data );
+
+		// If the content, title and excerpt did not change since the last save, don't save again
+		if ( compareString == this.lastSavedData )
+			return false;
+
+		post_data['save_time'] = (new Date()).getTime();
+		post_data['status'] = $('#post_status').val() || '';
+		result = this.setData( post_data );
+
+		if ( result )
+			this.lastSavedData = compareString;
+
+		return result;
+	},
+
+	// Initialize and run checkPost() on loading the script (before TinyMCE init)
+	init: function( settings ) {
+		var self = this;
+
+		// Check if the browser supports sessionStorage and it's not disabled
+		if ( ! this.checkStorage() )
+			return;
+
+		// Don't run if the post type supports neither 'editor' (textarea#content) nor 'excerpt'.
+		if ( ! $('#content').length && ! $('#excerpt').length )
+			return;
+
+		if ( settings )
+			$.extend( this, settings );
+
+		if ( !this.blog_id )
+			this.blog_id = typeof window.autosaveL10n != 'undefined' ? window.autosaveL10n.blog_id : 0;
+
+		$(document).ready( function(){ self.run(); } );
+	},
+
+	// Run on DOM ready
+	run: function() {
+		var self = this;
+
+		// Check if the local post data is different than the loaded post data.
+		this.checkPost();
+
+		// Set the schedule
+		this.schedule = $.schedule({
+			time: 15 * 1000,
+			func: function() { wp.autosave.local.save(); },
+			repeat: true,
+			protect: true
+		});
+
+		$('form#post').on('submit.autosave-local', function() {
+			var editor = typeof tinymce != 'undefined' && tinymce.get('content'), post_id = $('#post_ID').val() || 0;
+
+			if ( editor && ! editor.isHidden() ) {
+				// Last onSubmit event in the editor, needs to run after the content has been moved to the textarea.
+				editor.onSubmit.add( function() {
+					wp.autosave.local.save({
+						post_title: $('#title').val() || '',
+						content: $('#content').val() || '',
+						excerpt: $('#excerpt').val() || ''
+					});
+				});
+			} else {
+				self.save({
+					post_title: $('#title').val() || '',
+					content: $('#content').val() || '',
+					excerpt: $('#excerpt').val() || ''
+				});
+			}
+
+			wpCookies.set( 'wp-saving-post-' + post_id, 'check' );
+		});
+	},
+
+	// Strip whitespace and compare two strings
+	compare: function( str1, str2 ) {
+		function remove( string ) {
+			return string.toString().replace(/[\x20\t\r\n\f]+/g, '');
+		}
+
+		return ( remove( str1 || '' ) == remove( str2 || '' ) );
+	},
+
+	/**
+	 * Check if the saved data for the current post (if any) is different than the loaded post data on the screen
+	 *
+	 * Shows a standard message letting the user restore the post data if different.
+	 *
+	 * @return void
+	 */
+	checkPost: function() {
+		var self = this, post_data = this.getData(), content, post_title, excerpt, notice,
+			post_id = $('#post_ID').val() || 0, cookie = wpCookies.get( 'wp-saving-post-' + post_id );
+
+		if ( ! post_data )
+			return;
+
+		if ( cookie ) {
+			wpCookies.remove( 'wp-saving-post-' + post_id );
+
+			if ( cookie == 'saved' ) {
+				// The post was saved properly, remove old data and bail
+				this.setData( false );
+				return;
+			}
+		}
+
+		// There is a newer autosave. Don't show two "restore" notices at the same time.
+		if ( $('#has-newer-autosave').length )
+			return;
+
+		content = $('#content').val() || '';
+		post_title = $('#title').val() || '';
+		excerpt = $('#excerpt').val() || '';
+
+		if ( $('#wp-content-wrap').hasClass('tmce-active') && typeof switchEditors != 'undefined' )
+			content = switchEditors.pre_wpautop( content );
+
+		// cookie == 'check' means the post was not saved properly, always show #local-storage-notice
+		if ( cookie != 'check' && this.compare( content, post_data.content ) && this.compare( post_title, post_data.post_title ) && this.compare( excerpt, post_data.excerpt ) ) {
+			return;
+		}
+
+		this.restore_post_data = post_data;
+		this.undo_post_data = {
+			content: content,
+			post_title: post_title,
+			excerpt: excerpt
+		};
+
+		notice = $('#local-storage-notice');
+		$('.wrap h2').first().after( notice.addClass('updated').show() );
+
+		notice.on( 'click', function(e) {
+			var target = $( e.target );
+
+			if ( target.hasClass('restore-backup') ) {
+				self.restorePost( self.restore_post_data );
+				target.parent().hide();
+				$(this).find('p.undo-restore').show();
+			} else if ( target.hasClass('undo-restore-backup') ) {
+				self.restorePost( self.undo_post_data );
+				target.parent().hide();
+				$(this).find('p.local-restore').show();
+			}
+
+			e.preventDefault();
+		});
+	},
+
+	// Restore the current title, content and excerpt from post_data.
+	restorePost: function( post_data ) {
+		var editor;
+
+		if ( post_data ) {
+			// Set the last saved data
+			this.lastSavedData = wp.autosave.getCompareString( post_data );
+
+			if ( $('#title').val() != post_data.post_title )
+				$('#title').focus().val( post_data.post_title || '' );
+
+			$('#excerpt').val( post_data.excerpt || '' );
+			editor = typeof tinymce != 'undefined' && tinymce.get('content');
+
+			if ( editor && ! editor.isHidden() && typeof switchEditors != 'undefined' ) {
+				// Make sure there's an undo level in the editor
+				editor.undoManager.add();
+				editor.setContent( post_data.content ? switchEditors.wpautop( post_data.content ) : '' );
+			} else {
+				// Make sure the Text editor is selected
+				$('#content-html').click();
+				$('#content').val( post_data.content );
+			}
+
+			return true;
+		}
+
+		return false;
 	}
+};
 
-	autosaveOldMessage = jQuery('#autosave').html();
-	jQuery.ajax({
-		data: post_data,
-		beforeSend: doAutoSave ? autosave_loading : null,
-		type: "POST",
-		url: ajaxurl,
-		success: successCallback
-	});
-}
+wp.autosave.local.init();
+
+}(jQuery));
diff --git a/wp-includes/js/autosave.min.js b/wp-includes/js/autosave.min.js
index 864401f63..96a5bc6e3 100644
--- a/wp-includes/js/autosave.min.js
+++ b/wp-includes/js/autosave.min.js
@@ -1 +1 @@
-var autosave,autosaveLast="",autosavePeriodical,autosaveOldMessage="",autosaveDelayPreview=false,notSaved=true,blockSave=false,fullscreen,autosaveLockRelease=true;jQuery(document).ready(function(a){autosaveLast=(a("#post #title").val()||"")+(a("#post #content").val()||"");autosavePeriodical=a.schedule({time:autosaveL10n.autosaveInterval*1000,func:function(){autosave()},repeat:true,protect:true});a("#post").submit(function(){a.cancel(autosavePeriodical);autosaveLockRelease=false});a('input[type="submit"], a.submitdelete',"#submitpost").click(function(){blockSave=true;window.onbeforeunload=null;a(":button, :submit","#submitpost").each(function(){var b=a(this);if(b.hasClass("button-primary")){b.addClass("button-primary-disabled")}else{b.addClass("button-disabled")}});if(a(this).attr("id")=="publish"){a("#major-publishing-actions .spinner").show()}else{a("#minor-publishing .spinner").show()}});window.onbeforeunload=function(){var b=typeof(tinymce)!="undefined"?tinymce.activeEditor:false,d,c;if(b&&!b.isHidden()){if(b.isDirty()){return autosaveL10n.saveAlert}}else{if(fullscreen&&fullscreen.settings.visible){d=a("#wp-fullscreen-title").val()||"";c=a("#wp_mce_fullscreen").val()||""}else{d=a("#post #title").val()||"";c=a("#post #content").val()||""}if((d||c)&&d+c!=autosaveLast){return autosaveL10n.saveAlert}}};a(window).unload(function(b){if(!autosaveLockRelease){return}if(b.target&&b.target.nodeName!="#document"){return}a.ajax({type:"POST",url:ajaxurl,async:false,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("#post-preview").click(function(){if(a("#auto_draft").val()=="1"&&notSaved){autosaveDelayPreview=true;autosave();return false}doPreview();return false});doPreview=function(){a("input#wp-preview").val("dopreview");a("form#post").attr("target","wp-preview").submit().attr("target","");if(a.browser.safari){a("form#post").attr("action",function(b,c){return c+"?t="+new Date().getTime()})}a("input#wp-preview").val("")};a("#title").on("keydown.editor-focus",function(c){var b;if(c.which!=9){return}if(!c.ctrlKey&&!c.altKey&&!c.shiftKey){if(typeof(tinymce)!="undefined"){b=tinymce.get("content")}if(b&&!b.isHidden()){a(this).one("keyup",function(d){a("#content_tbl td.mceToolbar > a").focus()})}else{a("#content").focus()}c.preventDefault()}});if("1"==a("#auto_draft").val()){a("#title").blur(function(){if(!this.value||a("#auto_draft").val()!="1"){return}delayed_autosave()})}});function autosave_parse_response(c){var d=wpAjax.parseAjaxResponse(c,"autosave"),e="",a,b;if(d&&d.responses&&d.responses.length){e=d.responses[0].data;if(d.responses[0].supplemental){b=d.responses[0].supplemental;if("disable"==b.disable_autosave){autosave=function(){};autosaveLockRelease=false;d={errors:true}}if(b["active-post-lock"]){jQuery("#active_post_lock").val(b["active-post-lock"])}if(b.alert){jQuery("#autosave-alert").remove();jQuery("#titlediv").after('<div id="autosave-alert" class="error below-h2"><p>'+b.alert+"</p></div>")}jQuery.each(b,function(f,g){if(f.match(/^replace-/)){jQuery("#"+f.replace("replace-","")).val(g)}})}if(!d.errors){a=parseInt(d.responses[0].id,10);if(!isNaN(a)&&a>0){autosave_update_slug(a)}}}if(e){jQuery(".autosave-message").html(e)}else{if(autosaveOldMessage&&d){jQuery(".autosave-message").html(autosaveOldMessage)}}return d}function autosave_saved(a){blockSave=false;autosave_parse_response(a);autosave_enable_buttons()}function autosave_saved_new(b){blockSave=false;var c=autosave_parse_response(b),a;if(c&&c.responses.length&&!c.errors){a=parseInt(c.responses[0].id,10);if(!isNaN(a)&&a>0){notSaved=false;jQuery("#auto_draft").val("0")}autosave_enable_buttons();if(autosaveDelayPreview){autosaveDelayPreview=false;doPreview()}}else{autosave_enable_buttons()}}function autosave_update_slug(a){if("undefined"!=makeSlugeditClickable&&jQuery.isFunction(makeSlugeditClickable)&&!jQuery("#edit-slug-box > *").size()){jQuery.post(ajaxurl,{action:"sample-permalink",post_id:a,new_title:fullscreen&&fullscreen.settings.visible?jQuery("#wp-fullscreen-title").val():jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(b){if(b!=="-1"){jQuery("#edit-slug-box").html(b);makeSlugeditClickable()}})}}function autosave_loading(){jQuery(".autosave-message").html(autosaveL10n.savingText)}function autosave_enable_buttons(){setTimeout(function(){jQuery(":button, :submit","#submitpost").removeAttr("disabled");jQuery(".spinner","#submitpost").hide()},500)}function autosave_disable_buttons(){jQuery(":button, :submit","#submitpost").prop("disabled",true);setTimeout(autosave_enable_buttons,5000)}function delayed_autosave(){setTimeout(function(){if(blockSave){return}autosave()},200)}autosave=function(){blockSave=true;var c=(typeof tinymce!="undefined")&&tinymce.activeEditor&&!tinymce.activeEditor.isHidden(),d,f,b,e,a;autosave_disable_buttons();d={action:"autosave",post_ID:jQuery("#post_ID").val()||0,autosavenonce:jQuery("#autosavenonce").val(),post_type:jQuery("#post_type").val()||"",autosave:1};jQuery(".tags-input").each(function(){d[this.name]=this.value});f=true;if(jQuery("#TB_window").css("display")=="block"){f=false}if(c&&f){b=tinymce.activeEditor;if(b.plugins.spellchecker&&b.plugins.spellchecker.active){f=false}else{if("mce_fullscreen"==b.id||"wp_mce_fullscreen"==b.id){tinymce.get("content").setContent(b.getContent({format:"raw"}),{format:"raw"})}tinymce.triggerSave()}}if(fullscreen&&fullscreen.settings.visible){d.post_title=jQuery("#wp-fullscreen-title").val()||"";d.content=jQuery("#wp_mce_fullscreen").val()||""}else{d.post_title=jQuery("#title").val()||"";d.content=jQuery("#content").val()||""}if(jQuery("#post_name").val()){d.post_name=jQuery("#post_name").val()}if((d.post_title.length==0&&d.content.length==0)||d.post_title+d.content==autosaveLast){f=false}e=jQuery("#original_post_status").val();goodcats=([]);jQuery("[name='post_category[]']:checked").each(function(g){goodcats.push(this.value)});d.catslist=goodcats.join(",");if(jQuery("#comment_status").prop("checked")){d.comment_status="open"}if(jQuery("#ping_status").prop("checked")){d.ping_status="open"}if(jQuery("#excerpt").size()){d.excerpt=jQuery("#excerpt").val()}if(jQuery("#post_author").size()){d.post_author=jQuery("#post_author").val()}if(jQuery("#parent_id").val()){d.parent_id=jQuery("#parent_id").val()}d.user_ID=jQuery("#user-id").val();if(jQuery("#auto_draft").val()=="1"){d.auto_draft="1"}if(f){autosaveLast=d.post_title+d.content;jQuery(document).triggerHandler("wpcountwords",[d.content])}else{d.autosave=0}if(d.auto_draft=="1"){a=autosave_saved_new}else{a=autosave_saved}autosaveOldMessage=jQuery("#autosave").html();jQuery.ajax({data:d,beforeSend:f?autosave_loading:null,type:"POST",url:ajaxurl,success:a})};
\ No newline at end of file
+var autosave,autosaveLast="",autosavePeriodical,autosaveDelayPreview=false,notSaved=true,blockSave=false,fullscreen,autosaveLockRelease=true;jQuery(document).ready(function(a){if(a("#wp-content-wrap").hasClass("tmce-active")&&typeof switchEditors!="undefined"){autosaveLast=wp.autosave.getCompareString({post_title:a("#title").val()||"",content:switchEditors.pre_wpautop(a("#content").val())||"",excerpt:a("#excerpt").val()||""})}else{autosaveLast=wp.autosave.getCompareString()}autosavePeriodical=a.schedule({time:autosaveL10n.autosaveInterval*1000,func:function(){autosave()},repeat:true,protect:true});a("#post").submit(function(){a.cancel(autosavePeriodical);autosaveLockRelease=false});a('input[type="submit"], a.submitdelete',"#submitpost").click(function(){blockSave=true;window.onbeforeunload=null;a(":button, :submit","#submitpost").each(function(){var b=a(this);if(b.hasClass("button-primary")){b.addClass("button-primary-disabled")}else{b.addClass("button-disabled")}});if(a(this).attr("id")=="publish"){a("#major-publishing-actions .spinner").show()}else{a("#minor-publishing .spinner").show()}});window.onbeforeunload=function(){var b=typeof(tinymce)!="undefined"?tinymce.activeEditor:false,c;if(b&&!b.isHidden()){if(b.isDirty()){return autosaveL10n.saveAlert}}else{if(fullscreen&&fullscreen.settings.visible){c=wp.autosave.getCompareString({post_title:a("#wp-fullscreen-title").val()||"",content:a("#wp_mce_fullscreen").val()||"",excerpt:a("#excerpt").val()||""})}else{c=wp.autosave.getCompareString()}if(c!=autosaveLast){return autosaveL10n.saveAlert}}};a(window).unload(function(b){if(!autosaveLockRelease){return}if(b.target&&b.target.nodeName!="#document"){return}a.ajax({type:"POST",url:ajaxurl,async:false,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("#post-preview").click(function(){if(a("#auto_draft").val()=="1"&&notSaved){autosaveDelayPreview=true;autosave();return false}doPreview();return false});doPreview=function(){a("input#wp-preview").val("dopreview");a("form#post").attr("target","wp-preview").submit().attr("target","");var b=navigator.userAgent.toLowerCase();if(b.indexOf("safari")!=-1&&b.indexOf("chrome")==-1){a("form#post").attr("action",function(c,d){return d+"?t="+new Date().getTime()})}a("input#wp-preview").val("")};a("#title").on("keydown.editor-focus",function(c){var b;if(c.which!=9){return}if(!c.ctrlKey&&!c.altKey&&!c.shiftKey){if(typeof(tinymce)!="undefined"){b=tinymce.get("content")}if(b&&!b.isHidden()){a(this).one("keyup",function(d){a("#content_tbl td.mceToolbar > a").focus()})}else{a("#content").focus()}c.preventDefault()}});if("1"==a("#auto_draft").val()){a("#title").blur(function(){if(!this.value||a("#auto_draft").val()!="1"){return}delayed_autosave()})}a(document).on("heartbeat-connection-lost.autosave",function(d,b){if("timeout"===b){var c=a("#lost-connection-notice");if(!wp.autosave.local.hasStorage){c.find(".hide-if-no-sessionstorage").hide()}c.show();autosave_disable_buttons()}}).on("heartbeat-connection-restored.autosave",function(){a("#lost-connection-notice").hide();autosave_enable_buttons()})});function autosave_parse_response(b){var d=wpAjax.parseAjaxResponse(b,"autosave"),c,a;if(d&&d.responses&&d.responses.length){if(d.responses[0].supplemental){a=d.responses[0].supplemental;jQuery.each(a,function(e,f){if(e.match(/^replace-/)){jQuery("#"+e.replace("replace-","")).val(f)}})}if(!d.errors){if(c=parseInt(d.responses[0].id,10)){autosave_update_slug(c)}if(d.responses[0].data){jQuery(".autosave-message").text(d.responses[0].data)}}}return d}function autosave_saved(a){blockSave=false;autosave_parse_response(a);autosave_enable_buttons()}function autosave_saved_new(a){blockSave=false;var c=autosave_parse_response(a),b;if(c&&c.responses.length&&!c.errors){b=parseInt(c.responses[0].id,10);if(b){notSaved=false;jQuery("#auto_draft").val("0")}autosave_enable_buttons();if(autosaveDelayPreview){autosaveDelayPreview=false;doPreview()}}else{autosave_enable_buttons()}}function autosave_update_slug(a){if("undefined"!=makeSlugeditClickable&&jQuery.isFunction(makeSlugeditClickable)&&!jQuery("#edit-slug-box > *").size()){jQuery.post(ajaxurl,{action:"sample-permalink",post_id:a,new_title:fullscreen&&fullscreen.settings.visible?jQuery("#wp-fullscreen-title").val():jQuery("#title").val(),samplepermalinknonce:jQuery("#samplepermalinknonce").val()},function(c){if(c!=="-1"){var b=jQuery("#edit-slug-box");b.html(c);if(b.hasClass("hidden")){b.fadeIn("fast",function(){b.removeClass("hidden")})}makeSlugeditClickable()}})}}function autosave_loading(){jQuery(".autosave-message").html(autosaveL10n.savingText)}function autosave_enable_buttons(){jQuery(document).trigger("autosave-enable-buttons");if(!wp.heartbeat||!wp.heartbeat.hasConnectionError()){setTimeout(function(){var a=jQuery("#submitpost");a.find(":button, :submit").removeAttr("disabled");a.find(".spinner").hide()},500)}}function autosave_disable_buttons(){jQuery(document).trigger("autosave-disable-buttons");jQuery("#submitpost").find(":button, :submit").prop("disabled",true);setTimeout(autosave_enable_buttons,5000)}function delayed_autosave(){setTimeout(function(){if(blockSave){return}autosave()},200)}autosave=function(){var c=wp.autosave.getPostData(),b,a;blockSave=true;if(!c.autosave){return false}if(jQuery("#TB_window").css("display")=="block"){return false}b=wp.autosave.getCompareString(c);if(b==autosaveLast){return false}autosaveLast=b;jQuery(document).triggerHandler("wpcountwords",[c.content]);autosave_disable_buttons();if(c.auto_draft=="1"){a=autosave_saved_new}else{a=autosave_saved}jQuery.ajax({data:c,beforeSend:autosave_loading,type:"POST",url:ajaxurl,success:a});return true};window.wp=window.wp||{};wp.autosave=wp.autosave||{};(function(a){wp.autosave.getPostData=function(){var b=typeof tinymce!="undefined"?tinymce.activeEditor:null,d,f,c=[],e={action:"autosave",autosave:true,post_id:a("#post_ID").val()||0,autosavenonce:a("#autosavenonce").val()||"",post_type:a("#post_type").val()||"",post_author:a("#post_author").val()||"",excerpt:a("#excerpt").val()||""};if(b&&!b.isHidden()){if(b.plugins.spellchecker&&b.plugins.spellchecker.active){e.autosave=false;return e}else{if("mce_fullscreen"==b.id){tinymce.get("content").setContent(b.getContent({format:"raw"}),{format:"raw"})}tinymce.triggerSave()}}if(typeof fullscreen!="undefined"&&fullscreen.settings.visible){e.post_title=a("#wp-fullscreen-title").val()||"";e.content=a("#wp_mce_fullscreen").val()||""}else{e.post_title=a("#title").val()||"";e.content=a("#content").val()||""}a('input[id^="in-category-"]:checked').each(function(){c.push(this.value)});e.catslist=c.join(",");if(d=a("#post_name").val()){e.post_name=d}if(f=a("#parent_id").val()){e.parent_id=f}if(a("#comment_status").prop("checked")){e.comment_status="open"}if(a("#ping_status").prop("checked")){e.ping_status="open"}if(a("#auto_draft").val()=="1"){e.auto_draft="1"}return e};wp.autosave.getCompareString=function(b){if(typeof b==="object"){return(b.post_title||"")+"::"+(b.content||"")+"::"+(b.excerpt||"")}return(a("#title").val()||"")+"::"+(a("#content").val()||"")+"::"+(a("#excerpt").val()||"")};wp.autosave.local={lastSavedData:"",blog_id:0,hasStorage:false,checkStorage:function(){var d=Math.random(),b=false;try{sessionStorage.setItem("wp-test",d);b=sessionStorage.getItem("wp-test")==d;sessionStorage.removeItem("wp-test")}catch(c){}this.hasStorage=b;return b},getStorage:function(){var b=false;if(this.hasStorage&&this.blog_id){b=sessionStorage.getItem("wp-autosave-"+this.blog_id);if(b){b=JSON.parse(b)}else{b={}}}return b},setStorage:function(b){var c;if(this.hasStorage&&this.blog_id){c="wp-autosave-"+this.blog_id;sessionStorage.setItem(c,JSON.stringify(b));return sessionStorage.getItem(c)!==null}return false},getData:function(){var c=this.getStorage(),b=a("#post_ID").val();if(!c||!b){return false}return c["post_"+b]||false},setData:function(b){var d=this.getStorage(),c=a("#post_ID").val();if(!d||!c){return false}if(b){d["post_"+c]=b}else{if(d.hasOwnProperty("post_"+c)){delete d["post_"+c]}else{return false}}return this.setStorage(d)},save:function(d){var b=false,e,c;if(!d){e=wp.autosave.getPostData()}else{e=this.getData()||{};a.extend(e,d);e.autosave=true}if(!e.autosave){return false}c=wp.autosave.getCompareString(e);if(c==this.lastSavedData){return false}e.save_time=(new Date()).getTime();e.status=a("#post_status").val()||"";b=this.setData(e);if(b){this.lastSavedData=c}return b},init:function(c){var b=this;if(!this.checkStorage()){return}if(!a("#content").length&&!a("#excerpt").length){return}if(c){a.extend(this,c)}if(!this.blog_id){this.blog_id=typeof window.autosaveL10n!="undefined"?window.autosaveL10n.blog_id:0}a(document).ready(function(){b.run()})},run:function(){var b=this;this.checkPost();this.schedule=a.schedule({time:15*1000,func:function(){wp.autosave.local.save()},repeat:true,protect:true});a("form#post").on("submit.autosave-local",function(){var d=typeof tinymce!="undefined"&&tinymce.get("content"),c=a("#post_ID").val()||0;if(d&&!d.isHidden()){d.onSubmit.add(function(){wp.autosave.local.save({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})})}else{b.save({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})}wpCookies.set("wp-saving-post-"+c,"check")})},compare:function(d,c){function b(e){return e.toString().replace(/[\x20\t\r\n\f]+/g,"")}return(b(d||"")==b(c||""))},checkPost:function(){var c=this,i=this.getData(),g,f,b,h,d=a("#post_ID").val()||0,e=wpCookies.get("wp-saving-post-"+d);if(!i){return}if(e){wpCookies.remove("wp-saving-post-"+d);if(e=="saved"){this.setData(false);return}}if(a("#has-newer-autosave").length){return}g=a("#content").val()||"";f=a("#title").val()||"";b=a("#excerpt").val()||"";if(a("#wp-content-wrap").hasClass("tmce-active")&&typeof switchEditors!="undefined"){g=switchEditors.pre_wpautop(g)}if(e!="check"&&this.compare(g,i.content)&&this.compare(f,i.post_title)&&this.compare(b,i.excerpt)){return}this.restore_post_data=i;this.undo_post_data={content:g,post_title:f,excerpt:b};h=a("#local-storage-notice");a(".wrap h2").first().after(h.addClass("updated").show());h.on("click",function(k){var j=a(k.target);if(j.hasClass("restore-backup")){c.restorePost(c.restore_post_data);j.parent().hide();a(this).find("p.undo-restore").show()}else{if(j.hasClass("undo-restore-backup")){c.restorePost(c.undo_post_data);j.parent().hide();a(this).find("p.local-restore").show()}}k.preventDefault()})},restorePost:function(c){var b;if(c){this.lastSavedData=wp.autosave.getCompareString(c);if(a("#title").val()!=c.post_title){a("#title").focus().val(c.post_title||"")}a("#excerpt").val(c.excerpt||"");b=typeof tinymce!="undefined"&&tinymce.get("content");if(b&&!b.isHidden()&&typeof switchEditors!="undefined"){b.undoManager.add();b.setContent(c.content?switchEditors.wpautop(c.content):"")}else{a("#content-html").click();a("#content").val(c.content)}return true}return false}};wp.autosave.local.init()}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/backbone.min.js b/wp-includes/js/backbone.min.js
index c1c0d4fff..8555ecaf2 100644
--- a/wp-includes/js/backbone.min.js
+++ b/wp-includes/js/backbone.min.js
@@ -1,38 +1,7 @@
-// Backbone.js 0.9.2
+// Backbone.js 1.0.0
 
-// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc.
 // Backbone may be freely distributed under the MIT license.
 // For all details and documentation:
 // http://backbonejs.org
-(function(){var l=this,y=l.Backbone,z=Array.prototype.slice,A=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:l.Backbone={};g.VERSION="0.9.2";var f=l._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var i=l.jQuery||l.Zepto||l.ender;g.setDomLibrary=function(a){i=a};g.noConflict=function(){l.Backbone=y;return this};g.emulateHTTP=!1;g.emulateJSON=!1;var p=/\s+/,k=g.Events={on:function(a,b,c){var d,e,f,g,j;if(!b)return this;a=a.split(p);for(d=this._callbacks||(this._callbacks=
-{});e=a.shift();)f=(j=d[e])?j.tail:{},f.next=g={},f.context=c,f.callback=b,d[e]={tail:g,next:j?j.next:f};return this},off:function(a,b,c){var d,e,h,g,j,q;if(e=this._callbacks){if(!a&&!b&&!c)return delete this._callbacks,this;for(a=a?a.split(p):f.keys(e);d=a.shift();)if(h=e[d],delete e[d],h&&(b||c))for(g=h.tail;(h=h.next)!==g;)if(j=h.callback,q=h.context,b&&j!==b||c&&q!==c)this.on(d,j,q);return this}},trigger:function(a){var b,c,d,e,f,g;if(!(d=this._callbacks))return this;f=d.all;a=a.split(p);for(g=
-z.call(arguments,1);b=a.shift();){if(c=d[b])for(e=c.tail;(c=c.next)!==e;)c.callback.apply(c.context||this,g);if(c=f){e=c.tail;for(b=[b].concat(g);(c=c.next)!==e;)c.callback.apply(c.context||this,b)}}return this}};k.bind=k.on;k.unbind=k.off;var o=g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=n(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");this.changed={};this._silent=
-{};this._pending={};this.set(a,{silent:!0});this.changed={};this._silent={};this._pending={};this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(o.prototype,k,{changed:null,_silent:null,_pending:null,idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.get(a);return this._escapedAttributes[a]=f.escape(null==
-b?"":""+b)},has:function(a){return null!=this.get(a)},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof o&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=c.changes={},h=this.attributes,g=this._escapedAttributes,j=this._previousAttributes||{};for(e in d){a=d[e];if(!f.isEqual(h[e],a)||c.unset&&f.has(h,e))delete g[e],(c.silent?this._silent:
-b)[e]=!0;c.unset?delete h[e]:h[e]=a;!f.isEqual(j[e],a)||f.has(h,e)!=f.has(j,e)?(this.changed[e]=a,c.silent||(this._pending[e]=!0)):(delete this.changed[e],delete this._pending[e])}c.silent||this.change(c);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)};
-a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};if(c.wait){if(!this._validate(d,c))return!1;e=f.clone(this.attributes)}a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var h=this,i=c.success;c.success=function(a,b,e){b=h.parse(a,e);if(c.wait){delete c.wait;b=f.extend(d||{},b)}if(!h.set(b,c))return false;i?i(h,a):h.trigger("sync",h,a,c)};c.error=g.wrapError(c.error,
-h,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d(),!1;a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=n(this,"urlRoot")||n(this.collection,"url")||t();
-return this.isNew()?a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){a||(a={});var b=this._changing;this._changing=!0;for(var c in this._silent)this._pending[c]=!0;var d=f.extend({},a.changes,this._silent);this._silent={};for(c in d)this.trigger("change:"+c,this,this.get(c),a);if(b)return this;for(;!f.isEmpty(this._pending);){this._pending=
-{};this.trigger("change",this,a);for(c in this.changed)!this._pending[c]&&!this._silent[c]&&delete this.changed[c];this._previousAttributes=f.clone(this.attributes)}this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this.changed):f.has(this.changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this.changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length||
-!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});var r=g.Collection=function(a,b){b||(b={});b.model&&(this.model=b.model);b.comparator&&(this.comparator=b.comparator);
-this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(r.prototype,k,{model:o,initialize:function(){},toJSON:function(a){return this.map(function(b){return b.toJSON(a)})},add:function(a,b){var c,d,e,g,i,j={},k={},l=[];b||(b={});a=f.isArray(a)?a.slice():[a];c=0;for(d=a.length;c<d;c++){if(!(e=a[c]=this._prepareModel(a[c],b)))throw Error("Can't add an invalid model to a collection");g=e.cid;i=e.id;j[g]||this._byCid[g]||null!=i&&(k[i]||this._byId[i])?
-l.push(c):j[g]=k[i]=e}for(c=l.length;c--;)a.splice(l[c],1);c=0;for(d=a.length;c<d;c++)(e=a[c]).on("all",this._onModelEvent,this),this._byCid[e.cid]=e,null!=e.id&&(this._byId[e.id]=e);this.length+=d;A.apply(this.models,[null!=b.at?b.at:this.models.length,0].concat(a));this.comparator&&this.sort({silent:!0});if(b.silent)return this;c=0;for(d=this.models.length;c<d;c++)if(j[(e=this.models[c]).cid])b.index=c,e.trigger("add",e,this,b);return this},remove:function(a,b){var c,d,e,g;b||(b={});a=f.isArray(a)?
-a.slice():[a];c=0;for(d=a.length;c<d;c++)if(g=this.getByCid(a[c])||this.get(a[c]))delete this._byId[g.id],delete this._byCid[g.cid],e=this.indexOf(g),this.models.splice(e,1),this.length--,b.silent||(b.index=e,g.trigger("remove",g,this,b)),this._removeReference(g);return this},push:function(a,b){a=this._prepareModel(a,b);this.add(a,b);return a},pop:function(a){var b=this.at(this.length-1);this.remove(b,a);return b},unshift:function(a,b){a=this._prepareModel(a,b);this.add(a,f.extend({at:0},b));return a},
-shift:function(a){var b=this.at(0);this.remove(b,a);return b},get:function(a){return null==a?void 0:this._byId[null!=a.id?a.id:a]},getByCid:function(a){return a&&this._byCid[a.cid||a]},at:function(a){return this.models[a]},where:function(a){return f.isEmpty(a)?[]:this.filter(function(b){for(var c in a)if(a[c]!==b.get(c))return!1;return!0})},sort:function(a){a||(a={});if(!this.comparator)throw Error("Cannot sort a set without a comparator");var b=f.bind(this.comparator,this);1==this.comparator.length?
-this.models=this.sortBy(b):this.models.sort(b);a.silent||this.trigger("reset",this,a);return this},pluck:function(a){return f.map(this.models,function(b){return b.get(a)})},reset:function(a,b){a||(a=[]);b||(b={});for(var c=0,d=this.models.length;c<d;c++)this._removeReference(this.models[c]);this._reset();this.add(a,f.extend({silent:!0},b));b.silent||this.trigger("reset",this,b);return this},fetch:function(a){a=a?f.clone(a):{};void 0===a.parse&&(a.parse=!0);var b=this,c=a.success;a.success=function(d,
-e,f){b[a.add?"add":"reset"](b.parse(d,f),a);c&&c(b,d)};a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},create:function(a,b){var c=this,b=b?f.clone(b):{},a=this._prepareModel(a,b);if(!a)return!1;b.wait||c.add(a,b);var d=b.success;b.success=function(e,f){b.wait&&c.add(e,b);d?d(e,f):e.trigger("sync",a,f,b)};a.save(null,b);return a},parse:function(a){return a},chain:function(){return f(this.models).chain()},_reset:function(){this.length=0;this.models=[];this._byId=
-{};this._byCid={}},_prepareModel:function(a,b){b||(b={});a instanceof o?a.collection||(a.collection=this):(b.collection=this,a=new this.model(a,b),a._validate(a.attributes,b)||(a=!1));return a},_removeReference:function(a){this==a.collection&&delete a.collection;a.off("all",this._onModelEvent,this)},_onModelEvent:function(a,b,c,d){("add"==a||"remove"==a)&&c!=this||("destroy"==a&&this.remove(b,d),b&&a==="change:"+b.idAttribute&&(delete this._byId[b.previous(b.idAttribute)],this._byId[b.id]=b),this.trigger.apply(this,
-arguments))}});f.each("forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy".split(","),function(a){r.prototype[a]=function(){return f[a].apply(f,[this.models].concat(f.toArray(arguments)))}});var u=g.Router=function(a){a||(a={});a.routes&&(this.routes=a.routes);this._bindRoutes();this.initialize.apply(this,arguments)},B=/:\w+/g,
-C=/\*\w+/g,D=/[-[\]{}()+?.,\\^$|#\s]/g;f.extend(u.prototype,k,{initialize:function(){},route:function(a,b,c){g.history||(g.history=new m);f.isRegExp(a)||(a=this._routeToRegExp(a));c||(c=this[b]);g.history.route(a,f.bind(function(d){d=this._extractParameters(a,d);c&&c.apply(this,d);this.trigger.apply(this,["route:"+b].concat(d));g.history.trigger("route",this,b,d)},this));return this},navigate:function(a,b){g.history.navigate(a,b)},_bindRoutes:function(){if(this.routes){var a=[],b;for(b in this.routes)a.unshift([b,
-this.routes[b]]);b=0;for(var c=a.length;b<c;b++)this.route(a[b][0],a[b][1],this[a[b][1]])}},_routeToRegExp:function(a){a=a.replace(D,"\\$&").replace(B,"([^/]+)").replace(C,"(.*?)");return RegExp("^"+a+"$")},_extractParameters:function(a,b){return a.exec(b).slice(1)}});var m=g.History=function(){this.handlers=[];f.bindAll(this,"checkUrl")},s=/^[#\/]/,E=/msie [\w.]+/;m.started=!1;f.extend(m.prototype,k,{interval:50,getHash:function(a){return(a=(a?a.location:window.location).href.match(/#(.*)$/))?a[1]:
-""},getFragment:function(a,b){if(null==a)if(this._hasPushState||b){var a=window.location.pathname,c=window.location.search;c&&(a+=c)}else a=this.getHash();a.indexOf(this.options.root)||(a=a.substr(this.options.root.length));return a.replace(s,"")},start:function(a){if(m.started)throw Error("Backbone.history has already been started");m.started=!0;this.options=f.extend({},{root:"/"},this.options,a);this._wantsHashChange=!1!==this.options.hashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=
-!(!this.options.pushState||!window.history||!window.history.pushState);var a=this.getFragment(),b=document.documentMode;if(b=E.exec(navigator.userAgent.toLowerCase())&&(!b||7>=b))this.iframe=i('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(a);this._hasPushState?i(window).bind("popstate",this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!b?i(window).bind("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,
-this.interval));this.fragment=a;a=window.location;b=a.pathname==this.options.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!b)return this.fragment=this.getFragment(null,!0),window.location.replace(this.options.root+"#"+this.fragment),!0;this._wantsPushState&&this._hasPushState&&b&&a.hash&&(this.fragment=this.getHash().replace(s,""),window.history.replaceState({},document.title,a.protocol+"//"+a.host+this.options.root+this.fragment));if(!this.options.silent)return this.loadUrl()},
-stop:function(){i(window).unbind("popstate",this.checkUrl).unbind("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);m.started=!1},route:function(a,b){this.handlers.unshift({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();a==this.fragment&&this.iframe&&(a=this.getFragment(this.getHash(this.iframe)));if(a==this.fragment)return!1;this.iframe&&this.navigate(a);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(a){var b=this.fragment=this.getFragment(a);return f.any(this.handlers,
-function(a){if(a.route.test(b))return a.callback(b),!0})},navigate:function(a,b){if(!m.started)return!1;if(!b||!0===b)b={trigger:b};var c=(a||"").replace(s,"");this.fragment!=c&&(this._hasPushState?(0!=c.indexOf(this.options.root)&&(c=this.options.root+c),this.fragment=c,window.history[b.replace?"replaceState":"pushState"]({},document.title,c)):this._wantsHashChange?(this.fragment=c,this._updateHash(window.location,c,b.replace),this.iframe&&c!=this.getFragment(this.getHash(this.iframe))&&(b.replace||
-this.iframe.document.open().close(),this._updateHash(this.iframe.location,c,b.replace))):window.location.assign(this.options.root+a),b.trigger&&this.loadUrl(a))},_updateHash:function(a,b,c){c?a.replace(a.toString().replace(/(javascript:|#).*$/,"")+"#"+b):a.hash=b}});var v=g.View=function(a){this.cid=f.uniqueId("view");this._configure(a||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},F=/^(\S+)\s*(.*)$/,w="model,collection,el,id,attributes,className,tagName".split(",");
-f.extend(v.prototype,k,{tagName:"div",$:function(a){return this.$el.find(a)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();return this},make:function(a,b,c){a=document.createElement(a);b&&i(a).attr(b);c&&i(a).html(c);return a},setElement:function(a,b){this.$el&&this.undelegateEvents();this.$el=a instanceof i?a:i(a);this.el=this.$el[0];!1!==b&&this.delegateEvents();return this},delegateEvents:function(a){if(a||(a=n(this,"events"))){this.undelegateEvents();
-for(var b in a){var c=a[b];f.isFunction(c)||(c=this[a[b]]);if(!c)throw Error('Method "'+a[b]+'" does not exist');var d=b.match(F),e=d[1],d=d[2],c=f.bind(c,this),e=e+(".delegateEvents"+this.cid);""===d?this.$el.bind(e,c):this.$el.delegate(d,e,c)}}},undelegateEvents:function(){this.$el.unbind(".delegateEvents"+this.cid)},_configure:function(a){this.options&&(a=f.extend({},this.options,a));for(var b=0,c=w.length;b<c;b++){var d=w[b];a[d]&&(this[d]=a[d])}this.options=a},_ensureElement:function(){if(this.el)this.setElement(this.el,
-!1);else{var a=n(this,"attributes")||{};this.id&&(a.id=this.id);this.className&&(a["class"]=this.className);this.setElement(this.make(this.tagName,a),!1)}}});o.extend=r.extend=u.extend=v.extend=function(a,b){var c=G(this,a,b);c.extend=this.extend;return c};var H={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};g.sync=function(a,b,c){var d=H[a];c||(c={});var e={type:d,dataType:"json"};c.url||(e.url=n(b,"url")||t());if(!c.data&&b&&("create"==a||"update"==a))e.contentType="application/json",
-e.data=JSON.stringify(b.toJSON());g.emulateJSON&&(e.contentType="application/x-www-form-urlencoded",e.data=e.data?{model:e.data}:{});if(g.emulateHTTP&&("PUT"===d||"DELETE"===d))g.emulateJSON&&(e.data._method=d),e.type="POST",e.beforeSend=function(a){a.setRequestHeader("X-HTTP-Method-Override",d)};"GET"!==e.type&&!g.emulateJSON&&(e.processData=!1);return i.ajax(f.extend(e,c))};g.wrapError=function(a,b,c){return function(d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}};var x=function(){},G=function(a,
-b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};f.extend(d,a);x.prototype=a.prototype;d.prototype=new x;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},n=function(a,b){return!a||!a[b]?null:f.isFunction(a[b])?a[b]():a[b]},t=function(){throw Error('A "url" property or function must be specified');}}).call(this);
+(function(){var t=this;var e=t.Backbone;var i=[];var r=i.push;var s=i.slice;var n=i.splice;var a;if(typeof exports!=="undefined"){a=exports}else{a=t.Backbone={}}a.VERSION="1.0.0";var h=t._;if(!h&&typeof require!=="undefined")h=require("underscore");a.$=t.jQuery||t.Zepto||t.ender||t.$;a.noConflict=function(){t.Backbone=e;return this};a.emulateHTTP=false;a.emulateJSON=false;var o=a.Events={on:function(t,e,i){if(!l(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,i){if(!l(this,"once",t,[e,i])||!e)return this;var r=this;var s=h.once(function(){r.off(t,s);e.apply(this,arguments)});s._callback=e;return this.on(t,s,i)},off:function(t,e,i){var r,s,n,a,o,u,c,f;if(!this._events||!l(this,"off",t,[e,i]))return this;if(!t&&!e&&!i){this._events={};return this}a=t?[t]:h.keys(this._events);for(o=0,u=a.length;o<u;o++){t=a[o];if(n=this._events[t]){this._events[t]=r=[];if(e||i){for(c=0,f=n.length;c<f;c++){s=n[c];if(e&&e!==s.callback&&e!==s.callback._callback||i&&i!==s.context){r.push(s)}}}if(!r.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=s.call(arguments,1);if(!l(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)c(i,e);if(r)c(r,arguments);return this},stopListening:function(t,e,i){var r=this._listeners;if(!r)return this;var s=!e&&!i;if(typeof e==="object")i=this;if(t)(r={})[t._listenerId]=t;for(var n in r){r[n].off(e,i,this);if(s)delete this._listeners[n]}return this}};var u=/\s+/;var l=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(u.test(i)){var n=i.split(u);for(var a=0,h=n.length;a<h;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var c=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],h=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,h);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e)}};var f={listenTo:"on",listenToOnce:"once"};h.each(f,function(t,e){o[e]=function(e,i,r){var s=this._listeners||(this._listeners={});var n=e._listenerId||(e._listenerId=h.uniqueId("l"));s[n]=e;if(typeof i==="object")r=this;e[t](i,r,this);return this}});o.bind=o.on;o.unbind=o.off;h.extend(a,o);var d=a.Model=function(t,e){var i;var r=t||{};e||(e={});this.cid=h.uniqueId("c");this.attributes={};h.extend(this,h.pick(e,p));if(e.parse)r=this.parse(r,e)||{};if(i=h.result(this,"defaults")){r=h.defaults({},r,i)}this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};var p=["url","urlRoot","collection"];h.extend(d.prototype,o,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return h.clone(this.attributes)},sync:function(){return a.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return h.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,i){var r,s,n,a,o,u,l,c;if(t==null)return this;if(typeof t==="object"){s=t;i=e}else{(s={})[t]=e}i||(i={});if(!this._validate(s,i))return false;n=i.unset;o=i.silent;a=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=h.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in s)this.id=s[this.idAttribute];for(r in s){e=s[r];if(!h.isEqual(c[r],e))a.push(r);if(!h.isEqual(l[r],e)){this.changed[r]=e}else{delete this.changed[r]}n?delete c[r]:c[r]=e}if(!o){if(a.length)this._pending=true;for(var f=0,d=a.length;f<d;f++){this.trigger("change:"+a[f],this,c[a[f]],i)}}if(u)return this;if(!o){while(this._pending){this._pending=false;this.trigger("change",this,i)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,h.extend({},e,{unset:true}))},clear:function(t){var e={};for(var i in this.attributes)e[i]=void 0;return this.set(e,h.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!h.isEmpty(this.changed);return h.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?h.clone(this.changed):false;var e,i=false;var r=this._changing?this._previousAttributes:this.attributes;for(var s in t){if(h.isEqual(r[s],e=t[s]))continue;(i||(i={}))[s]=e}return i},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return h.clone(this._previousAttributes)},fetch:function(t){t=t?h.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var i=t.success;t.success=function(r){if(!e.set(e.parse(r,t),t))return false;if(i)i(e,r,t);e.trigger("sync",e,r,t)};R(this,t);return this.sync("read",this,t)},save:function(t,e,i){var r,s,n,a=this.attributes;if(t==null||typeof t==="object"){r=t;i=e}else{(r={})[t]=e}if(r&&(!i||!i.wait)&&!this.set(r,i))return false;i=h.extend({validate:true},i);if(!this._validate(r,i))return false;if(r&&i.wait){this.attributes=h.extend({},a,r)}if(i.parse===void 0)i.parse=true;var o=this;var u=i.success;i.success=function(t){o.attributes=a;var e=o.parse(t,i);if(i.wait)e=h.extend(r||{},e);if(h.isObject(e)&&!o.set(e,i)){return false}if(u)u(o,t,i);o.trigger("sync",o,t,i)};R(this,i);s=this.isNew()?"create":i.patch?"patch":"update";if(s==="patch")i.attrs=r;n=this.sync(s,this,i);if(r&&i.wait)this.attributes=a;return n},destroy:function(t){t=t?h.clone(t):{};var e=this;var i=t.success;var r=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(s){if(t.wait||e.isNew())r();if(i)i(e,s,t);if(!e.isNew())e.trigger("sync",e,s,t)};if(this.isNew()){t.success();return false}R(this,t);var s=this.sync("delete",this,t);if(!t.wait)r();return s},url:function(){var t=h.result(this,"urlRoot")||h.result(this.collection,"url")||U();if(this.isNew())return t;return t+(t.charAt(t.length-1)==="/"?"":"/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return this.id==null},isValid:function(t){return this._validate({},h.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=h.extend({},this.attributes,t);var i=this.validationError=this.validate(t,e)||null;if(!i)return true;this.trigger("invalid",this,i,h.extend(e||{},{validationError:i}));return false}});var v=["keys","values","pairs","invert","pick","omit"];h.each(v,function(t){d.prototype[t]=function(){var e=s.call(arguments);e.unshift(this.attributes);return h[t].apply(h,e)}});var g=a.Collection=function(t,e){e||(e={});if(e.url)this.url=e.url;if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,h.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,merge:false,remove:false};h.extend(g.prototype,o,{model:d,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return a.sync.apply(this,arguments)},add:function(t,e){return this.set(t,h.defaults(e||{},y))},remove:function(t,e){t=h.isArray(t)?t.slice():[t];e||(e={});var i,r,s,n;for(i=0,r=t.length;i<r;i++){n=this.get(t[i]);if(!n)continue;delete this._byId[n.id];delete this._byId[n.cid];s=this.indexOf(n);this.models.splice(s,1);this.length--;if(!e.silent){e.index=s;n.trigger("remove",n,this,e)}this._removeReference(n)}return this},set:function(t,e){e=h.defaults(e||{},m);if(e.parse)t=this.parse(t,e);if(!h.isArray(t))t=t?[t]:[];var i,s,a,o,u,l;var c=e.at;var f=this.comparator&&c==null&&e.sort!==false;var d=h.isString(this.comparator)?this.comparator:null;var p=[],v=[],g={};for(i=0,s=t.length;i<s;i++){if(!(a=this._prepareModel(t[i],e)))continue;if(u=this.get(a)){if(e.remove)g[u.cid]=true;if(e.merge){u.set(a.attributes,e);if(f&&!l&&u.hasChanged(d))l=true}}else if(e.add){p.push(a);a.on("all",this._onModelEvent,this);this._byId[a.cid]=a;if(a.id!=null)this._byId[a.id]=a}}if(e.remove){for(i=0,s=this.length;i<s;++i){if(!g[(a=this.models[i]).cid])v.push(a)}if(v.length)this.remove(v,e)}if(p.length){if(f)l=true;this.length+=p.length;if(c!=null){n.apply(this.models,[c,0].concat(p))}else{r.apply(this.models,p)}}if(l)this.sort({silent:true});if(e.silent)return this;for(i=0,s=p.length;i<s;i++){(a=p[i]).trigger("add",a,this,e)}if(l)this.trigger("sort",this,e);return this},reset:function(t,e){e||(e={});for(var i=0,r=this.models.length;i<r;i++){this._removeReference(this.models[i])}e.previousModels=this.models;this._reset();this.add(t,h.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return this},push:function(t,e){t=this._prepareModel(t,e);this.add(t,h.extend({at:this.length},e));return t},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){t=this._prepareModel(t,e);this.add(t,h.extend({at:0},e));return t},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(t,e){return this.models.slice(t,e)},get:function(t){if(t==null)return void 0;return this._byId[t.id!=null?t.id:t.cid||t]},at:function(t){return this.models[t]},where:function(t,e){if(h.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(h.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(h.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},sortedIndex:function(t,e,i){e||(e=this.comparator);var r=h.isFunction(e)?e:function(t){return t.get(e)};return h.sortedIndex(this.models,t,r,i)},pluck:function(t){return h.invoke(this.models,"get",t)},fetch:function(t){t=t?h.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var i=this;t.success=function(r){var s=t.reset?"reset":"set";i[s](r,t);if(e)e(i,r,t);i.trigger("sync",i,r,t)};R(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?h.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var i=this;var r=e.success;e.success=function(s){if(e.wait)i.add(t,e);if(r)r(t,s,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof d){if(!t.collection)t.collection=this;return t}e||(e={});e.collection=this;var i=new this.model(t,e);if(!i._validate(t,e)){this.trigger("invalid",this,t,e);return false}return i},_removeReference:function(t){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","indexOf","shuffle","lastIndexOf","isEmpty","chain"];h.each(_,function(t){g.prototype[t]=function(){var e=s.call(arguments);e.unshift(this.models);return h[t].apply(h,e)}});var w=["groupBy","countBy","sortBy"];h.each(w,function(t){g.prototype[t]=function(e,i){var r=h.isFunction(e)?e:function(t){return t.get(e)};return h[t](this.models,r,i)}});var b=a.View=function(t){this.cid=h.uniqueId("view");this._configure(t||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];h.extend(b.prototype,o,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,e){if(this.$el)this.undelegateEvents();this.$el=t instanceof a.$?t:a.$(t);this.el=this.$el[0];if(e!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=h.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var i=t[e];if(!h.isFunction(i))i=this[t[e]];if(!i)continue;var r=e.match(x);var s=r[1],n=r[2];i=h.bind(i,this);s+=".delegateEvents"+this.cid;if(n===""){this.$el.on(s,i)}else{this.$el.on(s,n,i)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_configure:function(t){if(this.options)t=h.extend({},h.result(this,"options"),t);h.extend(this,h.pick(t,E));this.options=t},_ensureElement:function(){if(!this.el){var t=h.extend({},h.result(this,"attributes"));if(this.id)t.id=h.result(this,"id");if(this.className)t["class"]=h.result(this,"className");var e=a.$("<"+h.result(this,"tagName")+">").attr(t);this.setElement(e,false)}else{this.setElement(h.result(this,"el"),false)}}});a.sync=function(t,e,i){var r=k[t];h.defaults(i||(i={}),{emulateHTTP:a.emulateHTTP,emulateJSON:a.emulateJSON});var s={type:r,dataType:"json"};if(!i.url){s.url=h.result(e,"url")||U()}if(i.data==null&&e&&(t==="create"||t==="update"||t==="patch")){s.contentType="application/json";s.data=JSON.stringify(i.attrs||e.toJSON(i))}if(i.emulateJSON){s.contentType="application/x-www-form-urlencoded";s.data=s.data?{model:s.data}:{}}if(i.emulateHTTP&&(r==="PUT"||r==="DELETE"||r==="PATCH")){s.type="POST";if(i.emulateJSON)s.data._method=r;var n=i.beforeSend;i.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",r);if(n)return n.apply(this,arguments)}}if(s.type!=="GET"&&!i.emulateJSON){s.processData=false}if(s.type==="PATCH"&&window.ActiveXObject&&!(window.external&&window.external.msActiveXFilteringEnabled)){s.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var o=i.xhr=a.ajax(h.extend(s,i));e.trigger("request",e,o,i);return o};var k={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};a.ajax=function(){return a.$.ajax.apply(a.$,arguments)};var S=a.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var $=/\((.*?)\)/g;var T=/(\(\?)?:\w+/g;var H=/\*\w+/g;var A=/[\-{}\[\]+?.,\\\^$|#\s]/g;h.extend(S.prototype,o,{initialize:function(){},route:function(t,e,i){if(!h.isRegExp(t))t=this._routeToRegExp(t);if(h.isFunction(e)){i=e;e=""}if(!i)i=this[e];var r=this;a.history.route(t,function(s){var n=r._extractParameters(t,s);i&&i.apply(r,n);r.trigger.apply(r,["route:"+e].concat(n));r.trigger("route",e,n);a.history.trigger("route",r,e,n)});return this},navigate:function(t,e){a.history.navigate(t,e);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=h.result(this,"routes");var t,e=h.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(A,"\\$&").replace($,"(?:$1)?").replace(T,function(t,e){return e?t:"([^/]+)"}).replace(H,"(.*?)");return new RegExp("^"+t+"$")},_extractParameters:function(t,e){var i=t.exec(e).slice(1);return h.map(i,function(t){return t?decodeURIComponent(t):null})}});var I=a.History=function(){this.handlers=[];h.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var N=/^[#\/]|\s+$/g;var P=/^\/+|\/+$/g;var O=/msie [\w.]+/;var C=/\/$/;I.started=false;h.extend(I.prototype,o,{interval:50,getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=this.location.pathname;var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.substr(i.length)}else{t=this.getHash()}}return t.replace(N,"")},start:function(t){if(I.started)throw new Error("Backbone.history has already been started");I.started=true;this.options=h.extend({},{root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var e=this.getFragment();var i=document.documentMode;var r=O.exec(navigator.userAgent.toLowerCase())&&(!i||i<=7);this.root=("/"+this.root+"/").replace(P,"/");if(r&&this._wantsHashChange){this.iframe=a.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow;this.navigate(e)}if(this._hasPushState){a.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!r){a.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=e;var s=this.location;var n=s.pathname.replace(/[^\/]$/,"$&/")===this.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!n){this.fragment=this.getFragment(null,true);this.location.replace(this.root+this.location.search+"#"+this.fragment);return true}else if(this._wantsPushState&&this._hasPushState&&n&&s.hash){this.fragment=this.getHash().replace(N,"");this.history.replaceState({},document.title,this.root+this.fragment+s.search)}if(!this.options.silent)return this.loadUrl()},stop:function(){a.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);I.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(t){var e=this.fragment=this.getFragment(t);var i=h.any(this.handlers,function(t){if(t.route.test(e)){t.callback(e);return true}});return i},navigate:function(t,e){if(!I.started)return false;if(!e||e===true)e={trigger:e};t=this.getFragment(t||"");if(this.fragment===t)return;this.fragment=t;var i=this.root+t;if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});a.history=new I;var j=function(t,e){var i=this;var r;if(t&&h.has(t,"constructor")){r=t.constructor}else{r=function(){return i.apply(this,arguments)}}h.extend(r,i,e);var s=function(){this.constructor=r};s.prototype=i.prototype;r.prototype=new s;if(t)h.extend(r.prototype,t);r.__super__=i.prototype;return r};d.extend=g.extend=S.extend=b.extend=I.extend=j;var U=function(){throw new Error('A "url" property or function must be specified')};var R=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}}}).call(this);
diff --git a/wp-includes/js/crop/cropper.css b/wp-includes/js/crop/cropper.css
index 973f17849..b2799c49a 100644
--- a/wp-includes/js/crop/cropper.css
+++ b/wp-includes/js/crop/cropper.css
@@ -5,7 +5,7 @@
 	cursor: crosshair;
 }
 
-/* an extra classname is applied for Opera < 9.0 to fix it's lack of opacity support */
+/* an extra classname is applied for Opera < 9.0 to fix its lack of opacity support */
 .imgCrop_wrap.opera8 .imgCrop_overlay,
 .imgCrop_wrap.opera8 .imgCrop_clickArea { 
 	background-color: transparent;
diff --git a/wp-includes/js/heartbeat.js b/wp-includes/js/heartbeat.js
new file mode 100644
index 000000000..802360065
--- /dev/null
+++ b/wp-includes/js/heartbeat.js
@@ -0,0 +1,461 @@
+/**
+ * Heartbeat API
+ *
+ * Note: this API is "experimental" meaning it will likely change a lot
+ * in the next few releases based on feedback from 3.6.0. If you intend
+ * to use it, please follow the development closely.
+ *
+ * Heartbeat is a simple server polling API that sends XHR requests to
+ * the server every 15 seconds and triggers events (or callbacks) upon
+ * receiving data. Currently these 'ticks' handle transports for post locking,
+ * login-expiration warnings, and related tasks while a user is logged in.
+ *
+ * Available filters in ajax-actions.php:
+ * - heartbeat_received
+ * - heartbeat_send
+ * - heartbeat_tick
+ * - heartbeat_nopriv_received
+ * - heartbeat_nopriv_send
+ * - heartbeat_nopriv_tick
+ * @see wp_ajax_nopriv_heartbeat(), wp_ajax_heartbeat()
+ *
+ * @since 3.6.0
+ */
+
+ // Ensure the global `wp` object exists.
+window.wp = window.wp || {};
+
+(function($){
+	var Heartbeat = function() {
+		var self = this,
+			running,
+			beat,
+			screenId = typeof pagenow != 'undefined' ? pagenow : '',
+			url = typeof ajaxurl != 'undefined' ? ajaxurl : '',
+			settings,
+			tick = 0,
+			queue = {},
+			interval,
+			connecting,
+			countdown = 0,
+			errorcount = 0,
+			tempInterval,
+			hasFocus = true,
+			isUserActive,
+			userActiveEvents,
+			winBlurTimeout,
+			frameBlurTimeout = -1,
+			hasConnectionError = false;
+
+		/**
+		 * Returns a boolean that's indicative of whether or not there is a connection error
+		 *
+		 * @returns boolean
+		 */
+		this.hasConnectionError = function() {
+			return hasConnectionError;
+		};
+
+		if ( typeof( window.heartbeatSettings ) == 'object' ) {
+			settings = $.extend( {}, window.heartbeatSettings );
+
+			// Add private vars
+			url = settings.ajaxurl || url;
+			delete settings.ajaxurl;
+			delete settings.nonce;
+
+			interval = settings.interval || 15; // default interval
+			delete settings.interval;
+			// The interval can be from 15 to 60 sec. and can be set temporarily to 5 sec.
+			if ( interval < 15 )
+				interval = 15;
+			else if ( interval > 60 )
+				interval = 60;
+
+			interval = interval * 1000;
+
+			// 'screenId' can be added from settings on the front-end where the JS global 'pagenow' is not set
+			screenId = screenId || settings.screenId || 'front';
+			delete settings.screenId;
+
+			// Add or overwrite public vars
+			$.extend( this, settings );
+		}
+
+		function time(s) {
+			if ( s )
+				return parseInt( (new Date()).getTime() / 1000 );
+
+			return (new Date()).getTime();
+		}
+
+		function isLocalFrame( frame ) {
+			var origin, src = frame.src;
+
+			if ( src && /^https?:\/\//.test( src ) ) {
+				origin = window.location.origin ? window.location.origin : window.location.protocol + '//' + window.location.host;
+
+				if ( src.indexOf( origin ) !== 0 )
+					return false;
+			}
+
+			try {
+				if ( frame.contentWindow.document )
+					return true;
+			} catch(e) {}
+
+			return false;
+		}
+
+		// Set error state and fire an event on XHR errors or timeout
+		function errorstate( error ) {
+			var trigger;
+
+			if ( error ) {
+				switch ( error ) {
+					case 'abort':
+						// do nothing
+						break;
+					case 'timeout':
+						// no response for 30 sec.
+						trigger = true;
+						break;
+					case 'parsererror':
+					case 'error':
+					case 'empty':
+					case 'unknown':
+						errorcount++;
+
+						if ( errorcount > 2 )
+							trigger = true;
+
+						break;
+				}
+
+				if ( trigger && ! self.hasConnectionError() ) {
+					hasConnectionError = true;
+					$(document).trigger( 'heartbeat-connection-lost', [error] );
+				}
+			} else if ( self.hasConnectionError() ) {
+				errorcount = 0;
+				hasConnectionError = false;
+				$(document).trigger( 'heartbeat-connection-restored' );
+			}
+		}
+
+		function connect() {
+			var send = {}, data, i, empty = true,
+			nonce = typeof window.heartbeatSettings == 'object' ? window.heartbeatSettings.nonce : '';
+			tick = time();
+
+			data = $.extend( {}, queue );
+			// Clear the data queue, anything added after this point will be send on the next tick
+			queue = {};
+
+			$(document).trigger( 'heartbeat-send', [data] );
+
+			for ( i in data ) {
+				if ( data.hasOwnProperty( i ) ) {
+					empty = false;
+					break;
+				}
+			}
+
+			// If nothing to send (nothing is expecting a response),
+			// schedule the next tick and bail
+			if ( empty && ! self.hasConnectionError() ) {
+				connecting = false;
+				next();
+				return;
+			}
+
+			send.data = data;
+			send.interval = interval / 1000;
+			send._nonce = nonce;
+			send.action = 'heartbeat';
+			send.screen_id = screenId;
+			send.has_focus = hasFocus;
+
+			connecting = true;
+			self.xhr = $.ajax({
+				url: url,
+				type: 'post',
+				timeout: 30000, // throw an error if not completed after 30 sec.
+				data: send,
+				dataType: 'json'
+			}).done( function( response, textStatus, jqXHR ) {
+				var new_interval;
+
+				if ( ! response )
+					return errorstate( 'empty' );
+
+				// Clear error state
+				if ( self.hasConnectionError() )
+					errorstate();
+
+				if ( response.nonces_expired ) {
+					$(document).trigger( 'heartbeat-nonces-expired' );
+					return;
+				}
+
+				// Change the interval from PHP
+				if ( response.heartbeat_interval ) {
+					new_interval = response.heartbeat_interval;
+					delete response.heartbeat_interval;
+				}
+
+				self.tick( response, textStatus, jqXHR );
+
+				// do this last, can trigger the next XHR if connection time > 5 sec. and new_interval == 'fast'
+				if ( new_interval )
+					self.interval.call( self, new_interval );
+			}).always( function() {
+				connecting = false;
+				next();
+			}).fail( function( jqXHR, textStatus, error ) {
+				errorstate( textStatus || 'unknown' );
+				self.error( jqXHR, textStatus, error );
+			});
+		}
+
+		function next() {
+			var delta = time() - tick, t = interval;
+
+			if ( ! running )
+				return;
+
+			if ( ! hasFocus ) {
+				t = 100000; // 100 sec. Post locks expire after 120 sec.
+			} else if ( countdown > 0 && tempInterval ) {
+				t = tempInterval;
+				countdown--;
+			}
+
+			window.clearTimeout(beat);
+
+			if ( delta < t ) {
+				beat = window.setTimeout(
+					function(){
+						if ( running )
+							connect();
+					},
+					t - delta
+				);
+			} else {
+				connect();
+			}
+		}
+
+		function blurred() {
+			window.clearTimeout(winBlurTimeout);
+			window.clearTimeout(frameBlurTimeout);
+			winBlurTimeout = frameBlurTimeout = 0;
+
+			hasFocus = false;
+		}
+
+		function focused() {
+			window.clearTimeout(winBlurTimeout);
+			window.clearTimeout(frameBlurTimeout);
+			winBlurTimeout = frameBlurTimeout = 0;
+
+			isUserActive = time();
+
+			if ( hasFocus )
+				return;
+
+			hasFocus = true;
+			window.clearTimeout(beat);
+
+			if ( ! connecting )
+				next();
+		}
+
+		function setFrameEvents() {
+			$('iframe').each( function( i, frame ){
+				if ( ! isLocalFrame( frame ) )
+					return;
+
+				if ( $.data( frame, 'wp-heartbeat-focus' ) )
+					return;
+
+				$.data( frame, 'wp-heartbeat-focus', 1 );
+
+				$( frame.contentWindow ).on( 'focus.wp-heartbeat-focus', function(e) {
+					focused();
+				}).on('blur.wp-heartbeat-focus', function(e) {
+					setFrameEvents();
+					frameBlurTimeout = window.setTimeout( function(){ blurred(); }, 500 );
+				});
+			});
+		}
+
+		$(window).on( 'blur.wp-heartbeat-focus', function(e) {
+			setFrameEvents();
+			winBlurTimeout = window.setTimeout( function(){ blurred(); }, 500 );
+		}).on( 'focus.wp-heartbeat-focus', function() {
+			$('iframe').each( function( i, frame ) {
+				if ( !isLocalFrame( frame ) )
+					return;
+
+				$.removeData( frame, 'wp-heartbeat-focus' );
+				$( frame.contentWindow ).off( '.wp-heartbeat-focus' );
+			});
+
+			focused();
+		});
+
+		function userIsActive() {
+			userActiveEvents = false;
+			$(document).off( '.wp-heartbeat-active' );
+			$('iframe').each( function( i, frame ) {
+				if ( ! isLocalFrame( frame ) )
+					return;
+
+				$( frame.contentWindow ).off( '.wp-heartbeat-active' );
+			});
+
+			focused();
+		}
+
+		// Set 'hasFocus = true' if user is active and the window is in the background.
+		// Set 'hasFocus = false' if the user has been inactive (no mouse or keyboard activity) for 5 min. even when the window has focus.
+		function checkUserActive() {
+			var lastActive = isUserActive ? time() - isUserActive : 0;
+
+			// Throttle down when no mouse or keyboard activity for 5 min
+			if ( lastActive > 300000 && hasFocus )
+				 blurred();
+
+			if ( ! userActiveEvents ) {
+				$(document).on( 'mouseover.wp-heartbeat-active keyup.wp-heartbeat-active', function(){ userIsActive(); } );
+
+				$('iframe').each( function( i, frame ) {
+					if ( ! isLocalFrame( frame ) )
+						return;
+
+					$( frame.contentWindow ).on( 'mouseover.wp-heartbeat-active keyup.wp-heartbeat-active', function(){ userIsActive(); } );
+				});
+
+				userActiveEvents = true;
+			}
+		}
+
+		// Check for user activity every 30 seconds.
+		window.setInterval( function(){ checkUserActive(); }, 30000 );
+		$(document).ready( function() {
+			// Start one tick (15 sec) after DOM ready
+			running = true;
+			tick = time();
+			next();
+		});
+
+		this.hasFocus = function() {
+			return hasFocus;
+		};
+
+		/**
+		 * Get/Set the interval
+		 *
+		 * When setting to 'fast', the interval is 5 sec. for the next 30 ticks (for 2 min and 30 sec).
+		 * If the window doesn't have focus, the interval slows down to 2 min.
+		 *
+		 * @param string speed Interval speed: 'fast' (5sec), 'standard' (15sec) default, 'slow' (60sec)
+		 * @param string ticks Used with speed = 'fast', how many ticks before the speed reverts back
+		 * @return int Current interval in seconds
+		 */
+		this.interval = function( speed, ticks ) {
+			var reset, seconds;
+			ticks = parseInt( ticks, 10 ) || 30;
+			ticks = ticks < 1 || ticks > 30 ? 30 : ticks;
+
+			if ( speed ) {
+				switch ( speed ) {
+					case 'fast':
+						seconds = 5;
+						countdown = ticks;
+						break;
+					case 'slow':
+						seconds = 60;
+						countdown = 0;
+						break;
+					case 'long-polling':
+						// Allow long polling, (experimental)
+						interval = 0;
+						return 0;
+						break;
+					default:
+						seconds = 15;
+						countdown = 0;
+				}
+
+				// Reset when the new interval value is lower than the current one
+				reset = seconds * 1000 < interval;
+
+				if ( countdown > 0 ) {
+					tempInterval = seconds * 1000;
+				} else {
+					interval = seconds * 1000;
+					tempInterval = 0;
+				}
+
+				if ( reset )
+					next();
+			}
+
+			if ( ! hasFocus )
+				return 120;
+
+			return tempInterval ? tempInterval / 1000 : interval / 1000;
+		};
+
+		/**
+		 * Enqueue data to send with the next XHR
+		 *
+		 * As the data is sent later, this function doesn't return the XHR response.
+		 * To see the response, use the custom jQuery event 'heartbeat-tick' on the document, example:
+		 *		$(document).on( 'heartbeat-tick.myname', function( event, data, textStatus, jqXHR ) {
+		 *			// code
+		 *		});
+		 * If the same 'handle' is used more than once, the data is not overwritten when the third argument is 'true'.
+		 * Use wp.heartbeat.isQueued('handle') to see if any data is already queued for that handle.
+		 *
+		 * $param string handle Unique handle for the data. The handle is used in PHP to receive the data.
+		 * $param mixed data The data to send.
+		 * $param bool dont_overwrite Whether to overwrite existing data in the queue.
+		 * $return bool Whether the data was queued or not.
+		 */
+		this.enqueue = function( handle, data, dont_overwrite ) {
+			if ( handle ) {
+				if ( queue.hasOwnProperty( handle ) && dont_overwrite )
+					return false;
+
+				queue[handle] = data;
+				return true;
+			}
+			return false;
+		};
+
+		/**
+		 * Check if data with a particular handle is queued
+		 *
+		 * $param string handle The handle for the data
+		 * $return mixed The data queued with that handle or null
+		 */
+		this.isQueued = function( handle ) {
+			return queue[handle];
+		};
+	};
+
+	$.extend( Heartbeat.prototype, {
+		tick: function( data, textStatus, jqXHR ) {
+			$(document).trigger( 'heartbeat-tick', [data, textStatus, jqXHR] );
+		},
+		error: function( jqXHR, textStatus, error ) {
+			$(document).trigger( 'heartbeat-error', [jqXHR, textStatus, error] );
+		}
+	});
+
+	wp.heartbeat = new Heartbeat();
+
+}(jQuery));
diff --git a/wp-includes/js/heartbeat.min.js b/wp-includes/js/heartbeat.min.js
new file mode 100644
index 000000000..215802869
--- /dev/null
+++ b/wp-includes/js/heartbeat.min.js
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(a){var b=function(){var t=this,e,c,q=typeof pagenow!="undefined"?pagenow:"",h=typeof ajaxurl!="undefined"?ajaxurl:"",C,B=0,x={},D,i,r=0,A=0,y,f=true,p,j,g,w=-1,l=false;this.hasConnectionError=function(){return l};if(typeof(window.heartbeatSettings)=="object"){C=a.extend({},window.heartbeatSettings);h=C.ajaxurl||h;delete C.ajaxurl;delete C.nonce;D=C.interval||15;delete C.interval;if(D<15){D=15}else{if(D>60){D=60}}D=D*1000;q=q||C.screenId||"front";delete C.screenId;a.extend(this,C)}function k(F){if(F){return parseInt((new Date()).getTime()/1000)}return(new Date()).getTime()}function z(I){var F,H=I.src;if(H&&/^https?:\/\//.test(H)){F=window.location.origin?window.location.origin:window.location.protocol+"//"+window.location.host;if(H.indexOf(F)!==0){return false}}try{if(I.contentWindow.document){return true}}catch(G){}return false}function v(G){var F;if(G){switch(G){case"abort":break;case"timeout":F=true;break;case"parsererror":case"error":case"empty":case"unknown":A++;if(A>2){F=true}break}if(F&&!t.hasConnectionError()){l=true;a(document).trigger("heartbeat-connection-lost",[G])}}else{if(t.hasConnectionError()){A=0;l=false;a(document).trigger("heartbeat-connection-restored")}}}function d(){var J={},I,F,H=true,G=typeof window.heartbeatSettings=="object"?window.heartbeatSettings.nonce:"";B=k();I=a.extend({},x);x={};a(document).trigger("heartbeat-send",[I]);for(F in I){if(I.hasOwnProperty(F)){H=false;break}}if(H&&!t.hasConnectionError()){i=false;u();return}J.data=I;J.interval=D/1000;J._nonce=G;J.action="heartbeat";J.screen_id=q;J.has_focus=f;i=true;t.xhr=a.ajax({url:h,type:"post",timeout:30000,data:J,dataType:"json"}).done(function(K,N,L){var M;if(!K){return v("empty")}if(t.hasConnectionError()){v()}if(K.nonces_expired){a(document).trigger("heartbeat-nonces-expired");return}if(K.heartbeat_interval){M=K.heartbeat_interval;delete K.heartbeat_interval}t.tick(K,N,L);if(M){t.interval.call(t,M)}}).always(function(){i=false;u()}).fail(function(L,M,K){v(M||"unknown");t.error(L,M,K)})}function u(){var G=k()-B,F=D;if(!e){return}if(!f){F=100000}else{if(r>0&&y){F=y;r--}}window.clearTimeout(c);if(G<F){c=window.setTimeout(function(){if(e){d()}},F-G)}else{d()}}function o(){window.clearTimeout(g);window.clearTimeout(w);g=w=0;f=false}function n(){window.clearTimeout(g);window.clearTimeout(w);g=w=0;p=k();if(f){return}f=true;window.clearTimeout(c);if(!i){u()}}function s(){a("iframe").each(function(F,G){if(!z(G)){return}if(a.data(G,"wp-heartbeat-focus")){return}a.data(G,"wp-heartbeat-focus",1);a(G.contentWindow).on("focus.wp-heartbeat-focus",function(H){n()}).on("blur.wp-heartbeat-focus",function(H){s();w=window.setTimeout(function(){o()},500)})})}a(window).on("blur.wp-heartbeat-focus",function(F){s();g=window.setTimeout(function(){o()},500)}).on("focus.wp-heartbeat-focus",function(){a("iframe").each(function(F,G){if(!z(G)){return}a.removeData(G,"wp-heartbeat-focus");a(G.contentWindow).off(".wp-heartbeat-focus")});n()});function E(){j=false;a(document).off(".wp-heartbeat-active");a("iframe").each(function(F,G){if(!z(G)){return}a(G.contentWindow).off(".wp-heartbeat-active")});n()}function m(){var F=p?k()-p:0;if(F>300000&&f){o()}if(!j){a(document).on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active",function(){E()});a("iframe").each(function(G,H){if(!z(H)){return}a(H.contentWindow).on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active",function(){E()})});j=true}}window.setInterval(function(){m()},30000);a(document).ready(function(){e=true;B=k();u()});this.hasFocus=function(){return f};this.interval=function(H,G){var F,I;G=parseInt(G,10)||30;G=G<1||G>30?30:G;if(H){switch(H){case"fast":I=5;r=G;break;case"slow":I=60;r=0;break;case"long-polling":D=0;return 0;break;default:I=15;r=0}F=I*1000<D;if(r>0){y=I*1000}else{D=I*1000;y=0}if(F){u()}}if(!f){return 120}return y?y/1000:D/1000};this.enqueue=function(H,G,F){if(H){if(x.hasOwnProperty(H)&&F){return false}x[H]=G;return true}return false};this.isQueued=function(F){return x[F]}};a.extend(b.prototype,{tick:function(d,e,c){a(document).trigger("heartbeat-tick",[d,e,c])},error:function(d,e,c){a(document).trigger("heartbeat-error",[d,e,c])}});wp.heartbeat=new b()}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/hoverIntent.js b/wp-includes/js/hoverIntent.js
index 3dcff261f..88e0e8a24 100644
--- a/wp-includes/js/hoverIntent.js
+++ b/wp-includes/js/hoverIntent.js
@@ -1,106 +1,115 @@
-/**
-* hoverIntent is similar to jQuery's built-in "hover" function except that
-* instead of firing the onMouseOver event immediately, hoverIntent checks
-* to see if the user's mouse has slowed down (beneath the sensitivity
-* threshold) before firing the onMouseOver event.
-* 
-* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
-* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
-* 
-* hoverIntent is currently available for use in all personal or commercial 
-* projects under both MIT and GPL licenses. This means that you can choose 
-* the license that best suits your project, and use it accordingly.
-* 
-* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions
-* $("ul li").hoverIntent( showNav , hideNav );
-* 
-* // advanced usage receives configuration object only
-* $("ul li").hoverIntent({
-*	sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
-*	interval: 100,   // number = milliseconds of polling interval
-*	over: showNav,  // function = onMouseOver callback (required)
-*	timeout: 0,   // number = milliseconds delay before onMouseOut function call
-*	out: hideNav    // function = onMouseOut callback (required)
-* });
-* 
-* @param  f  onMouseOver function || An object with configuration options
-* @param  g  onMouseOut function  || Nothing (use configuration options object)
-* @author    Brian Cherne brian(at)cherne(dot)net
-*/
+/*!
+ * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
+ * http://cherne.net/brian/resources/jquery.hoverIntent.html
+ *
+ * You may use hoverIntent under the terms of the MIT license. Basically that
+ * means you are free to use hoverIntent as long as this header is left intact.
+ * Copyright 2007, 2013 Brian Cherne
+ */
+
+/* hoverIntent is similar to jQuery's built-in "hover" method except that
+ * instead of firing the handlerIn function immediately, hoverIntent checks
+ * to see if the user's mouse has slowed down (beneath the sensitivity
+ * threshold) before firing the event. The handlerOut function is only
+ * called after a matching handlerIn.
+ *
+ * // basic usage ... just like .hover()
+ * .hoverIntent( handlerIn, handlerOut )
+ * .hoverIntent( handlerInOut )
+ *
+ * // basic usage ... with event delegation!
+ * .hoverIntent( handlerIn, handlerOut, selector )
+ * .hoverIntent( handlerInOut, selector )
+ *
+ * // using a basic configuration object
+ * .hoverIntent( config )
+ *
+ * @param  handlerIn   function OR configuration object
+ * @param  handlerOut  function OR selector for delegation OR undefined
+ * @param  selector    selector OR undefined
+ * @author Brian Cherne <brian(at)cherne(dot)net>
+ */
 (function($) {
-	$.fn.hoverIntent = function(f,g) {
-		// default configuration options
-		var cfg = {
-			sensitivity: 7,
-			interval: 100,
-			timeout: 0
-		};
-		// override configuration options with user supplied object
-		cfg = $.extend(cfg, g ? { over: f, out: g } : f );
+    $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
+
+        // default configuration values
+        var cfg = {
+            interval: 100,
+            sensitivity: 7,
+            timeout: 0
+        };
+
+        if ( typeof handlerIn === "object" ) {
+            cfg = $.extend(cfg, handlerIn );
+        } else if ($.isFunction(handlerOut)) {
+            cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
+        } else {
+            cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
+        }
 
-		// instantiate variables
-		// cX, cY = current X and Y position of mouse, updated by mousemove event
-		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
-		var cX, cY, pX, pY;
+        // instantiate variables
+        // cX, cY = current X and Y position of mouse, updated by mousemove event
+        // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+        var cX, cY, pX, pY;
 
-		// A private function for getting mouse position
-		var track = function(ev) {
-			cX = ev.pageX;
-			cY = ev.pageY;
-		};
+        // A private function for getting mouse position
+        var track = function(ev) {
+            cX = ev.pageX;
+            cY = ev.pageY;
+        };
 
-		// A private function for comparing current and previous mouse position
-		var compare = function(ev,ob) {
-			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
-			// compare mouse positions to see if they've crossed the threshold
-			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
-				$(ob).unbind("mousemove",track);
-				// set hoverIntent state to true (so mouseOut can be called)
-				ob.hoverIntent_s = 1;
-				return cfg.over.apply(ob,[ev]);
-			} else {
-				// set previous coordinates for next time
-				pX = cX; pY = cY;
-				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
-				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
-			}
-		};
+        // A private function for comparing current and previous mouse position
+        var compare = function(ev,ob) {
+            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+            // compare mouse positions to see if they've crossed the threshold
+            if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+                $(ob).off("mousemove.hoverIntent",track);
+                // set hoverIntent state to true (so mouseOut can be called)
+                ob.hoverIntent_s = 1;
+                return cfg.over.apply(ob,[ev]);
+            } else {
+                // set previous coordinates for next time
+                pX = cX; pY = cY;
+                // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+                ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+            }
+        };
 
-		// A private function for delaying the mouseOut function
-		var delay = function(ev,ob) {
-			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
-			ob.hoverIntent_s = 0;
-			return cfg.out.apply(ob,[ev]);
-		};
+        // A private function for delaying the mouseOut function
+        var delay = function(ev,ob) {
+            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+            ob.hoverIntent_s = 0;
+            return cfg.out.apply(ob,[ev]);
+        };
 
-		// A private function for handling mouse 'hovering'
-		var handleHover = function(e) {
-			// copy objects to be passed into t (required for event object to be passed in IE)
-			var ev = jQuery.extend({},e);
-			var ob = this;
+        // A private function for handling mouse 'hovering'
+        var handleHover = function(e) {
+            // copy objects to be passed into t (required for event object to be passed in IE)
+            var ev = jQuery.extend({},e);
+            var ob = this;
 
-			// cancel hoverIntent timer if it exists
-			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+            // cancel hoverIntent timer if it exists
+            if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
 
-			// if e.type == "mouseenter"
-			if (e.type == "mouseenter") {
-				// set "previous" X and Y position based on initial entry point
-				pX = ev.pageX; pY = ev.pageY;
-				// update "current" X and Y position based on mousemove
-				$(ob).bind("mousemove",track);
-				// start polling interval (self-calling timeout) to compare mouse coordinates over time
-				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+            // if e.type == "mouseenter"
+            if (e.type == "mouseenter") {
+                // set "previous" X and Y position based on initial entry point
+                pX = ev.pageX; pY = ev.pageY;
+                // update "current" X and Y position based on mousemove
+                $(ob).on("mousemove.hoverIntent",track);
+                // start polling interval (self-calling timeout) to compare mouse coordinates over time
+                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
 
-			// else e.type == "mouseleave"
-			} else {
-				// unbind expensive mousemove event
-				$(ob).unbind("mousemove",track);
-				// if hoverIntent state is true, then call the mouseOut function after the specified delay
-				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
-			}
-		};
+                // else e.type == "mouseleave"
+            } else {
+                // unbind expensive mousemove event
+                $(ob).off("mousemove.hoverIntent",track);
+                // if hoverIntent state is true, then call the mouseOut function after the specified delay
+                if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+            }
+        };
 
-		// bind the function to the two event listeners
-		return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
-	};
-})(jQuery);
\ No newline at end of file
+        // listen for mouseenter and mouseleave
+        return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
+    };
+})(jQuery);
diff --git a/wp-includes/js/hoverIntent.min.js b/wp-includes/js/hoverIntent.min.js
index 1576592de..9a7644cba 100644
--- a/wp-includes/js/hoverIntent.min.js
+++ b/wp-includes/js/hoverIntent.min.js
@@ -1 +1,9 @@
-(function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(o){var g=jQuery.extend({},o);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(o.type=="mouseenter"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.bind("mouseenter",b).bind("mouseleave",b)}})(jQuery);
\ No newline at end of file
+/*!
+ * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
+ * http://cherne.net/brian/resources/jquery.hoverIntent.html
+ *
+ * You may use hoverIntent under the terms of the MIT license. Basically that
+ * means you are free to use hoverIntent as long as this header is left intact.
+ * Copyright 2007, 2013 Brian Cherne
+ */
+(function(a){a.fn.hoverIntent=function(m,d,h){var j={interval:100,sensitivity:7,timeout:0};if(typeof m==="object"){j=a.extend(j,m)}else{if(a.isFunction(d)){j=a.extend(j,{over:m,out:d,selector:h})}else{j=a.extend(j,{over:m,out:m,selector:d})}}var l,k,g,f;var e=function(n){l=n.pageX;k=n.pageY};var c=function(o,n){n.hoverIntent_t=clearTimeout(n.hoverIntent_t);if((Math.abs(g-l)+Math.abs(f-k))<j.sensitivity){a(n).off("mousemove.hoverIntent",e);n.hoverIntent_s=1;return j.over.apply(n,[o])}else{g=l;f=k;n.hoverIntent_t=setTimeout(function(){c(o,n)},j.interval)}};var i=function(o,n){n.hoverIntent_t=clearTimeout(n.hoverIntent_t);n.hoverIntent_s=0;return j.out.apply(n,[o])};var b=function(p){var o=jQuery.extend({},p);var n=this;if(n.hoverIntent_t){n.hoverIntent_t=clearTimeout(n.hoverIntent_t)}if(p.type=="mouseenter"){g=o.pageX;f=o.pageY;a(n).on("mousemove.hoverIntent",e);if(n.hoverIntent_s!=1){n.hoverIntent_t=setTimeout(function(){c(o,n)},j.interval)}}else{a(n).off("mousemove.hoverIntent",e);if(n.hoverIntent_s==1){n.hoverIntent_t=setTimeout(function(){i(o,n)},j.timeout)}}};return this.on({"mouseenter.hoverIntent":b,"mouseleave.hoverIntent":b},j.selector)}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery-migrate.js b/wp-includes/js/jquery/jquery-migrate.js
new file mode 100644
index 000000000..dbe8cbd4d
--- /dev/null
+++ b/wp-includes/js/jquery/jquery-migrate.js
@@ -0,0 +1,521 @@
+/*!
+ * jQuery Migrate - v1.2.1 - 2013-05-08
+ * https://github.com/jquery/jquery-migrate
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
+ */
+(function( jQuery, window, undefined ) {
+// See http://bugs.jquery.com/ticket/13335
+// "use strict";
+
+
+var warnedAbout = {};
+
+// List of warnings already given; public read only
+jQuery.migrateWarnings = [];
+
+// Set to true to prevent console output; migrateWarnings still maintained
+// jQuery.migrateMute = false;
+
+// Show a message on the console so devs know we're active
+if ( !jQuery.migrateMute && window.console && window.console.log ) {
+	window.console.log("JQMIGRATE: Logging is active");
+}
+
+// Set to false to disable traces that appear with warnings
+if ( jQuery.migrateTrace === undefined ) {
+	jQuery.migrateTrace = true;
+}
+
+// Forget any warnings we've already given; public
+jQuery.migrateReset = function() {
+	warnedAbout = {};
+	jQuery.migrateWarnings.length = 0;
+};
+
+function migrateWarn( msg) {
+	var console = window.console;
+	if ( !warnedAbout[ msg ] ) {
+		warnedAbout[ msg ] = true;
+		jQuery.migrateWarnings.push( msg );
+		if ( console && console.warn && !jQuery.migrateMute ) {
+			console.warn( "JQMIGRATE: " + msg );
+			if ( jQuery.migrateTrace && console.trace ) {
+				console.trace();
+			}
+		}
+	}
+}
+
+function migrateWarnProp( obj, prop, value, msg ) {
+	if ( Object.defineProperty ) {
+		// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
+		// allow property to be overwritten in case some other plugin wants it
+		try {
+			Object.defineProperty( obj, prop, {
+				configurable: true,
+				enumerable: true,
+				get: function() {
+					migrateWarn( msg );
+					return value;
+				},
+				set: function( newValue ) {
+					migrateWarn( msg );
+					value = newValue;
+				}
+			});
+			return;
+		} catch( err ) {
+			// IE8 is a dope about Object.defineProperty, can't warn there
+		}
+	}
+
+	// Non-ES5 (or broken) browser; just set the property
+	jQuery._definePropertyBroken = true;
+	obj[ prop ] = value;
+}
+
+if ( document.compatMode === "BackCompat" ) {
+	// jQuery has never supported or tested Quirks Mode
+	migrateWarn( "jQuery is not compatible with Quirks Mode" );
+}
+
+
+var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
+	oldAttr = jQuery.attr,
+	valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
+		function() { return null; },
+	valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
+		function() { return undefined; },
+	rnoType = /^(?:input|button)$/i,
+	rnoAttrNodeType = /^[238]$/,
+	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+	ruseDefault = /^(?:checked|selected)$/i;
+
+// jQuery.attrFn
+migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
+
+jQuery.attr = function( elem, name, value, pass ) {
+	var lowerName = name.toLowerCase(),
+		nType = elem && elem.nodeType;
+
+	if ( pass ) {
+		// Since pass is used internally, we only warn for new jQuery
+		// versions where there isn't a pass arg in the formal params
+		if ( oldAttr.length < 4 ) {
+			migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
+		}
+		if ( elem && !rnoAttrNodeType.test( nType ) &&
+			(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
+			return jQuery( elem )[ name ]( value );
+		}
+	}
+
+	// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
+	// for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
+	if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
+		migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
+	}
+
+	// Restore boolHook for boolean property/attribute synchronization
+	if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
+		jQuery.attrHooks[ lowerName ] = {
+			get: function( elem, name ) {
+				// Align boolean attributes with corresponding properties
+				// Fall back to attribute presence where some booleans are not supported
+				var attrNode,
+					property = jQuery.prop( elem, name );
+				return property === true || typeof property !== "boolean" &&
+					( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+
+					name.toLowerCase() :
+					undefined;
+			},
+			set: function( elem, value, name ) {
+				var propName;
+				if ( value === false ) {
+					// Remove boolean attributes when set to false
+					jQuery.removeAttr( elem, name );
+				} else {
+					// value is true since we know at this point it's type boolean and not false
+					// Set boolean attributes to the same name and set the DOM property
+					propName = jQuery.propFix[ name ] || name;
+					if ( propName in elem ) {
+						// Only set the IDL specifically if it already exists on the element
+						elem[ propName ] = true;
+					}
+
+					elem.setAttribute( name, name.toLowerCase() );
+				}
+				return name;
+			}
+		};
+
+		// Warn only for attributes that can remain distinct from their properties post-1.9
+		if ( ruseDefault.test( lowerName ) ) {
+			migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
+		}
+	}
+
+	return oldAttr.call( jQuery, elem, name, value );
+};
+
+// attrHooks: value
+jQuery.attrHooks.value = {
+	get: function( elem, name ) {
+		var nodeName = ( elem.nodeName || "" ).toLowerCase();
+		if ( nodeName === "button" ) {
+			return valueAttrGet.apply( this, arguments );
+		}
+		if ( nodeName !== "input" && nodeName !== "option" ) {
+			migrateWarn("jQuery.fn.attr('value') no longer gets properties");
+		}
+		return name in elem ?
+			elem.value :
+			null;
+	},
+	set: function( elem, value ) {
+		var nodeName = ( elem.nodeName || "" ).toLowerCase();
+		if ( nodeName === "button" ) {
+			return valueAttrSet.apply( this, arguments );
+		}
+		if ( nodeName !== "input" && nodeName !== "option" ) {
+			migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
+		}
+		// Does not return so that setAttribute is also used
+		elem.value = value;
+	}
+};
+
+
+var matched, browser,
+	oldInit = jQuery.fn.init,
+	oldParseJSON = jQuery.parseJSON,
+	// Note: XSS check is done below after string is trimmed
+	rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
+
+// $(html) "looks like html" rule change
+jQuery.fn.init = function( selector, context, rootjQuery ) {
+	var match;
+
+	if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
+			(match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
+		// This is an HTML string according to the "old" rules; is it still?
+		if ( selector.charAt( 0 ) !== "<" ) {
+			migrateWarn("$(html) HTML strings must start with '<' character");
+		}
+		if ( match[ 3 ] ) {
+			migrateWarn("$(html) HTML text after last tag is ignored");
+		}
+		// Consistently reject any HTML-like string starting with a hash (#9521)
+		// Note that this may break jQuery 1.6.x code that otherwise would work.
+		if ( match[ 0 ].charAt( 0 ) === "#" ) {
+			migrateWarn("HTML string cannot start with a '#' character");
+			jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
+		}
+		// Now process using loose rules; let pre-1.8 play too
+		if ( context && context.context ) {
+			// jQuery object as context; parseHTML expects a DOM object
+			context = context.context;
+		}
+		if ( jQuery.parseHTML ) {
+			return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
+					context, rootjQuery );
+		}
+	}
+	return oldInit.apply( this, arguments );
+};
+jQuery.fn.init.prototype = jQuery.fn;
+
+// Let $.parseJSON(falsy_value) return null
+jQuery.parseJSON = function( json ) {
+	if ( !json && json !== null ) {
+		migrateWarn("jQuery.parseJSON requires a valid JSON string");
+		return null;
+	}
+	return oldParseJSON.apply( this, arguments );
+};
+
+jQuery.uaMatch = function( ua ) {
+	ua = ua.toLowerCase();
+
+	var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
+		/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+		/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
+		/(msie) ([\w.]+)/.exec( ua ) ||
+		ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
+		[];
+
+	return {
+		browser: match[ 1 ] || "",
+		version: match[ 2 ] || "0"
+	};
+};
+
+// Don't clobber any existing jQuery.browser in case it's different
+if ( !jQuery.browser ) {
+	matched = jQuery.uaMatch( navigator.userAgent );
+	browser = {};
+
+	if ( matched.browser ) {
+		browser[ matched.browser ] = true;
+		browser.version = matched.version;
+	}
+
+	// Chrome is Webkit, but Webkit is also Safari.
+	if ( browser.chrome ) {
+		browser.webkit = true;
+	} else if ( browser.webkit ) {
+		browser.safari = true;
+	}
+
+	jQuery.browser = browser;
+}
+
+// Warn if the code tries to get jQuery.browser
+migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
+
+jQuery.sub = function() {
+	function jQuerySub( selector, context ) {
+		return new jQuerySub.fn.init( selector, context );
+	}
+	jQuery.extend( true, jQuerySub, this );
+	jQuerySub.superclass = this;
+	jQuerySub.fn = jQuerySub.prototype = this();
+	jQuerySub.fn.constructor = jQuerySub;
+	jQuerySub.sub = this.sub;
+	jQuerySub.fn.init = function init( selector, context ) {
+		if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+			context = jQuerySub( context );
+		}
+
+		return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+	};
+	jQuerySub.fn.init.prototype = jQuerySub.fn;
+	var rootjQuerySub = jQuerySub(document);
+	migrateWarn( "jQuery.sub() is deprecated" );
+	return jQuerySub;
+};
+
+
+// Ensure that $.ajax gets the new parseJSON defined in core.js
+jQuery.ajaxSetup({
+	converters: {
+		"text json": jQuery.parseJSON
+	}
+});
+
+
+var oldFnData = jQuery.fn.data;
+
+jQuery.fn.data = function( name ) {
+	var ret, evt,
+		elem = this[0];
+
+	// Handles 1.7 which has this behavior and 1.8 which doesn't
+	if ( elem && name === "events" && arguments.length === 1 ) {
+		ret = jQuery.data( elem, name );
+		evt = jQuery._data( elem, name );
+		if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
+			migrateWarn("Use of jQuery.fn.data('events') is deprecated");
+			return evt;
+		}
+	}
+	return oldFnData.apply( this, arguments );
+};
+
+
+var rscriptType = /\/(java|ecma)script/i,
+	oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
+
+jQuery.fn.andSelf = function() {
+	migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
+	return oldSelf.apply( this, arguments );
+};
+
+// Since jQuery.clean is used internally on older versions, we only shim if it's missing
+if ( !jQuery.clean ) {
+	jQuery.clean = function( elems, context, fragment, scripts ) {
+		// Set context per 1.8 logic
+		context = context || document;
+		context = !context.nodeType && context[0] || context;
+		context = context.ownerDocument || context;
+
+		migrateWarn("jQuery.clean() is deprecated");
+
+		var i, elem, handleScript, jsTags,
+			ret = [];
+
+		jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
+
+		// Complex logic lifted directly from jQuery 1.8
+		if ( fragment ) {
+			// Special handling of each script element
+			handleScript = function( elem ) {
+				// Check if we consider it executable
+				if ( !elem.type || rscriptType.test( elem.type ) ) {
+					// Detach the script and store it in the scripts array (if provided) or the fragment
+					// Return truthy to indicate that it has been handled
+					return scripts ?
+						scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
+						fragment.appendChild( elem );
+				}
+			};
+
+			for ( i = 0; (elem = ret[i]) != null; i++ ) {
+				// Check if we're done after handling an executable script
+				if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
+					// Append to fragment and handle embedded scripts
+					fragment.appendChild( elem );
+					if ( typeof elem.getElementsByTagName !== "undefined" ) {
+						// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
+						jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
+
+						// Splice the scripts into ret after their former ancestor and advance our index beyond them
+						ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+						i += jsTags.length;
+					}
+				}
+			}
+		}
+
+		return ret;
+	};
+}
+
+var eventAdd = jQuery.event.add,
+	eventRemove = jQuery.event.remove,
+	eventTrigger = jQuery.event.trigger,
+	oldToggle = jQuery.fn.toggle,
+	oldLive = jQuery.fn.live,
+	oldDie = jQuery.fn.die,
+	ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
+	rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
+	rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
+	hoverHack = function( events ) {
+		if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
+			return events;
+		}
+		if ( rhoverHack.test( events ) ) {
+			migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
+		}
+		return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+	};
+
+// Event props removed in 1.9, put them back if needed; no practical way to warn them
+if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
+	jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
+}
+
+// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
+if ( jQuery.event.dispatch ) {
+	migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
+}
+
+// Support for 'hover' pseudo-event and ajax event warnings
+jQuery.event.add = function( elem, types, handler, data, selector ){
+	if ( elem !== document && rajaxEvent.test( types ) ) {
+		migrateWarn( "AJAX events should be attached to document: " + types );
+	}
+	eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
+};
+jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
+	eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
+};
+
+jQuery.fn.error = function() {
+	var args = Array.prototype.slice.call( arguments, 0);
+	migrateWarn("jQuery.fn.error() is deprecated");
+	args.splice( 0, 0, "error" );
+	if ( arguments.length ) {
+		return this.bind.apply( this, args );
+	}
+	// error event should not bubble to window, although it does pre-1.7
+	this.triggerHandler.apply( this, args );
+	return this;
+};
+
+jQuery.fn.toggle = function( fn, fn2 ) {
+
+	// Don't mess with animation or css toggles
+	if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
+		return oldToggle.apply( this, arguments );
+	}
+	migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
+
+	// Save reference to arguments for access in closure
+	var args = arguments,
+		guid = fn.guid || jQuery.guid++,
+		i = 0,
+		toggler = function( event ) {
+			// Figure out which function to execute
+			var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+			jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+			// Make sure that clicks stop
+			event.preventDefault();
+
+			// and execute the function
+			return args[ lastToggle ].apply( this, arguments ) || false;
+		};
+
+	// link all the functions, so any of them can unbind this click handler
+	toggler.guid = guid;
+	while ( i < args.length ) {
+		args[ i++ ].guid = guid;
+	}
+
+	return this.click( toggler );
+};
+
+jQuery.fn.live = function( types, data, fn ) {
+	migrateWarn("jQuery.fn.live() is deprecated");
+	if ( oldLive ) {
+		return oldLive.apply( this, arguments );
+	}
+	jQuery( this.context ).on( types, this.selector, data, fn );
+	return this;
+};
+
+jQuery.fn.die = function( types, fn ) {
+	migrateWarn("jQuery.fn.die() is deprecated");
+	if ( oldDie ) {
+		return oldDie.apply( this, arguments );
+	}
+	jQuery( this.context ).off( types, this.selector || "**", fn );
+	return this;
+};
+
+// Turn global events into document-triggered events
+jQuery.event.trigger = function( event, data, elem, onlyHandlers  ){
+	if ( !elem && !rajaxEvent.test( event ) ) {
+		migrateWarn( "Global events are undocumented and deprecated" );
+	}
+	return eventTrigger.call( this,  event, data, elem || document, onlyHandlers  );
+};
+jQuery.each( ajaxEvents.split("|"),
+	function( _, name ) {
+		jQuery.event.special[ name ] = {
+			setup: function() {
+				var elem = this;
+
+				// The document needs no shimming; must be !== for oldIE
+				if ( elem !== document ) {
+					jQuery.event.add( document, name + "." + jQuery.guid, function() {
+						jQuery.event.trigger( name, null, elem, true );
+					});
+					jQuery._data( this, name, jQuery.guid++ );
+				}
+				return false;
+			},
+			teardown: function() {
+				if ( this !== document ) {
+					jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
+				}
+				return false;
+			}
+		};
+	}
+);
+
+
+})( jQuery, window );
diff --git a/wp-includes/js/jquery/jquery-migrate.min.js b/wp-includes/js/jquery/jquery-migrate.min.js
new file mode 100644
index 000000000..8b7ec47a2
--- /dev/null
+++ b/wp-includes/js/jquery/jquery-migrate.min.js
@@ -0,0 +1,2 @@
+/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
+jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/jquery.color.min.js b/wp-includes/js/jquery/jquery.color.min.js
index 936b44505..d0dbfa83f 100644
--- a/wp-includes/js/jquery/jquery.color.min.js
+++ b/wp-includes/js/jquery/jquery.color.min.js
@@ -1,2 +1,2 @@
-/*! jQuery Color v@2.1.0 with SVG Color Names http://github.com/jquery/jquery-color | jquery.org/license */
-(function(a,b){function m(a,b,c){var d=h[b.type]||{};return a==null?c||!b.def?null:b.def:(a=d.floor?~~a:parseFloat(a),isNaN(a)?b.def:d.mod?(a+d.mod)%d.mod:0>a?0:d.max<a?d.max:a)}function n(b){var c=f(),d=c._rgba=[];return b=b.toLowerCase(),l(e,function(a,e){var f,h=e.re.exec(b),i=h&&e.parse(h),j=e.space||"rgba";if(i)return f=c[j](i),c[g[j].cache]=f[g[j].cache],d=c._rgba=f._rgba,!1}),d.length?(d.join()==="0,0,0,0"&&a.extend(d,k.transparent),c):k[b]}function o(a,b,c){return c=(c+1)%1,c*6<1?a+(b-a)*c*6:c*2<1?b:c*3<2?a+(b-a)*(2/3-c)*6:a}var c="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",d=/^([\-+])=\s*(\d+\.?\d*)/,e=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1]*2.55,a[2]*2.55,a[3]*2.55,a[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(a){return[a[1],a[2]/100,a[3]/100,a[4]]}}],f=a.Color=function(b,c,d,e){return new a.Color.fn.parse(b,c,d,e)},g={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},h={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},i=f.support={},j=a("<p>")[0],k,l=a.each;j.style.cssText="background-color:rgba(1,1,1,.5)",i.rgba=j.style.backgroundColor.indexOf("rgba")>-1,l(g,function(a,b){b.cache="_"+a,b.props.alpha={idx:3,type:"percent",def:1}}),f.fn=a.extend(f.prototype,{parse:function(c,d,e,h){if(c===b)return this._rgba=[null,null,null,null],this;if(c.jquery||c.nodeType)c=a(c).css(d),d=b;var i=this,j=a.type(c),o=this._rgba=[],p;d!==b&&(c=[c,d,e,h],j="array");if(j==="string")return this.parse(n(c)||k._default);if(j==="array")return l(g.rgba.props,function(a,b){o[b.idx]=m(c[b.idx],b)}),this;if(j==="object")return c instanceof f?l(g,function(a,b){c[b.cache]&&(i[b.cache]=c[b.cache].slice())}):l(g,function(b,d){var e=d.cache;l(d.props,function(a,b){if(!i[e]&&d.to){if(a==="alpha"||c[a]==null)return;i[e]=d.to(i._rgba)}i[e][b.idx]=m(c[a],b,!0)}),i[e]&&a.inArray(null,i[e].slice(0,3))<0&&(i[e][3]=1,d.from&&(i._rgba=d.from(i[e])))}),this},is:function(a){var b=f(a),c=!0,d=this;return l(g,function(a,e){var f,g=b[e.cache];return g&&(f=d[e.cache]||e.to&&e.to(d._rgba)||[],l(e.props,function(a,b){if(g[b.idx]!=null)return c=g[b.idx]===f[b.idx],c})),c}),c},_space:function(){var a=[],b=this;return l(g,function(c,d){b[d.cache]&&a.push(c)}),a.pop()},transition:function(a,b){var c=f(a),d=c._space(),e=g[d],i=this.alpha()===0?f("transparent"):this,j=i[e.cache]||e.to(i._rgba),k=j.slice();return c=c[e.cache],l(e.props,function(a,d){var e=d.idx,f=j[e],g=c[e],i=h[d.type]||{};if(g===null)return;f===null?k[e]=g:(i.mod&&(g-f>i.mod/2?f+=i.mod:f-g>i.mod/2&&(f-=i.mod)),k[e]=m((g-f)*b+f,d))}),this[d](k)},blend:function(b){if(this._rgba[3]===1)return this;var c=this._rgba.slice(),d=c.pop(),e=f(b)._rgba;return f(a.map(c,function(a,b){return(1-d)*e[b]+d*a}))},toRgbaString:function(){var b="rgba(",c=a.map(this._rgba,function(a,b){return a==null?b>2?1:0:a});return c[3]===1&&(c.pop(),b="rgb("),b+c.join()+")"},toHslaString:function(){var b="hsla(",c=a.map(this.hsla(),function(a,b){return a==null&&(a=b>2?1:0),b&&b<3&&(a=Math.round(a*100)+"%"),a});return c[3]===1&&(c.pop(),b="hsl("),b+c.join()+")"},toHexString:function(b){var c=this._rgba.slice(),d=c.pop();return b&&c.push(~~(d*255)),"#"+a.map(c,function(a,b){return a=(a||0).toString(16),a.length===1?"0"+a:a}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),f.fn.parse.prototype=f.fn,g.hsla.to=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/255,c=a[1]/255,d=a[2]/255,e=a[3],f=Math.max(b,c,d),g=Math.min(b,c,d),h=f-g,i=f+g,j=i*.5,k,l;return g===f?k=0:b===f?k=60*(c-d)/h+360:c===f?k=60*(d-b)/h+120:k=60*(b-c)/h+240,j===0||j===1?l=j:j<=.5?l=h/i:l=h/(2-i),[Math.round(k)%360,l,j,e==null?1:e]},g.hsla.from=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/360,c=a[1],d=a[2],e=a[3],f=d<=.5?d*(1+c):d+c-d*c,g=2*d-f,h,i,j;return[Math.round(o(g,f,b+1/3)*255),Math.round(o(g,f,b)*255),Math.round(o(g,f,b-1/3)*255),e]},l(g,function(c,e){var g=e.props,h=e.cache,i=e.to,j=e.from;f.fn[c]=function(c){i&&!this[h]&&(this[h]=i(this._rgba));if(c===b)return this[h].slice();var d,e=a.type(c),k=e==="array"||e==="object"?c:arguments,n=this[h].slice();return l(g,function(a,b){var c=k[e==="object"?a:b.idx];c==null&&(c=n[b.idx]),n[b.idx]=m(c,b)}),j?(d=f(j(n)),d[h]=n,d):f(n)},l(g,function(b,e){if(f.fn[b])return;f.fn[b]=function(f){var g=a.type(f),h=b==="alpha"?this._hsla?"hsla":"rgba":c,i=this[h](),j=i[e.idx],k;return g==="undefined"?j:(g==="function"&&(f=f.call(this,j),g=a.type(f)),f==null&&e.empty?this:(g==="string"&&(k=d.exec(f),k&&(f=j+parseFloat(k[2])*(k[1]==="+"?1:-1))),i[e.idx]=f,this[h](i)))}})}),f.hook=function(b){var c=b.split(" ");l(c,function(b,c){a.cssHooks[c]={set:function(b,d){var e,g,h="";if(a.type(d)!=="string"||(e=n(d))){d=f(e||d);if(!i.rgba&&d._rgba[3]!==1){g=c==="backgroundColor"?b.parentNode:b;while((h===""||h==="transparent")&&g&&g.style)try{h=a.css(g,"backgroundColor"),g=g.parentNode}catch(j){}d=d.blend(h&&h!=="transparent"?h:"_default")}d=d.toRgbaString()}try{b.style[c]=d}catch(d){}}},a.fx.step[c]=function(b){b.colorInit||(b.start=f(b.elem,c),b.end=f(b.end),b.colorInit=!0),a.cssHooks[c].set(b.elem,b.start.transition(b.end,b.pos))}})},f.hook(c),a.cssHooks.borderColor={expand:function(a){var b={};return l(["Top","Right","Bottom","Left"],function(c,d){b["border"+d+"Color"]=a}),b}},k=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}})(jQuery),jQuery.extend(jQuery.Color.names,{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32"});
\ No newline at end of file
+/*! jQuery Color v@2.1.1 with SVG Color Names http://github.com/jquery/jquery-color | jquery.org/license */
+(function(a,b){function m(a,b,c){var d=h[b.type]||{};return a==null?c||!b.def?null:b.def:(a=d.floor?~~a:parseFloat(a),isNaN(a)?b.def:d.mod?(a+d.mod)%d.mod:0>a?0:d.max<a?d.max:a)}function n(b){var c=f(),d=c._rgba=[];return b=b.toLowerCase(),l(e,function(a,e){var f,h=e.re.exec(b),i=h&&e.parse(h),j=e.space||"rgba";if(i)return f=c[j](i),c[g[j].cache]=f[g[j].cache],d=c._rgba=f._rgba,!1}),d.length?(d.join()==="0,0,0,0"&&a.extend(d,k.transparent),c):k[b]}function o(a,b,c){return c=(c+1)%1,c*6<1?a+(b-a)*c*6:c*2<1?b:c*3<2?a+(b-a)*(2/3-c)*6:a}var c="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",d=/^([\-+])=\s*(\d+\.?\d*)/,e=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1]*2.55,a[2]*2.55,a[3]*2.55,a[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(a){return[a[1],a[2]/100,a[3]/100,a[4]]}}],f=a.Color=function(b,c,d,e){return new a.Color.fn.parse(b,c,d,e)},g={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},h={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},i=f.support={},j=a("<p>")[0],k,l=a.each;j.style.cssText="background-color:rgba(1,1,1,.5)",i.rgba=j.style.backgroundColor.indexOf("rgba")>-1,l(g,function(a,b){b.cache="_"+a,b.props.alpha={idx:3,type:"percent",def:1}}),f.fn=a.extend(f.prototype,{parse:function(c,d,e,h){if(c===b)return this._rgba=[null,null,null,null],this;if(c.jquery||c.nodeType)c=a(c).css(d),d=b;var i=this,j=a.type(c),o=this._rgba=[];d!==b&&(c=[c,d,e,h],j="array");if(j==="string")return this.parse(n(c)||k._default);if(j==="array")return l(g.rgba.props,function(a,b){o[b.idx]=m(c[b.idx],b)}),this;if(j==="object")return c instanceof f?l(g,function(a,b){c[b.cache]&&(i[b.cache]=c[b.cache].slice())}):l(g,function(b,d){var e=d.cache;l(d.props,function(a,b){if(!i[e]&&d.to){if(a==="alpha"||c[a]==null)return;i[e]=d.to(i._rgba)}i[e][b.idx]=m(c[a],b,!0)}),i[e]&&a.inArray(null,i[e].slice(0,3))<0&&(i[e][3]=1,d.from&&(i._rgba=d.from(i[e])))}),this},is:function(a){var b=f(a),c=!0,d=this;return l(g,function(a,e){var f,g=b[e.cache];return g&&(f=d[e.cache]||e.to&&e.to(d._rgba)||[],l(e.props,function(a,b){if(g[b.idx]!=null)return c=g[b.idx]===f[b.idx],c})),c}),c},_space:function(){var a=[],b=this;return l(g,function(c,d){b[d.cache]&&a.push(c)}),a.pop()},transition:function(a,b){var c=f(a),d=c._space(),e=g[d],i=this.alpha()===0?f("transparent"):this,j=i[e.cache]||e.to(i._rgba),k=j.slice();return c=c[e.cache],l(e.props,function(a,d){var e=d.idx,f=j[e],g=c[e],i=h[d.type]||{};if(g===null)return;f===null?k[e]=g:(i.mod&&(g-f>i.mod/2?f+=i.mod:f-g>i.mod/2&&(f-=i.mod)),k[e]=m((g-f)*b+f,d))}),this[d](k)},blend:function(b){if(this._rgba[3]===1)return this;var c=this._rgba.slice(),d=c.pop(),e=f(b)._rgba;return f(a.map(c,function(a,b){return(1-d)*e[b]+d*a}))},toRgbaString:function(){var b="rgba(",c=a.map(this._rgba,function(a,b){return a==null?b>2?1:0:a});return c[3]===1&&(c.pop(),b="rgb("),b+c.join()+")"},toHslaString:function(){var b="hsla(",c=a.map(this.hsla(),function(a,b){return a==null&&(a=b>2?1:0),b&&b<3&&(a=Math.round(a*100)+"%"),a});return c[3]===1&&(c.pop(),b="hsl("),b+c.join()+")"},toHexString:function(b){var c=this._rgba.slice(),d=c.pop();return b&&c.push(~~(d*255)),"#"+a.map(c,function(a){return a=(a||0).toString(16),a.length===1?"0"+a:a}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),f.fn.parse.prototype=f.fn,g.hsla.to=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/255,c=a[1]/255,d=a[2]/255,e=a[3],f=Math.max(b,c,d),g=Math.min(b,c,d),h=f-g,i=f+g,j=i*.5,k,l;return g===f?k=0:b===f?k=60*(c-d)/h+360:c===f?k=60*(d-b)/h+120:k=60*(b-c)/h+240,h===0?l=0:j<=.5?l=h/i:l=h/(2-i),[Math.round(k)%360,l,j,e==null?1:e]},g.hsla.from=function(a){if(a[0]==null||a[1]==null||a[2]==null)return[null,null,null,a[3]];var b=a[0]/360,c=a[1],d=a[2],e=a[3],f=d<=.5?d*(1+c):d+c-d*c,g=2*d-f;return[Math.round(o(g,f,b+1/3)*255),Math.round(o(g,f,b)*255),Math.round(o(g,f,b-1/3)*255),e]},l(g,function(c,e){var g=e.props,h=e.cache,i=e.to,j=e.from;f.fn[c]=function(c){i&&!this[h]&&(this[h]=i(this._rgba));if(c===b)return this[h].slice();var d,e=a.type(c),k=e==="array"||e==="object"?c:arguments,n=this[h].slice();return l(g,function(a,b){var c=k[e==="object"?a:b.idx];c==null&&(c=n[b.idx]),n[b.idx]=m(c,b)}),j?(d=f(j(n)),d[h]=n,d):f(n)},l(g,function(b,e){if(f.fn[b])return;f.fn[b]=function(f){var g=a.type(f),h=b==="alpha"?this._hsla?"hsla":"rgba":c,i=this[h](),j=i[e.idx],k;return g==="undefined"?j:(g==="function"&&(f=f.call(this,j),g=a.type(f)),f==null&&e.empty?this:(g==="string"&&(k=d.exec(f),k&&(f=j+parseFloat(k[2])*(k[1]==="+"?1:-1))),i[e.idx]=f,this[h](i)))}})}),f.hook=function(b){var c=b.split(" ");l(c,function(b,c){a.cssHooks[c]={set:function(b,d){var e,g,h="";if(a.type(d)!=="string"||(e=n(d))){d=f(e||d);if(!i.rgba&&d._rgba[3]!==1){g=c==="backgroundColor"?b.parentNode:b;while((h===""||h==="transparent")&&g&&g.style)try{h=a.css(g,"backgroundColor"),g=g.parentNode}catch(j){}d=d.blend(h&&h!=="transparent"?h:"_default")}d=d.toRgbaString()}try{b.style[c]=d}catch(j){}}},a.fx.step[c]=function(b){b.colorInit||(b.start=f(b.elem,c),b.end=f(b.end),b.colorInit=!0),a.cssHooks[c].set(b.elem,b.start.transition(b.end,b.pos))}})},f.hook(c),a.cssHooks.borderColor={expand:function(a){var b={};return l(["Top","Right","Bottom","Left"],function(c,d){b["border"+d+"Color"]=a}),b}},k=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}})(jQuery),jQuery.extend(jQuery.Color.names,{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32"});
diff --git a/wp-includes/js/jquery/jquery.js b/wp-includes/js/jquery/jquery.js
index 6db2afa8c..40c1aa100 100644
--- a/wp-includes/js/jquery/jquery.js
+++ b/wp-includes/js/jquery/jquery.js
@@ -1,3 +1,7 @@
-/*! jQuery v1.8.3 jquery.com | jquery.org/license */
-(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?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)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.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+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,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(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!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 u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.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.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.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"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
 jQuery.noConflict();
diff --git a/wp-includes/js/jquery/jquery.query.js b/wp-includes/js/jquery/jquery.query.js
index 214ca3696..ea5801ff2 100644
--- a/wp-includes/js/jquery/jquery.query.js
+++ b/wp-includes/js/jquery/jquery.query.js
@@ -1,4 +1,4 @@
-/**
+/**
  * jQuery.query - Query String Modification and Creation for jQuery
  * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
  * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
diff --git a/wp-includes/js/jquery/suggest.js b/wp-includes/js/jquery/suggest.js
index 7f46cbc64..3060507ff 100644
--- a/wp-includes/js/jquery/suggest.js
+++ b/wp-includes/js/jquery/suggest.js
@@ -18,7 +18,7 @@
 		var $input, $results, timeout, prevLength, cache, cacheSize;
 
 		$input = $(input).attr("autocomplete", "off");
-		$results = $(document.createElement("ul"));
+		$results = $("<ul/>");
 
 		timeout = false;		// hold timeout ID for suggestion results to appear
 		prevLength = 0;			// last recorded length of $input.val()
@@ -37,22 +37,7 @@
 			setTimeout(function() { $results.hide() }, 200);
 		});
 
-
-		// help IE users if possible
-		if ( $.browser.msie ) {
-			try {
-				$results.bgiframe();
-			} catch(e) { }
-		}
-
-		// I really hate browser detection, but I don't see any other way
-		if ($.browser.mozilla)
-			$input.keypress(processKey);	// onkeypress repeats arrow keys in Mozilla/Opera
-		else
-			$input.keydown(processKey);		// onkeydown repeats arrow keys in IE/Safari
-
-
-
+		$input.keydown(processKey);
 
 		function resetPosition() {
 			// requires jquery.dimension plugin
@@ -327,4 +312,4 @@
 
 	};
 
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/wp-includes/js/jquery/suggest.min.js b/wp-includes/js/jquery/suggest.min.js
index 904936f3d..d28a7fb26 100644
--- a/wp-includes/js/jquery/suggest.min.js
+++ b/wp-includes/js/jquery/suggest.min.js
@@ -1 +1 @@
-(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=a.trim(x.substr(w+g.multipleSep.length))}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
+(function(a){a.suggest=function(n,f){var c,e,m,d,p,o;c=a(n).attr("autocomplete","off");e=a("<ul/>");m=false;d=0;p=[];o=0;e.addClass(f.resultsClass).appendTo("body");i();a(window).load(i).resize(i);c.blur(function(){setTimeout(function(){e.hide()},200)});c.keydown(l);function i(){var u=c.offset();e.css({top:(u.top+n.offsetHeight)+"px",left:u.left+"px"})}function l(u){if((/27$|38$|40$/.test(u.keyCode)&&e.is(":visible"))||(/^13$|^9$/.test(u.keyCode)&&s())){if(u.preventDefault){u.preventDefault()}if(u.stopPropagation){u.stopPropagation()}u.cancelBubble=true;u.returnValue=false;switch(u.keyCode){case 38:j();break;case 40:r();break;case 9:case 13:q();break;case 27:e.hide();break}}else{if(c.val().length!=d){if(m){clearTimeout(m)}m=setTimeout(k,f.delay);d=c.val().length}}}function k(){var w=a.trim(c.val()),v,u;if(f.multiple){v=w.lastIndexOf(f.multipleSep);if(v!=-1){w=a.trim(w.substr(v+f.multipleSep.length))}}if(w.length>=f.minchars){cached=t(w);if(cached){h(cached.items)}else{a.get(f.source,{q:w},function(x){e.hide();u=b(x,w);h(u);g(w,u,x.length)})}}else{e.hide()}}function t(v){var u;for(u=0;u<p.length;u++){if(p[u]["q"]==v){p.unshift(p.splice(u,1)[0]);return p[0]}}return false}function g(x,u,v){var w;while(p.length&&(o+v>f.maxCacheSize)){w=p.pop();o-=w.size}p.push({q:x,size:v,items:u});o+=v}function h(u){var w="",v;if(!u){return}if(!u.length){e.hide();return}i();for(v=0;v<u.length;v++){w+="<li>"+u[v]+"</li>"}e.html(w).show();e.children("li").mouseover(function(){e.children("li").removeClass(f.selectClass);a(this).addClass(f.selectClass)}).click(function(x){x.preventDefault();x.stopPropagation();q()})}function b(u,y){var v=[],z=u.split(f.delimiter),x,w;for(x=0;x<z.length;x++){w=a.trim(z[x]);if(w){w=w.replace(new RegExp(y,"ig"),function(A){return'<span class="'+f.matchClass+'">'+A+"</span>"});v[v.length]=w}}return v}function s(){var u;if(!e.is(":visible")){return false}u=e.children("li."+f.selectClass);if(!u.length){u=false}return u}function q(){$currentResult=s();if($currentResult){if(f.multiple){if(c.val().indexOf(f.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(f.multipleSep)+f.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+f.multipleSep);c.focus()}else{c.val($currentResult.text())}e.hide();if(f.onSelect){f.onSelect.apply(c[0])}}}function r(){$currentResult=s();if($currentResult){$currentResult.removeClass(f.selectClass).next().addClass(f.selectClass)}else{e.children("li:first-child").addClass(f.selectClass)}}function j(){var u=s();if(u){u.removeClass(f.selectClass).prev().addClass(f.selectClass)}else{e.children("li:last-child").addClass(f.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js b/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js
index 1777b0afc..d2e2d573e 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.accordion.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&(r.active===!1||r.active==null)&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.3",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("<span>").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),a=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(t(e.target).attr("tabIndex",-1),t(a).attr("tabIndex",0),a.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,a=this.element.parent(),o=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(e){var i=t(this),s=i.attr("id"),n=i.next(),a=n.attr("id");s||(s=o+"-header-"+e,i.attr("id",s)),a||(a=o+"-panel-"+e,n.attr("id",a)),i.attr("aria-controls",a),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(s.event),"fill"===n?(i=a.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?t():n,newPanel:r};e.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?t():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-expanded":"false","aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr("tabIndex",-1):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(t,e,n){var a,o,r,h=this,l=0,c=t.length&&(!e.length||t.index()<e.index()),u=this.options.animate||{},d=c&&u.down||u,p=function(){h._toggleComplete(n)};return"number"==typeof d&&(r=d),"string"==typeof d&&(o=d),o=o||d.easing||u.easing,r=r||d.duration||u.duration,e.length?t.length?(a=t.show().outerHeight(),e.animate(i,{duration:r,easing:o,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(s,{duration:r,easing:o,complete:p,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?l+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(a-e.outerHeight()-l),l=0)}}),undefined):e.animate(i,r,o,p):t.animate(s,r,o,p)},_toggleComplete:function(t){var e=t.oldPanel;e.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js b/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js
index eab1ac644..4081f8c7a 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.autocomplete.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e=0;t.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var a=t.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:e=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case a.UP:e=!0,this._keyEvent("previous",n);break;case a.DOWN:e=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):undefined},_search:function(t){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var t=this,i=++e;return function(s){i===e&&t.__response(s),t.pending--,t.pending||t.element.removeClass("ui-autocomplete-loading")}},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({label:e.label||e.value,value:e.value||e.label},e)})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<a>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.button.min.js b/wp-includes/js/jquery/ui/jquery.ui.button.min.js
index 9a3c25793..d294ce05f 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.button.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.button.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.button.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e,i,s,n,a="ui-button ui-widget ui-state-default ui-corner-all",o="ui-state-hover ui-state-active ",r="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",h=function(){var e=t(this);setTimeout(function(){e.find(":ui-button").button("refresh")},1)},l=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?t(s).find("[name='"+i+"']"):t("[name='"+i+"']",e.ownerDocument).filter(function(){return!this.form})),n};t.widget("ui.button",{version:"1.10.3",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,h),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var o=this,r=this.options,c="checkbox"===this.type||"radio"===this.type,u=c?"":"ui-state-active",d="ui-state-focus";null===r.label&&(r.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(a).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){r.disabled||this===e&&t(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){r.disabled||t(this).removeClass(u)}).bind("click"+this.eventNamespace,function(t){r.disabled&&(t.preventDefault(),t.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){o.buttonElement.addClass(d)}).bind("blur"+this.eventNamespace,function(){o.buttonElement.removeClass(d)}),c&&(this.element.bind("change"+this.eventNamespace,function(){n||o.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(t){r.disabled||(n=!1,i=t.pageX,s=t.pageY)}).bind("mouseup"+this.eventNamespace,function(t){r.disabled||(i!==t.pageX||s!==t.pageY)&&(n=!0)})),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return r.disabled||n?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(r.disabled||n)return!1;t(this).addClass("ui-state-active"),o.buttonElement.attr("aria-pressed","true");var e=o.element[0];l(e).not(e).map(function(){return t(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return r.disabled?!1:(t(this).addClass("ui-state-active"),e=this,o.document.one("mouseup",function(){e=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return r.disabled?!1:(t(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(e){return r.disabled?!1:((e.keyCode===t.ui.keyCode.SPACE||e.keyCode===t.ui.keyCode.ENTER)&&t(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){t(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===t.ui.keyCode.SPACE&&t(this).click()})),this._setOption("disabled",r.disabled),this._resetButton()},_determineButtonType:function(){var t,e,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(t=this.element.parents().last(),e="label[for='"+this.element.attr("id")+"']",this.buttonElement=t.find(e),this.buttonElement.length||(t=t.length?t.siblings():this.element.siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(a+" "+o+" "+r).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(t,e){return this._super(t,e),"disabled"===t?(e?this.element.prop("disabled",!0):this.element.prop("disabled",!1),undefined):(this._resetButton(),undefined)},refresh:function(){var e=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOption("disabled",e),"radio"===this.type?l(this.element[0]).each(function(){t(this).is(":checked")?t(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):t(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var e=this.buttonElement.removeClass(r),i=t("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(e.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&e.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&e.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||e.attr("title",t.trim(i)))):a.push("ui-button-text-only"),e.addClass(a.join(" "))}}),t.widget("ui.buttonset",{version:"1.10.3",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(t,e){"disabled"===t&&this.buttons.button("option",t,e),this._super(t,e)},refresh:function(){var e="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(e?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(e?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.core.min.js b/wp-includes/js/jquery/ui/jquery.ui.core.min.js
index e23ab4c4c..e96efd4ff 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.core.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.core.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.core.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function i(t,i){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&s(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var a=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var s,a,n=e(this[0]);n.length&&n[0]!==document;){if(s=n.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(a=parseInt(n.css("zIndex"),10),!isNaN(a)&&0!==a))return a;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++a)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var s=e.attr(t,"tabindex"),a=isNaN(s);return(a||s>=0)&&i(t,!a)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,s){function a(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===s?["Left","Right"]:["Top","Bottom"],r=s.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+s]=function(i){return i===t?o["inner"+s].call(this):this.each(function(){e(this).css(r,a(this,i)+"px")})},e.fn["outer"+s]=function(t,i){return"number"!=typeof t?o["outer"+s].call(this,t):this.each(function(){e(this).css(r,a(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i){var s,a=e.plugins[t];if(a&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(s=0;a.length>s;s++)e.options[a[s][0]]&&a[s][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js b/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js
index 79564b572..bd4b62ed6 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js
@@ -1,5 +1,5 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.datepicker.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?"&#xa0;":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?"&#xa0;":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t,e){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.dpDiv=s(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function s(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(i,"mouseout",function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){t.datepicker._isDisabledDatepicker(a.inline?e.parent()[0]:a.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))})}function n(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}t.extend(t.ui,{datepicker:{version:"1.10.3"}});var a,r="datepicker";t.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return n(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,a;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),a=this._newInst(t(e),n),a.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,a):n&&this._inlineDatepicker(e,a)},_newInst:function(e,i){var n=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?s(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),t.data(e,r,i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,a,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=t("<span class='"+this._appendClass+"'>"+r+"</span>"),e[o?"before":"after"](i.append)),e.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(a?t("<img/>").attr({src:a,alt:n,title:n}):n)),e[o?"before":"after"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,a=new Date(2009,11,20),r=this._get(t,"dateFormat");r.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},a.setMonth(e(this._get(t,r.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(e(this._get(t,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),t.input.attr("size",this._formatDate(t,a).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,r,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,a,o){var h,l,c,u,d,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+h+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),t("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},t.data(this._dialogInput[0],r,p)),n(p.settings,a||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],r,p),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,r);s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,r),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(e){var i,s,n=t(e),a=t.data(e,r);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),a=t.data(e,r);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,r)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,s,a){var r,o,h,l,c=this._getInst(i);return 2===arguments.length&&"string"==typeof s?"defaults"===s?t.extend({},t.datepicker._defaults):c?"all"===s?t.extend({},c.settings):this._get(c,s):null:(r=s||{},"string"==typeof s&&(r={},r[s]=a),c&&(this._curInst===c&&this._hideDatepicker(),o=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),n(c.settings,r),null!==h&&r.dateFormat!==e&&r.minDate===e&&(c.settings.minDate=this._formatDate(c,h)),null!==l&&r.dateFormat!==e&&r.maxDate===e&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in r&&(r.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(t(i),c),this._autoSize(c),this._setDate(c,o),this._updateAlternate(c),this._updateDatepicker(c)),e)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,a=t.datepicker._getInst(e.target),r=!0,o=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),r=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",a.dpDiv),n[0]&&t.datepicker._selectDay(e.target,a.selectedMonth,a.selectedYear,n[0]),i=t.datepicker._get(a,"onSelect"),i?(s=t.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(a,"stepBigMonths"):-t.datepicker._get(a,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(a,"stepBigMonths"):+t.datepicker._get(a,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),r=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),r=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,o?1:-1,"D"),r=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(a,"stepBigMonths"):-t.datepicker._get(a,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),r=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,o?-1:1,"D"),r=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(a,"stepBigMonths"):+t.datepicker._get(a,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),r=e.ctrlKey||e.metaKey;break;default:r=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):r=!1;r&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(i){var s,n,a=t.datepicker._getInst(i.target);return t.datepicker._get(a,"constrainInput")?(s=t.datepicker._possibleChars(t.datepicker._get(a,"dateFormat")),n=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">n||!s||s.indexOf(n)>-1):e},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,s,a,r,o,h,l;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),s=t.datepicker._get(i,"beforeShow"),a=s?s.apply(e,[e,i]):{},a!==!1&&(n(i.settings,a),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),o={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),o=t.datepicker._checkOffset(i,o,r),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),i.inline||(h=t.datepicker._get(i,"showAnim"),l=t.datepicker._get(i,"duration"),i.dpDiv.zIndex(t(e).zIndex()+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?i.dpDiv.show(h,t.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),t.datepicker._shouldFocusInput(i)&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,a=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,s=this._getNumberOfMonths(e),n=s[1],r=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",r*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),a=e.dpDiv.outerHeight(),r=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-r:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+o?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+o):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,a,o=this._curInst;!o||e&&o!==t.data(e,r)||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){t.datepicker._tidyDialog(o)},t.effects&&(t.effects.effect[i]||t.effects[i])?o.dpDiv.hide(i,t.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(e,i,s,n){var a,r=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(a=this._getInst(r[0]),a.selectedDay=a.currentDay=t("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(e,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,a=this._get(e,"altField");a&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(a).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,s,n){if(null==i||null==s)throw"Invalid arguments";if(s="object"==typeof s?""+s:s+"",""===s)return null;var a,r,o,h,l=0,c=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,p=(n?n.dayNames:null)||this._defaults.dayNames,f=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,m=(n?n.monthNames:null)||this._defaults.monthNames,g=-1,v=-1,_=-1,b=-1,y=!1,x=function(t){var e=i.length>a+1&&i.charAt(a+1)===t;return e&&a++,e},k=function(t){var e=x(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n=RegExp("^\\d{1,"+i+"}"),a=s.substring(l).match(n);if(!a)throw"Missing number at position "+l;return l+=a[0].length,parseInt(a[0],10)},w=function(i,n,a){var r=-1,o=t.map(x(i)?a:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(o,function(t,i){var n=i[1];return s.substr(l,n.length).toLowerCase()===n.toLowerCase()?(r=i[0],l+=n.length,!1):e}),-1!==r)return r+1;throw"Unknown name at position "+l},D=function(){if(s.charAt(l)!==i.charAt(a))throw"Unexpected literal at position "+l;l++};for(a=0;i.length>a;a++)if(y)"'"!==i.charAt(a)||x("'")?D():y=!1;else switch(i.charAt(a)){case"d":_=k("d");break;case"D":w("D",d,p);break;case"o":b=k("o");break;case"m":v=k("m");break;case"M":v=w("M",f,m);break;case"y":g=k("y");break;case"@":h=new Date(k("@")),g=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"!":h=new Date((k("!")-this._ticksTo1970)/1e4),g=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"'":x("'")?D():y=!0;break;default:D()}if(s.length>l&&(o=s.substr(l),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=g?0:-100)),b>-1)for(v=1,_=b;;){if(r=this._getDaysInMonth(g,v-1),r>=_)break;v++,_-=r}if(h=this._daylightSavingAdjust(new Date(g,v-1,_)),h.getFullYear()!==g||h.getMonth()+1!==v||h.getDate()!==_)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,a);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),r,o);break;case"y":u+=h("y")?e.getFullYear():(10>e.getYear()%100?"0":"")+e.getYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,i){return t.settings[i]!==e?t.settings[i]:this._defaults[i]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),a=n,r=this._getFormatConfig(t);try{a=this.parseDate(i,s,r)||n}catch(o){s=e?"":s}t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),t.currentDay=s?a.getDate():0,t.currentMonth=s?a.getMonth():0,t.currentYear=s?a.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},a=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,a=n.getFullYear(),r=n.getMonth(),o=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":o+=parseInt(l[1],10);break;case"w":case"W":o+=7*parseInt(l[1],10);break;case"m":case"M":r+=parseInt(l[1],10),o=Math.min(o,t.datepicker._getDaysInMonth(a,r));break;case"y":case"Y":a+=parseInt(l[1],10),o=Math.min(o,t.datepicker._getDaysInMonth(a,r))}l=h.exec(i)}return new Date(a,r,o)},r=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?s:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,a=t.selectedYear,r=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=r.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=r.getMonth(),t.drawYear=t.selectedYear=t.currentYear=r.getFullYear(),n===t.selectedMonth&&a===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,a,r,o,h,l,c,u,d,p,f,m,g,v,_,b,y,x,k,w,D,T,C,M,S,N,I,P,A,z,H,E,F,O,W,j,R=new Date,L=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),B=this._get(t,"showButtonPanel"),J=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),Q=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),U=this._get(t,"stepMonths"),q=1!==Q[0]||1!==Q[1],X=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(t,"min"),$=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),$)for(e=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-Q[0]*Q[1]+1,$.getDate())),e=G&&G>e?G:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-U,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+U,1)),this._getFormatConfig(t)):n,a=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",r=this._get(t,"currentText"),o=this._get(t,"gotoCurrent")&&t.currentDay?X:L,r=K?this.formatDate(r,o,this._getFormatConfig(t)):r,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),m=this._get(t,"monthNamesShort"),g=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),_=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;Q[0]>k;k++){for(w="",this.maxRows=4,D=0;Q[1]>D;D++){if(T=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),C=" ui-corner-all",M="",q){if(M+="<div class='ui-datepicker-group",Q[1]>1)switch(D){case 0:M+=" ui-datepicker-group-first",C=" ui-corner-"+(Y?"right":"left");break;case Q[1]-1:M+=" ui-datepicker-group-last",C=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",C=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+C+"'>"+(/all|left/.test(C)&&0===k?Y?a:s:"")+(/all|right/.test(C)&&0===k?Y?s:a:"")+this._generateMonthYearHeader(t,Z,te,G,$,k>0||D>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",S=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+c)%7,S+="<th"+((x+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[N]+"'>"+p[N]+"</span></th>";for(M+=S+"</tr></thead><tbody>",I=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,I)),P=(this._getFirstDayOfMonth(te,Z)-c+7)%7,A=Math.ceil((P+I)/7),z=q?this.maxRows>A?this.maxRows:A:A,this.maxRows=z,H=this._daylightSavingAdjust(new Date(te,Z,1-P)),E=0;z>E;E++){for(M+="<tr>",F=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(t.input?t.input[0]:null,[H]):[!0,""],W=H.getMonth()!==Z,j=W&&!_||!O[0]||G&&G>H||$&&H>$,F+="<td class='"+((x+c+6)%7>=5?" ui-datepicker-week-end":"")+(W?" ui-datepicker-other-month":"")+(H.getTime()===T.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===H.getTime()&&b.getTime()===T.getTime()?" "+this._dayOverClass:"")+(j?" "+this._unselectableClass+" ui-state-disabled":"")+(W&&!v?"":" "+O[1]+(H.getTime()===X.getTime()?" "+this._currentClass:"")+(H.getTime()===L.getTime()?" ui-datepicker-today":""))+"'"+(W&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(j?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(W&&!v?"&#xa0;":j?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===L.getTime()?" ui-state-highlight":"")+(H.getTime()===X.getTime()?" ui-state-active":"")+(W?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=F+"</tr>"}Z++,Z>11&&(Z=0,te++),M+="</tbody></table>"+(q?"</div>"+(Q[0]>0&&D===Q[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),w+=M}y+=w}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,a,r,o){var h,l,c,u,d,p,f,m,g=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(a||!g)y+="<span class='ui-datepicker-month'>"+r[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+o[c]+"</option>");y+="</select>"}if(_||(b+=y+(!a&&g&&v?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);
+return isNaN(e)?d:e},f=p(u[0]),m=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),_&&(b+=(!a&&g&&v?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.drawYear+("Y"===i?e:0),n=t.drawMonth+("M"===i?e:0),a=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),r=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,a)));t.selectedDay=r.getDate(),t.drawMonth=t.selectedMonth=r.getMonth(),t.drawYear=t.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),a=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(t,a)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),a=this._getMinMaxDate(t,"max"),r=null,o=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=s),i[1].match(/[+\-].*/)&&(o+=s)),(!n||e.getTime()>=n.getTime())&&(!a||e.getTime()<=a.getTime())&&(!r||e.getFullYear()>=r)&&(!o||o>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new i,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.10.3"})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js b/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js
index 2b7310100..990f20219 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.dialog.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.2",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||"&#160;",s,o,u,a,f;s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),o=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar  ui-widget-header  ui-corner-all  ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close  ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(f),s.attr({role:"dialog","aria-labelledby":a.attr("id")}),o.find("*").add(o).disableSelection(),this._hoverable(u),this._focusable(u),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n=this,r=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(r=!0)}),r?(e.each(t,function(t,r){var i,s;r=e.isFunction(r)?{click:r,text:t}:r,r=e.extend({type:"button"},r),s=r.click,r.click=function(){s.apply(n.element[0],arguments)},i=e("<button></button>",r).appendTo(n.uiButtonSet),e.fn.button&&i.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||"&#160;"))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};t.widget("ui.dialog",{version:"1.10.3",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||t(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!e&&this._trigger("focus",t),i},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var t=this.element.find("[autofocus]");t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),undefined;if(e.keyCode===t.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(n.focus(1),e.preventDefault()):(s.focus(1),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title||t.html("&#160;"),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(t.each(i,function(i,s){var n,a;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t("<button></button>",s).button(a).appendTo(e.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){t(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,a){s.position=[a.position.left-i.document.scrollLeft(),a.position.top-i.document.scrollTop()],t(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(a))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){t(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,a){s.height=t(this).height(),s.width=t(this).width(),t(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(a))}}).css("position",a)},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(s){var n=this,a=!1,o={};t.each(s,function(t,s){n._setOption(t,s),t in e&&(a=!0),t in i&&(o[t]=s)}),a&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(t,e){var i,s,n=this.uiDialog;"dialogClass"===t&&n.removeClass(this.options.dialogClass).addClass(e),"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:""+e}),"draggable"===t&&(i=n.is(":data(ui-draggable)"),i&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(s=n.is(":data(ui-resizable)"),s&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||e===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=this,i=this.widgetFullName;t.ui.dialog.overlayInstances||this._delay(function(){t.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(s){e._allowInteraction(s)||(s.preventDefault(),t(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=t("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),t.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(t.ui.dialog.overlayInstances--,t.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),t.ui.dialog.overlayInstances=0,t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{_position:function(){var e,i=this.options.position,s=[],n=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(s=i.split?i.split(" "):[i[0],i[1]],1===s.length&&(s[1]=s[0]),t.each(["left","top"],function(t,e){+s[t]===s[t]&&(n[t]=s[t],s[t]=e)}),i={my:s[0]+(0>n[0]?n[0]:"+"+n[0])+" "+s[1]+(0>n[1]?n[1]:"+"+n[1]),at:s.join(" ")}),i=t.extend({},t.ui.dialog.prototype.options.position,i)):i=t.ui.dialog.prototype.options.position,e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.position(i),e||this.uiDialog.hide()}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js b/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js
index 69f6ff2ca..ac92817f3 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.draggable.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){var o=!1,u=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!=u&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(u.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var i=this.options;return this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||e.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1):!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,e(document).width()-this.helperProportions.width-this.margins.left,(e(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(t){var i,s,n,a,o=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=t.pageX,l=t.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s]),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i){var s=e(this).data("ui-draggable"),n=s.options,a=e.extend({},i,{item:s.element});s.sortables=[],e(n.connectToSortable).each(function(){var i=e.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i){var s=e(this).data("ui-draggable"),n=e.extend({},i,{item:s.element});e.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,n))})},drag:function(t,i){var s=e(this).data("ui-draggable"),n=this;e.each(s.sortables,function(){var a=!1,o=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(o.instance.element[0],this.instance.element[0])&&(a=!1),a})),a?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",t),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",t),s.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),i=e(this).data("ui-draggable").options;t.css("cursor")&&(i._cursor=t.css("cursor")),t.css("cursor",i.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i){var s=e(i.helper),n=e(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(t,i){var s=e(this).data("ui-draggable").options;s._opacity&&e(i.helper).css("opacity",s._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&"HTML"!==t.scrollParent[0].tagName&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var i=e(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-t.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-e(document).scrollTop()<s.scrollSensitivity?n=e(document).scrollTop(e(document).scrollTop()-s.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<s.scrollSensitivity&&(n=e(document).scrollTop(e(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-e(document).scrollLeft()<s.scrollSensitivity?n=e(document).scrollLeft(e(document).scrollLeft()-s.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<s.scrollSensitivity&&(n=e(document).scrollLeft(e(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&e.ui.ddmanager&&!s.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),i=t.options;t.snapElements=[],e(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=e(this),s=i.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(t,i){var s,n,a,o,r,h,l,u,c,d,p=e(this).data("ui-draggable"),f=p.options,m=f.snapTolerance,g=i.offset.left,v=g+p.helperProportions.width,b=i.offset.top,y=b+p.helperProportions.height;for(c=p.snapElements.length-1;c>=0;c--)r=p.snapElements[c].left,h=r+p.snapElements[c].width,l=p.snapElements[c].top,u=l+p.snapElements[c].height,r-m>v||g>h+m||l-m>y||b>u+m||!e.contains(p.snapElements[c].item.ownerDocument,p.snapElements[c].item)?(p.snapElements[c].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(s=m>=Math.abs(l-y),n=m>=Math.abs(u-b),a=m>=Math.abs(r-v),o=m>=Math.abs(h-g),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:u,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||a||o,"outer"!==f.snapMode&&(s=m>=Math.abs(l-b),n=m>=Math.abs(u-y),a=m>=Math.abs(r-g),o=m>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:u-p.helperProportions.height,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[c].snapping&&(s||n||a||o||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=s||n||a||o||d)}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,i=this.data("ui-draggable").options,s=e.makeArray(e(i.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});s.length&&(t=parseInt(e(s[0]).css("zIndex"),10)||0,e(s).each(function(i){e(this).css("zIndex",t+i)}),this.css("zIndex",t+s.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i){var s=e(i.helper),n=e(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(t,i){var s=e(this).data("ui-draggable").options;s._zIndex&&e(i.helper).css("zIndex",s._zIndex)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js b/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js
index a759e7e78..ba7b19400 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.droppable.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.droppable",{version:"1.9.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function t(e,t,i){return e>t&&t+i>e}e.widget("ui.droppable",{version:"1.10.3",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=0,i=e.ui.ddmanager.droppables[this.options.scope];i.length>t;t++)i[t]===this&&i.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"===t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope===s.options.scope&&t.accept.call(t.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,i,s){if(!i.offset)return!1;var n,a,o=(e.positionAbs||e.position.absolute).left,r=o+e.helperProportions.width,h=(e.positionAbs||e.position.absolute).top,l=h+e.helperProportions.height,u=i.offset.left,c=u+i.proportions.width,d=i.offset.top,p=d+i.proportions.height;switch(s){case"fit":return o>=u&&c>=r&&h>=d&&p>=l;case"intersect":return o+e.helperProportions.width/2>u&&c>r-e.helperProportions.width/2&&h+e.helperProportions.height/2>d&&p>l-e.helperProportions.height/2;case"pointer":return n=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,a=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,t(a,d,i.proportions.height)&&t(n,u,i.proportions.width);case"touch":return(h>=d&&p>=h||l>=d&&p>=l||d>h&&l>p)&&(o>=u&&c>=o||r>=u&&c>=r||u>o&&r>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions.height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions={width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight})}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===n}),a.length&&(s=e.data(a[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js
index 9a4019476..ea34c3ccd 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-blind.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var a,o,r,h=t(this),l=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(h,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",m=i.test(u),g={},v="show"===c;h.parent().is(".ui-effects-wrapper")?t.effects.save(h.parent(),l):t.effects.save(h,l),h.show(),a=t.effects.createWrapper(h).css({overflow:"hidden"}),o=a[p](),r=parseFloat(a.css(f))||0,g[p]=v?o:0,m||(h.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),g[f]=v?r:o+r),v&&(a.css(p,0),m||a.css(f,r+o)),a.animate(g,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&h.hide(),t.effects.restore(h,l),t.effects.removeWrapper(h),n()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js
index 4edb4ebe3..05a74f6eb 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-bounce.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.bounce=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(o,e.mode||"effect"),l="hide"===h,c="show"===h,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||l?1:0),m=e.duration/f,g=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=o.queue(),y=b.length;for((c||l)&&r.push("opacity"),t.effects.save(o,r),o.show(),t.effects.createWrapper(o),d||(d=o["top"===v?"outerHeight":"outerWidth"]()/3),c&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,_?2*-d:2*d).animate(a,m,g)),l&&(d/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,o.animate(n,m,g).animate(a,m,g),d=l?2*d:d/2;l&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),o.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js
index e84de1eaf..5b15f8ef0 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-clip.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.clip=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(o,e.mode||"hide"),l="show"===h,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(o,r),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[d](),l&&(n.css(d,0),n.css(p,a/2)),f[d]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){l||o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js
index c4d1be8a2..02d148a16 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-drop.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","opacity","height","width"],o=t.effects.setMode(n,e.mode||"hide"),r="show"===o,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,a),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===c?-s:s),u[l]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js
index 81db79c36..096ff58f5 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-explode.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),m||p.hide(),i()}var a,o,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(a=0;u>a;a++)for(h=g.top+a*_,c=a-(u-1)/2,o=0;d>o;o++)r=g.left+o*v,l=o-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(m?l*v:0),top:h+(m?c*_:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:c*_),opacity:m?1:0},e.duration||500,e.easing,s)}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js
index f5d93d2ed..09d3a0ec0 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-fade.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js
index dd37ef0f5..6b323bcd3 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-fold.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.fold=function(e,i){var s,n,a=t(this),o=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(a,e.mode||"hide"),h="show"===r,l="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=h!==d,f=p?["width","height"]:["height","width"],m=e.duration/2,g={},v={};t.effects.save(a,o),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[l?0:1]),h&&s.css(d?{height:0,width:c}:{height:c,width:0}),g[f[0]]=h?n[0]:c,v[f[1]]=h?n[1]:0,s.animate(g,m,e.easing).animate(v,m,e.easing,function(){l&&a.hide(),t.effects.restore(a,o),t.effects.removeWrapper(a),i()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js
index 88a27b7c6..8aac9b314 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-highlight.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],a=t.effects.setMode(s,e.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(o,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&s.hide(),t.effects.restore(s,n),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js
index 362f06768..1338dfa97 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-pulsate.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),a=t.effects.setMode(n,e.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(e.times||5)+(h?1:0),c=e.duration/l,u=0,d=n.queue(),p=d.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;l>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,l+1))),n.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js
index 8edb3dace..0be8b0f31 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-scale.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),a="hide"===n,o=parseInt(e.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),a=t.effects.setMode(s,e.mode||"effect"),o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===a?0:100),r=e.direction||"both",h=e.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=e.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*c.y,width:l.width*c.x,outerHeight:l.outerHeight*c.y,outerWidth:l.outerWidth*c.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(o,e.mode||"effect"),f=e.restore||"effect"!==p,m=e.scale||"both",g=e.origin||["middle","center"],v=o.css("position"),_=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===e.mode&&"show"===p?(o.from=e.to||b,o.to=e.from||s):(o.from=e.from||("show"===p?b:s),o.to=e.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(_=_.concat(u),o.from=t.effects.setTransition(o,u,a.from.y,o.from),o.to=t.effects.setTransition(o,u,a.to.y,o.to)),a.from.x!==a.to.x&&(_=_.concat(d),o.from=t.effects.setTransition(o,d,a.from.x,o.from),o.to=t.effects.setTransition(o,d,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(_=_.concat(c).concat(l),o.from=t.effects.setTransition(o,c,a.from.y,o.from),o.to=t.effects.setTransition(o,c,a.to.y,o.to)),t.effects.save(o,_),o.show(),t.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=t.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),l=r.concat(u).concat(d),o.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=t.effects.setTransition(i,u,a.from.y,i.from),i.to=t.effects.setTransition(i,u,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=t.effects.setTransition(i,d,a.from.x,i.from),i.to=t.effects.setTransition(i,d,a.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),t.effects.restore(o,_),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):t.each(["top","left"],function(t,e){o.css(e,function(e,i){var s=parseInt(i,10),n=t?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(o),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js
index dcbf83ef9..8bfffec5f 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-shake.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","height","width"],o=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",h=e.distance||20,l=e.times||3,c=2*l+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),_=v.length;for(t.effects.save(n,a),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+h,m[d]=(p?"+=":"-=")+2*h,g[d]=(p?"-=":"+=")+2*h,n.animate(f,u,e.easing),s=1;l>s;s++)n.animate(m,u,e.easing).animate(g,u,e.easing);n.animate(m,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js
index d93f8432a..b3de22e04 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-slide.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","width","height"],o=t.effects.setMode(n,e.mode||"show"),r="show"===o,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u={};t.effects.save(n,a),n.show(),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,c?isNaN(s)?"-"+s:-s:s),u[l]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js
index 4cd52a4d0..cec83690d 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect-transfer.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),a="fixed"===n.css("position"),o=t("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.effect.min.js b/wp-includes/js/jquery/ui/jquery.ui.effect.min.js
index e1c87a7e9..50fbc7992 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.effect.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.effect.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.effect.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[];i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(l){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i;if(t&&t.length&&t[0]&&t[t[0]]){i=t.length;while(i--)r=t[i],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function a(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,s=t.mode;(r.is(":hidden")?s==="hide":s==="show")?u():o.call(r[0],t,u)}var t=i.apply(this,arguments),r=t.mode,s=t.queue,o=e.effects.effect[t.effect],u=!o&&n&&e.effects[t.effect];return e.fx.off||!o&&!u?r?this[r](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):o?s===!1?this.each(a):this.queue(s||"fx",a):u.call(this,{options:t,duration:t.duration,callback:t.complete,mode:t.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[c[l].cache]=o[c[l].cache],n=s._rgba=o._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,a.transparent),s):a[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,o,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=e);var u=this,d=t.type(n),p=this._rgba=[];return o!==e&&(n=[n,o,r,h],d="array"),"string"===d?this.parse(s(n)||a._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var a=s.cache;f(s.props,function(t,e){if(!u[a]&&s.to){if("alpha"===t||null==n[t])return;u[a]=s.to(u._rgba)}u[a][e.idx]=i(n[t],e,!0)}),u[a]&&0>t.inArray(null,u[a].slice(0,3))&&(u[a][3]=1,s.from&&(u._rgba=s.from(u[a])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),a=c[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(t,n){var a=n.idx,o=r[a],l=s[a],c=u[n.type]||{};null!==l&&(null===o?h[a]=l:(c.mod&&(l-o>c.mod/2?o+=c.mod:o-l>c.mod/2&&(o-=c.mod)),h[a]=i((l-o)*e+o,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,a=t[2]/255,o=t[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==o?1:o]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],a=t[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,e+1/3)),Math.round(255*n(r,o,e)),Math.round(255*n(r,o,e-1/3)),a]},f(c,function(s,n){var a=n.props,o=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===e)return this[o].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[o].slice();return f(a,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[o]=d,n):l(d)},f(a,function(e,i){l.fn[e]||(l.fn[e]=function(n){var a,o=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===o?c:("function"===o&&(n=n.call(this,c),o=t.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=c+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var a,o,r="";if("transparent"!==n&&("string"!==t.type(n)||(a=s(n)))){if(n=l(a||n),!d.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&o&&o.style;)try{r=t.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(o),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},a=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function s(e,i){var s,n,o={};for(s in i)n=i[s],e[s]!==n&&(a[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(o[s]=n));return o}var n=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,a,o,r){var h=t.speed(a,o,r);return this.queue(function(){var a,o=t(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),a=function(){t.each(n,function(t,i){e[i]&&o[i+"Class"](e[i])})},a(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){a(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(o[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,a){return s?t.effects.animateClass.call(this,{add:i},s,n,a):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,a){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,a):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,a,o,r){return"boolean"==typeof n||n===e?a?t.effects.animateClass.call(this,n?{add:s}:{remove:s},a,o,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,a,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,a){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,a)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.3",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,a;for(a=0;s.length>a;a++)null!==s[a]&&(n=t.data(i+s[a]),n===e&&(n=""),t.css(s[a],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return e.wrap(s),(e[0]===a||t.contains(e[0],a))&&t(a).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var a=e.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(a)&&a.call(n[0]),t.isFunction(e)&&e()}var n=t(this),a=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):o.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,a=i.queue,o=t.effects.effect[i.effect];return t.fx.off||!o?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):a===!1?this.each(e):this.queue(a||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.menu.min.js b/wp-includes/js/jquery/ui/jquery.ui.menu.min.js
index b6aef9331..113d53fb1 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.menu.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.menu.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.menu.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){t.widget("ui.menu",{version:"1.10.3",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(e),i.has(".ui-menu").length?this.expand(e):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,h=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:h=!1,n=this.previousFilter||"",a=String.fromCharCode(e.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(e.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js b/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js
index 1ef86b0cd..b7361fb7a 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.mouse.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.position.min.js b/wp-includes/js/jquery/ui/jquery.ui.position.min.js
index 115a1bc47..9bd2ecd47 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.position.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.position.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.position.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow?"":e.element.css("overflow-x"),s=e.isWindow?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,a="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var a,p,m,g,v,b,_=t(e.of),y=t.position.getWithinInfo(e.within),w=t.position.getScrollInfo(y),x=(e.collision||"flip").split(" "),k={};return b=n(_),_[0].preventDefault&&(e.at="left top"),p=b.width,m=b.height,g=b.offset,v=t.extend({},g),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),k[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===x.length&&(x[1]=x[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=m:"center"===e.at[1]&&(v.top+=m/2),a=i(k.at,p,m),v.left+=a[0],v.top+=a[1],this.each(function(){var n,l,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),b=s(this,"marginTop"),D=u+f+s(this,"marginRight")+w.width,T=d+b+s(this,"marginBottom")+w.height,C=t.extend({},v),M=i(k.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?C.left-=u:"center"===e.my[0]&&(C.left-=u/2),"bottom"===e.my[1]?C.top-=d:"center"===e.my[1]&&(C.top-=d/2),C.left+=M[0],C.top+=M[1],t.support.offsetFractions||(C.left=h(C.left),C.top=h(C.top)),n={marginLeft:f,marginTop:b},t.each(["left","top"],function(i,s){t.ui.position[x[i]]&&t.ui.position[x[i]][s](C,{targetWidth:p,targetHeight:m,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:D,collisionHeight:T,offset:[a[0]+M[0],a[1]+M[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(l=function(t){var i=g.left-C.left,s=i+p-u,n=g.top-C.top,a=n+m-d,h={target:{element:_,left:g.left,top:g.top,width:p,height:m},element:{element:c,left:C.left,top:C.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>m&&m>r(n+a)&&(h.vertical="middle"),h.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(C,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-o-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-o-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-o-a,t.top+p+f+m>c&&(0>s||r(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,t.top+p+f+m>u&&(i>0||u>r(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js b/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js
index 855b23bb7..432ec0260 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.progressbar.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.progressbar",{version:"1.9.2",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t,e){t.widget("ui.progressbar",{version:"1.10.3",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js b/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js
index 560c422e8..1c29259e4 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.resizable.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e('<div class="ui-resizable-handle '+o+'"></div>');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")}).insertAfter(n),n.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var r=e.ui.ie6?1:0,i=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+i,height:this.element.outerHeight()+i,position:"absolute",left:this.elementOffset.left-r+"px",top:this.elementOffset.top-r+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function t(e){return parseInt(e,10)||0}function i(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,a,o=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=t(this.helper.css("left")),n=t(this.helper.css("top")),o.containment&&(s+=e(o.containment).scrollLeft()||0,n+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(t){var i,s=this.helper,n={},a=this.originalMousePosition,o=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,u=this.size.height,c=t.pageX-a.left||0,d=t.pageY-a.top||0,p=this._change[o];return p?(i=p.apply(this,[t,c,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==u&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(n)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&e.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,n,a,o,r=this.options;o={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||e)&&(t=o.minHeight*this.aspectRatio,n=o.minWidth/this.aspectRatio,s=o.maxHeight*this.aspectRatio,a=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),n>o.minHeight&&(o.minHeight=n),o.maxWidth>s&&(o.maxWidth=s),o.maxHeight>a&&(o.maxHeight=a)),this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,s=this.size,n=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===n&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"===n&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,s=this.axis,n=i(e.width)&&t.maxWidth&&t.maxWidth<e.width,a=i(e.height)&&t.maxHeight&&t.maxHeight<e.height,o=i(e.width)&&t.minWidth&&t.minWidth>e.width,r=i(e.height)&&t.minHeight&&t.minHeight>e.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return o&&(e.width=t.minWidth),r&&(e.height=t.minHeight),n&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),o&&u&&(e.left=h-t.minWidth),n&&u&&(e.left=h-t.maxWidth),r&&c&&(e.top=l-t.minHeight),a&&c&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,i,s,n,a=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(n=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],t=0;i.length>t;t++)this.borderDif[t]=(parseInt(i[t],10)||0)+(parseInt(s[t],10)||0);n.css({height:a.height()-this.borderDif[0]-this.borderDif[2]||0,width:a.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&e.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,a,o,r,h,l=e(this).data("ui-resizable"),u=l.options,c=l.element,d=u.containment,p=d instanceof e?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(i=e(p),s=[],e(["Top","Right","Left","Bottom"]).each(function(e,n){s[e]=t(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,a=l.containerSize.height,o=l.containerSize.width,r=e.ui.hasScroll(p,"left")?p.scrollWidth:o,h=e.ui.hasScroll(p)?p.scrollHeight:a,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(t){var i,s,n,a,o=e(this).data("ui-resizable"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,c={top:0,left:0},d=o.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-c.left),u&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?h.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),s=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-h.top)+o.sizeDiff.height),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a&&(i-=o.parentData.left),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("ui-resizable"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size,n=t.originalSize,a=t.originalPosition,o=t.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,u=Math.round((s.width-n.width)/h)*h,c=Math.round((s.height-n.height)/l)*l,d=n.width+u,p=n.height+c,f=i.maxWidth&&d>i.maxWidth,m=i.maxHeight&&p>i.maxHeight,g=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,g&&(d+=h),v&&(p+=l),f&&(d-=h),m&&(p-=l),/^(se|s|e)$/.test(o)?(t.size.width=d,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.top=a.top-c):/^(sw)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.left=a.left-u):(t.size.width=d,t.size.height=p,t.position.top=a.top-c,t.position.left=a.left-u)}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js b/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js
index 1d433bb0e..2ac1c60c7 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.selectable.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.slider.min.js b/wp-includes/js/jquery/ui/jquery.ui.slider.min.js
index 92327a9a9..7e3192721 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.slider.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.slider.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.slider.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)o.push(a);this.handles=n.add(t(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):this.range=t([])},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,a,o,r,h,l,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-u.values(e));(n>i||n===i&&(e===u._lastChangedValue||u.values(e)===c.min))&&(n=i,a=t(this),o=e)}),r=this._start(e,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-a.width()/2,top:e.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,a;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,a=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),a!==!1&&this.values(e,i,!0))):i!==this.value()&&(a=this._trigger("slide",t,{handle:this.handles[e],value:i}),a!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,a;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,a,o,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(o=this.options.step,n=a=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:a=this._valueMin();break;case t.ui.keyCode.END:a=this._valueMax();break;case t.ui.keyCode.PAGE_UP:a=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;a=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;a=this._trimAlignValue(n-o)}this._slide(i,r,a)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js b/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js
index 963c4de25..1a84db7ae 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.sortable.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,a.widgetName+"-item")===a?(s=t(this),!1):undefined}),t.data(e.target,a.widgetName+"-item")===a&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=t("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:e.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:e.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(e.pageY-t(document).scrollTop()<o.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-o.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<o.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+o.scrollSpeed)),e.pageX-t(document).scrollLeft()<o.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-o.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<o.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+o.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=t.left,o=a+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>a&&o>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,a=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return n?this.floating?o&&"right"===o||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&s||"left"===a&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,s,n,a,o=[],r=[],h=this._connectWith();if(h&&e)for(i=h.length-1;i>=0;i--)for(n=t(h[i]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&r.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(r.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=r.length-1;i>=0;i--)r[i][0].each(function(){o.push(this)});return t(o)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(u.push([t.isFunction(a.options.items)?a.options.items.call(a.element[0],e,{item:this.currentItem}):t(a.options.items,a.element),a]),this.containers.push(a));for(i=u.length-1;i>=0;i--)for(o=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",o),c.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t("<td>&#160;</td>",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,a,o,r,h,l,c,u,d,p,f=null,m=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],m=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[m].containerCache.over||(this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1);else{for(o=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],a=this.items.length-1;a>=0;a--)t.contains(this.containers[m].element[0],this.items[a].item[0])&&this.items[a].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[a].top,this.items[a].height))&&(u=this.items[a].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[a][l]-c)&&(d=!0,u+=this.items[a][l]),o>Math.abs(u-c)&&(o=Math.abs(u-c),r=this.items[a],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[m])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[m].element,!0),this._trigger("change",s,this._uiHash()),this.containers[m]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[m],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[m]._trigger("over",s,this._uiHash(this)),this.containers[m].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,a=e.pageX,o=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)e||s.push(function(t){return function(e){t._trigger("deactivate",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(t){return function(e){t._trigger("out",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js b/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js
index d29427228..62cd8de6a 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.spinner.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.3",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js b/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js
index bb6a64000..e2f2ecb16 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.tabs.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"").replace(/\s/g,"%20")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r,i,s=this._superApply(arguments);return s?(e==="beforeActivate"?(r=n.newTab.length?n.newTab:n.oldTab,i=n.newPanel.length?n.newPanel:n.oldPanel,s=this._super("select",t,{tab:r.find(".ui-tabs-anchor")[0],panel:i[0],index:r.closest("li").index()})):e==="activate"&&n.newTab.length&&(s=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),s):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t,e){function i(){return++n}function s(t){return t.hash.length>1&&decodeURIComponent(t.href.replace(a,""))===decodeURIComponent(location.href.replace(a,""))}var n=0,a=/#.*$/;t.widget("ui.tabs",{version:"1.10.3",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,a){return t(a).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),a=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:a=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,a),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var a,o,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),u=l.attr("aria-controls");s(n)?(a=n.hash,o=e.element.find(e._sanitizeSelector(a))):(r=e._tabId(l),a="#"+r,o=e.element.find(a),o.length||(o=e._createPanel(r),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),u&&l.data("ui-tabs-aria-controls",u),l.attr({"aria-controls":a.substring(1),"aria-labelledby":h}),o.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?t():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):t(),u={oldTab:s,oldPanel:l,newTab:r?t():a,newPanel:h};e.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",e,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?t():a,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),e),this._toggle(e,u))},_toggle:function(e,i){function s(){a.running=!1,a._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,a=this.tabs.eq(e),o=a.find(".ui-tabs-anchor"),r=this._getPanelForTab(a),h={tab:a,panel:r};s(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(a.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),a.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,a){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:a},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js b/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js
index 5077d911a..48e52d930 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.tooltip.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.3",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,a=e?e.type:null;return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=a),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function a(t){l.of=t,o.is(":hidden")||o.position(l)}var o,r,h,l=t.extend({},this.options.position);if(n){if(o=this._find(s),o.length)return o.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),o=this._tooltip(s),e(s,o.attr("id")),o.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:a}),a(i)):o.position(t.extend({of:s},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(a(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:o}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(o)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),a=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),a.stop(!0),this._hide(a,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:a}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/jquery/ui/jquery.ui.widget.min.js b/wp-includes/js/jquery/ui/jquery.ui.widget.min.js
index 865bc98d4..d2358d39d 100644
--- a/wp-includes/js/jquery/ui/jquery.ui.widget.min.js
+++ b/wp-includes/js/jquery/ui/jquery.ui.widget.min.js
@@ -1,5 +1,4 @@
-/*! jQuery UI - v1.9.2 - 2012-11-23
+/*! jQuery UI - v1.10.3 - 2013-05-03
 * http://jqueryui.com
-* Includes: jquery.ui.widget.js
-* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);
\ No newline at end of file
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var i=0,s=Array.prototype.slice,n=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(a){}n(t)},e.widget=function(i,s,n){var a,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],a=u+"-"+i,n||(n=s,s=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:n.version,_proto:e.extend({},n),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(n,function(i,n){return e.isFunction(n)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,a=this._superApply;return this._super=e,this._superApply=t,i=n.apply(this,arguments),this._super=s,this._superApply=a,i}}(),t):(l[i]=n,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:a}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var n,a,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(n in r[o])a=r[o][n],r[o].hasOwnProperty(n)&&a!==t&&(i[n]=e.isPlainObject(a)?e.isPlainObject(i[n])?e.widget.extend({},i[n],a):e.widget.extend({},a):a);return i},e.widget.bridge=function(i,n){var a=n.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,n=e.data(this,a);return n?e.isFunction(n[r])&&"_"!==r.charAt(0)?(s=n[r].apply(n,h),s!==n&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,a);t?t.option(r||{})._init():e.data(this,a,new n(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var n,a,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},n=i.split("."),i=n.shift(),n.length){for(a=o[i]=e.widget.extend({},this.options[i]),r=0;n.length-1>r;r++)a[n[r]]=a[n[r]]||{},a=a[n[r]];if(i=n.pop(),s===t)return a[i]===t?null:a[i];a[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var a,r=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=a=e(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,a=this.widget()),e.each(n,function(n,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=n.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?a.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var r,o=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),r=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),r&&e.effects&&e.effects.effect[o]?s[t](n):o!==t&&s[o]?s[o](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}})})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/media-editor.js b/wp-includes/js/media-editor.js
index 5a77d50a5..fc497cd84 100644
--- a/wp-includes/js/media-editor.js
+++ b/wp-includes/js/media-editor.js
@@ -45,7 +45,7 @@
 			props.title = props.title || attachment.title;
 
 			link = props.link || defaultProps.link || getUserSetting( 'urlbutton', 'file' );
-			if ( 'file' === link )
+			if ( 'file' === link || 'embed' === link )
 				linkUrl = attachment.url;
 			else if ( 'post' === link )
 				linkUrl = attachment.link;
@@ -66,7 +66,8 @@
 					src:       size.url,
 					captionId: 'attachment_' + attachment.id
 				});
-
+			} else if ( 'video' === attachment.type || 'audio' === attachment.type ) {
+				_.extend( props, _.pick( attachment, 'title', 'type', 'icon', 'mime' ) );
 			// Format properties for non-images.
 			} else {
 				props.title = props.title || attachment.filename;
@@ -95,6 +96,48 @@
 			return wp.html.string( options );
 		},
 
+		audio: function( props, attachment ) {
+			return wp.media.string._audioVideo( 'audio', props, attachment );
+		},
+
+		video: function( props, attachment ) {
+			return wp.media.string._audioVideo( 'video', props, attachment );
+		},
+
+		_audioVideo: function( type, props, attachment ) {
+			var shortcode, html, extension;
+
+			props = wp.media.string.props( props, attachment );
+			if ( props.link !== 'embed' )
+				return wp.media.string.link( props );
+
+			shortcode = {};
+
+			if ( 'video' === type ) {
+				if ( attachment.width )
+					shortcode.width = attachment.width;
+
+				if ( attachment.height )
+					shortcode.height = attachment.height;
+			}
+
+			extension = attachment.filename.split('.').pop();
+
+			if ( _.contains( wp.media.view.settings.embedExts, extension ) ) {
+				shortcode[extension] = attachment.url;
+			} else {
+				// Render unsupported audio and video files as links.
+				return wp.media.string.link( props );
+			}
+
+			html = wp.shortcode.string({
+				tag:     type,
+				attrs:   shortcode
+			});
+
+			return html;
+		},
+
 		image: function( props, attachment ) {
 			var img = {},
 				options, classes, shortcode, html;
@@ -102,7 +145,7 @@
 			props = wp.media.string.props( props, attachment );
 			classes = props.classes || [];
 
-			img.src = props.url;
+			img.src = typeof attachment !== 'undefined' ? attachment.url : props.url;
 			_.extend( img, _.pick( props, 'width', 'height', 'alt' ) );
 
 			// Only assign the align class to the image if we're not printing
@@ -450,7 +493,7 @@
 		add: function( id, options ) {
 			var workflow = this.get( id );
 
-			if ( workflow )
+			if ( workflow ) // only add once: if exists return existing
 				return workflow;
 
 			workflow = workflows[ id ] = wp.media( _.defaults( options || {}, {
@@ -576,7 +619,10 @@
 						if ( props[ prop ] )
 							options[ option ] = props[ prop ];
 					});
-
+				} else if ( 'video' === attachment.type ) {
+					html = wp.media.string.video( props, attachment );
+				} else if ( 'audio' === attachment.type ) {
+					html = wp.media.string.audio( props, attachment );
 				} else {
 					html = wp.media.string.link( props );
 					options.post_title = props.title;
@@ -601,9 +647,11 @@
 			}
 		},
 
-		open: function( id ) {
+		open: function( id, options ) {
 			var workflow, editor;
 
+			options = options || {};
+
 			id = this.id( id );
 
 			// Save a bookmark of the caret position in IE.
@@ -618,9 +666,9 @@
 
 			workflow = this.get( id );
 
-			// Initialize the editor's workflow if we haven't yet.
-			if ( ! workflow )
-				workflow = this.add( id );
+			// Redo workflow if state has changed
+			if ( ! workflow || ( workflow.options && options.state !== workflow.options.state ) )
+				workflow = this.add( id, options );
 
 			return workflow.open();
 		},
@@ -628,7 +676,13 @@
 		init: function() {
 			$(document.body).on( 'click', '.insert-media', function( event ) {
 				var $this = $(this),
-					editor = $this.data('editor');
+					editor = $this.data('editor'),
+					options = {
+						frame:    'post',
+						state:    'insert',
+						title:    wp.media.view.l10n.addMedia,
+						multiple: true
+					};
 
 				event.preventDefault();
 
@@ -639,7 +693,12 @@
 				// See: http://core.trac.wordpress.org/ticket/22445
 				$this.blur();
 
-				wp.media.editor.open( editor );
+				if ( $this.hasClass( 'gallery' ) ) {
+					options.state = 'gallery';
+					options.title = wp.media.view.l10n.createGalleryTitle;
+				}
+
+				wp.media.editor.open( editor, options );
 			});
 		}
 	};
diff --git a/wp-includes/js/media-editor.min.js b/wp-includes/js/media-editor.min.js
index 2f2d4f170..091450afa 100644
--- a/wp-includes/js/media-editor.min.js
+++ b/wp-includes/js/media-editor.min.js
@@ -1 +1 @@
-(function(b){var a={};wp.media.string={props:function(f,i){var h,c,e,g,d,j=wp.media.view.settings.defaultProps;d=function(k){if("image"===k.type&&!k.alt){k.alt=k.caption||k.title||"";k.alt=k.alt.replace(/<\/?[^>]+>/g,"");k.alt=k.alt.replace(/[\r\n]+/g," ")}return k};f=f?_.clone(f):{};if(i&&i.type){f.type=i.type}if("image"===f.type){f=_.defaults(f||{},{align:j.align||getUserSetting("align","none"),size:j.size||getUserSetting("imgsize","medium"),url:"",classes:[]})}if(!i){return d(f)}f.title=f.title||i.title;h=f.link||j.link||getUserSetting("urlbutton","file");if("file"===h){c=i.url}else{if("post"===h){c=i.link}else{if("custom"===h){c=f.linkUrl}}}f.linkUrl=c||"";if("image"===i.type){f.classes.push("wp-image-"+i.id);g=i.sizes;e=g&&g[f.size]?g[f.size]:i;_.extend(f,_.pick(i,"align","caption","alt"),{width:e.width,height:e.height,src:e.url,captionId:"attachment_"+i.id})}else{f.title=f.title||i.filename;f.rel=f.rel||"attachment wp-att-"+i.id}return d(f)},link:function(d,e){var c;d=wp.media.string.props(d,e);c={tag:"a",content:d.title,attrs:{href:d.linkUrl}};if(d.rel){c.attrs.rel=d.rel}return wp.html.string(c)},image:function(g,i){var c={},d,f,h,e;g=wp.media.string.props(g,i);f=g.classes||[];c.src=g.url;_.extend(c,_.pick(g,"width","height","alt"));if(g.align&&!g.caption){f.push("align"+g.align)}if(g.size){f.push("size-"+g.size)}c["class"]=_.compact(f).join(" ");d={tag:"img",attrs:c,single:true};if(g.linkUrl){d={tag:"a",attrs:{href:g.linkUrl},content:d}}e=wp.html.string(d);if(g.caption){h={};if(c.width){h.width=c.width}if(g.captionId){h.id=g.captionId}if(g.align){h.align="align"+g.align}e=wp.shortcode.string({tag:"caption",attrs:h,content:e+" "+g.caption})}return e}};wp.media.gallery=(function(){var c={};return{defaults:{order:"ASC",id:wp.media.view.settings.post.id,itemtag:"dl",icontag:"dt",captiontag:"dd",columns:"3",link:"post",size:"thumbnail",orderby:"menu_order ID"},attachments:function(h){var j=h.string(),d=c[j],f,e,i,g;delete c[j];if(d){return d}f=_.defaults(h.attrs.named,wp.media.gallery.defaults);e=_.pick(f,"orderby","order");e.type="image";e.perPage=-1;if("rand"===f.orderby){f._orderbyRandom=true}if(!f.orderby||/^menu_order(?: ID)?$/i.test(f.orderby)){e.orderby="menuOrder"}if(f.ids){e.post__in=f.ids.split(",");e.orderby="post__in"}else{if(f.include){e.post__in=f.include.split(",")}}if(f.exclude){e.post__not_in=f.exclude.split(",")}if(!e.post__in){e.uploadedTo=f.id}g=_.omit(f,"id","ids","include","exclude","orderby","order");i=wp.media.query(e);i.gallery=new Backbone.Model(g);return i},shortcode:function(d){var f=d.props.toJSON(),e=_.pick(f,"orderby","order"),g,h;if(d.gallery){_.extend(e,d.gallery.toJSON())}e.ids=d.pluck("id");if(f.uploadedTo){e.id=f.uploadedTo}if(e._orderbyRandom){e.orderby="rand"}delete e._orderbyRandom;if(e.ids&&"post__in"===e.orderby){delete e.orderby}_.each(wp.media.gallery.defaults,function(j,i){if(j===e[i]){delete e[i]}});g=new wp.shortcode({tag:"gallery",attrs:e,type:"single"});h=new wp.media.model.Attachments(d.models,{props:f});h.gallery=d.gallery;c[g.string()]=h;return g},edit:function(g){var f=wp.shortcode.next("gallery",g),h=wp.media.gallery.defaults.id,d,e;if(!f||f.content!==g){return}f=f.shortcode;if(_.isUndefined(f.get("id"))&&!_.isUndefined(h)){f.set("id",h)}d=wp.media.gallery.attachments(f);e=new wp.media.model.Selection(d.models,{props:d.props.toJSON(),multiple:true});e.gallery=d.gallery;e.more().done(function(){e.props.set({query:false});e.unmirror();e.props.unset("orderby")});if(this.frame){this.frame.dispose()}this.frame=wp.media({frame:"post",state:"gallery-edit",title:wp.media.view.l10n.editGalleryTitle,editing:true,multiple:true,selection:e}).open();return this.frame}}}());wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(d){var c=wp.media.view.settings;c.post.featuredImageId=d;wp.media.post("set-post-thumbnail",{json:true,post_id:c.post.id,thumbnail_id:c.post.featuredImageId,_wpnonce:c.post.nonce}).done(function(e){b(".inside","#postimagediv").html(e)})},frame:function(){if(this._frame){return this._frame}this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage()]});this._frame.on("toolbar:create:featured-image",function(c){this.createSelectToolbar(c,{text:wp.media.view.l10n.setFeaturedImage})},this._frame);this._frame.state("featured-image").on("select",this.select);return this._frame},select:function(){var d=wp.media.view.settings,c=this.get("selection").single();if(!d.post.featuredImageId){return}wp.media.featuredImage.set(c?c.id:-1)},init:function(){b("#postimagediv").on("click","#set-post-thumbnail",function(c){c.preventDefault();c.stopPropagation();wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){wp.media.view.settings.post.featuredImageId=-1})}};b(wp.media.featuredImage.init);wp.media.editor={insert:function(g){var d=typeof(tinymce)!="undefined",j=typeof(QTags)!="undefined",c=window.wpActiveEditor,f;if(window.send_to_editor){return window.send_to_editor.apply(this,arguments)}if(!c){if(d&&tinymce.activeEditor){f=tinymce.activeEditor;c=window.wpActiveEditor=f.id}else{if(!j){return false}}}else{if(d){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){f=tinymce.activeEditor}else{f=tinymce.get(c)}}}if(f&&!f.isHidden()){if(tinymce.isIE&&f.windowManager.insertimagebookmark){f.selection.moveToBookmark(f.windowManager.insertimagebookmark)}if(g.indexOf("[caption")!==-1){if(f.wpSetImgCaption){g=f.wpSetImgCaption(g)}}else{if(g.indexOf("[gallery")!==-1){if(f.plugins.wpgallery){g=f.plugins.wpgallery._do_gallery(g)}}else{if(g.indexOf("[embed")===0){if(f.plugins.wordpress){g=f.plugins.wordpress._setEmbed(g)}}}}f.execCommand("mceInsertContent",false,g)}else{if(j){QTags.insertContent(g)}else{document.getElementById(c).value+=g}}if(window.tb_remove){try{window.tb_remove()}catch(i){}}},add:function(e,c){var d=this.get(e);if(d){return d}d=a[e]=wp.media(_.defaults(c||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:true}));d.on("insert",function(f){var g=d.state();f=f||g.get("selection");if(!f){return}b.when.apply(b,f.map(function(i){var h=g.display(i).toJSON();return this.send.attachment(h,i.toJSON())},this)).done(function(){wp.media.editor.insert(_.toArray(arguments).join("\n\n"))})},this);d.state("gallery-edit").on("update",function(f){this.insert(wp.media.gallery.shortcode(f).string())},this);d.state("embed").on("select",function(){var g=d.state(),f=g.get("type"),h=g.props.toJSON();h.url=h.url||"";if("link"===f){_.defaults(h,{title:h.url,linkUrl:h.url});this.send.link(h).done(function(i){wp.media.editor.insert(i)})}else{if("image"===f){_.defaults(h,{title:h.url,linkUrl:"",align:"none",link:"none"});if("none"===h.link){h.linkUrl=""}else{if("file"===h.link){h.linkUrl=h.url}}this.insert(wp.media.string.image(h))}}},this);d.state("featured-image").on("select",wp.media.featuredImage.select);d.setState(d.options.state);return d},id:function(c){if(c){return c}c=wpActiveEditor;if(!c&&typeof tinymce!=="undefined"&&tinymce.activeEditor){c=tinymce.activeEditor.id}c=c||"";return c},get:function(c){c=this.id(c);return a[c]},remove:function(c){c=this.id(c);delete a[c]},send:{attachment:function(f,g){var c=g.caption,d,e;if(!wp.media.view.settings.captions){delete g.caption}f=wp.media.string.props(f,g);d={id:g.id,post_content:g.description,post_excerpt:c};if(f.linkUrl){d.url=f.linkUrl}if("image"===g.type){e=wp.media.string.image(f);_.each({align:"align",size:"image-size",alt:"image_alt"},function(h,i){if(f[i]){d[h]=f[i]}})}else{e=wp.media.string.link(f);d.post_title=f.title}return 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(c){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:c.linkUrl,title:c.title,html:wp.media.string.link(c),post_id:wp.media.view.settings.post.id})}},open:function(e){var d,c;e=this.id(e);if(typeof tinymce!=="undefined"){c=tinymce.get(e);if(tinymce.isIE&&c&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}}d=this.get(e);if(!d){d=this.add(e)}return d.open()},init:function(){b(document.body).on("click",".insert-media",function(d){var e=b(this),c=e.data("editor");d.preventDefault();e.blur();wp.media.editor.open(c)})}};_.bindAll(wp.media.editor,"open");b(wp.media.editor.init)}(jQuery));
\ No newline at end of file
+(function(b){var a={};wp.media.string={props:function(f,i){var h,c,e,g,d,j=wp.media.view.settings.defaultProps;d=function(k){if("image"===k.type&&!k.alt){k.alt=k.caption||k.title||"";k.alt=k.alt.replace(/<\/?[^>]+>/g,"");k.alt=k.alt.replace(/[\r\n]+/g," ")}return k};f=f?_.clone(f):{};if(i&&i.type){f.type=i.type}if("image"===f.type){f=_.defaults(f||{},{align:j.align||getUserSetting("align","none"),size:j.size||getUserSetting("imgsize","medium"),url:"",classes:[]})}if(!i){return d(f)}f.title=f.title||i.title;h=f.link||j.link||getUserSetting("urlbutton","file");if("file"===h||"embed"===h){c=i.url}else{if("post"===h){c=i.link}else{if("custom"===h){c=f.linkUrl}}}f.linkUrl=c||"";if("image"===i.type){f.classes.push("wp-image-"+i.id);g=i.sizes;e=g&&g[f.size]?g[f.size]:i;_.extend(f,_.pick(i,"align","caption","alt"),{width:e.width,height:e.height,src:e.url,captionId:"attachment_"+i.id})}else{if("video"===i.type||"audio"===i.type){_.extend(f,_.pick(i,"title","type","icon","mime"))}else{f.title=f.title||i.filename;f.rel=f.rel||"attachment wp-att-"+i.id}}return d(f)},link:function(d,e){var c;d=wp.media.string.props(d,e);c={tag:"a",content:d.title,attrs:{href:d.linkUrl}};if(d.rel){c.attrs.rel=d.rel}return wp.html.string(c)},audio:function(c,d){return wp.media.string._audioVideo("audio",c,d)},video:function(c,d){return wp.media.string._audioVideo("video",c,d)},_audioVideo:function(e,d,g){var f,c,h;d=wp.media.string.props(d,g);if(d.link!=="embed"){return wp.media.string.link(d)}f={};if("video"===e){if(g.width){f.width=g.width}if(g.height){f.height=g.height}}h=g.filename.split(".").pop();if(_.contains(wp.media.view.settings.embedExts,h)){f[h]=g.url}else{return wp.media.string.link(d)}c=wp.shortcode.string({tag:e,attrs:f});return c},image:function(g,i){var c={},d,f,h,e;g=wp.media.string.props(g,i);f=g.classes||[];c.src=typeof i!=="undefined"?i.url:g.url;_.extend(c,_.pick(g,"width","height","alt"));if(g.align&&!g.caption){f.push("align"+g.align)}if(g.size){f.push("size-"+g.size)}c["class"]=_.compact(f).join(" ");d={tag:"img",attrs:c,single:true};if(g.linkUrl){d={tag:"a",attrs:{href:g.linkUrl},content:d}}e=wp.html.string(d);if(g.caption){h={};if(c.width){h.width=c.width}if(g.captionId){h.id=g.captionId}if(g.align){h.align="align"+g.align}e=wp.shortcode.string({tag:"caption",attrs:h,content:e+" "+g.caption})}return e}};wp.media.gallery=(function(){var c={};return{defaults:{order:"ASC",id:wp.media.view.settings.post.id,itemtag:"dl",icontag:"dt",captiontag:"dd",columns:"3",link:"post",size:"thumbnail",orderby:"menu_order ID"},attachments:function(h){var j=h.string(),d=c[j],f,e,i,g;delete c[j];if(d){return d}f=_.defaults(h.attrs.named,wp.media.gallery.defaults);e=_.pick(f,"orderby","order");e.type="image";e.perPage=-1;if("rand"===f.orderby){f._orderbyRandom=true}if(!f.orderby||/^menu_order(?: ID)?$/i.test(f.orderby)){e.orderby="menuOrder"}if(f.ids){e.post__in=f.ids.split(",");e.orderby="post__in"}else{if(f.include){e.post__in=f.include.split(",")}}if(f.exclude){e.post__not_in=f.exclude.split(",")}if(!e.post__in){e.uploadedTo=f.id}g=_.omit(f,"id","ids","include","exclude","orderby","order");i=wp.media.query(e);i.gallery=new Backbone.Model(g);return i},shortcode:function(d){var f=d.props.toJSON(),e=_.pick(f,"orderby","order"),g,h;if(d.gallery){_.extend(e,d.gallery.toJSON())}e.ids=d.pluck("id");if(f.uploadedTo){e.id=f.uploadedTo}if(e._orderbyRandom){e.orderby="rand"}delete e._orderbyRandom;if(e.ids&&"post__in"===e.orderby){delete e.orderby}_.each(wp.media.gallery.defaults,function(j,i){if(j===e[i]){delete e[i]}});g=new wp.shortcode({tag:"gallery",attrs:e,type:"single"});h=new wp.media.model.Attachments(d.models,{props:f});h.gallery=d.gallery;c[g.string()]=h;return g},edit:function(g){var f=wp.shortcode.next("gallery",g),h=wp.media.gallery.defaults.id,d,e;if(!f||f.content!==g){return}f=f.shortcode;if(_.isUndefined(f.get("id"))&&!_.isUndefined(h)){f.set("id",h)}d=wp.media.gallery.attachments(f);e=new wp.media.model.Selection(d.models,{props:d.props.toJSON(),multiple:true});e.gallery=d.gallery;e.more().done(function(){e.props.set({query:false});e.unmirror();e.props.unset("orderby")});if(this.frame){this.frame.dispose()}this.frame=wp.media({frame:"post",state:"gallery-edit",title:wp.media.view.l10n.editGalleryTitle,editing:true,multiple:true,selection:e}).open();return this.frame}}}());wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(d){var c=wp.media.view.settings;c.post.featuredImageId=d;wp.media.post("set-post-thumbnail",{json:true,post_id:c.post.id,thumbnail_id:c.post.featuredImageId,_wpnonce:c.post.nonce}).done(function(e){b(".inside","#postimagediv").html(e)})},frame:function(){if(this._frame){return this._frame}this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage()]});this._frame.on("toolbar:create:featured-image",function(c){this.createSelectToolbar(c,{text:wp.media.view.l10n.setFeaturedImage})},this._frame);this._frame.state("featured-image").on("select",this.select);return this._frame},select:function(){var d=wp.media.view.settings,c=this.get("selection").single();if(!d.post.featuredImageId){return}wp.media.featuredImage.set(c?c.id:-1)},init:function(){b("#postimagediv").on("click","#set-post-thumbnail",function(c){c.preventDefault();c.stopPropagation();wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){wp.media.view.settings.post.featuredImageId=-1})}};b(wp.media.featuredImage.init);wp.media.editor={insert:function(g){var d=typeof(tinymce)!="undefined",j=typeof(QTags)!="undefined",c=window.wpActiveEditor,f;if(window.send_to_editor){return window.send_to_editor.apply(this,arguments)}if(!c){if(d&&tinymce.activeEditor){f=tinymce.activeEditor;c=window.wpActiveEditor=f.id}else{if(!j){return false}}}else{if(d){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){f=tinymce.activeEditor}else{f=tinymce.get(c)}}}if(f&&!f.isHidden()){if(tinymce.isIE&&f.windowManager.insertimagebookmark){f.selection.moveToBookmark(f.windowManager.insertimagebookmark)}if(g.indexOf("[caption")!==-1){if(f.wpSetImgCaption){g=f.wpSetImgCaption(g)}}else{if(g.indexOf("[gallery")!==-1){if(f.plugins.wpgallery){g=f.plugins.wpgallery._do_gallery(g)}}else{if(g.indexOf("[embed")===0){if(f.plugins.wordpress){g=f.plugins.wordpress._setEmbed(g)}}}}f.execCommand("mceInsertContent",false,g)}else{if(j){QTags.insertContent(g)}else{document.getElementById(c).value+=g}}if(window.tb_remove){try{window.tb_remove()}catch(i){}}},add:function(e,c){var d=this.get(e);if(d){return d}d=a[e]=wp.media(_.defaults(c||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:true}));d.on("insert",function(f){var g=d.state();f=f||g.get("selection");if(!f){return}b.when.apply(b,f.map(function(i){var h=g.display(i).toJSON();return this.send.attachment(h,i.toJSON())},this)).done(function(){wp.media.editor.insert(_.toArray(arguments).join("\n\n"))})},this);d.state("gallery-edit").on("update",function(f){this.insert(wp.media.gallery.shortcode(f).string())},this);d.state("embed").on("select",function(){var g=d.state(),f=g.get("type"),h=g.props.toJSON();h.url=h.url||"";if("link"===f){_.defaults(h,{title:h.url,linkUrl:h.url});this.send.link(h).done(function(i){wp.media.editor.insert(i)})}else{if("image"===f){_.defaults(h,{title:h.url,linkUrl:"",align:"none",link:"none"});if("none"===h.link){h.linkUrl=""}else{if("file"===h.link){h.linkUrl=h.url}}this.insert(wp.media.string.image(h))}}},this);d.state("featured-image").on("select",wp.media.featuredImage.select);d.setState(d.options.state);return d},id:function(c){if(c){return c}c=wpActiveEditor;if(!c&&typeof tinymce!=="undefined"&&tinymce.activeEditor){c=tinymce.activeEditor.id}c=c||"";return c},get:function(c){c=this.id(c);return a[c]},remove:function(c){c=this.id(c);delete a[c]},send:{attachment:function(f,g){var c=g.caption,d,e;if(!wp.media.view.settings.captions){delete g.caption}f=wp.media.string.props(f,g);d={id:g.id,post_content:g.description,post_excerpt:c};if(f.linkUrl){d.url=f.linkUrl}if("image"===g.type){e=wp.media.string.image(f);_.each({align:"align",size:"image-size",alt:"image_alt"},function(h,i){if(f[i]){d[h]=f[i]}})}else{if("video"===g.type){e=wp.media.string.video(f,g)}else{if("audio"===g.type){e=wp.media.string.audio(f,g)}else{e=wp.media.string.link(f);d.post_title=f.title}}}return 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(c){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:c.linkUrl,title:c.title,html:wp.media.string.link(c),post_id:wp.media.view.settings.post.id})}},open:function(f,c){var e,d;c=c||{};f=this.id(f);if(typeof tinymce!=="undefined"){d=tinymce.get(f);if(tinymce.isIE&&d&&!d.isHidden()){d.focus();d.windowManager.insertimagebookmark=d.selection.getBookmark()}}e=this.get(f);if(!e||(e.options&&c.state!==e.options.state)){e=this.add(f,c)}return e.open()},init:function(){b(document.body).on("click",".insert-media",function(e){var f=b(this),d=f.data("editor"),c={frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:true};e.preventDefault();f.blur();if(f.hasClass("gallery")){c.state="gallery";c.title=wp.media.view.l10n.createGalleryTitle}wp.media.editor.open(d,c)})}};_.bindAll(wp.media.editor,"open");b(wp.media.editor.init)}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-models.js b/wp-includes/js/media-models.js
index 34cce0b7a..f501b69fc 100644
--- a/wp-includes/js/media-models.js
+++ b/wp-includes/js/media-models.js
@@ -72,90 +72,25 @@ window.wp = window.wp || {};
 		 * media.template( id )
 		 *
 		 * Fetches a template by id.
-		 *
-		 * @param  {string} id   A string that corresponds to a DOM element with an id prefixed with "tmpl-".
-		 *                       For example, "attachment" maps to "tmpl-attachment".
-		 * @return {function}    A function that lazily-compiles the template requested.
+		 * See wp.template() in `wp-includes/js/wp-util.js`.
 		 */
-		template: _.memoize( function( id ) {
-			var compiled,
-				options = {
-					evaluate:    /<#([\s\S]+?)#>/g,
-					interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
-					escape:      /\{\{([^\}]+?)\}\}(?!\})/g,
-					variable:    'data'
-				};
-
-			return function( data ) {
-				compiled = compiled || _.template( $( '#tmpl-' + id ).html(), null, options );
-				return compiled( data );
-			};
-		}),
+		template: wp.template,
 
 		/**
 		 * media.post( [action], [data] )
 		 *
 		 * Sends a POST request to WordPress.
-		 *
-		 * @param  {string} action The slug of the action to fire in WordPress.
-		 * @param  {object} data   The data to populate $_POST with.
-		 * @return {$.promise}     A jQuery promise that represents the request.
+		 * See wp.ajax.post() in `wp-includes/js/wp-util.js`.
 		 */
-		post: function( action, data ) {
-			return media.ajax({
-				data: _.isObject( action ) ? action : _.extend( data || {}, { action: action })
-			});
-		},
+		post: wp.ajax.post,
 
 		/**
 		 * media.ajax( [action], [options] )
 		 *
-		 * Sends a POST request to WordPress.
-		 *
-		 * @param  {string} action  The slug of the action to fire in WordPress.
-		 * @param  {object} options The options passed to jQuery.ajax.
-		 * @return {$.promise}      A jQuery promise that represents the request.
+		 * Sends an XHR request to WordPress.
+		 * See wp.ajax.send() in `wp-includes/js/wp-util.js`.
 		 */
-		ajax: function( action, options ) {
-			if ( _.isObject( action ) ) {
-				options = action;
-			} else {
-				options = options || {};
-				options.data = _.extend( options.data || {}, { action: action });
-			}
-
-			options = _.defaults( options || {}, {
-				type:    'POST',
-				url:     media.model.settings.ajaxurl,
-				context: this
-			});
-
-			return $.Deferred( function( deferred ) {
-				// Transfer success/error callbacks.
-				if ( options.success )
-					deferred.done( options.success );
-				if ( options.error )
-					deferred.fail( options.error );
-
-				delete options.success;
-				delete options.error;
-
-				// Use with PHP's wp_send_json_success() and wp_send_json_error()
-				$.ajax( options ).done( function( response ) {
-					// Treat a response of `1` as successful for backwards
-					// compatibility with existing handlers.
-					if ( response === '1' || response === 1 )
-						response = { success: true };
-
-					if ( _.isObject( response ) && ! _.isUndefined( response.success ) )
-						deferred[ response.success ? 'resolveWith' : 'rejectWith' ]( this, [response.data] );
-					else
-						deferred.rejectWith( this, [response] );
-				}).fail( function() {
-					deferred.rejectWith( this, arguments );
-				});
-			}).promise();
-		},
+		ajax: wp.ajax.send,
 
 		// Scales a set of dimensions to fit within bounding dimensions.
 		fit: function( dimensions ) {
@@ -261,13 +196,12 @@ window.wp = window.wp || {};
 				});
 
 				// Record the values of the changed attributes.
-				if ( options.changes ) {
-					_.each( options.changes, function( value, key ) {
-						options.changes[ key ] = this.get( key );
-					}, this );
+				if ( model.hasChanged() ) {
+					options.data.changes = {};
 
-					options.data.changes = options.changes;
-					delete options.changes;
+					_.each( model.changed, function( value, key ) {
+						options.data.changes[ key ] = this.get( key );
+					}, this );
 				}
 
 				return media.ajax( options );
@@ -292,6 +226,10 @@ window.wp = window.wp || {};
 				}).fail( function() {
 					this.destroyed = false;
 				});
+
+			// Otherwise, fall back to `Backbone.sync()`.
+			} else {
+				return Backbone.Model.prototype.sync.apply( this, arguments );
 			}
 		},
 
@@ -392,7 +330,7 @@ window.wp = window.wp || {};
 			if ( this.props.get('query') )
 				return;
 
-			var changed = _.chain( options.changes ).map( function( t, prop ) {
+			var changed = _.chain( model.changed ).map( function( t, prop ) {
 				var filter = Attachments.filters[ prop ],
 					term = model.get( prop );
 
@@ -434,7 +372,7 @@ window.wp = window.wp || {};
 
 		validate: function( attachment, options ) {
 			var valid = this.validator( attachment ),
-				hasAttachment = !! this.getByCid( attachment.cid );
+				hasAttachment = !! this.get( attachment.cid );
 
 			if ( ! valid && hasAttachment )
 				this.remove( attachment, options );
@@ -463,7 +401,6 @@ window.wp = window.wp || {};
 
 			attachments.on( 'add change remove', this._validateHandler, this );
 			attachments.on( 'reset', this._validateAllHandler, this );
-
 			this.validateAll( attachments );
 			return this;
 		},
@@ -545,9 +482,26 @@ window.wp = window.wp || {};
 		},
 
 		parse: function( resp, xhr ) {
+			if ( ! _.isArray( resp ) )
+				resp = [resp];
+
 			return _.map( resp, function( attrs ) {
-				var attachment = Attachment.get( attrs.id );
-				return attachment.set( attachment.parse( attrs, xhr ) );
+				var id, attachment, newAttributes;
+
+				if ( attrs instanceof Backbone.Model ) {
+					id = attrs.get( 'id' );
+					attrs = attrs.attributes;
+				} else {
+					id = attrs.id;
+				}
+
+				attachment = Attachment.get( id );
+				newAttributes = attachment.parse( attrs, xhr );
+
+				if ( ! _.isEqual( attachment.attributes, newAttributes ) )
+					attachment.set( newAttributes );
+
+				return attachment;
 			});
 		},
 
@@ -718,7 +672,7 @@ window.wp = window.wp || {};
 				return $.Deferred().resolveWith( this ).promise();
 
 			options = options || {};
-			options.add = true;
+			options.remove = false;
 
 			return this._more = this.fetch( options ).done( function( resp ) {
 				if ( _.isEmpty( resp ) || -1 === this.args.posts_per_page || resp.length < this.args.posts_per_page )
@@ -876,7 +830,7 @@ window.wp = window.wp || {};
 				this._single = model;
 
 			// If the single model isn't in the selection, remove it.
-			if ( this._single && ! this.getByCid( this._single.cid ) )
+			if ( this._single && ! this.get( this._single.cid ) )
 				delete this._single;
 
 			this._single = this._single || this.last();
@@ -888,7 +842,7 @@ window.wp = window.wp || {};
 
 					// If the model was already removed, trigger the collection
 					// event manually.
-					if ( ! this.getByCid( previous.cid ) )
+					if ( ! this.get( previous.cid ) )
 						this.trigger( 'selection:unsingle', previous, this );
 				}
 				if ( this._single )
diff --git a/wp-includes/js/media-models.min.js b/wp-includes/js/media-models.min.js
index 9acf7751a..04bc333c6 100644
--- a/wp-includes/js/media-models.min.js
+++ b/wp-includes/js/media-models.min.js
@@ -1 +1 @@
-window.wp=window.wp||{};(function(f){var d,c,a,e,b,g;g=wp.media=function(h){var i=g.view.MediaFrame,j;if(!i){return}h=_.defaults(h||{},{frame:"select"});if("select"===h.frame&&i.Select){j=new i.Select(h)}else{if("post"===h.frame&&i.Post){j=new i.Post(h)}}delete h.frame;return j};_.extend(g,{model:{},view:{},controller:{},frames:{}});b=g.model.l10n=typeof _wpMediaModelsL10n==="undefined"?{}:_wpMediaModelsL10n;g.model.settings=b.settings||{};delete b.settings;e=function(i,h,j,k){if(_.isEqual(i,h)){return j===k?0:(j>k?-1:1)}else{return i>h?-1:1}};_.extend(g,{template:_.memoize(function(j){var i,h={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(k){i=i||_.template(f("#tmpl-"+j).html(),null,h);return i(k)}}),post:function(i,h){return g.ajax({data:_.isObject(i)?i:_.extend(h||{},{action:i})})},ajax:function(i,h){if(_.isObject(i)){h=i}else{h=h||{};h.data=_.extend(h.data||{},{action:i})}h=_.defaults(h||{},{type:"POST",url:g.model.settings.ajaxurl,context:this});return f.Deferred(function(j){if(h.success){j.done(h.success)}if(h.error){j.fail(h.error)}delete h.success;delete h.error;f.ajax(h).done(function(k){if(k==="1"||k===1){k={success:true}}if(_.isObject(k)&&!_.isUndefined(k.success)){j[k.success?"resolveWith":"rejectWith"](this,[k.data])}else{j.rejectWith(this,[k])}}).fail(function(){j.rejectWith(this,arguments)})}).promise()},fit:function(l){var i=l.width,h=l.height,k=l.maxWidth,j=l.maxHeight,m;if(!_.isUndefined(k)&&!_.isUndefined(j)){m=(i/h>k/j)?"width":"height"}else{if(_.isUndefined(j)){m="width"}else{if(_.isUndefined(k)&&h>j){m="height"}}}if("width"===m&&i>k){return{width:k,height:Math.round(k*h/i)}}else{if("height"===m&&h>j){return{width:Math.round(j*i/h),height:j}}else{return{width:i,height:h}}}},truncate:function(h,j,i){j=j||30;i=i||"&hellip;";if(h.length<=j){return h}return h.substr(0,j/2)+i+h.substr(-1*j/2)}});g.attachment=function(h){return d.get(h)};d=g.model.Attachment=Backbone.Model.extend({sync:function(j,i,h){if(_.isUndefined(this.id)){return f.Deferred().rejectWith(this).promise()}if("read"===j){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"get-attachment",id:this.id});return g.ajax(h)}else{if("update"===j){if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"save-attachment",id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id});if(h.changes){_.each(h.changes,function(l,k){h.changes[k]=this.get(k)},this);h.data.changes=h.changes;delete h.changes}return g.ajax(h)}else{if("delete"===j){h=h||{};if(!h.wait){this.destroyed=true}h.context=this;h.data=_.extend(h.data||{},{action:"delete-post",id:this.id,_wpnonce:this.get("nonces")["delete"]});return g.ajax(h).done(function(){this.destroyed=true}).fail(function(){this.destroyed=false})}}}},parse:function(i,h){if(!i){return i}i.date=new Date(i.date);i.modified=new Date(i.modified);return i},saveCompat:function(j,i){var h=this;if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}return g.post("save-attachment-compat",_.defaults({id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id},j)).done(function(m,k,l){h.set(h.parse(m,l),i)})}},{create:function(h){return c.all.push(h)},get:_.memoize(function(i,h){return c.all.push(h||{id:i})})});c=g.model.Attachments=Backbone.Collection.extend({model:d,initialize:function(i,h){h=h||{};this.props=new Backbone.Model();this.filters=h.filters||{};this.props.on("change",this._changeFilteredProps,this);this.props.on("change:order",this._changeOrder,this);this.props.on("change:orderby",this._changeOrderby,this);this.props.on("change:query",this._changeQuery,this);this.props.set(_.defaults(h.props||{}));if(h.observe){this.observe(h.observe)}},_changeOrder:function(i,h){if(this.comparator){this.sort()}},_changeOrderby:function(h,i){if(this.comparator&&this.comparator!==c.comparator){return}if(i&&"post__in"!==i){this.comparator=c.comparator}else{delete this.comparator}},_changeQuery:function(h,i){if(i){this.props.on("change",this._requery,this);this._requery()}else{this.props.off("change",this._requery,this)}},_changeFilteredProps:function(i,h){if(this.props.get("query")){return}var j=_.chain(h.changes).map(function(l,n){var m=c.filters[n],k=i.get(n);if(!m){return}if(k&&!this.filters[n]){this.filters[n]=m}else{if(!k&&this.filters[n]===m){delete this.filters[n]}else{return}}return true},this).any().value();if(!j){return}if(!this._source){this._source=new c(this.models)}this.reset(this._source.filter(this.validator,this))},validateDestroyed:false,validator:function(h){if(!this.validateDestroyed&&h.destroyed){return false}return _.all(this.filters,function(j,i){return !!j.call(this,h)},this)},validate:function(k,i){var j=this.validator(k),h=!!this.getByCid(k.cid);if(!j&&h){this.remove(k,i)}else{if(j&&!h){this.add(k,i)}}return this},validateAll:function(h,i){i=i||{};_.each(h.models,function(j){this.validate(j,{silent:true})},this);if(!i.silent){this.trigger("reset",this,i)}return this},observe:function(h){this.observers=this.observers||[];this.observers.push(h);h.on("add change remove",this._validateHandler,this);h.on("reset",this._validateAllHandler,this);this.validateAll(h);return this},unobserve:function(h){if(h){h.off(null,null,this);this.observers=_.without(this.observers,h)}else{_.each(this.observers,function(i){i.off(null,null,this)},this);delete this.observers}return this},_validateHandler:function(j,h,i){i=h===this.mirroring?i:{silent:i&&i.silent};return this.validate(j,i)},_validateAllHandler:function(h,i){return this.validateAll(h,i)},mirror:function(h){if(this.mirroring&&this.mirroring===h){return this}this.unmirror();this.mirroring=h;this.reset([],{silent:true});this.observe(h);return this},unmirror:function(){if(!this.mirroring){return}this.unobserve(this.mirroring);delete this.mirroring},more:function(j){var i=f.Deferred(),k=this.mirroring,h=this;if(!k||!k.more){return i.resolveWith(this).promise()}k.more(j).done(function(){if(this===h.mirroring){i.resolveWith(this)}});return i.promise()},hasMore:function(){return this.mirroring?this.mirroring.hasMore():false},parse:function(i,h){return _.map(i,function(j){var k=d.get(j.id);return k.set(k.parse(j,h))})},_requery:function(){if(this.props.get("query")){this.mirror(a.get(this.props.toJSON()))}},saveMenuOrder:function(){if("menuOrder"!==this.props.get("orderby")){return}var h=this.chain().filter(function(i){return !_.isUndefined(i.id)}).map(function(j,i){i=i+1;j.set("menuOrder",i);return[j.id,i]}).object().value();if(_.isEmpty(h)){return}return g.post("save-attachment-order",{nonce:g.model.settings.post.nonce,post_id:g.model.settings.post.id,attachments:h})}},{comparator:function(j,i,k){var l=this.props.get("orderby"),h=this.props.get("order")||"DESC",m=j.cid,n=i.cid;j=j.get(l);i=i.get(l);if("date"===l||"modified"===l){j=j||new Date();i=i||new Date()}if(k&&k.ties){m=n=null}return("DESC"===h)?e(j,i,m,n):e(i,j,n,m)},filters:{search:function(h){if(!this.props.get("search")){return true}return _.any(["title","filename","description","caption","name"],function(i){var j=h.get(i);return j&&-1!==j.search(this.props.get("search"))},this)},type:function(i){var h=this.props.get("type");return !h||-1!==h.indexOf(i.get("type"))},uploadedTo:function(i){var h=this.props.get("uploadedTo");if(_.isUndefined(h)){return true}return h===i.get("uploadedTo")}}});c.all=new c();g.query=function(h){return new c(null,{props:_.extend(_.defaults(h||{},{orderby:"date"}),{query:true})})};a=g.model.Query=c.extend({initialize:function(j,h){var i;h=h||{};c.prototype.initialize.apply(this,arguments);this.args=h.args;this._hasMore=true;this.created=new Date();this.filters.order=function(m){var l=this.props.get("orderby"),k=this.props.get("order");if(!this.comparator){return true}if(this.length){return 1!==this.comparator(m,this.last(),{ties:true})}else{if("DESC"===k&&("date"===l||"modified"===l)){return m.get(l)>=this.created}else{if("ASC"===k&&"menuOrder"===l){return m.get(l)===0}}}return false};i=["s","order","orderby","posts_per_page","post_mime_type","post_parent"];if(wp.Uploader&&_(this.args).chain().keys().difference(i).isEmpty().value()){this.observe(wp.Uploader.queue)}},hasMore:function(){return this._hasMore},more:function(h){var i=this;if(this._more&&"pending"===this._more.state()){return this._more}if(!this.hasMore()){return f.Deferred().resolveWith(this).promise()}h=h||{};h.add=true;return this._more=this.fetch(h).done(function(j){if(_.isEmpty(j)||-1===this.args.posts_per_page||j.length<this.args.posts_per_page){i._hasMore=false}})},sync:function(k,i,h){var j;if("read"===k){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"query-attachments",post_id:g.model.settings.post.id});args=_.clone(this.args);if(-1!==args.posts_per_page){args.paged=Math.floor(this.length/args.posts_per_page)+1}h.data.query=args;return g.ajax(h)}else{j=c.prototype.sync?c.prototype:Backbone;return j.sync.apply(this,arguments)}}},{defaultProps:{orderby:"date",order:"DESC"},defaultArgs:{posts_per_page:40},orderby:{allowed:["name","author","date","title","modified","uploadedTo","id","post__in","menuOrder"],valuemap:{id:"ID",uploadedTo:"parent",menuOrder:"menu_order ID"}},propmap:{search:"s",type:"post_mime_type",perPage:"posts_per_page",menuOrder:"menu_order",uploadedTo:"post_parent"},get:(function(){var h=[];return function(k,j){var i={},m=a.orderby,n=a.defaultProps,l;delete k.query;_.defaults(k,n);k.order=k.order.toUpperCase();if("DESC"!==k.order&&"ASC"!==k.order){k.order=n.order.toUpperCase()}if(!_.contains(m.allowed,k.orderby)){k.orderby=n.orderby}_.each(k,function(o,p){if(_.isNull(o)){return}i[a.propmap[p]||p]=o});_.defaults(i,a.defaultArgs);i.orderby=m.valuemap[k.orderby]||k.orderby;l=_.find(h,function(o){return _.isEqual(o.args,i)});if(!l){l=new a([],_.extend(j||{},{props:k,args:i}));h.push(l)}return l}}())});g.model.Selection=c.extend({initialize:function(i,h){c.prototype.initialize.apply(this,arguments);this.multiple=h&&h.multiple;this.on("add remove reset",_.bind(this.single,this,false))},add:function(i,h){if(!this.multiple){this.remove(this.models)}return c.prototype.add.call(this,i,h)},single:function(h){var i=this._single;if(h){this._single=h}if(this._single&&!this.getByCid(this._single.cid)){delete this._single}this._single=this._single||this.last();if(this._single!==i){if(i){i.trigger("selection:unsingle",i,this);if(!this.getByCid(i.cid)){this.trigger("selection:unsingle",i,this)}}if(this._single){this._single.trigger("selection:single",this._single,this)}}return this._single}});f(window).on("unload",function(){window.wp=null})}(jQuery));
\ No newline at end of file
+window.wp=window.wp||{};(function(f){var d,c,a,e,b,g;g=wp.media=function(h){var i=g.view.MediaFrame,j;if(!i){return}h=_.defaults(h||{},{frame:"select"});if("select"===h.frame&&i.Select){j=new i.Select(h)}else{if("post"===h.frame&&i.Post){j=new i.Post(h)}}delete h.frame;return j};_.extend(g,{model:{},view:{},controller:{},frames:{}});b=g.model.l10n=typeof _wpMediaModelsL10n==="undefined"?{}:_wpMediaModelsL10n;g.model.settings=b.settings||{};delete b.settings;e=function(i,h,j,k){if(_.isEqual(i,h)){return j===k?0:(j>k?-1:1)}else{return i>h?-1:1}};_.extend(g,{template:wp.template,post:wp.ajax.post,ajax:wp.ajax.send,fit:function(l){var i=l.width,h=l.height,k=l.maxWidth,j=l.maxHeight,m;if(!_.isUndefined(k)&&!_.isUndefined(j)){m=(i/h>k/j)?"width":"height"}else{if(_.isUndefined(j)){m="width"}else{if(_.isUndefined(k)&&h>j){m="height"}}}if("width"===m&&i>k){return{width:k,height:Math.round(k*h/i)}}else{if("height"===m&&h>j){return{width:Math.round(j*i/h),height:j}}else{return{width:i,height:h}}}},truncate:function(h,j,i){j=j||30;i=i||"&hellip;";if(h.length<=j){return h}return h.substr(0,j/2)+i+h.substr(-1*j/2)}});g.attachment=function(h){return d.get(h)};d=g.model.Attachment=Backbone.Model.extend({sync:function(j,i,h){if(_.isUndefined(this.id)){return f.Deferred().rejectWith(this).promise()}if("read"===j){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"get-attachment",id:this.id});return g.ajax(h)}else{if("update"===j){if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"save-attachment",id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id});if(i.hasChanged()){h.data.changes={};_.each(i.changed,function(l,k){h.data.changes[k]=this.get(k)},this)}return g.ajax(h)}else{if("delete"===j){h=h||{};if(!h.wait){this.destroyed=true}h.context=this;h.data=_.extend(h.data||{},{action:"delete-post",id:this.id,_wpnonce:this.get("nonces")["delete"]});return g.ajax(h).done(function(){this.destroyed=true}).fail(function(){this.destroyed=false})}else{return Backbone.Model.prototype.sync.apply(this,arguments)}}}},parse:function(i,h){if(!i){return i}i.date=new Date(i.date);i.modified=new Date(i.modified);return i},saveCompat:function(j,i){var h=this;if(!this.get("nonces")||!this.get("nonces").update){return f.Deferred().rejectWith(this).promise()}return g.post("save-attachment-compat",_.defaults({id:this.id,nonce:this.get("nonces").update,post_id:g.model.settings.post.id},j)).done(function(m,k,l){h.set(h.parse(m,l),i)})}},{create:function(h){return c.all.push(h)},get:_.memoize(function(i,h){return c.all.push(h||{id:i})})});c=g.model.Attachments=Backbone.Collection.extend({model:d,initialize:function(i,h){h=h||{};this.props=new Backbone.Model();this.filters=h.filters||{};this.props.on("change",this._changeFilteredProps,this);this.props.on("change:order",this._changeOrder,this);this.props.on("change:orderby",this._changeOrderby,this);this.props.on("change:query",this._changeQuery,this);this.props.set(_.defaults(h.props||{}));if(h.observe){this.observe(h.observe)}},_changeOrder:function(i,h){if(this.comparator){this.sort()}},_changeOrderby:function(h,i){if(this.comparator&&this.comparator!==c.comparator){return}if(i&&"post__in"!==i){this.comparator=c.comparator}else{delete this.comparator}},_changeQuery:function(h,i){if(i){this.props.on("change",this._requery,this);this._requery()}else{this.props.off("change",this._requery,this)}},_changeFilteredProps:function(i,h){if(this.props.get("query")){return}var j=_.chain(i.changed).map(function(l,n){var m=c.filters[n],k=i.get(n);if(!m){return}if(k&&!this.filters[n]){this.filters[n]=m}else{if(!k&&this.filters[n]===m){delete this.filters[n]}else{return}}return true},this).any().value();if(!j){return}if(!this._source){this._source=new c(this.models)}this.reset(this._source.filter(this.validator,this))},validateDestroyed:false,validator:function(h){if(!this.validateDestroyed&&h.destroyed){return false}return _.all(this.filters,function(j,i){return !!j.call(this,h)},this)},validate:function(k,i){var j=this.validator(k),h=!!this.get(k.cid);if(!j&&h){this.remove(k,i)}else{if(j&&!h){this.add(k,i)}}return this},validateAll:function(h,i){i=i||{};_.each(h.models,function(j){this.validate(j,{silent:true})},this);if(!i.silent){this.trigger("reset",this,i)}return this},observe:function(h){this.observers=this.observers||[];this.observers.push(h);h.on("add change remove",this._validateHandler,this);h.on("reset",this._validateAllHandler,this);this.validateAll(h);return this},unobserve:function(h){if(h){h.off(null,null,this);this.observers=_.without(this.observers,h)}else{_.each(this.observers,function(i){i.off(null,null,this)},this);delete this.observers}return this},_validateHandler:function(j,h,i){i=h===this.mirroring?i:{silent:i&&i.silent};return this.validate(j,i)},_validateAllHandler:function(h,i){return this.validateAll(h,i)},mirror:function(h){if(this.mirroring&&this.mirroring===h){return this}this.unmirror();this.mirroring=h;this.reset([],{silent:true});this.observe(h);return this},unmirror:function(){if(!this.mirroring){return}this.unobserve(this.mirroring);delete this.mirroring},more:function(j){var i=f.Deferred(),k=this.mirroring,h=this;if(!k||!k.more){return i.resolveWith(this).promise()}k.more(j).done(function(){if(this===h.mirroring){i.resolveWith(this)}});return i.promise()},hasMore:function(){return this.mirroring?this.mirroring.hasMore():false},parse:function(i,h){if(!_.isArray(i)){i=[i]}return _.map(i,function(j){var m,l,k;if(j instanceof Backbone.Model){m=j.get("id");j=j.attributes}else{m=j.id}l=d.get(m);k=l.parse(j,h);if(!_.isEqual(l.attributes,k)){l.set(k)}return l})},_requery:function(){if(this.props.get("query")){this.mirror(a.get(this.props.toJSON()))}},saveMenuOrder:function(){if("menuOrder"!==this.props.get("orderby")){return}var h=this.chain().filter(function(i){return !_.isUndefined(i.id)}).map(function(j,i){i=i+1;j.set("menuOrder",i);return[j.id,i]}).object().value();if(_.isEmpty(h)){return}return g.post("save-attachment-order",{nonce:g.model.settings.post.nonce,post_id:g.model.settings.post.id,attachments:h})}},{comparator:function(j,i,k){var l=this.props.get("orderby"),h=this.props.get("order")||"DESC",m=j.cid,n=i.cid;j=j.get(l);i=i.get(l);if("date"===l||"modified"===l){j=j||new Date();i=i||new Date()}if(k&&k.ties){m=n=null}return("DESC"===h)?e(j,i,m,n):e(i,j,n,m)},filters:{search:function(h){if(!this.props.get("search")){return true}return _.any(["title","filename","description","caption","name"],function(i){var j=h.get(i);return j&&-1!==j.search(this.props.get("search"))},this)},type:function(i){var h=this.props.get("type");return !h||-1!==h.indexOf(i.get("type"))},uploadedTo:function(i){var h=this.props.get("uploadedTo");if(_.isUndefined(h)){return true}return h===i.get("uploadedTo")}}});c.all=new c();g.query=function(h){return new c(null,{props:_.extend(_.defaults(h||{},{orderby:"date"}),{query:true})})};a=g.model.Query=c.extend({initialize:function(j,h){var i;h=h||{};c.prototype.initialize.apply(this,arguments);this.args=h.args;this._hasMore=true;this.created=new Date();this.filters.order=function(m){var l=this.props.get("orderby"),k=this.props.get("order");if(!this.comparator){return true}if(this.length){return 1!==this.comparator(m,this.last(),{ties:true})}else{if("DESC"===k&&("date"===l||"modified"===l)){return m.get(l)>=this.created}else{if("ASC"===k&&"menuOrder"===l){return m.get(l)===0}}}return false};i=["s","order","orderby","posts_per_page","post_mime_type","post_parent"];if(wp.Uploader&&_(this.args).chain().keys().difference(i).isEmpty().value()){this.observe(wp.Uploader.queue)}},hasMore:function(){return this._hasMore},more:function(h){var i=this;if(this._more&&"pending"===this._more.state()){return this._more}if(!this.hasMore()){return f.Deferred().resolveWith(this).promise()}h=h||{};h.remove=false;return this._more=this.fetch(h).done(function(j){if(_.isEmpty(j)||-1===this.args.posts_per_page||j.length<this.args.posts_per_page){i._hasMore=false}})},sync:function(k,i,h){var j;if("read"===k){h=h||{};h.context=this;h.data=_.extend(h.data||{},{action:"query-attachments",post_id:g.model.settings.post.id});args=_.clone(this.args);if(-1!==args.posts_per_page){args.paged=Math.floor(this.length/args.posts_per_page)+1}h.data.query=args;return g.ajax(h)}else{j=c.prototype.sync?c.prototype:Backbone;return j.sync.apply(this,arguments)}}},{defaultProps:{orderby:"date",order:"DESC"},defaultArgs:{posts_per_page:40},orderby:{allowed:["name","author","date","title","modified","uploadedTo","id","post__in","menuOrder"],valuemap:{id:"ID",uploadedTo:"parent",menuOrder:"menu_order ID"}},propmap:{search:"s",type:"post_mime_type",perPage:"posts_per_page",menuOrder:"menu_order",uploadedTo:"post_parent"},get:(function(){var h=[];return function(k,j){var i={},m=a.orderby,n=a.defaultProps,l;delete k.query;_.defaults(k,n);k.order=k.order.toUpperCase();if("DESC"!==k.order&&"ASC"!==k.order){k.order=n.order.toUpperCase()}if(!_.contains(m.allowed,k.orderby)){k.orderby=n.orderby}_.each(k,function(o,p){if(_.isNull(o)){return}i[a.propmap[p]||p]=o});_.defaults(i,a.defaultArgs);i.orderby=m.valuemap[k.orderby]||k.orderby;l=_.find(h,function(o){return _.isEqual(o.args,i)});if(!l){l=new a([],_.extend(j||{},{props:k,args:i}));h.push(l)}return l}}())});g.model.Selection=c.extend({initialize:function(i,h){c.prototype.initialize.apply(this,arguments);this.multiple=h&&h.multiple;this.on("add remove reset",_.bind(this.single,this,false))},add:function(i,h){if(!this.multiple){this.remove(this.models)}return c.prototype.add.call(this,i,h)},single:function(h){var i=this._single;if(h){this._single=h}if(this._single&&!this.get(this._single.cid)){delete this._single}this._single=this._single||this.last();if(this._single!==i){if(i){i.trigger("selection:unsingle",i,this);if(!this.get(i.cid)){this.trigger("selection:unsingle",i,this)}}if(this._single){this._single.trigger("selection:single",this._single,this)}}return this._single}});f(window).on("unload",function(){window.wp=null})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-views.js b/wp-includes/js/media-views.js
index 1434aeb54..a14a57b04 100644
--- a/wp-includes/js/media-views.js
+++ b/wp-includes/js/media-views.js
@@ -223,10 +223,8 @@
 			this.on( 'reset', this.reset, this );
 			this.on( 'ready', this._ready, this );
 			this.on( 'ready', this.ready, this );
-
-			this.on( 'change:menu', this._updateMenu, this );
-
 			Backbone.Model.apply( this, arguments );
+			this.on( 'change:menu', this._updateMenu, this );
 		},
 
 		ready: function() {},
@@ -451,11 +449,29 @@
 			var displays = this._displays;
 
 			if ( ! displays[ attachment.cid ] )
-				displays[ attachment.cid ] = new Backbone.Model( this._defaultDisplaySettings );
+				displays[ attachment.cid ] = new Backbone.Model( this.defaultDisplaySettings( attachment ) );
 
 			return displays[ attachment.cid ];
 		},
 
+		defaultDisplaySettings: function( attachment ) {
+			settings = this._defaultDisplaySettings;
+			if ( settings.canEmbed = this.canEmbed( attachment ) )
+				settings.link = 'embed';
+			return settings;
+		},
+
+		canEmbed: function( attachment ) {
+			// If uploading, we know the filename but not the mime type.
+			if ( ! attachment.get('uploading') ) {
+				var type = attachment.get('type');
+				if ( type !== 'audio' && type !== 'video' )
+					return false;
+			}
+
+			return _.contains( media.view.settings.embedExts, attachment.get('filename').split('.').pop() );
+		},
+
 		syncSelection: function() {
 			var selection = this.get('selection'),
 				manager = this.frame._selection;
@@ -658,7 +674,7 @@
 			// Accepts attachments that exist in the original library and
 			// that do not exist in gallery's library.
 			library.validator = function( attachment ) {
-				return !! this.mirroring.getByCid( attachment.cid ) && ! edit.getByCid( attachment.cid ) && media.model.Selection.prototype.validator.apply( this, arguments );
+				return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) && media.model.Selection.prototype.validator.apply( this, arguments );
 			};
 
 			// Reset the library to ensure that all attachments are re-added
@@ -701,8 +717,8 @@
 			// Overload the library's comparator to push items that are not in
 			// the mirrored query to the front of the aggregate collection.
 			library.comparator = function( a, b ) {
-				var aInQuery = !! this.mirroring.getByCid( a.cid ),
-					bInQuery = !! this.mirroring.getByCid( b.cid );
+				var aInQuery = !! this.mirroring.get( a.cid ),
+					bInQuery = !! this.mirroring.get( b.cid );
 
 				if ( ! aInQuery && bInQuery )
 					return -1;
@@ -845,355 +861,29 @@
 	 * ========================================================================
 	 */
 
-	// wp.media.Views
-	// -------------
-	//
-	// A subview manager.
-
-	media.Views = function( view, views ) {
-		this.view = view;
-		this._views = _.isArray( views ) ? { '': views } : views || {};
-	};
-
-	media.Views.extend = Backbone.Model.extend;
-
-	_.extend( media.Views.prototype, {
-		// ### Fetch all of the subviews
-		//
-		// Returns an array of all subviews.
-		all: function() {
-			return _.flatten( this._views );
-		},
-
-		// ### Get a selector's subviews
-		//
-		// Fetches all subviews that match a given `selector`.
-		//
-		// If no `selector` is provided, it will grab all subviews attached
-		// to the view's root.
-		get: function( selector ) {
-			selector = selector || '';
-			return this._views[ selector ];
-		},
-
-		// ### Get a selector's first subview
-		//
-		// Fetches the first subview that matches a given `selector`.
-		//
-		// If no `selector` is provided, it will grab the first subview
-		// attached to the view's root.
-		//
-		// Useful when a selector only has one subview at a time.
-		first: function( selector ) {
-			var views = this.get( selector );
-			return views && views.length ? views[0] : null;
-		},
-
-		// ### Register subview(s)
-		//
-		// Registers any number of `views` to a `selector`.
-		//
-		// When no `selector` is provided, the root selector (the empty string)
-		// is used. `views` accepts a `Backbone.View` instance or an array of
-		// `Backbone.View` instances.
-		//
-		// ---
-		//
-		// Accepts an `options` object, which has a significant effect on the
-		// resulting behavior.
-		//
-		// `options.silent` &ndash; *boolean, `false`*
-		// > If `options.silent` is true, no DOM modifications will be made.
-		//
-		// `options.add` &ndash; *boolean, `false`*
-		// > Use `Views.add()` as a shortcut for setting `options.add` to true.
-		//
-		// > By default, the provided `views` will replace
-		// any existing views associated with the selector. If `options.add`
-		// is true, the provided `views` will be added to the existing views.
-		//
-		// `options.at` &ndash; *integer, `undefined`*
-		// > When adding, to insert `views` at a specific index, use
-		// `options.at`. By default, `views` are added to the end of the array.
-		set: function( selector, views, options ) {
-			var existing, next;
-
-			if ( ! _.isString( selector ) ) {
-				options  = views;
-				views    = selector;
-				selector = '';
-			}
-
-			options  = options || {};
-			views    = _.isArray( views ) ? views : [ views ];
-			existing = this.get( selector );
-			next     = views;
-
-			if ( existing ) {
-				if ( options.add ) {
-					if ( _.isUndefined( options.at ) ) {
-						next = existing.concat( views );
-					} else {
-						next = existing;
-						next.splice.apply( next, [ options.at, 0 ].concat( views ) );
-					}
-				} else {
-					_.each( next, function( view ) {
-						view.__detach = true;
-					});
-
-					_.each( existing, function( view ) {
-						if ( view.__detach )
-							view.$el.detach();
-						else
-							view.dispose();
-					});
-
-					_.each( next, function( view ) {
-						delete view.__detach;
-					});
-				}
-			}
-
-			this._views[ selector ] = next;
-
-			_.each( views, function( subview ) {
-				var constructor = subview.Views || media.Views,
-					subviews = subview.views = subview.views || new constructor( subview );
-				subviews.parent   = this.view;
-				subviews.selector = selector;
-			}, this );
-
-			if ( ! options.silent )
-				this._attach( selector, views, _.extend({ ready: this._isReady() }, options ) );
-
-			return this;
-		},
-
-		// ### Add subview(s) to existing subviews
-		//
-		// An alias to `Views.set()`, which defaults `options.add` to true.
-		//
-		// Adds any number of `views` to a `selector`.
-		//
-		// When no `selector` is provided, the root selector (the empty string)
-		// is used. `views` accepts a `Backbone.View` instance or an array of
-		// `Backbone.View` instances.
-		//
-		// Use `Views.set()` when setting `options.add` to `false`.
-		//
-		// Accepts an `options` object. By default, provided `views` will be
-		// inserted at the end of the array of existing views. To insert
-		// `views` at a specific index, use `options.at`. If `options.silent`
-		// is true, no DOM modifications will be made.
-		//
-		// For more information on the `options` object, see `Views.set()`.
-		add: function( selector, views, options ) {
-			if ( ! _.isString( selector ) ) {
-				options  = views;
-				views    = selector;
-				selector = '';
-			}
-
-			return this.set( selector, views, _.extend({ add: true }, options ) );
-		},
-
-		// ### Stop tracking subviews
-		//
-		// Stops tracking `views` registered to a `selector`. If no `views` are
-		// set, then all of the `selector`'s subviews will be unregistered and
-		// disposed.
-		//
-		// Accepts an `options` object. If `options.silent` is set, `dispose`
-		// will *not* be triggered on the unregistered views.
-		unset: function( selector, views, options ) {
-			var existing;
-
-			if ( ! _.isString( selector ) ) {
-				options = views;
-				views = selector;
-				selector = '';
-			}
-
-			views = views || [];
-
-			if ( existing = this.get( selector ) ) {
-				views = _.isArray( views ) ? views : [ views ];
-				this._views[ selector ] = views.length ? _.difference( existing, views ) : [];
-			}
-
-			if ( ! options || ! options.silent )
-				_.invoke( views, 'dispose' );
-
-			return this;
-		},
-
-		// ### Detach all subviews
-		//
-		// Detaches all subviews from the DOM.
-		//
-		// Helps to preserve all subview events when re-rendering the master
-		// view. Used in conjunction with `Views.render()`.
-		detach: function() {
-			$( _.pluck( this.all(), 'el' ) ).detach();
-			return this;
-		},
-
-		// ### Render all subviews
-		//
-		// Renders all subviews. Used in conjunction with `Views.detach()`.
-		render: function() {
-			var options = {
-					ready: this._isReady()
-				};
-
-			_.each( this._views, function( views, selector ) {
-				this._attach( selector, views, options );
-			}, this );
-
-			this.rendered = true;
-			return this;
-		},
-
-		// ### Dispose all subviews
-		//
-		// Triggers the `dispose()` method on all subviews. Detaches the master
-		// view from its parent. Resets the internals of the views manager.
-		//
-		// Accepts an `options` object. If `options.silent` is set, `unset`
-		// will *not* be triggered on the master view's parent.
-		dispose: function( options ) {
-			if ( ! options || ! options.silent ) {
-				if ( this.parent && this.parent.views )
-					this.parent.views.unset( this.selector, this.view, { silent: true });
-				delete this.parent;
-				delete this.selector;
-			}
-
-			_.invoke( this.all(), 'dispose' );
-			this._views = [];
-			return this;
-		},
-
-		// ### Replace a selector's subviews
-		//
-		// By default, sets the `$target` selector's html to the subview `els`.
-		//
-		// Can be overridden in subclasses.
-		replace: function( $target, els ) {
-			$target.html( els );
-			return this;
-		},
-
-		// ### Insert subviews into a selector
-		//
-		// By default, appends the subview `els` to the end of the `$target`
-		// selector. If `options.at` is set, inserts the subview `els` at the
-		// provided index.
-		//
-		// Can be overridden in subclasses.
-		insert: function( $target, els, options ) {
-			var at = options && options.at,
-				$children;
-
-			if ( _.isNumber( at ) && ($children = $target.children()).length > at )
-				$children.eq( at ).before( els );
-			else
-				$target.append( els );
-
-			return this;
-		},
-
-		// ### Trigger the ready event
-		//
-		// **Only use this method if you know what you're doing.**
-		// For performance reasons, this method does not check if the view is
-		// actually attached to the DOM. It's taking your word for it.
-		//
-		// Fires the ready event on the current view and all attached subviews.
-		ready: function() {
-			this.view.trigger('ready');
-
-			// Find all attached subviews, and call ready on them.
-			_.chain( this.all() ).map( function( view ) {
-				return view.views;
-			}).flatten().where({ attached: true }).invoke('ready');
-		},
-
-		// #### Internal. Attaches a series of views to a selector.
-		//
-		// Checks to see if a matching selector exists, renders the views,
-		// performs the proper DOM operation, and then checks if the view is
-		// attached to the document.
-		_attach: function( selector, views, options ) {
-			var $selector = selector ? this.view.$( selector ) : this.view.$el,
-				managers;
-
-			// Check if we found a location to attach the views.
-			if ( ! $selector.length )
-				return this;
-
-			managers = _.chain( views ).pluck('views').flatten().value();
-
-			// Render the views if necessary.
-			_.each( managers, function( manager ) {
-				if ( manager.rendered )
-					return;
-
-				manager.view.render();
-				manager.rendered = true;
-			}, this );
-
-			// Insert or replace the views.
-			this[ options.add ? 'insert' : 'replace' ]( $selector, _.pluck( views, 'el' ), options );
-
-			// Set attached and trigger ready if the current view is already
-			// attached to the DOM.
-			_.each( managers, function( manager ) {
-				manager.attached = true;
-
-				if ( options.ready )
-					manager.ready();
-			}, this );
-
-			return this;
-		},
-
-		// #### Internal. Checks if the current view is in the DOM.
-		_isReady: function() {
-			var node = this.view.el;
-			while ( node ) {
-				if ( node === document.body )
-					return true;
-				node = node.parentNode;
-			}
-
-			return false;
-		}
-	});
-
 	// wp.media.View
 	// -------------
 	//
 	// The base view class.
-	media.View = Backbone.View.extend({
-		// The constructor for the `Views` manager.
-		Views: media.Views,
-
+	//
+	// Undelegating events, removing events from the model, and
+	// removing events from the controller mirror the code for
+	// `Backbone.View.dispose` in Backbone 0.9.8 development.
+	//
+	// This behavior has since been removed, and should not be used
+	// outside of the media manager.
+	media.View = wp.Backbone.View.extend({
 		constructor: function( options ) {
-			this.views = new this.Views( this, this.views );
-			this.on( 'ready', this.ready, this );
-
 			if ( options && options.controller )
 				this.controller = options.controller;
 
-			Backbone.View.apply( this, arguments );
+			wp.Backbone.View.apply( this, arguments );
 		},
 
 		dispose: function() {
 			// Undelegating events, removing events from the model, and
 			// removing events from the controller mirror the code for
-			// `Backbone.View.dispose` in Backbone master.
+			// `Backbone.View.dispose` in Backbone 0.9.8 development.
 			this.undelegateEvents();
 
 			if ( this.model && this.model.off )
@@ -1206,41 +896,13 @@
 			if ( this.controller && this.controller.off )
 				this.controller.off( null, null, this );
 
-			// Recursively dispose child views.
-			if ( this.views )
-				this.views.dispose();
-
 			return this;
 		},
 
 		remove: function() {
 			this.dispose();
-			return Backbone.View.prototype.remove.apply( this, arguments );
-		},
-
-		render: function() {
-			var options;
-
-			if ( this.prepare )
-				options = this.prepare();
-
-			this.views.detach();
-
-			if ( this.template ) {
-				options = options || {};
-				this.trigger( 'prepare', options );
-				this.$el.html( this.template( options ) );
-			}
-
-			this.views.render();
-			return this;
-		},
-
-		prepare: function() {
-			return this.options;
-		},
-
-		ready: function() {}
+			return wp.Backbone.View.prototype.remove.apply( this, arguments );
+		}
 	});
 
 	/**
@@ -1831,7 +1493,7 @@
 		featuredImageToolbar: function( toolbar ) {
 			this.createSelectToolbar( toolbar, {
 				text:  l10n.setFeaturedImage,
-				state: this.options.state || 'upload'
+				state: this.options.state
 			});
 		},
 
@@ -1859,9 +1521,9 @@
 							controller.close();
 							state.trigger( 'update', state.get('library') );
 
+							// Restore and reset the default state.
+							controller.setState( controller.options.state );
 							controller.reset();
-							// @todo: Make the state activated dynamic (instead of hardcoded).
-							controller.setState('upload');
 						}
 					}
 				}
@@ -2430,6 +2092,11 @@
 				var requires = button.options.requires,
 					disabled = false;
 
+				// Prevent insertion of attachments if any of them are still uploading
+				disabled = _.some( selection.models, function( attachment ) {
+					return attachment.get('uploading') === true;
+				});
+
 				if ( requires.selection && selection && ! selection.length )
 					disabled = true;
 				else if ( requires.library && library && ! library.length )
@@ -2486,11 +2153,11 @@
 			if ( options.event )
 				controller.state().trigger( options.event );
 
-			if ( options.reset )
-				controller.reset();
-
 			if ( options.state )
 				controller.setState( options.state );
+
+			if ( options.reset )
+				controller.reset();
 		}
 	});
 
@@ -3007,7 +2674,7 @@
 		selected: function() {
 			var selection = this.options.selection;
 			if ( selection )
-				return !! selection.getByCid( this.model.cid );
+				return !! selection.get( this.model.cid );
 		},
 
 		select: function( model, collection ) {
@@ -3234,7 +2901,7 @@
 
 			this.collection.on( 'add', function( attachment, attachments, options ) {
 				this.views.add( this.createAttachmentView( attachment ), {
-					at: options.index
+					at: this.collection.indexOf( attachment )
 				});
 			}, this );
 
@@ -3469,7 +3136,7 @@
 			// Build `<option>` elements.
 			this.$el.html( _.chain( this.filters ).map( function( filter, value ) {
 				return {
-					el: this.make( 'option', { value: value }, filter.text ),
+					el: $('<option></option>').val(value).text(filter.text)[0],
 					priority: filter.priority || 50
 				};
 			}, this ).sortBy('priority').pluck('el').value() );
@@ -3964,8 +3631,8 @@
 		},
 
 		updateChanges: function( model, options ) {
-			if ( options.changes )
-				_( options.changes ).chain().keys().each( this.update, this );
+			if ( model.hasChanged() )
+				_( model.changed ).chain().keys().each( this.update, this );
 		}
 	});
 
@@ -4017,7 +3684,7 @@
 				$input = this.$('.link-to-custom'),
 				attachment = this.options.attachment;
 
-			if ( 'none' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) {
+			if ( 'none' === linkTo || 'embed' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) {
 				$input.hide();
 				return;
 			}
@@ -4236,16 +3903,10 @@
 		},
 
 		initialize: function() {
-			this.input = this.make( 'input', {
-				type:  'text',
-				value: this.model.get('url') || ''
-			});
-
-			this.spinner = this.make( 'span', {
-				'class': 'spinner'
-			});
+			this.$input = $('<input/>').attr( 'type', 'text' ).val( this.model.get('url') );
+			this.input = this.$input[0];
 
-			this.$input = $( this.input );
+			this.spinner = $('<span class="spinner" />')[0];
 			this.$el.append([ this.input, this.spinner ]);
 
 			this.model.on( 'change:url', this.render, this );
@@ -4302,4 +3963,4 @@
 			this.$('img').attr( 'src', this.model.get('url') );
 		}
 	});
-}(jQuery));
+}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/media-views.min.js b/wp-includes/js/media-views.min.js
index a4dec31ad..89cc6fcba 100644
--- a/wp-includes/js/media-views.min.js
+++ b/wp-includes/js/media-views.min.js
@@ -1 +1 @@
-(function(e){var f=wp.media,d=f.model.Attachment,c=f.model.Attachments,a=f.model.Query,b;b=f.view.l10n=typeof _wpMediaViewsL10n==="undefined"?{}:_wpMediaViewsL10n;f.view.settings=b.settings||{};delete b.settings;f.model.settings.post=f.view.settings.post;e.support.transition=(function(){var g=document.documentElement.style,h={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i;i=_.find(_.keys(h),function(j){return !_.isUndefined(g[j])});return i&&{end:h[i]}}());f.transition=function(g,h){var i=e.Deferred();h=h||2000;if(e.support.transition){if(!(g instanceof e)){g=e(g)}g.first().one(e.support.transition.end,i.resolve);_.delay(i.resolve,h)}else{i.resolve()}return i.promise()};f.controller.Region=function(g){_.extend(this,_.pick(g||{},"id","view","selector"))};f.controller.Region.extend=Backbone.Model.extend;_.extend(f.controller.Region.prototype,{mode:function(g){if(!g){return this._mode}if(g===this._mode){return this}this.trigger("deactivate");this._mode=g;this.render(g);this.trigger("activate");return this},render:function(h){if(h&&h!==this._mode){return this.mode(h)}var i={view:null},g;this.trigger("create",i);g=i.view;this.trigger("render",g);if(g){this.set(g)}return this},get:function(){return this.view.views.first(this.selector)},set:function(g,h){if(h){h.add=false}return this.view.views.set(this.selector,g,h)},trigger:function(h){var i;if(!this._mode){return}var g=_.toArray(arguments);i=this.id+":"+h;g[0]=i+":"+this._mode;this.view.trigger.apply(this.view,g);g[0]=i;this.view.trigger.apply(this.view,g);return this}});f.controller.StateMachine=function(g){this.states=new Backbone.Collection(g)};f.controller.StateMachine.extend=Backbone.Model.extend;_.extend(f.controller.StateMachine.prototype,Backbone.Events,{state:function(g){this.states=this.states||new Backbone.Collection();g=g||this._state;if(g&&!this.states.get(g)){this.states.add({id:g})}return this.states.get(g)},setState:function(h){var g=this.state();if((g&&h===g.id)||!this.states||!this.states.get(h)){return this}if(g){g.trigger("deactivate");this._lastState=g.id}this._state=h;this.state().trigger("activate");return this},lastState:function(){if(this._lastState){return this.state(this._lastState)}}});_.each(["on","off","trigger"],function(g){f.controller.StateMachine.prototype[g]=function(){this.states=this.states||new Backbone.Collection();this.states[g].apply(this.states,arguments);return this}});f.controller.State=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);this.on("change:menu",this._updateMenu,this);Backbone.Model.apply(this,arguments)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=true},_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=false;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(g){g.$el.text(this.get("title")||"")},_router:function(){var h=this.frame.router,i=this.get("router"),g;this.frame.$el.toggleClass("hide-router",!i);if(!i){return}this.frame.router.render(i);g=h.get();if(g&&g.select){g.select(this.frame.content.mode())}},_menu:function(){var i=this.frame.menu,h=this.get("menu"),g;if(!h){return}i.mode(h);g=i.get();if(g&&g.select){g.select(this.id)}},_updateMenu:function(){var g=this.previous("menu"),h=this.get("menu");if(g){this.frame.off("menu:render:"+g,this._renderMenu,this)}if(h){this.frame.on("menu:render:"+h,this._renderMenu,this)}},_renderMenu:function(g){var i=this.get("menuItem"),j=this.get("title"),h=this.get("priority");if(!i&&j){i={text:j};if(h){i.priority=h}}if(!i){return}g.set(this.id,i)}});_.each(["toolbar","content"],function(g){f.controller.State.prototype["_"+g]=function(){var h=this.get(g);if(h){this.frame[g].render(h)}}});f.controller.Library=f.controller.State.extend({defaults:{id:"library",multiple:false,describe:false,toolbar:"select",sidebar:"settings",content:"upload",router:"browse",menu:"default",searchable:true,filterable:false,sortable:true,title:b.mediaLibraryTitle,contentUserSetting:true,syncSelection:true},initialize:function(){var h=this.get("selection"),g;if(!this.get("library")){this.set("library",f.query())}if(!(h instanceof f.model.Selection)){g=h;if(!g){g=this.get("library").props.toJSON();g=_.omit(g,"orderby","query")}this.set("selection",new f.model.Selection(null,{multiple:this.get("multiple"),props:g}))}if(!this.get("edge")){this.set("edge",120)}if(!this.get("gutter")){this.set("gutter",8)}this.resetDisplays()},activate:function(){this.syncSelection();wp.Uploader.queue.on("add",this.uploading,this);this.get("selection").on("add remove reset",this.refreshContent,this);if(this.get("contentUserSetting")){this.frame.on("content:activate",this.saveContentMode,this);this.set("content",getUserSetting("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 g=f.view.settings.defaultProps;this._displays=[];this._defaultDisplaySettings={align:g.align||getUserSetting("align","none"),size:g.size||getUserSetting("imgsize","medium"),link:g.link||getUserSetting("urlbutton","file")}},display:function(h){var g=this._displays;if(!g[h.cid]){g[h.cid]=new Backbone.Model(this._defaultDisplaySettings)}return g[h.cid]},syncSelection:function(){var h=this.get("selection"),g=this.frame._selection;if(!this.get("syncSelection")||!g||!h){return}if(h.multiple){h.reset([],{silent:true});h.validateAll(g.attachments);g.difference=_.difference(g.attachments.models,h.models)}h.single(g.single)},recordSelection:function(){var i=this.get("selection"),h=this.frame._selection,g;if(!this.get("syncSelection")||!h||!i){return}if(i.multiple){h.attachments.reset(i.toArray().concat(h.difference));h.difference=[]}else{h.attachments.add(i.toArray())}h.single=i._single},refreshContent:function(){var h=this.get("selection"),j=this.frame,g=j.router.get(),i=j.content.mode();if(this.active&&!h.length&&g&&!g.get(i)){this.frame.content.render(this.get("content"))}},uploading:function(h){var g=this.frame.content;if("upload"===g.mode()){this.frame.content.mode("browse")}this.get("selection").add(h)},saveContentMode:function(){if("browse"!==this.get("router")){return}var h=this.frame.content.mode(),g=this.frame.router.get();if(g&&g.get(h)){setUserSetting("libraryContent",h)}}});f.controller.GalleryEdit=f.controller.Library.extend({defaults:{id:"gallery-edit",multiple:false,describe:true,edge:199,editing:false,sortable:true,searchable:false,toolbar:"gallery-edit",content:"browse",title:b.editGalleryTitle,priority:60,dragInfo:true,syncSelection:false},initialize:function(){if(!this.get("library")){this.set("library",new f.model.Selection())}if(!this.get("AttachmentView")){this.set("AttachmentView",f.view.Attachment.EditLibrary)}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library");g.props.set("type","image");this.get("library").observe(wp.Uploader.queue);this.frame.on("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue);this.frame.off("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},gallerySettings:function(h){var g=this.get("library");if(!g||!h){return}g.gallery=g.gallery||new Backbone.Model();h.sidebar.set({gallery:new f.view.Settings.Gallery({controller:this,model:g.gallery,priority:40})});h.toolbar.set("reverse",{text:b.reverseOrder,priority:80,click:function(){g.reset(g.toArray().reverse())}})}});f.controller.GalleryAdd=f.controller.Library.extend({defaults:_.defaults({id:"gallery-library",filterable:"uploaded",multiple:"add",menu:"gallery",toolbar:"gallery-add",title:b.addToGalleryTitle,priority:100,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library"),h=this.frame.state("gallery-edit").get("library");if(this.editLibrary&&this.editLibrary!==h){g.unobserve(this.editLibrary)}g.validator=function(i){return !!this.mirroring.getByCid(i.cid)&&!h.getByCid(i.cid)&&f.model.Selection.prototype.validator.apply(this,arguments)};g.reset(g.mirroring.models,{silent:true});g.observe(h);this.editLibrary=h;f.controller.Library.prototype.activate.apply(this,arguments)}});f.controller.FeaturedImage=f.controller.Library.extend({defaults:_.defaults({id:"featured-image",filterable:"uploaded",multiple:false,toolbar:"featured-image",title:b.setFeaturedImageTitle,priority:60,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){var h,g;if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments);h=this.get("library");g=h.comparator;h.comparator=function(j,i){var l=!!this.mirroring.getByCid(j.cid),k=!!this.mirroring.getByCid(i.cid);if(!l&&k){return -1}else{if(l&&!k){return 1}else{return g.apply(this,arguments)}}};h.observe(this.get("selection"))},activate:function(){this.updateSelection();this.frame.on("open",this.updateSelection,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var g=this.get("selection"),i=f.view.settings.post.featuredImageId,h;if(""!==i&&-1!==i){h=d.get(i);h.fetch()}g.reset(h?[h]:[])}});f.controller.Embed=f.controller.State.extend({defaults:{id:"embed",url:"",menu:"default",content:"embed",toolbar:"main-embed",type:"link",title:b.insertFromUrlTitle,priority:120},sensitivity:200,initialize:function(){this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity);this.props=new Backbone.Model({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 h,i=this,g={type:"link",scanners:[]};if(this.props.get("url")){this.trigger("scan",g)}if(g.scanners.length){h=g.scanners=e.when.apply(e,g.scanners);h.always(function(){if(i.get("scanners")===h){i.set("loading",false)}})}else{g.scanners=null}g.loading=!!g.scanners;this.set(g)},scanImage:function(h){var l=this.frame,j=this,i=this.props.get("url"),k=new Image(),g=e.Deferred();h.scanners.push(g.promise());k.onload=function(){g.resolve();if(j!==l.state()||i!==j.props.get("url")){return}j.set({type:"image"});j.props.set({width:k.width,height:k.height})};k.onerror=g.reject;k.src=i},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""});if(this.active){this.refresh()}}});f.Views=function(h,g){this.view=h;this._views=_.isArray(g)?{"":g}:g||{}};f.Views.extend=Backbone.Model.extend;_.extend(f.Views.prototype,{all:function(){return _.flatten(this._views)},get:function(g){g=g||"";return this._views[g]},first:function(g){var h=this.get(g);return h&&h.length?h[0]:null},set:function(g,h,i){var k,j;if(!_.isString(g)){i=h;h=g;g=""}i=i||{};h=_.isArray(h)?h:[h];k=this.get(g);j=h;if(k){if(i.add){if(_.isUndefined(i.at)){j=k.concat(h)}else{j=k;j.splice.apply(j,[i.at,0].concat(h))}}else{_.each(j,function(l){l.__detach=true});_.each(k,function(l){if(l.__detach){l.$el.detach()}else{l.dispose()}});_.each(j,function(l){delete l.__detach})}}this._views[g]=j;_.each(h,function(n){var l=n.Views||f.Views,m=n.views=n.views||new l(n);m.parent=this.view;m.selector=g},this);if(!i.silent){this._attach(g,h,_.extend({ready:this._isReady()},i))}return this},add:function(g,h,i){if(!_.isString(g)){i=h;h=g;g=""}return this.set(g,h,_.extend({add:true},i))},unset:function(g,h,i){var j;if(!_.isString(g)){i=h;h=g;g=""}h=h||[];if(j=this.get(g)){h=_.isArray(h)?h:[h];this._views[g]=h.length?_.difference(j,h):[]}if(!i||!i.silent){_.invoke(h,"dispose")}return this},detach:function(){e(_.pluck(this.all(),"el")).detach();return this},render:function(){var g={ready:this._isReady()};_.each(this._views,function(i,h){this._attach(h,i,g)},this);this.rendered=true;return this},dispose:function(g){if(!g||!g.silent){if(this.parent&&this.parent.views){this.parent.views.unset(this.selector,this.view,{silent:true})}delete this.parent;delete this.selector}_.invoke(this.all(),"dispose");this._views=[];return this},replace:function(g,h){g.html(h);return this},insert:function(h,k,j){var g=j&&j.at,i;if(_.isNumber(g)&&(i=h.children()).length>g){i.eq(g).before(k)}else{h.append(k)}return this},ready:function(){this.view.trigger("ready");_.chain(this.all()).map(function(g){return g.views}).flatten().where({attached:true}).invoke("ready")},_attach:function(g,h,i){var k=g?this.view.$(g):this.view.$el,j;if(!k.length){return this}j=_.chain(h).pluck("views").flatten().value();_.each(j,function(l){if(l.rendered){return}l.view.render();l.rendered=true},this);this[i.add?"insert":"replace"](k,_.pluck(h,"el"),i);_.each(j,function(l){l.attached=true;if(i.ready){l.ready()}},this);return this},_isReady:function(){var g=this.view.el;while(g){if(g===document.body){return true}g=g.parentNode}return false}});f.View=Backbone.View.extend({Views:f.Views,constructor:function(g){this.views=new this.Views(this,this.views);this.on("ready",this.ready,this);if(g&&g.controller){this.controller=g.controller}Backbone.View.apply(this,arguments)},dispose:function(){this.undelegateEvents();if(this.model&&this.model.off){this.model.off(null,null,this)}if(this.collection&&this.collection.off){this.collection.off(null,null,this)}if(this.controller&&this.controller.off){this.controller.off(null,null,this)}if(this.views){this.views.dispose()}return this},remove:function(){this.dispose();return Backbone.View.prototype.remove.apply(this,arguments)},render:function(){var g;if(this.prepare){g=this.prepare()}this.views.detach();if(this.template){g=g||{};this.trigger("prepare",g);this.$el.html(this.template(g))}this.views.render();return this},prepare:function(){return this.options},ready:function(){}});f.view.Frame=f.View.extend({initialize:function(){this._createRegions();this._createStates()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[];_.each(this.regions,function(g){this[g]=new f.controller.Region({view:this,id:g,selector:".media-frame-"+g})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:f.controller.State});this.states.on("add",function(g){g.frame=this;g.trigger("ready")},this);if(this.options.states){this.states.add(this.options.states)}},reset:function(){this.states.invoke("trigger","reset");return this}});_.extend(f.view.Frame.prototype,f.controller.StateMachine.prototype);f.view.MediaFrame=f.view.Frame.extend({className:"media-frame",template:f.template("media-frame"),regions:["menu","title","content","toolbar","router"],initialize:function(){f.view.Frame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{title:"",modal:true,uploader:true});this.$el.addClass("wp-core-ui");if(this.options.modal){this.modal=new f.view.Modal({controller:this,title:this.options.title});this.modal.content(this)}if(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported){this.options.uploader=false}if(this.options.uploader){this.uploader=new f.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("menu:create:default",this.createMenu,this)},render:function(){if(!this.state()&&this.options.state){this.setState(this.options.state)}return f.view.Frame.prototype.render.apply(this,arguments)},createTitle:function(g){g.view=new f.View({controller:this,tagName:"h1"})},createMenu:function(g){g.view=new f.view.Menu({controller:this})},createToolbar:function(g){g.view=new f.view.Toolbar({controller:this})},createRouter:function(g){g.view=new f.view.Router({controller:this})},createIframeStates:function(g){var j=f.view.settings,i=j.tabs,k=j.tabUrl,h;if(!i||!k){return}h=e("#post_ID");if(h.length){k+="&post_id="+h.val()}_.each(i,function(m,n){var l=this.state("iframe:"+n).set(_.defaults({tab:n,src:k+"&tab="+n,title:m,content:"iframe",menu:"default"},g))},this);this.on("content:create:iframe",this.iframeContent,this);this.on("menu:render:default",this.iframeMenu,this);this.on("open",this.hijackThickbox,this);this.on("close",this.restoreThickbox,this)},iframeContent:function(g){this.$el.addClass("hide-toolbar");g.view=new f.view.Iframe({controller:this})},iframeMenu:function(h){var g={};if(!h){return}_.each(f.view.settings.tabs,function(i,j){g["iframe:"+j]={text:this.state("iframe:"+j).get("title"),priority:200}},this);h.set(g)},hijackThickbox:function(){var g=this;if(!window.tb_remove||this._tb_remove){return}this._tb_remove=window.tb_remove;window.tb_remove=function(){g.close();g.reset();g.setState(g.options.state);g._tb_remove.call(window)}},restoreThickbox:function(){if(!this._tb_remove){return}window.tb_remove=this._tb_remove;delete this._tb_remove}});_.each(["open","close","attach","detach","escape"],function(g){f.view.MediaFrame.prototype[g]=function(h){if(this.modal){this.modal[g].apply(this.modal,arguments)}return this}});f.view.MediaFrame.Select=f.view.MediaFrame.extend({initialize:function(){f.view.MediaFrame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{selection:[],library:{},multiple:false,state:"library"});this.createSelection();this.createStates();this.bindHandlers()},createSelection:function(){var g=this,h=this.options.selection;if(!(h instanceof f.model.Selection)){this.options.selection=new f.model.Selection(h,{multiple:this.options.multiple})}this._selection={attachments:new c(),difference:[]}},createStates:function(){var g=this.options;if(this.options.states){return}this.states.add([new f.controller.Library({library:f.query(g.library),multiple:g.multiple,title:g.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(g){g.set({upload:{text:b.uploadFilesTitle,priority:20},browse:{text:b.mediaLibraryTitle,priority:40}})},browseContent:function(g){var h=this.state();this.$el.removeClass("hide-toolbar");g.view=new f.view.AttachmentsBrowser({controller:this,collection:h.get("library"),selection:h.get("selection"),model:h,sortable:h.get("sortable"),search:h.get("searchable"),filters:h.get("filterable"),display:h.get("displaySettings"),dragInfo:h.get("dragInfo"),AttachmentView:h.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar");this.content.set(new f.view.UploaderInline({controller:this}))},createSelectToolbar:function(h,g){g=g||this.options.button||{};g.controller=this;h.view=new f.view.Toolbar.Select(g)}});f.view.MediaFrame.Post=f.view.MediaFrame.Select.extend({initialize:function(){_.defaults(this.options,{multiple:true,editing:false,state:"insert"});f.view.MediaFrame.Select.prototype.initialize.apply(this,arguments);this.createIframeStates()},createStates:function(){var g=this.options;this.states.add([new f.controller.Library({id:"insert",title:b.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:f.query(g.library),multiple:g.multiple?"reset":false,editable:true,allowLocalEdits:true,displaySettings:true,displayUserSettings:true}),new f.controller.Library({id:"gallery",title:b.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:false,library:f.query(_.defaults({type:"image"},g.library))}),new f.controller.Embed(),new f.controller.GalleryEdit({library:g.selection,editing:g.editing,menu:"gallery"}),new f.controller.GalleryAdd()]);if(f.view.settings.post.featuredImageId){this.states.add(new f.controller.FeaturedImage())}},bindHandlers:function(){f.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments);this.on("menu:create:gallery",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:featured-image",this.featuredImageToolbar,this);this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this);var g={menu:{"default":"mainMenu",gallery:"galleryMenu"},content:{embed:"embedContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar"}};_.each(g,function(i,h){_.each(i,function(k,j){this.on(h+":render:"+j,this[k],this)},this)},this)},mainMenu:function(g){g.set({"library-separator":new f.View({className:"separator",priority:100})})},galleryMenu:function(g){var h=this.lastState(),i=h&&h.id,j=this;g.set({cancel:{text:b.cancelGalleryTitle,priority:20,click:function(){if(i){j.setState(i)}else{j.close()}}},separateCancel:new f.View({className:"separator",priority:40})})},embedContent:function(){var g=new f.view.Embed({controller:this,model:this.state()}).render();this.content.set(g);g.url.focus()},editSelectionContent:function(){var i=this.state(),h=i.get("selection"),g;g=new f.view.AttachmentsBrowser({controller:this,collection:h,selection:h,model:i,sortable:true,search:false,dragInfo:true,AttachmentView:f.view.Attachment.EditSelection}).render();g.toolbar.set("backToLibrary",{text:b.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}});this.content.set(g)},selectionStatusToolbar:function(g){var h=this.state().get("editable");g.set("selection",new f.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:h&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("insert",{style:"primary",priority:80,text:b.insertIntoPost,requires:{selection:true},click:function(){var j=g.state(),i=j.get("selection");g.close();j.trigger("insert",i).reset()}})},mainGalleryToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("gallery",{style:"primary",text:b.createNewGallery,priority:60,requires:{selection:true},click:function(){var i=g.state().get("selection"),j=g.state("gallery-edit"),k=i.where({type:"image"});j.set("library",new f.model.Selection(k,{props:i.props.toJSON(),multiple:true}));this.controller.setState("gallery-edit")}})},featuredImageToolbar:function(g){this.createSelectToolbar(g,{text:b.setFeaturedImage,state:this.options.state||"upload"})},mainEmbedToolbar:function(g){g.view=new f.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var g=this.state().get("editing");this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g?b.updateGallery:b.insertGallery,priority:80,requires:{library:true},click:function(){var h=this.controller,i=h.state();h.close();i.trigger("update",i.get("library"));h.reset();h.setState("upload")}}}}))},galleryAddToolbar:function(){this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:b.addToGallery,priority:80,requires:{selection:true},click:function(){var g=this.controller,i=g.state(),h=g.state("gallery-edit");h.get("library").add(i.get("selection").models);i.trigger("reset");g.setState("gallery-edit")}}}}))}});f.view.Modal=f.View.extend({tagName:"div",template:f.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:true,freeze:true})},prepare:function(){return{title:this.options.title}},attach:function(){if(this.views.attached){return this}if(!this.views.rendered){this.render()}this.$el.appendTo(this.options.container);this.views.attached=true;this.views.ready();return this.propagate("attach")},detach:function(){if(this.$el.is(":visible")){this.close()}this.$el.detach();this.views.attached=false;return this.propagate("detach")},open:function(){var h=this.$el,g=this.options;if(h.is(":visible")){return this}if(!this.views.attached){this.attach()}if(g.freeze){this._freeze={scrollTop:e(window).scrollTop()}}h.show().focus();return this.propagate("open")},close:function(g){var h=this._freeze;if(!this.views.attached||!this.$el.is(":visible")){return this}this.$el.hide();this.propagate("close");if(h){e(window).scrollTop(h.scrollTop)}if(g&&g.escape){this.propagate("escape")}return this},escape:function(){return this.close({escape:true})},escapeHandler:function(g){g.preventDefault();this.escape()},content:function(g){this.views.set(".media-modal-content",g);return this},propagate:function(g){this.trigger(g);if(this.options.propagate){this.controller.trigger(g)}return this},keydown:function(g){if(27===g.which){g.preventDefault();this.escape();return}}});f.view.FocusManager=f.View.extend({events:{keydown:"recordTab",focusin:"updateIndex"},focus:function(){if(_.isUndefined(this.index)){return}this.$tabbables=this.$(":tabbable");this.$tabbables.eq(this.index).focus()},recordTab:function(h){if(9!==h.keyCode){return}if(_.isUndefined(this.index)){this.updateIndex(h)}if(_.isUndefined(this.index)){return}var g=this.index+(h.shiftKey?-1:1);if(g>=0&&g<this.$tabbables.length){this.index=g}else{delete this.index}},updateIndex:function(h){this.$tabbables=this.$(":tabbable");var g=this.$tabbables.index(h.target);if(-1===g){delete this.index}else{this.index=g}}});f.view.UploaderWindow=f.View.extend({tagName:"div",className:"uploader-window",template:f.template("uploader-window"),initialize:function(){var g;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body");g=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}});if(g.dropzone&&!(g.dropzone instanceof e)){g.dropzone=e(g.dropzone)}this.controller.on("activate",this.refresh,this)},refresh:function(){if(this.uploader){this.uploader.refresh()}},ready:function(){var h=f.view.settings.post.id,g;if(this.uploader){return}if(h){this.options.uploader.params.post_id=h}this.uploader=new wp.Uploader(this.options.uploader);g=this.uploader.dropzone;g.on("dropzone:enter",_.bind(this.show,this));g.on("dropzone:leave",_.bind(this.hide,this))},show:function(){var g=this.$el.show();_.defer(function(){g.css({opacity:1})})},hide:function(){var g=this.$el.css({opacity:0});f.transition(g).done(function(){if("0"===g.css("opacity")){g.hide()}})}});f.view.UploaderInline=f.View.extend({tagName:"div",className:"uploader-inline",template:f.template("uploader-inline"),initialize:function(){_.defaults(this.options,{message:"",status:true});if(!this.options.$browser&&this.controller.uploader){this.options.$browser=this.controller.uploader.$browser}if(_.isUndefined(this.options.postId)){this.options.postId=f.view.settings.post.id}if(this.options.status){this.views.set(".upload-inline-status",new f.view.UploaderStatus({controller:this.controller}))}},dispose:function(){if(this.disposing){return f.View.prototype.dispose.apply(this,arguments)}this.disposing=true;return this.remove()},remove:function(){var g=f.View.prototype.remove.apply(this,arguments);_.defer(_.bind(this.refresh,this));return g},refresh:function(){var g=this.controller.uploader;if(g){g.refresh()}},ready:function(){var g=this.options.$browser,h;if(this.controller.uploader){h=this.$(".browser");if(h[0]===g[0]){return}g.detach().text(h.text());g[0].className=h[0].className;h.replaceWith(g.show())}this.refresh();return this}});f.view.UploaderStatus=f.View.extend({className:"media-uploader-status",template:f.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(){wp.Uploader.queue.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return 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(g,h){this[h]=this.$(g)},this);this.visibility();this.progress();this.info()},progress:function(){var g=this.queue,i=this.$bar,h=0;if(!i||!g.length){return}i.width((g.reduce(function(j,l){if(!l.get("uploading")){return j+100}var k=l.get("percent");return j+(_.isNumber(k)?k:100)},0)/g.length)+"%")},info:function(){var g=this.queue,h=0,i;if(!g.length){return}i=this.queue.find(function(k,j){h=j;return k.get("uploading")});this.$index.text(h+1);this.$total.text(g.length);this.$filename.html(i?this.filename(i.get("filename")):"")},filename:function(g){return f.truncate(_.escape(g),24)},error:function(g){this.views.add(".upload-errors",new f.view.UploaderStatusError({filename:this.filename(g.get("file").name),message:g.get("message")}),{at:0})},dismiss:function(g){var h=this.views.get(".upload-errors");g.preventDefault();if(h){_.invoke(h,"remove")}wp.Uploader.errors.reset()}});f.view.UploaderStatusError=f.View.extend({className:"upload-error",template:f.template("uploader-status-error")});f.view.Toolbar=f.View.extend({tagName:"div",className:"media-toolbar",initialize:function(){var i=this.controller.state(),h=this.selection=i.get("selection"),g=this.library=i.get("library");this._views={};this.primary=new f.view.PriorityList();this.secondary=new f.view.PriorityList();this.primary.$el.addClass("media-toolbar-primary");this.secondary.$el.addClass("media-toolbar-secondary");this.views.set([this.secondary,this.primary]);if(this.options.items){this.set(this.options.items,{silent:true})}if(!this.options.silent){this.render()}if(h){h.on("add remove reset",this.refresh,this)}if(g){g.on("add remove reset",this.refresh,this)}},dispose:function(){if(this.selection){this.selection.off(null,null,this)}if(this.library){this.library.off(null,null,this)}return f.View.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(j,g,h){var i;h=h||{};if(_.isObject(j)){_.each(j,function(k,l){this.set(l,k,{silent:true})},this)}else{if(!(g instanceof Backbone.View)){g.classes=["media-button-"+j].concat(g.classes||[]);g=new f.view.Button(g).render()}g.controller=g.controller||this.controller;this._views[j]=g;i=g.options.priority<0?"secondary":"primary";this[i].set(j,g,h)}if(!h.silent){this.refresh()}return this},get:function(g){return this._views[g]},unset:function(h,g){delete this._views[h];this.primary.unset(h,g);this.secondary.unset(h,g);if(!g||!g.silent){this.refresh()}return this},refresh:function(){var i=this.controller.state(),g=i.get("library"),h=i.get("selection");_.each(this._views,function(j){if(!j.model||!j.options||!j.options.requires){return}var l=j.options.requires,k=false;if(l.selection&&h&&!h.length){k=true}else{if(l.library&&g&&!g.length){k=true}}j.model.set("disabled",k)})}});f.view.Toolbar.Select=f.view.Toolbar.extend({initialize:function(){var h=this.options,g=h.controller,i=g.state().get("selection");_.bindAll(this,"clickSelect");_.defaults(h,{event:"select",state:false,reset:true,close:true,text:b.select,requires:{selection:true}});h.items=_.defaults(h.items||{},{select:{style:"primary",text:h.text,priority:80,click:this.clickSelect,requires:h.requires}});f.view.Toolbar.prototype.initialize.apply(this,arguments)},clickSelect:function(){var h=this.options,g=this.controller;if(h.close){g.close()}if(h.event){g.state().trigger(h.event)}if(h.reset){g.reset()}if(h.state){g.setState(h.state)}}});f.view.Toolbar.Embed=f.view.Toolbar.Select.extend({initialize:function(){_.defaults(this.options,{text:b.insertIntoPost,requires:false});f.view.Toolbar.Select.prototype.initialize.apply(this,arguments)},refresh:function(){var g=this.controller.state().props.get("url");this.get("select").model.set("disabled",!g||g==="http://");f.view.Toolbar.Select.prototype.refresh.apply(this,arguments)}});f.view.Button=f.View.extend({tagName:"a",className:"media-button",attributes:{href:"#"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:false},initialize:function(){this.model=new Backbone.Model(this.defaults);_.each(this.defaults,function(i,g){var h=this.options[g];if(_.isUndefined(h)){return}this.model.set(g,h);delete this.options[g]},this);this.model.on("change",this.render,this)},render:function(){var h=["button",this.className],g=this.model.toJSON();if(g.style){h.push("button-"+g.style)}if(g.size){h.push("button-"+g.size)}h=_.uniq(h.concat(this.options.classes));this.el.className=h.join(" ");this.$el.attr("disabled",g.disabled);this.$el.text(this.model.get("text"));return this},click:function(g){if("#"===this.attributes.href){g.preventDefault()}if(this.options.click&&!this.model.get("disabled")){this.options.click.apply(this,arguments)}}});f.view.ButtonGroup=f.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(g){if(g instanceof Backbone.View){return g}else{return new f.view.Button(g).render()}});delete this.options.buttons;if(this.options.classes){this.$el.addClass(this.options.classes)}},render:function(){this.$el.html(e(_.pluck(this.buttons,"el")).detach());return this}});f.view.PriorityList=f.View.extend({tagName:"div",initialize:function(){this._views={};this.set(_.extend({},this._views,this.options.views),{silent:true});delete this.options.views;if(!this.options.silent){this.render()}},set:function(l,h,j){var k,g,i;j=j||{};if(_.isObject(l)){_.each(l,function(m,n){this.set(n,m)},this);return this}if(!(h instanceof Backbone.View)){h=this.toView(h,l,j)}h.controller=h.controller||this.controller;this.unset(l);k=h.options.priority||10;g=this.views.get()||[];_.find(g,function(n,m){if(n.options.priority>k){i=m;return true}});this._views[l]=h;this.views.add(h,{at:_.isNumber(i)?i:g.length||0});return this},get:function(g){return this._views[g]},unset:function(h){var g=this.get(h);if(g){g.remove()}delete this._views[h];return this},toView:function(g){return new f.View(g)}});f.view.MenuItem=f.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(g){var h=this.options.click;if(g){g.preventDefault()}if(h){h.call(this)}else{this.click()}},click:function(){var g=this.options.state;if(g){this.controller.setState(g)}},render:function(){var g=this.options;if(g.text){this.$el.text(g.text)}else{if(g.html){this.$el.html(g.html)}}return this}});f.view.Menu=f.view.PriorityList.extend({tagName:"div",className:"media-menu",property:"state",ItemView:f.view.MenuItem,region:"menu",toView:function(g,h){g=g||{};g[this.property]=g[this.property]||h;return new this.ItemView(g).render()},ready:function(){f.view.PriorityList.prototype.ready.apply(this,arguments);this.visibility()},set:function(){f.view.PriorityList.prototype.set.apply(this,arguments);this.visibility()},unset:function(){f.view.PriorityList.prototype.unset.apply(this,arguments);this.visibility()},visibility:function(){var j=this.region,h=this.controller[j].get(),g=this.views.get(),i=!g||g.length<2;if(this===h){this.controller.$el.toggleClass("hide-"+j,i)}},select:function(h){var g=this.get(h);if(!g){return}this.deselect();g.$el.addClass("active")},deselect:function(){this.$el.children().removeClass("active")}});f.view.RouterItem=f.view.MenuItem.extend({click:function(){var g=this.options.contentMode;if(g){this.controller.content.mode(g)}}});f.view.Router=f.view.Menu.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:f.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this);f.view.Menu.prototype.initialize.apply(this,arguments)},update:function(){var g=this.controller.content.mode();if(g){this.select(g)}}});f.view.Sidebar=f.view.PriorityList.extend({className:"media-sidebar"});f.view.Attachment=f.View.extend({tagName:"li",className:"attachment",template:f.template("attachment"),events:{"click .attachment-preview":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .close":"removeFromLibrary","click .check":"removeFromSelection","click a":"preventDefault"},buttons:{},initialize:function(){var g=this.options.selection;this.model.on("change:sizes change:uploading",this.render,this);this.model.on("change:title",this._syncTitle,this);this.model.on("change:caption",this._syncCaption,this);this.model.on("change:percent",this.progress,this);this.model.on("add",this.select,this);this.model.on("remove",this.deselect,this);if(g){g.on("reset",this.updateSelect,this)}this.model.on("selection:single selection:unsingle",this.details,this);this.details(this.model,this.controller.state().get("selection"))},dispose:function(){var g=this.options.selection;this.updateAll();if(g){g.off(null,null,this)}f.View.prototype.dispose.apply(this,arguments);return this},render:function(){var g=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:false,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:false,alt:"",description:""});g.buttons=this.buttons;g.describe=this.controller.state().get("describe");if("image"===g.type){g.size=this.imageSize()}g.can={};if(g.nonces){g.can.remove=!!g.nonces["delete"];g.can.save=!!g.nonces.update}if(this.controller.state().get("allowLocalEdits")){g.allowLocalEdits=true}this.views.detach();this.$el.html(this.template(g));this.$el.toggleClass("uploading",g.uploading);if(g.uploading){this.$bar=this.$(".media-progress-bar div")}else{delete this.$bar}this.updateSelect();this.updateSave();this.views.render();return this},progress:function(){if(this.$bar&&this.$bar.length){this.$bar.width(this.model.get("percent")+"%")}},toggleSelectionHandler:function(g){var h;if(g.shiftKey){h="between"}else{if(g.ctrlKey||g.metaKey){h="toggle"}}this.toggleSelection({method:h})},toggleSelection:function(p){var k=this.collection,l=this.options.selection,j=this.model,g=p&&p.method,m,n,h,i,o;if(!l){return}m=l.single();g=_.isUndefined(g)?l.multiple:g;if("between"===g&&m&&l.multiple){if(m===j){return}i=k.indexOf(m);o=k.indexOf(this.model);if(i<o){h=k.models.slice(i,o+1)}else{h=k.models.slice(o,i+1)}l.add(h).single(j);return}else{if("toggle"===g){l[this.selected()?"remove":"add"](j).single(j);return}}if(g!=="add"){g="reset"}if(this.selected()){l[m===j?"remove":"single"](j)}else{l[g](j).single(j)}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var g=this.options.selection;if(g){return !!g.getByCid(this.model.cid)}},select:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.addClass("selected")},deselect:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.removeClass("selected")},details:function(g,j){var i=this.options.selection,h;if(i!==j){return}h=i.single();this.$el.toggleClass("details",h===this.model)},preventDefault:function(g){g.preventDefault()},imageSize:function(g){var h=this.model.get("sizes");g=g||"medium";if(h&&h[g]){return _.clone(h[g])}else{return{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}}},updateSetting:function(i){var g=e(i.target).closest("[data-setting]"),h,j;if(!g.length){return}h=g.data("setting");j=i.target.value;if(this.model.get(h)!==j){this.save(h,j)}},save:function(){var g=this,i=this._save=this._save||{status:"ready"},h=this.model.save.apply(this.model,arguments),j=i.requests?e.when(h,i.requests):h;if(i.savedTimer){clearTimeout(i.savedTimer)}this.updateSave("waiting");i.requests=j;j.always(function(){if(i.requests!==j){return}g.updateSave(j.state()==="resolved"?"complete":"error");i.savedTimer=setTimeout(function(){g.updateSave("ready");delete i.savedTimer},2000)})},updateSave:function(g){var h=this._save=this._save||{status:"ready"};if(g&&g!==h.status){this.$el.removeClass("save-"+h.status);h.status=g}this.$el.addClass("save-"+h.status);return this},updateAll:function(){var h=this.$("[data-setting]"),g=this.model,i;i=_.chain(h).map(function(k){var m=e("input, textarea, select, [value]",k),j,l;if(!m.length){return}j=e(k).data("setting");l=m.val();if(g.get(j)!==l){return[j,l]}}).compact().object().value();if(!_.isEmpty(i)){g.save(i)}},removeFromLibrary:function(g){g.stopPropagation();this.collection.remove(this.model)},removeFromSelection:function(h){var g=this.options.selection;if(!g){return}h.stopPropagation();g.remove(this.model)}});_.each({caption:"_syncCaption",title:"_syncTitle"},function(h,g){f.view.Attachment.prototype[h]=function(i,k){var j=this.$('[data-setting="'+g+'"]');if(!j.length){return this}if(k===j.find("input, textarea, select, [value]").val()){return this}return this.render()}});f.view.Attachment.Library=f.view.Attachment.extend({buttons:{check:true}});f.view.Attachment.EditLibrary=f.view.Attachment.extend({buttons:{close:true}});f.view.Attachments=f.View.extend({tagName:"ul",className:"attachments",cssTemplate:f.template("attachments-css"),events:{scroll:"scroll"},initialize:function(){this.el.id=_.uniqueId("__attachments-view-");_.defaults(this.options,{refreshSensitivity:200,refreshThreshold:3,AttachmentView:f.view.Attachment,sortable:false,resize:true});this._viewsByCid={};this.collection.on("add",function(i,g,h){this.views.add(this.createAttachmentView(i),{at:h.index})},this);this.collection.on("remove",function(j,g,i){var h=this._viewsByCid[j.cid];delete this._viewsByCid[j.cid];if(h){h.remove()}},this);this.collection.on("reset",this.render,this);this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value();this.initSortable();_.bindAll(this,"css");this.model.on("change:edge change:gutter",this.css,this);this._resizeCss=_.debounce(_.bind(this.css,this),this.refreshSensitivity);if(this.options.resize){e(window).on("resize.attachments",this._resizeCss)}this.css()},dispose:function(){this.collection.props.off(null,null,this);e(window).off("resize.attachments",this._resizeCss);f.View.prototype.dispose.apply(this,arguments)},css:function(){var g=e("#"+this.el.id+"-css");if(g.length){g.remove()}f.view.Attachments.$head().append(this.cssTemplate({id:this.el.id,edge:this.edge(),gutter:this.model.get("gutter")}))},edge:function(){var i=this.model.get("edge"),j,h,g;if(!this.$el.is(":visible")){return i}j=this.model.get("gutter")*2;h=this.$el.width()-j;g=Math.ceil(h/(i+j));i=Math.floor((h-(g*j))/g);return i},initSortable:function(){var g=this.collection;if(!this.options.sortable||!e.fn.sortable){return}this.$el.sortable(_.extend({disabled:!!g.comparator,containment:this.$el,tolerance:"pointer",start:function(h,i){i.item.data("sortableIndexStart",i.item.index())},update:function(j,k){var i=g.at(k.item.data("sortableIndexStart")),h=g.comparator;delete g.comparator;g.remove(i,{silent:true}).add(i,{silent:true,at:k.item.index()});g.comparator=h;g.trigger("reset",g);g.saveMenuOrder()}},this.options.sortable));g.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!g.comparator)},this);this.collection.props.on("change:orderby",this.refreshSortable,this);this.refreshSortable()},refreshSortable:function(){if(!this.options.sortable||!e.fn.sortable){return}var i=this.collection,h=i.props.get("orderby"),g="menuOrder"===h||!i.comparator;this.$el.sortable("option","disabled",!g)},createAttachmentView:function(h){var g=new this.options.AttachmentView({controller:this.controller,model:h,collection:this.collection,selection:this.options.selection});return this._viewsByCid[h.cid]=g},prepare:function(){if(this.collection.length){this.views.set(this.collection.map(this.createAttachmentView,this))}else{this.views.unset();this.collection.more().done(this.scroll)}},ready:function(){this.scroll()},scroll:function(g){if(!this.$el.is(":visible")){return}if(this.collection.hasMore()&&this.el.scrollHeight<this.el.scrollTop+(this.el.clientHeight*this.options.refreshThreshold)){this.collection.more().done(this.scroll)}}},{$head:(function(){var g;return function(){return g=g||e("head")}}())});f.view.Search=f.View.extend({tagName:"input",className:"search",attributes:{type:"search",placeholder:b.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){this.el.value=this.model.escape("search");return this},search:function(g){if(g.target.value){this.model.set("search",g.target.value)}else{this.model.unset("search")}}});f.view.AttachmentFilters=f.View.extend({tagName:"select",className:"attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters();_.extend(this.filters,this.options.filters);this.$el.html(_.chain(this.filters).map(function(g,h){return{el:this.make("option",{value:h},g.text),priority:g.priority||50}},this).sortBy("priority").pluck("el").value());this.model.on("change",this.select,this);this.select()},createFilters:function(){this.filters={}},change:function(h){var g=this.filters[this.el.value];if(g){this.model.set(g.props)}},select:function(){var g=this.model,i="all",h=g.toJSON();_.find(this.filters,function(k,l){var j=_.all(k.props,function(n,m){return n===(_.isUndefined(h[m])?null:h[m])});if(j){return i=l}});this.$el.val(i)}});f.view.AttachmentFilters.Uploaded=f.view.AttachmentFilters.extend({createFilters:function(){var h=this.model.get("type"),g=f.view.settings.mimeTypes,i;if(g&&h){i=g[h]}this.filters={all:{text:i||b.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:b.uploadedToThisPost,props:{uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}}}});f.view.AttachmentFilters.All=f.view.AttachmentFilters.extend({createFilters:function(){var g={};_.each(f.view.settings.mimeTypes||{},function(i,h){g[h]={text:i,props:{type:h,uploadedTo:null,orderby:"date",order:"DESC"}}});g.all={text:b.allMediaItems,props:{type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10};g.uploaded={text:b.uploadedToThisPost,props:{type:null,uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20};this.filters=g}});f.view.AttachmentsBrowser=f.View.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:false,search:true,display:false,AttachmentView:f.view.Attachment.Library});this.createToolbar();this.updateContent();this.createSidebar();this.collection.on("add remove reset",this.updateContent,this)},dispose:function(){this.options.selection.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return this},createToolbar:function(){var h,g;this.toolbar=new f.view.Toolbar({controller:this.controller});this.views.add(this.toolbar);h=this.options.filters;if("uploaded"===h){g=f.view.AttachmentFilters.Uploaded}else{if("all"===h){g=f.view.AttachmentFilters.All}}if(g){this.toolbar.set("filters",new g({controller:this.controller,model:this.collection.props,priority:-80}).render())}if(this.options.search){this.toolbar.set("search",new f.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())}if(this.options.dragInfo){this.toolbar.set("dragInfo",new f.View({el:e('<div class="instructions">'+b.dragInfo+"</div>")[0],priority:-40}))}},updateContent:function(){var g=this;if(!this.attachments){this.createAttachments()}if(!this.collection.length){this.collection.more().done(function(){if(!g.collection.length){g.createUploader()}})}},removeContent:function(){_.each(["attachments","uploader"],function(g){if(this[g]){this[g].remove();delete this[g]}},this)},createUploader:function(){this.removeContent();this.uploader=new f.view.UploaderInline({controller:this.controller,status:false,message:b.noItemsFound});this.views.add(this.uploader)},createAttachments:function(){this.removeContent();this.attachments=new f.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,AttachmentView:this.options.AttachmentView});this.views.add(this.attachments)},createSidebar:function(){var g=this.options,h=g.selection,i=this.sidebar=new f.view.Sidebar({controller:this.controller});this.views.add(i);if(this.controller.uploader){i.set("uploads",new f.view.UploaderStatus({controller:this.controller,priority:40}))}h.on("selection:single",this.createSingle,this);h.on("selection:unsingle",this.disposeSingle,this);if(h.single()){this.createSingle()}},createSingle:function(){var h=this.sidebar,i=this.options.selection.single(),g={};h.set("details",new f.view.Attachment.Details({controller:this.controller,model:i,priority:80}));h.set("compat",new f.view.AttachmentCompat({controller:this.controller,model:i,priority:120}));if(this.options.display){h.set("display",new f.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(i),attachment:i,priority:160,userSettings:this.model.get("displayUserSettings")}))}},disposeSingle:function(){var g=this.sidebar;g.unset("details");g.unset("compat");g.unset("display")}});f.view.Selection=f.View.extend({tagName:"div",className:"media-selection",template:f.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:false,clearable:true});this.attachments=new f.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model({edge:40,gutter:5})});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){return}var h=this.collection,g="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!h.length);this.$el.toggleClass("one",1===h.length);this.$el.toggleClass("editing",g);this.$(".count").text(b.selected.replace("%d",h.length))},edit:function(g){g.preventDefault();if(this.options.editable){this.options.editable.call(this,this.collection)}},clear:function(g){g.preventDefault();this.collection.reset()}});f.view.Attachment.Selection=f.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});f.view.Attachments.Selection=f.view.Attachments.extend({events:{},initialize:function(){_.defaults(this.options,{sortable:true,resize:false,AttachmentView:f.view.Attachment.Selection});return f.view.Attachments.prototype.initialize.apply(this,arguments)}});f.view.Attachment.EditSelection=f.view.Attachment.Selection.extend({buttons:{close:true}});f.view.Settings=f.View.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model();this.model.on("change",this.updateChanges,this)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){f.View.prototype.render.apply(this,arguments);_(this.model.attributes).chain().keys().each(this.update,this);return this},update:function(j){var k=this.model.get(j),i=this.$('[data-setting="'+j+'"]'),g,h;if(!i.length){return}if(i.is("select")){h=i.find('[value="'+k+'"]');if(h.length){i.find("option").prop("selected",false);h.prop("selected",true)}else{this.model.set(j,i.find(":selected").val())}}else{if(i.hasClass("button-group")){g=i.find("button").removeClass("active");g.filter('[value="'+k+'"]').addClass("active")}else{if(i.is('input[type="text"], textarea')){if(!i.is(":focus")){i.val(k)}}else{if(i.is('input[type="checkbox"]')){i.attr("checked",!!k)}}}}},updateHandler:function(i){var h=e(i.target).closest("[data-setting]"),j=i.target.value,g;i.preventDefault();if(!h.length){return}if(h.is('input[type="checkbox"]')){j=h[0].checked}this.model.set(h.data("setting"),j);if(g=h.data("userSetting")){setUserSetting(g,j)}},updateChanges:function(h,g){if(g.changes){_(g.changes).chain().keys().each(this.update,this)}}});f.view.Settings.AttachmentDisplay=f.view.Settings.extend({className:"attachment-display-settings",template:f.template("attachment-display-settings"),initialize:function(){var g=this.options.attachment;_.defaults(this.options,{userSettings:false});f.view.Settings.prototype.initialize.apply(this,arguments);this.model.on("change:link",this.updateLinkTo,this);if(g){g.on("change:uploading",this.render,this)}},dispose:function(){var g=this.options.attachment;if(g){g.off(null,null,this)}f.view.Settings.prototype.dispose.apply(this,arguments)},render:function(){var g=this.options.attachment;if(g){_.extend(this.options,{sizes:g.get("sizes"),type:g.get("type")})}f.view.Settings.prototype.render.call(this);this.updateLinkTo();return this},updateLinkTo:function(){var h=this.model.get("link"),i=this.$(".link-to-custom"),g=this.options.attachment;if("none"===h||(!g&&"custom"!==h)){i.hide();return}if(g){if("post"===h){i.val(g.get("link"))}else{if("file"===h){i.val(g.get("url"))}else{if(!this.model.get("linkUrl")){i.val("http://")}}}i.prop("readonly","custom"!==h)}i.show();if(i.is(":visible")){i.focus()[0].select()}}});f.view.Settings.Gallery=f.view.Settings.extend({className:"gallery-settings",template:f.template("gallery-settings")});f.view.Attachment.Details=f.view.Attachment.extend({tagName:"div",className:"attachment-details",template:f.template("attachment-details"),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 .edit-attachment":"editAttachment","click .refresh-attachment":"refreshAttachment"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});f.view.Attachment.prototype.initialize.apply(this,arguments)},render:function(){f.view.Attachment.prototype.render.apply(this,arguments);this.focusManager.focus();return this},deleteAttachment:function(g){g.preventDefault();if(confirm(b.warnDelete)){this.model.destroy()}},editAttachment:function(g){this.$el.addClass("needs-refresh")},refreshAttachment:function(g){this.$el.removeClass("needs-refresh");g.preventDefault();this.model.fetch()}});f.view.AttachmentCompat=f.View.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});this.model.on("change:compat",this.render,this)},dispose:function(){if(this.$(":focus").length){this.save()}return f.View.prototype.dispose.apply(this,arguments)},render:function(){var g=this.model.get("compat");if(!g||!g.item){return}this.views.detach();this.$el.html(g.item);this.views.render();this.focusManager.focus();return this},preventDefault:function(g){g.preventDefault()},save:function(g){var h={};if(g){g.preventDefault()}_.each(this.$el.serializeArray(),function(i){h[i.name]=i.value});this.model.saveCompat(h)}});f.view.Iframe=f.View.extend({className:"media-iframe",render:function(){this.views.detach();this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />');this.views.render();return this}});f.view.Embed=f.View.extend({className:"media-embed",initialize:function(){this.url=new f.view.EmbedUrl({controller:this.controller,model:this.model.props}).render();this.views.set([this.url]);this.refresh();this.model.on("change:type",this.refresh,this);this.model.on("change:loading",this.loading,this)},settings:function(g){if(this._settings){this._settings.remove()}this._settings=g;this.views.add(g)},refresh:function(){var h=this.model.get("type"),g;if("image"===h){g=f.view.EmbedImage}else{if("link"===h){g=f.view.EmbedLink}else{return}}this.settings(new g({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});f.view.EmbedUrl=f.View.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.input=this.make("input",{type:"text",value:this.model.get("url")||""});this.spinner=this.make("span",{"class":"spinner"});this.$input=e(this.input);this.$el.append([this.input,this.spinner]);this.model.on("change:url",this.render,this)},render:function(){var g=this.$input;if(g.is(":focus")){return}this.input.value=this.model.get("url")||"http://";f.View.prototype.render.apply(this,arguments);return this},ready:function(){this.focus()},url:function(g){this.model.set("url",g.target.value)},focus:function(){var g=this.$input;if(g.is(":visible")){g.focus()[0].select()}}});f.view.EmbedLink=f.view.Settings.extend({className:"embed-link-settings",template:f.template("embed-link-settings")});f.view.EmbedImage=f.view.Settings.AttachmentDisplay.extend({className:"embed-image-settings",template:f.template("embed-image-settings"),initialize:function(){f.view.Settings.AttachmentDisplay.prototype.initialize.apply(this,arguments);this.model.on("change:url",this.updateImage,this)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}})}(jQuery));
\ No newline at end of file
+(function(e){var f=wp.media,d=f.model.Attachment,c=f.model.Attachments,a=f.model.Query,b;b=f.view.l10n=typeof _wpMediaViewsL10n==="undefined"?{}:_wpMediaViewsL10n;f.view.settings=b.settings||{};delete b.settings;f.model.settings.post=f.view.settings.post;e.support.transition=(function(){var g=document.documentElement.style,h={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i;i=_.find(_.keys(h),function(j){return !_.isUndefined(g[j])});return i&&{end:h[i]}}());f.transition=function(g,h){var i=e.Deferred();h=h||2000;if(e.support.transition){if(!(g instanceof e)){g=e(g)}g.first().one(e.support.transition.end,i.resolve);_.delay(i.resolve,h)}else{i.resolve()}return i.promise()};f.controller.Region=function(g){_.extend(this,_.pick(g||{},"id","view","selector"))};f.controller.Region.extend=Backbone.Model.extend;_.extend(f.controller.Region.prototype,{mode:function(g){if(!g){return this._mode}if(g===this._mode){return this}this.trigger("deactivate");this._mode=g;this.render(g);this.trigger("activate");return this},render:function(h){if(h&&h!==this._mode){return this.mode(h)}var i={view:null},g;this.trigger("create",i);g=i.view;this.trigger("render",g);if(g){this.set(g)}return this},get:function(){return this.view.views.first(this.selector)},set:function(g,h){if(h){h.add=false}return this.view.views.set(this.selector,g,h)},trigger:function(h){var i;if(!this._mode){return}var g=_.toArray(arguments);i=this.id+":"+h;g[0]=i+":"+this._mode;this.view.trigger.apply(this.view,g);g[0]=i;this.view.trigger.apply(this.view,g);return this}});f.controller.StateMachine=function(g){this.states=new Backbone.Collection(g)};f.controller.StateMachine.extend=Backbone.Model.extend;_.extend(f.controller.StateMachine.prototype,Backbone.Events,{state:function(g){this.states=this.states||new Backbone.Collection();g=g||this._state;if(g&&!this.states.get(g)){this.states.add({id:g})}return this.states.get(g)},setState:function(h){var g=this.state();if((g&&h===g.id)||!this.states||!this.states.get(h)){return this}if(g){g.trigger("deactivate");this._lastState=g.id}this._state=h;this.state().trigger("activate");return this},lastState:function(){if(this._lastState){return this.state(this._lastState)}}});_.each(["on","off","trigger"],function(g){f.controller.StateMachine.prototype[g]=function(){this.states=this.states||new Backbone.Collection();this.states[g].apply(this.states,arguments);return this}});f.controller.State=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=true},_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=false;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(g){g.$el.text(this.get("title")||"")},_router:function(){var h=this.frame.router,i=this.get("router"),g;this.frame.$el.toggleClass("hide-router",!i);if(!i){return}this.frame.router.render(i);g=h.get();if(g&&g.select){g.select(this.frame.content.mode())}},_menu:function(){var i=this.frame.menu,h=this.get("menu"),g;if(!h){return}i.mode(h);g=i.get();if(g&&g.select){g.select(this.id)}},_updateMenu:function(){var g=this.previous("menu"),h=this.get("menu");if(g){this.frame.off("menu:render:"+g,this._renderMenu,this)}if(h){this.frame.on("menu:render:"+h,this._renderMenu,this)}},_renderMenu:function(g){var i=this.get("menuItem"),j=this.get("title"),h=this.get("priority");if(!i&&j){i={text:j};if(h){i.priority=h}}if(!i){return}g.set(this.id,i)}});_.each(["toolbar","content"],function(g){f.controller.State.prototype["_"+g]=function(){var h=this.get(g);if(h){this.frame[g].render(h)}}});f.controller.Library=f.controller.State.extend({defaults:{id:"library",multiple:false,describe:false,toolbar:"select",sidebar:"settings",content:"upload",router:"browse",menu:"default",searchable:true,filterable:false,sortable:true,title:b.mediaLibraryTitle,contentUserSetting:true,syncSelection:true},initialize:function(){var h=this.get("selection"),g;if(!this.get("library")){this.set("library",f.query())}if(!(h instanceof f.model.Selection)){g=h;if(!g){g=this.get("library").props.toJSON();g=_.omit(g,"orderby","query")}this.set("selection",new f.model.Selection(null,{multiple:this.get("multiple"),props:g}))}if(!this.get("edge")){this.set("edge",120)}if(!this.get("gutter")){this.set("gutter",8)}this.resetDisplays()},activate:function(){this.syncSelection();wp.Uploader.queue.on("add",this.uploading,this);this.get("selection").on("add remove reset",this.refreshContent,this);if(this.get("contentUserSetting")){this.frame.on("content:activate",this.saveContentMode,this);this.set("content",getUserSetting("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 g=f.view.settings.defaultProps;this._displays=[];this._defaultDisplaySettings={align:g.align||getUserSetting("align","none"),size:g.size||getUserSetting("imgsize","medium"),link:g.link||getUserSetting("urlbutton","file")}},display:function(h){var g=this._displays;if(!g[h.cid]){g[h.cid]=new Backbone.Model(this.defaultDisplaySettings(h))}return g[h.cid]},defaultDisplaySettings:function(g){settings=this._defaultDisplaySettings;if(settings.canEmbed=this.canEmbed(g)){settings.link="embed"}return settings},canEmbed:function(h){if(!h.get("uploading")){var g=h.get("type");if(g!=="audio"&&g!=="video"){return false}}return _.contains(f.view.settings.embedExts,h.get("filename").split(".").pop())},syncSelection:function(){var h=this.get("selection"),g=this.frame._selection;if(!this.get("syncSelection")||!g||!h){return}if(h.multiple){h.reset([],{silent:true});h.validateAll(g.attachments);g.difference=_.difference(g.attachments.models,h.models)}h.single(g.single)},recordSelection:function(){var i=this.get("selection"),h=this.frame._selection,g;if(!this.get("syncSelection")||!h||!i){return}if(i.multiple){h.attachments.reset(i.toArray().concat(h.difference));h.difference=[]}else{h.attachments.add(i.toArray())}h.single=i._single},refreshContent:function(){var h=this.get("selection"),j=this.frame,g=j.router.get(),i=j.content.mode();if(this.active&&!h.length&&g&&!g.get(i)){this.frame.content.render(this.get("content"))}},uploading:function(h){var g=this.frame.content;if("upload"===g.mode()){this.frame.content.mode("browse")}this.get("selection").add(h)},saveContentMode:function(){if("browse"!==this.get("router")){return}var h=this.frame.content.mode(),g=this.frame.router.get();if(g&&g.get(h)){setUserSetting("libraryContent",h)}}});f.controller.GalleryEdit=f.controller.Library.extend({defaults:{id:"gallery-edit",multiple:false,describe:true,edge:199,editing:false,sortable:true,searchable:false,toolbar:"gallery-edit",content:"browse",title:b.editGalleryTitle,priority:60,dragInfo:true,syncSelection:false},initialize:function(){if(!this.get("library")){this.set("library",new f.model.Selection())}if(!this.get("AttachmentView")){this.set("AttachmentView",f.view.Attachment.EditLibrary)}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library");g.props.set("type","image");this.get("library").observe(wp.Uploader.queue);this.frame.on("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue);this.frame.off("content:render:browse",this.gallerySettings,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},gallerySettings:function(h){var g=this.get("library");if(!g||!h){return}g.gallery=g.gallery||new Backbone.Model();h.sidebar.set({gallery:new f.view.Settings.Gallery({controller:this,model:g.gallery,priority:40})});h.toolbar.set("reverse",{text:b.reverseOrder,priority:80,click:function(){g.reset(g.toArray().reverse())}})}});f.controller.GalleryAdd=f.controller.Library.extend({defaults:_.defaults({id:"gallery-library",filterable:"uploaded",multiple:"add",menu:"gallery",toolbar:"gallery-add",title:b.addToGalleryTitle,priority:100,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments)},activate:function(){var g=this.get("library"),h=this.frame.state("gallery-edit").get("library");if(this.editLibrary&&this.editLibrary!==h){g.unobserve(this.editLibrary)}g.validator=function(i){return !!this.mirroring.get(i.cid)&&!h.get(i.cid)&&f.model.Selection.prototype.validator.apply(this,arguments)};g.reset(g.mirroring.models,{silent:true});g.observe(h);this.editLibrary=h;f.controller.Library.prototype.activate.apply(this,arguments)}});f.controller.FeaturedImage=f.controller.Library.extend({defaults:_.defaults({id:"featured-image",filterable:"uploaded",multiple:false,toolbar:"featured-image",title:b.setFeaturedImageTitle,priority:60,syncSelection:false},f.controller.Library.prototype.defaults),initialize:function(){var h,g;if(!this.get("library")){this.set("library",f.query({type:"image"}))}f.controller.Library.prototype.initialize.apply(this,arguments);h=this.get("library");g=h.comparator;h.comparator=function(j,i){var l=!!this.mirroring.get(j.cid),k=!!this.mirroring.get(i.cid);if(!l&&k){return -1}else{if(l&&!k){return 1}else{return g.apply(this,arguments)}}};h.observe(this.get("selection"))},activate:function(){this.updateSelection();this.frame.on("open",this.updateSelection,this);f.controller.Library.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this);f.controller.Library.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var g=this.get("selection"),i=f.view.settings.post.featuredImageId,h;if(""!==i&&-1!==i){h=d.get(i);h.fetch()}g.reset(h?[h]:[])}});f.controller.Embed=f.controller.State.extend({defaults:{id:"embed",url:"",menu:"default",content:"embed",toolbar:"main-embed",type:"link",title:b.insertFromUrlTitle,priority:120},sensitivity:200,initialize:function(){this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity);this.props=new Backbone.Model({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 h,i=this,g={type:"link",scanners:[]};if(this.props.get("url")){this.trigger("scan",g)}if(g.scanners.length){h=g.scanners=e.when.apply(e,g.scanners);h.always(function(){if(i.get("scanners")===h){i.set("loading",false)}})}else{g.scanners=null}g.loading=!!g.scanners;this.set(g)},scanImage:function(h){var l=this.frame,j=this,i=this.props.get("url"),k=new Image(),g=e.Deferred();h.scanners.push(g.promise());k.onload=function(){g.resolve();if(j!==l.state()||i!==j.props.get("url")){return}j.set({type:"image"});j.props.set({width:k.width,height:k.height})};k.onerror=g.reject;k.src=i},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""});if(this.active){this.refresh()}}});f.View=wp.Backbone.View.extend({constructor:function(g){if(g&&g.controller){this.controller=g.controller}wp.Backbone.View.apply(this,arguments)},dispose:function(){this.undelegateEvents();if(this.model&&this.model.off){this.model.off(null,null,this)}if(this.collection&&this.collection.off){this.collection.off(null,null,this)}if(this.controller&&this.controller.off){this.controller.off(null,null,this)}return this},remove:function(){this.dispose();return wp.Backbone.View.prototype.remove.apply(this,arguments)}});f.view.Frame=f.View.extend({initialize:function(){this._createRegions();this._createStates()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[];_.each(this.regions,function(g){this[g]=new f.controller.Region({view:this,id:g,selector:".media-frame-"+g})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:f.controller.State});this.states.on("add",function(g){g.frame=this;g.trigger("ready")},this);if(this.options.states){this.states.add(this.options.states)}},reset:function(){this.states.invoke("trigger","reset");return this}});_.extend(f.view.Frame.prototype,f.controller.StateMachine.prototype);f.view.MediaFrame=f.view.Frame.extend({className:"media-frame",template:f.template("media-frame"),regions:["menu","title","content","toolbar","router"],initialize:function(){f.view.Frame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{title:"",modal:true,uploader:true});this.$el.addClass("wp-core-ui");if(this.options.modal){this.modal=new f.view.Modal({controller:this,title:this.options.title});this.modal.content(this)}if(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported){this.options.uploader=false}if(this.options.uploader){this.uploader=new f.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("menu:create:default",this.createMenu,this)},render:function(){if(!this.state()&&this.options.state){this.setState(this.options.state)}return f.view.Frame.prototype.render.apply(this,arguments)},createTitle:function(g){g.view=new f.View({controller:this,tagName:"h1"})},createMenu:function(g){g.view=new f.view.Menu({controller:this})},createToolbar:function(g){g.view=new f.view.Toolbar({controller:this})},createRouter:function(g){g.view=new f.view.Router({controller:this})},createIframeStates:function(g){var j=f.view.settings,i=j.tabs,k=j.tabUrl,h;if(!i||!k){return}h=e("#post_ID");if(h.length){k+="&post_id="+h.val()}_.each(i,function(m,n){var l=this.state("iframe:"+n).set(_.defaults({tab:n,src:k+"&tab="+n,title:m,content:"iframe",menu:"default"},g))},this);this.on("content:create:iframe",this.iframeContent,this);this.on("menu:render:default",this.iframeMenu,this);this.on("open",this.hijackThickbox,this);this.on("close",this.restoreThickbox,this)},iframeContent:function(g){this.$el.addClass("hide-toolbar");g.view=new f.view.Iframe({controller:this})},iframeMenu:function(h){var g={};if(!h){return}_.each(f.view.settings.tabs,function(i,j){g["iframe:"+j]={text:this.state("iframe:"+j).get("title"),priority:200}},this);h.set(g)},hijackThickbox:function(){var g=this;if(!window.tb_remove||this._tb_remove){return}this._tb_remove=window.tb_remove;window.tb_remove=function(){g.close();g.reset();g.setState(g.options.state);g._tb_remove.call(window)}},restoreThickbox:function(){if(!this._tb_remove){return}window.tb_remove=this._tb_remove;delete this._tb_remove}});_.each(["open","close","attach","detach","escape"],function(g){f.view.MediaFrame.prototype[g]=function(h){if(this.modal){this.modal[g].apply(this.modal,arguments)}return this}});f.view.MediaFrame.Select=f.view.MediaFrame.extend({initialize:function(){f.view.MediaFrame.prototype.initialize.apply(this,arguments);_.defaults(this.options,{selection:[],library:{},multiple:false,state:"library"});this.createSelection();this.createStates();this.bindHandlers()},createSelection:function(){var g=this,h=this.options.selection;if(!(h instanceof f.model.Selection)){this.options.selection=new f.model.Selection(h,{multiple:this.options.multiple})}this._selection={attachments:new c(),difference:[]}},createStates:function(){var g=this.options;if(this.options.states){return}this.states.add([new f.controller.Library({library:f.query(g.library),multiple:g.multiple,title:g.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(g){g.set({upload:{text:b.uploadFilesTitle,priority:20},browse:{text:b.mediaLibraryTitle,priority:40}})},browseContent:function(g){var h=this.state();this.$el.removeClass("hide-toolbar");g.view=new f.view.AttachmentsBrowser({controller:this,collection:h.get("library"),selection:h.get("selection"),model:h,sortable:h.get("sortable"),search:h.get("searchable"),filters:h.get("filterable"),display:h.get("displaySettings"),dragInfo:h.get("dragInfo"),AttachmentView:h.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar");this.content.set(new f.view.UploaderInline({controller:this}))},createSelectToolbar:function(h,g){g=g||this.options.button||{};g.controller=this;h.view=new f.view.Toolbar.Select(g)}});f.view.MediaFrame.Post=f.view.MediaFrame.Select.extend({initialize:function(){_.defaults(this.options,{multiple:true,editing:false,state:"insert"});f.view.MediaFrame.Select.prototype.initialize.apply(this,arguments);this.createIframeStates()},createStates:function(){var g=this.options;this.states.add([new f.controller.Library({id:"insert",title:b.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:f.query(g.library),multiple:g.multiple?"reset":false,editable:true,allowLocalEdits:true,displaySettings:true,displayUserSettings:true}),new f.controller.Library({id:"gallery",title:b.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:false,library:f.query(_.defaults({type:"image"},g.library))}),new f.controller.Embed(),new f.controller.GalleryEdit({library:g.selection,editing:g.editing,menu:"gallery"}),new f.controller.GalleryAdd()]);if(f.view.settings.post.featuredImageId){this.states.add(new f.controller.FeaturedImage())}},bindHandlers:function(){f.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments);this.on("menu:create:gallery",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:featured-image",this.featuredImageToolbar,this);this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this);var g={menu:{"default":"mainMenu",gallery:"galleryMenu"},content:{embed:"embedContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar"}};_.each(g,function(i,h){_.each(i,function(k,j){this.on(h+":render:"+j,this[k],this)},this)},this)},mainMenu:function(g){g.set({"library-separator":new f.View({className:"separator",priority:100})})},galleryMenu:function(g){var h=this.lastState(),i=h&&h.id,j=this;g.set({cancel:{text:b.cancelGalleryTitle,priority:20,click:function(){if(i){j.setState(i)}else{j.close()}}},separateCancel:new f.View({className:"separator",priority:40})})},embedContent:function(){var g=new f.view.Embed({controller:this,model:this.state()}).render();this.content.set(g);g.url.focus()},editSelectionContent:function(){var i=this.state(),h=i.get("selection"),g;g=new f.view.AttachmentsBrowser({controller:this,collection:h,selection:h,model:i,sortable:true,search:false,dragInfo:true,AttachmentView:f.view.Attachment.EditSelection}).render();g.toolbar.set("backToLibrary",{text:b.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}});this.content.set(g)},selectionStatusToolbar:function(g){var h=this.state().get("editable");g.set("selection",new f.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:h&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("insert",{style:"primary",priority:80,text:b.insertIntoPost,requires:{selection:true},click:function(){var j=g.state(),i=j.get("selection");g.close();j.trigger("insert",i).reset()}})},mainGalleryToolbar:function(h){var g=this;this.selectionStatusToolbar(h);h.set("gallery",{style:"primary",text:b.createNewGallery,priority:60,requires:{selection:true},click:function(){var i=g.state().get("selection"),j=g.state("gallery-edit"),k=i.where({type:"image"});j.set("library",new f.model.Selection(k,{props:i.props.toJSON(),multiple:true}));this.controller.setState("gallery-edit")}})},featuredImageToolbar:function(g){this.createSelectToolbar(g,{text:b.setFeaturedImage,state:this.options.state})},mainEmbedToolbar:function(g){g.view=new f.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var g=this.state().get("editing");this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g?b.updateGallery:b.insertGallery,priority:80,requires:{library:true},click:function(){var h=this.controller,i=h.state();h.close();i.trigger("update",i.get("library"));h.setState(h.options.state);h.reset()}}}}))},galleryAddToolbar:function(){this.toolbar.set(new f.view.Toolbar({controller:this,items:{insert:{style:"primary",text:b.addToGallery,priority:80,requires:{selection:true},click:function(){var g=this.controller,i=g.state(),h=g.state("gallery-edit");h.get("library").add(i.get("selection").models);i.trigger("reset");g.setState("gallery-edit")}}}}))}});f.view.Modal=f.View.extend({tagName:"div",template:f.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:true,freeze:true})},prepare:function(){return{title:this.options.title}},attach:function(){if(this.views.attached){return this}if(!this.views.rendered){this.render()}this.$el.appendTo(this.options.container);this.views.attached=true;this.views.ready();return this.propagate("attach")},detach:function(){if(this.$el.is(":visible")){this.close()}this.$el.detach();this.views.attached=false;return this.propagate("detach")},open:function(){var h=this.$el,g=this.options;if(h.is(":visible")){return this}if(!this.views.attached){this.attach()}if(g.freeze){this._freeze={scrollTop:e(window).scrollTop()}}h.show().focus();return this.propagate("open")},close:function(g){var h=this._freeze;if(!this.views.attached||!this.$el.is(":visible")){return this}this.$el.hide();this.propagate("close");if(h){e(window).scrollTop(h.scrollTop)}if(g&&g.escape){this.propagate("escape")}return this},escape:function(){return this.close({escape:true})},escapeHandler:function(g){g.preventDefault();this.escape()},content:function(g){this.views.set(".media-modal-content",g);return this},propagate:function(g){this.trigger(g);if(this.options.propagate){this.controller.trigger(g)}return this},keydown:function(g){if(27===g.which){g.preventDefault();this.escape();return}}});f.view.FocusManager=f.View.extend({events:{keydown:"recordTab",focusin:"updateIndex"},focus:function(){if(_.isUndefined(this.index)){return}this.$tabbables=this.$(":tabbable");this.$tabbables.eq(this.index).focus()},recordTab:function(h){if(9!==h.keyCode){return}if(_.isUndefined(this.index)){this.updateIndex(h)}if(_.isUndefined(this.index)){return}var g=this.index+(h.shiftKey?-1:1);if(g>=0&&g<this.$tabbables.length){this.index=g}else{delete this.index}},updateIndex:function(h){this.$tabbables=this.$(":tabbable");var g=this.$tabbables.index(h.target);if(-1===g){delete this.index}else{this.index=g}}});f.view.UploaderWindow=f.View.extend({tagName:"div",className:"uploader-window",template:f.template("uploader-window"),initialize:function(){var g;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body");g=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}});if(g.dropzone&&!(g.dropzone instanceof e)){g.dropzone=e(g.dropzone)}this.controller.on("activate",this.refresh,this)},refresh:function(){if(this.uploader){this.uploader.refresh()}},ready:function(){var h=f.view.settings.post.id,g;if(this.uploader){return}if(h){this.options.uploader.params.post_id=h}this.uploader=new wp.Uploader(this.options.uploader);g=this.uploader.dropzone;g.on("dropzone:enter",_.bind(this.show,this));g.on("dropzone:leave",_.bind(this.hide,this))},show:function(){var g=this.$el.show();_.defer(function(){g.css({opacity:1})})},hide:function(){var g=this.$el.css({opacity:0});f.transition(g).done(function(){if("0"===g.css("opacity")){g.hide()}})}});f.view.UploaderInline=f.View.extend({tagName:"div",className:"uploader-inline",template:f.template("uploader-inline"),initialize:function(){_.defaults(this.options,{message:"",status:true});if(!this.options.$browser&&this.controller.uploader){this.options.$browser=this.controller.uploader.$browser}if(_.isUndefined(this.options.postId)){this.options.postId=f.view.settings.post.id}if(this.options.status){this.views.set(".upload-inline-status",new f.view.UploaderStatus({controller:this.controller}))}},dispose:function(){if(this.disposing){return f.View.prototype.dispose.apply(this,arguments)}this.disposing=true;return this.remove()},remove:function(){var g=f.View.prototype.remove.apply(this,arguments);_.defer(_.bind(this.refresh,this));return g},refresh:function(){var g=this.controller.uploader;if(g){g.refresh()}},ready:function(){var g=this.options.$browser,h;if(this.controller.uploader){h=this.$(".browser");if(h[0]===g[0]){return}g.detach().text(h.text());g[0].className=h[0].className;h.replaceWith(g.show())}this.refresh();return this}});f.view.UploaderStatus=f.View.extend({className:"media-uploader-status",template:f.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(){wp.Uploader.queue.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return 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(g,h){this[h]=this.$(g)},this);this.visibility();this.progress();this.info()},progress:function(){var g=this.queue,i=this.$bar,h=0;if(!i||!g.length){return}i.width((g.reduce(function(j,l){if(!l.get("uploading")){return j+100}var k=l.get("percent");return j+(_.isNumber(k)?k:100)},0)/g.length)+"%")},info:function(){var g=this.queue,h=0,i;if(!g.length){return}i=this.queue.find(function(k,j){h=j;return k.get("uploading")});this.$index.text(h+1);this.$total.text(g.length);this.$filename.html(i?this.filename(i.get("filename")):"")},filename:function(g){return f.truncate(_.escape(g),24)},error:function(g){this.views.add(".upload-errors",new f.view.UploaderStatusError({filename:this.filename(g.get("file").name),message:g.get("message")}),{at:0})},dismiss:function(g){var h=this.views.get(".upload-errors");g.preventDefault();if(h){_.invoke(h,"remove")}wp.Uploader.errors.reset()}});f.view.UploaderStatusError=f.View.extend({className:"upload-error",template:f.template("uploader-status-error")});f.view.Toolbar=f.View.extend({tagName:"div",className:"media-toolbar",initialize:function(){var i=this.controller.state(),h=this.selection=i.get("selection"),g=this.library=i.get("library");this._views={};this.primary=new f.view.PriorityList();this.secondary=new f.view.PriorityList();this.primary.$el.addClass("media-toolbar-primary");this.secondary.$el.addClass("media-toolbar-secondary");this.views.set([this.secondary,this.primary]);if(this.options.items){this.set(this.options.items,{silent:true})}if(!this.options.silent){this.render()}if(h){h.on("add remove reset",this.refresh,this)}if(g){g.on("add remove reset",this.refresh,this)}},dispose:function(){if(this.selection){this.selection.off(null,null,this)}if(this.library){this.library.off(null,null,this)}return f.View.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(j,g,h){var i;h=h||{};if(_.isObject(j)){_.each(j,function(k,l){this.set(l,k,{silent:true})},this)}else{if(!(g instanceof Backbone.View)){g.classes=["media-button-"+j].concat(g.classes||[]);g=new f.view.Button(g).render()}g.controller=g.controller||this.controller;this._views[j]=g;i=g.options.priority<0?"secondary":"primary";this[i].set(j,g,h)}if(!h.silent){this.refresh()}return this},get:function(g){return this._views[g]},unset:function(h,g){delete this._views[h];this.primary.unset(h,g);this.secondary.unset(h,g);if(!g||!g.silent){this.refresh()}return this},refresh:function(){var i=this.controller.state(),g=i.get("library"),h=i.get("selection");_.each(this._views,function(j){if(!j.model||!j.options||!j.options.requires){return}var l=j.options.requires,k=false;k=_.some(h.models,function(m){return m.get("uploading")===true});if(l.selection&&h&&!h.length){k=true}else{if(l.library&&g&&!g.length){k=true}}j.model.set("disabled",k)})}});f.view.Toolbar.Select=f.view.Toolbar.extend({initialize:function(){var h=this.options,g=h.controller,i=g.state().get("selection");_.bindAll(this,"clickSelect");_.defaults(h,{event:"select",state:false,reset:true,close:true,text:b.select,requires:{selection:true}});h.items=_.defaults(h.items||{},{select:{style:"primary",text:h.text,priority:80,click:this.clickSelect,requires:h.requires}});f.view.Toolbar.prototype.initialize.apply(this,arguments)},clickSelect:function(){var h=this.options,g=this.controller;if(h.close){g.close()}if(h.event){g.state().trigger(h.event)}if(h.state){g.setState(h.state)}if(h.reset){g.reset()}}});f.view.Toolbar.Embed=f.view.Toolbar.Select.extend({initialize:function(){_.defaults(this.options,{text:b.insertIntoPost,requires:false});f.view.Toolbar.Select.prototype.initialize.apply(this,arguments)},refresh:function(){var g=this.controller.state().props.get("url");this.get("select").model.set("disabled",!g||g==="http://");f.view.Toolbar.Select.prototype.refresh.apply(this,arguments)}});f.view.Button=f.View.extend({tagName:"a",className:"media-button",attributes:{href:"#"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:false},initialize:function(){this.model=new Backbone.Model(this.defaults);_.each(this.defaults,function(i,g){var h=this.options[g];if(_.isUndefined(h)){return}this.model.set(g,h);delete this.options[g]},this);this.model.on("change",this.render,this)},render:function(){var h=["button",this.className],g=this.model.toJSON();if(g.style){h.push("button-"+g.style)}if(g.size){h.push("button-"+g.size)}h=_.uniq(h.concat(this.options.classes));this.el.className=h.join(" ");this.$el.attr("disabled",g.disabled);this.$el.text(this.model.get("text"));return this},click:function(g){if("#"===this.attributes.href){g.preventDefault()}if(this.options.click&&!this.model.get("disabled")){this.options.click.apply(this,arguments)}}});f.view.ButtonGroup=f.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(g){if(g instanceof Backbone.View){return g}else{return new f.view.Button(g).render()}});delete this.options.buttons;if(this.options.classes){this.$el.addClass(this.options.classes)}},render:function(){this.$el.html(e(_.pluck(this.buttons,"el")).detach());return this}});f.view.PriorityList=f.View.extend({tagName:"div",initialize:function(){this._views={};this.set(_.extend({},this._views,this.options.views),{silent:true});delete this.options.views;if(!this.options.silent){this.render()}},set:function(l,h,j){var k,g,i;j=j||{};if(_.isObject(l)){_.each(l,function(m,n){this.set(n,m)},this);return this}if(!(h instanceof Backbone.View)){h=this.toView(h,l,j)}h.controller=h.controller||this.controller;this.unset(l);k=h.options.priority||10;g=this.views.get()||[];_.find(g,function(n,m){if(n.options.priority>k){i=m;return true}});this._views[l]=h;this.views.add(h,{at:_.isNumber(i)?i:g.length||0});return this},get:function(g){return this._views[g]},unset:function(h){var g=this.get(h);if(g){g.remove()}delete this._views[h];return this},toView:function(g){return new f.View(g)}});f.view.MenuItem=f.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(g){var h=this.options.click;if(g){g.preventDefault()}if(h){h.call(this)}else{this.click()}},click:function(){var g=this.options.state;if(g){this.controller.setState(g)}},render:function(){var g=this.options;if(g.text){this.$el.text(g.text)}else{if(g.html){this.$el.html(g.html)}}return this}});f.view.Menu=f.view.PriorityList.extend({tagName:"div",className:"media-menu",property:"state",ItemView:f.view.MenuItem,region:"menu",toView:function(g,h){g=g||{};g[this.property]=g[this.property]||h;return new this.ItemView(g).render()},ready:function(){f.view.PriorityList.prototype.ready.apply(this,arguments);this.visibility()},set:function(){f.view.PriorityList.prototype.set.apply(this,arguments);this.visibility()},unset:function(){f.view.PriorityList.prototype.unset.apply(this,arguments);this.visibility()},visibility:function(){var j=this.region,h=this.controller[j].get(),g=this.views.get(),i=!g||g.length<2;if(this===h){this.controller.$el.toggleClass("hide-"+j,i)}},select:function(h){var g=this.get(h);if(!g){return}this.deselect();g.$el.addClass("active")},deselect:function(){this.$el.children().removeClass("active")}});f.view.RouterItem=f.view.MenuItem.extend({click:function(){var g=this.options.contentMode;if(g){this.controller.content.mode(g)}}});f.view.Router=f.view.Menu.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:f.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this);f.view.Menu.prototype.initialize.apply(this,arguments)},update:function(){var g=this.controller.content.mode();if(g){this.select(g)}}});f.view.Sidebar=f.view.PriorityList.extend({className:"media-sidebar"});f.view.Attachment=f.View.extend({tagName:"li",className:"attachment",template:f.template("attachment"),events:{"click .attachment-preview":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .close":"removeFromLibrary","click .check":"removeFromSelection","click a":"preventDefault"},buttons:{},initialize:function(){var g=this.options.selection;this.model.on("change:sizes change:uploading",this.render,this);this.model.on("change:title",this._syncTitle,this);this.model.on("change:caption",this._syncCaption,this);this.model.on("change:percent",this.progress,this);this.model.on("add",this.select,this);this.model.on("remove",this.deselect,this);if(g){g.on("reset",this.updateSelect,this)}this.model.on("selection:single selection:unsingle",this.details,this);this.details(this.model,this.controller.state().get("selection"))},dispose:function(){var g=this.options.selection;this.updateAll();if(g){g.off(null,null,this)}f.View.prototype.dispose.apply(this,arguments);return this},render:function(){var g=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:false,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:false,alt:"",description:""});g.buttons=this.buttons;g.describe=this.controller.state().get("describe");if("image"===g.type){g.size=this.imageSize()}g.can={};if(g.nonces){g.can.remove=!!g.nonces["delete"];g.can.save=!!g.nonces.update}if(this.controller.state().get("allowLocalEdits")){g.allowLocalEdits=true}this.views.detach();this.$el.html(this.template(g));this.$el.toggleClass("uploading",g.uploading);if(g.uploading){this.$bar=this.$(".media-progress-bar div")}else{delete this.$bar}this.updateSelect();this.updateSave();this.views.render();return this},progress:function(){if(this.$bar&&this.$bar.length){this.$bar.width(this.model.get("percent")+"%")}},toggleSelectionHandler:function(g){var h;if(g.shiftKey){h="between"}else{if(g.ctrlKey||g.metaKey){h="toggle"}}this.toggleSelection({method:h})},toggleSelection:function(p){var k=this.collection,l=this.options.selection,j=this.model,g=p&&p.method,m,n,h,i,o;if(!l){return}m=l.single();g=_.isUndefined(g)?l.multiple:g;if("between"===g&&m&&l.multiple){if(m===j){return}i=k.indexOf(m);o=k.indexOf(this.model);if(i<o){h=k.models.slice(i,o+1)}else{h=k.models.slice(o,i+1)}l.add(h).single(j);return}else{if("toggle"===g){l[this.selected()?"remove":"add"](j).single(j);return}}if(g!=="add"){g="reset"}if(this.selected()){l[m===j?"remove":"single"](j)}else{l[g](j).single(j)}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var g=this.options.selection;if(g){return !!g.get(this.model.cid)}},select:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.addClass("selected")},deselect:function(g,i){var h=this.options.selection;if(!h||(i&&i!==h)){return}this.$el.removeClass("selected")},details:function(g,j){var i=this.options.selection,h;if(i!==j){return}h=i.single();this.$el.toggleClass("details",h===this.model)},preventDefault:function(g){g.preventDefault()},imageSize:function(g){var h=this.model.get("sizes");g=g||"medium";if(h&&h[g]){return _.clone(h[g])}else{return{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}}},updateSetting:function(i){var g=e(i.target).closest("[data-setting]"),h,j;if(!g.length){return}h=g.data("setting");j=i.target.value;if(this.model.get(h)!==j){this.save(h,j)}},save:function(){var g=this,i=this._save=this._save||{status:"ready"},h=this.model.save.apply(this.model,arguments),j=i.requests?e.when(h,i.requests):h;if(i.savedTimer){clearTimeout(i.savedTimer)}this.updateSave("waiting");i.requests=j;j.always(function(){if(i.requests!==j){return}g.updateSave(j.state()==="resolved"?"complete":"error");i.savedTimer=setTimeout(function(){g.updateSave("ready");delete i.savedTimer},2000)})},updateSave:function(g){var h=this._save=this._save||{status:"ready"};if(g&&g!==h.status){this.$el.removeClass("save-"+h.status);h.status=g}this.$el.addClass("save-"+h.status);return this},updateAll:function(){var h=this.$("[data-setting]"),g=this.model,i;i=_.chain(h).map(function(k){var m=e("input, textarea, select, [value]",k),j,l;if(!m.length){return}j=e(k).data("setting");l=m.val();if(g.get(j)!==l){return[j,l]}}).compact().object().value();if(!_.isEmpty(i)){g.save(i)}},removeFromLibrary:function(g){g.stopPropagation();this.collection.remove(this.model)},removeFromSelection:function(h){var g=this.options.selection;if(!g){return}h.stopPropagation();g.remove(this.model)}});_.each({caption:"_syncCaption",title:"_syncTitle"},function(h,g){f.view.Attachment.prototype[h]=function(i,k){var j=this.$('[data-setting="'+g+'"]');if(!j.length){return this}if(k===j.find("input, textarea, select, [value]").val()){return this}return this.render()}});f.view.Attachment.Library=f.view.Attachment.extend({buttons:{check:true}});f.view.Attachment.EditLibrary=f.view.Attachment.extend({buttons:{close:true}});f.view.Attachments=f.View.extend({tagName:"ul",className:"attachments",cssTemplate:f.template("attachments-css"),events:{scroll:"scroll"},initialize:function(){this.el.id=_.uniqueId("__attachments-view-");_.defaults(this.options,{refreshSensitivity:200,refreshThreshold:3,AttachmentView:f.view.Attachment,sortable:false,resize:true});this._viewsByCid={};this.collection.on("add",function(i,g,h){this.views.add(this.createAttachmentView(i),{at:this.collection.indexOf(i)})},this);this.collection.on("remove",function(j,g,i){var h=this._viewsByCid[j.cid];delete this._viewsByCid[j.cid];if(h){h.remove()}},this);this.collection.on("reset",this.render,this);this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value();this.initSortable();_.bindAll(this,"css");this.model.on("change:edge change:gutter",this.css,this);this._resizeCss=_.debounce(_.bind(this.css,this),this.refreshSensitivity);if(this.options.resize){e(window).on("resize.attachments",this._resizeCss)}this.css()},dispose:function(){this.collection.props.off(null,null,this);e(window).off("resize.attachments",this._resizeCss);f.View.prototype.dispose.apply(this,arguments)},css:function(){var g=e("#"+this.el.id+"-css");if(g.length){g.remove()}f.view.Attachments.$head().append(this.cssTemplate({id:this.el.id,edge:this.edge(),gutter:this.model.get("gutter")}))},edge:function(){var i=this.model.get("edge"),j,h,g;if(!this.$el.is(":visible")){return i}j=this.model.get("gutter")*2;h=this.$el.width()-j;g=Math.ceil(h/(i+j));i=Math.floor((h-(g*j))/g);return i},initSortable:function(){var g=this.collection;if(!this.options.sortable||!e.fn.sortable){return}this.$el.sortable(_.extend({disabled:!!g.comparator,containment:this.$el,tolerance:"pointer",start:function(h,i){i.item.data("sortableIndexStart",i.item.index())},update:function(j,k){var i=g.at(k.item.data("sortableIndexStart")),h=g.comparator;delete g.comparator;g.remove(i,{silent:true}).add(i,{silent:true,at:k.item.index()});g.comparator=h;g.trigger("reset",g);g.saveMenuOrder()}},this.options.sortable));g.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!g.comparator)},this);this.collection.props.on("change:orderby",this.refreshSortable,this);this.refreshSortable()},refreshSortable:function(){if(!this.options.sortable||!e.fn.sortable){return}var i=this.collection,h=i.props.get("orderby"),g="menuOrder"===h||!i.comparator;this.$el.sortable("option","disabled",!g)},createAttachmentView:function(h){var g=new this.options.AttachmentView({controller:this.controller,model:h,collection:this.collection,selection:this.options.selection});return this._viewsByCid[h.cid]=g},prepare:function(){if(this.collection.length){this.views.set(this.collection.map(this.createAttachmentView,this))}else{this.views.unset();this.collection.more().done(this.scroll)}},ready:function(){this.scroll()},scroll:function(g){if(!this.$el.is(":visible")){return}if(this.collection.hasMore()&&this.el.scrollHeight<this.el.scrollTop+(this.el.clientHeight*this.options.refreshThreshold)){this.collection.more().done(this.scroll)}}},{$head:(function(){var g;return function(){return g=g||e("head")}}())});f.view.Search=f.View.extend({tagName:"input",className:"search",attributes:{type:"search",placeholder:b.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){this.el.value=this.model.escape("search");return this},search:function(g){if(g.target.value){this.model.set("search",g.target.value)}else{this.model.unset("search")}}});f.view.AttachmentFilters=f.View.extend({tagName:"select",className:"attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters();_.extend(this.filters,this.options.filters);this.$el.html(_.chain(this.filters).map(function(g,h){return{el:e("<option></option>").val(h).text(g.text)[0],priority:g.priority||50}},this).sortBy("priority").pluck("el").value());this.model.on("change",this.select,this);this.select()},createFilters:function(){this.filters={}},change:function(h){var g=this.filters[this.el.value];if(g){this.model.set(g.props)}},select:function(){var g=this.model,i="all",h=g.toJSON();_.find(this.filters,function(k,l){var j=_.all(k.props,function(n,m){return n===(_.isUndefined(h[m])?null:h[m])});if(j){return i=l}});this.$el.val(i)}});f.view.AttachmentFilters.Uploaded=f.view.AttachmentFilters.extend({createFilters:function(){var h=this.model.get("type"),g=f.view.settings.mimeTypes,i;if(g&&h){i=g[h]}this.filters={all:{text:i||b.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:b.uploadedToThisPost,props:{uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}}}});f.view.AttachmentFilters.All=f.view.AttachmentFilters.extend({createFilters:function(){var g={};_.each(f.view.settings.mimeTypes||{},function(i,h){g[h]={text:i,props:{type:h,uploadedTo:null,orderby:"date",order:"DESC"}}});g.all={text:b.allMediaItems,props:{type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10};g.uploaded={text:b.uploadedToThisPost,props:{type:null,uploadedTo:f.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20};this.filters=g}});f.view.AttachmentsBrowser=f.View.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:false,search:true,display:false,AttachmentView:f.view.Attachment.Library});this.createToolbar();this.updateContent();this.createSidebar();this.collection.on("add remove reset",this.updateContent,this)},dispose:function(){this.options.selection.off(null,null,this);f.View.prototype.dispose.apply(this,arguments);return this},createToolbar:function(){var h,g;this.toolbar=new f.view.Toolbar({controller:this.controller});this.views.add(this.toolbar);h=this.options.filters;if("uploaded"===h){g=f.view.AttachmentFilters.Uploaded}else{if("all"===h){g=f.view.AttachmentFilters.All}}if(g){this.toolbar.set("filters",new g({controller:this.controller,model:this.collection.props,priority:-80}).render())}if(this.options.search){this.toolbar.set("search",new f.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())}if(this.options.dragInfo){this.toolbar.set("dragInfo",new f.View({el:e('<div class="instructions">'+b.dragInfo+"</div>")[0],priority:-40}))}},updateContent:function(){var g=this;if(!this.attachments){this.createAttachments()}if(!this.collection.length){this.collection.more().done(function(){if(!g.collection.length){g.createUploader()}})}},removeContent:function(){_.each(["attachments","uploader"],function(g){if(this[g]){this[g].remove();delete this[g]}},this)},createUploader:function(){this.removeContent();this.uploader=new f.view.UploaderInline({controller:this.controller,status:false,message:b.noItemsFound});this.views.add(this.uploader)},createAttachments:function(){this.removeContent();this.attachments=new f.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,AttachmentView:this.options.AttachmentView});this.views.add(this.attachments)},createSidebar:function(){var g=this.options,h=g.selection,i=this.sidebar=new f.view.Sidebar({controller:this.controller});this.views.add(i);if(this.controller.uploader){i.set("uploads",new f.view.UploaderStatus({controller:this.controller,priority:40}))}h.on("selection:single",this.createSingle,this);h.on("selection:unsingle",this.disposeSingle,this);if(h.single()){this.createSingle()}},createSingle:function(){var h=this.sidebar,i=this.options.selection.single(),g={};h.set("details",new f.view.Attachment.Details({controller:this.controller,model:i,priority:80}));h.set("compat",new f.view.AttachmentCompat({controller:this.controller,model:i,priority:120}));if(this.options.display){h.set("display",new f.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(i),attachment:i,priority:160,userSettings:this.model.get("displayUserSettings")}))}},disposeSingle:function(){var g=this.sidebar;g.unset("details");g.unset("compat");g.unset("display")}});f.view.Selection=f.View.extend({tagName:"div",className:"media-selection",template:f.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:false,clearable:true});this.attachments=new f.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model({edge:40,gutter:5})});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){return}var h=this.collection,g="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!h.length);this.$el.toggleClass("one",1===h.length);this.$el.toggleClass("editing",g);this.$(".count").text(b.selected.replace("%d",h.length))},edit:function(g){g.preventDefault();if(this.options.editable){this.options.editable.call(this,this.collection)}},clear:function(g){g.preventDefault();this.collection.reset()}});f.view.Attachment.Selection=f.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});f.view.Attachments.Selection=f.view.Attachments.extend({events:{},initialize:function(){_.defaults(this.options,{sortable:true,resize:false,AttachmentView:f.view.Attachment.Selection});return f.view.Attachments.prototype.initialize.apply(this,arguments)}});f.view.Attachment.EditSelection=f.view.Attachment.Selection.extend({buttons:{close:true}});f.view.Settings=f.View.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model();this.model.on("change",this.updateChanges,this)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){f.View.prototype.render.apply(this,arguments);_(this.model.attributes).chain().keys().each(this.update,this);return this},update:function(j){var k=this.model.get(j),i=this.$('[data-setting="'+j+'"]'),g,h;if(!i.length){return}if(i.is("select")){h=i.find('[value="'+k+'"]');if(h.length){i.find("option").prop("selected",false);h.prop("selected",true)}else{this.model.set(j,i.find(":selected").val())}}else{if(i.hasClass("button-group")){g=i.find("button").removeClass("active");g.filter('[value="'+k+'"]').addClass("active")}else{if(i.is('input[type="text"], textarea')){if(!i.is(":focus")){i.val(k)}}else{if(i.is('input[type="checkbox"]')){i.attr("checked",!!k)}}}}},updateHandler:function(i){var h=e(i.target).closest("[data-setting]"),j=i.target.value,g;i.preventDefault();if(!h.length){return}if(h.is('input[type="checkbox"]')){j=h[0].checked}this.model.set(h.data("setting"),j);if(g=h.data("userSetting")){setUserSetting(g,j)}},updateChanges:function(h,g){if(h.hasChanged()){_(h.changed).chain().keys().each(this.update,this)}}});f.view.Settings.AttachmentDisplay=f.view.Settings.extend({className:"attachment-display-settings",template:f.template("attachment-display-settings"),initialize:function(){var g=this.options.attachment;_.defaults(this.options,{userSettings:false});f.view.Settings.prototype.initialize.apply(this,arguments);this.model.on("change:link",this.updateLinkTo,this);if(g){g.on("change:uploading",this.render,this)}},dispose:function(){var g=this.options.attachment;if(g){g.off(null,null,this)}f.view.Settings.prototype.dispose.apply(this,arguments)},render:function(){var g=this.options.attachment;if(g){_.extend(this.options,{sizes:g.get("sizes"),type:g.get("type")})}f.view.Settings.prototype.render.call(this);this.updateLinkTo();return this},updateLinkTo:function(){var h=this.model.get("link"),i=this.$(".link-to-custom"),g=this.options.attachment;if("none"===h||"embed"===h||(!g&&"custom"!==h)){i.hide();return}if(g){if("post"===h){i.val(g.get("link"))}else{if("file"===h){i.val(g.get("url"))}else{if(!this.model.get("linkUrl")){i.val("http://")}}}i.prop("readonly","custom"!==h)}i.show();if(i.is(":visible")){i.focus()[0].select()}}});f.view.Settings.Gallery=f.view.Settings.extend({className:"gallery-settings",template:f.template("gallery-settings")});f.view.Attachment.Details=f.view.Attachment.extend({tagName:"div",className:"attachment-details",template:f.template("attachment-details"),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 .edit-attachment":"editAttachment","click .refresh-attachment":"refreshAttachment"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});f.view.Attachment.prototype.initialize.apply(this,arguments)},render:function(){f.view.Attachment.prototype.render.apply(this,arguments);this.focusManager.focus();return this},deleteAttachment:function(g){g.preventDefault();if(confirm(b.warnDelete)){this.model.destroy()}},editAttachment:function(g){this.$el.addClass("needs-refresh")},refreshAttachment:function(g){this.$el.removeClass("needs-refresh");g.preventDefault();this.model.fetch()}});f.view.AttachmentCompat=f.View.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.focusManager=new f.view.FocusManager({el:this.el});this.model.on("change:compat",this.render,this)},dispose:function(){if(this.$(":focus").length){this.save()}return f.View.prototype.dispose.apply(this,arguments)},render:function(){var g=this.model.get("compat");if(!g||!g.item){return}this.views.detach();this.$el.html(g.item);this.views.render();this.focusManager.focus();return this},preventDefault:function(g){g.preventDefault()},save:function(g){var h={};if(g){g.preventDefault()}_.each(this.$el.serializeArray(),function(i){h[i.name]=i.value});this.model.saveCompat(h)}});f.view.Iframe=f.View.extend({className:"media-iframe",render:function(){this.views.detach();this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />');this.views.render();return this}});f.view.Embed=f.View.extend({className:"media-embed",initialize:function(){this.url=new f.view.EmbedUrl({controller:this.controller,model:this.model.props}).render();this.views.set([this.url]);this.refresh();this.model.on("change:type",this.refresh,this);this.model.on("change:loading",this.loading,this)},settings:function(g){if(this._settings){this._settings.remove()}this._settings=g;this.views.add(g)},refresh:function(){var h=this.model.get("type"),g;if("image"===h){g=f.view.EmbedImage}else{if("link"===h){g=f.view.EmbedLink}else{return}}this.settings(new g({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});f.view.EmbedUrl=f.View.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.$input=e("<input/>").attr("type","text").val(this.model.get("url"));this.input=this.$input[0];this.spinner=e('<span class="spinner" />')[0];this.$el.append([this.input,this.spinner]);this.model.on("change:url",this.render,this)},render:function(){var g=this.$input;if(g.is(":focus")){return}this.input.value=this.model.get("url")||"http://";f.View.prototype.render.apply(this,arguments);return this},ready:function(){this.focus()},url:function(g){this.model.set("url",g.target.value)},focus:function(){var g=this.$input;if(g.is(":visible")){g.focus()[0].select()}}});f.view.EmbedLink=f.view.Settings.extend({className:"embed-link-settings",template:f.template("embed-link-settings")});f.view.EmbedImage=f.view.Settings.AttachmentDisplay.extend({className:"embed-image-settings",template:f.template("embed-image-settings"),initialize:function(){f.view.Settings.AttachmentDisplay.prototype.initialize.apply(this,arguments);this.model.on("change:url",this.updateImage,this)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/mediaelement/background.png b/wp-includes/js/mediaelement/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd428412ae26af13dab448ec833b1cb603e37ee9
GIT binary patch
literal 166
zcmeAS@N?(olHy`uVBq!ia0y~yU@!t<4mJh`208nVjSLJ7k|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+7(6^(978H@y*Y0v$e_T(u#x?LUY3A3&)y@Bex|ww
j(M~QzfG7Rx2N+y>8O3+Juk2x9U|{fc^>bP0l+XkK?WQjj

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/bigplay.png b/wp-includes/js/mediaelement/bigplay.png
new file mode 100644
index 0000000000000000000000000000000000000000..694553e31c387188b6bde397a5200c212aff2dc5
GIT binary patch
literal 3001
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
V{5N~47Xt$WgQu&X%Q~loCIC=jhBg2I

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/bigplay.svg b/wp-includes/js/mediaelement/bigplay.svg
new file mode 100644
index 000000000..c2f62bbc0
--- /dev/null
+++ b/wp-includes/js/mediaelement/bigplay.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?>
<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg id="bigplay-gradient.fw-Page%201" 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"
>
	<defs>
		<radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
			<stop stop-color="#222222" stop-opacity="0" offset="70%"/>
			<stop stop-color="#222222" stop-opacity="0.0118" offset="70.202%"/>
			<stop stop-color="#333333" stop-opacity="1" offset="85%"/>
			<stop stop-color="#333333" stop-opacity="0" offset="100%"/>
		</radialGradient>
		<radialGradient id="gradient2" cx="50%" cy="50%" r="50%">
			<stop stop-color="#bbbbbb" stop-opacity="0" offset="70%"/>
			<stop stop-color="#bbbbbb" stop-opacity="0.0118" offset="70.202%"/>
			<stop stop-color="#bbbbbb" stop-opacity="1" offset="85%"/>
			<stop stop-color="#bbbbbb" stop-opacity="0" offset="100%"/>
		</radialGradient>
		<filter id="filter1" x="-100%" y="-100%" width="300%" height="300%">
			<!-- Glow -->
			<feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.251 0"/>
			<feMorphology result="out" in="out" operator="dilate" radius="3"/>
			<feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
			<feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow1"/>
		</filter>
		<filter id="filter2" x="-100%" y="-100%" width="300%" height="300%">
			<!-- Glow -->
			<feColorMatrix result="out" in="SourceGraphic" type="matrix" values="0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.8667 0  0 0 0 0.251 0"/>
			<feMorphology result="out" in="out" operator="dilate" radius="3"/>
			<feGaussianBlur result="out" in="out" stdDeviation="1.5"/>
			<feBlend in="SourceGraphic" in2="out" mode="normal" result="Glow2"/>
		</filter>
	</defs>
	<g id="Background">
	</g>
	<g id="dark%20shadow">
		<path d="M 22 50 C 22 34.5358 34.5358 22 50 22 C 65.4642 22 78 34.5358 78 50 C 78 65.4642 65.4642 78 50 78 C 34.5358 78 22 65.4642 22 50 ZM 5 50 C 5 74.8531 25.1469 95 50 95 C 74.8531 95 95 74.8531 95 50 C 95 25.1469 74.8531 5 50 5 C 25.1469 5 5 25.1469 5 50 Z" fill="url(#gradient1)"/>
		<path d="M 22 150 C 22 134.5358 34.5358 122 50 122 C 65.4642 122 78 134.5358 78 150 C 78 165.4642 65.4642 178 50 178 C 34.5358 178 22 165.4642 22 150 ZM 5 150 C 5 174.8531 25.1469 195 50 195 C 74.8531 195 95 174.8531 95 150 C 95 125.1469 74.8531 105 50 105 C 25.1469 105 5 125.1469 5 150 Z" fill="url(#gradient2)"/>
	</g>
	<g id="dark">
		<path id="Polygon" filter="url(#filter1)" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff"/>
		<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"/>
	</g>
	<g id="light">
		<path id="Polygon2" filter="url(#filter2)" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff"/>
		<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"/>
	</g>
</svg>
\ No newline at end of file
diff --git a/wp-includes/js/mediaelement/controls.png b/wp-includes/js/mediaelement/controls.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6a857d800b64264443af4609e0ebf7175593d8f
GIT binary patch
literal 1892
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

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/controls.svg b/wp-includes/js/mediaelement/controls.svg
new file mode 100644
index 000000000..af3bd4160
--- /dev/null
+++ b/wp-includes/js/mediaelement/controls.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?>
<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg id="controls.fw-Page%201" viewBox="0 0 144 32" 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="144px" height="32px"
>
	<defs>
		<radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#f2f2f2" stop-opacity="0.2" offset="100%"/>
		</radialGradient>
		<linearGradient id="gradient2" x1="50%" y1="-7.8652%" x2="50%" y2="249.6629%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient3" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient4" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient5" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient6" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient7" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient8" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient9" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient10" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient11" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient12" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient13" x1="40%" y1="-140%" x2="40%" y2="98.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient14" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient15" x1="60%" y1="-140%" x2="60%" y2="98.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient16" x1="50%" y1="0%" x2="50%" y2="298.4375%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient17" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient18" x1="50%" y1="-200%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient19" x1="50%" y1="-200%" x2="50%" y2="110.9375%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient20" x1="55%" y1="0%" x2="55%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient21" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="99.4444%"/>
		</linearGradient>
	</defs>
	<g id="BG">
	</g>
	<g id="controls">
		<path id="Line" d="M 98.5 7.5 L 109.5 7.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Line2" d="M 98.5 3.5 L 109.5 3.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Line3" d="M 98.5 11.5 L 109.5 11.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Ellipse" d="M 108 11.5 C 108 10.6716 108.4477 10 109 10 C 109.5523 10 110 10.6716 110 11.5 C 110 12.3284 109.5523 13 109 13 C 108.4477 13 108 12.3284 108 11.5 Z" fill="#ffffff"/>
		<path id="Ellipse2" d="M 104 7.5 C 104 6.6716 104.4477 6 105 6 C 105.5523 6 106 6.6716 106 7.5 C 106 8.3284 105.5523 9 105 9 C 104.4477 9 104 8.3284 104 7.5 Z" fill="#ffffff"/>
		<path id="Ellipse3" d="M 108 3.5 C 108 2.6716 108.4477 2 109 2 C 109.5523 2 110 2.6716 110 3.5 C 110 4.3284 109.5523 5 109 5 C 108.4477 5 108 4.3284 108 3.5 Z" fill="#ffffff"/>
	</g>
	<g id="backlight">
		<g id="off">
			<rect x="83" y="21" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
		</g>
		<g id="on">
			<path id="Ellipse4" d="M 81 8 C 81 5.2385 84.134 3 88 3 C 91.866 3 95 5.2385 95 8 C 95 10.7615 91.866 13 88 13 C 84.134 13 81 10.7615 81 8 Z" fill="url(#gradient1)"/>
			<rect x="83" y="5" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
		</g>
	</g>
	<g id="loop">
		<g id="on2">
			<path d="M 73.795 4.205 C 75.2155 4.8785 76.2 6.3234 76.2 8 C 76.2 10.3196 74.3196 12.2 72 12.2 C 69.6804 12.2 67.8 10.3196 67.8 8 C 67.8 6.3234 68.7845 4.8785 70.205 4.205 L 68.875 2.875 C 67.1501 3.9289 66 5.8306 66 8 C 66 11.3138 68.6862 14 72 14 C 75.3138 14 78 11.3138 78 8 C 78 5.8306 76.8499 3.9289 75.125 2.875 L 73.795 4.205 Z" fill="url(#gradient2)"/>
			<path d="M 71 2 L 66 2 L 71 7 L 71 2 Z" fill="url(#gradient3)"/>
		</g>
		<g id="off2">
			<path d="M 73.795 20.205 C 75.2155 20.8785 76.2 22.3234 76.2 24 C 76.2 26.3196 74.3196 28.2 72 28.2 C 69.6804 28.2 67.8 26.3196 67.8 24 C 67.8 22.3234 68.7845 20.8785 70.205 20.205 L 68.875 18.875 C 67.1501 19.9289 66 21.8306 66 24 C 66 27.3138 68.6862 30 72 30 C 75.3138 30 78 27.3138 78 24 C 78 21.8306 76.8499 19.9289 75.125 18.875 L 73.795 20.205 Z" fill="#a8a8b7"/>
			<path d="M 71 18 L 66 18 L 71 23 L 71 18 Z" fill="#a8a8b7"/>
		</g>
	</g>
	<g id="cc">
		<rect visibility="hidden" x="49" y="2" width="14" height="12" stroke="#b0b0b0" stroke-width="1" fill="none"/>
		<text visibility="hidden" x="49" y="17" width="14" fill="#ffffff" style="font-size: 10px; color: #ffffff; font-family: Arial; text-align: center; "><tspan><![CDATA[cc]]></tspan></text>
		<path d="M 55 7 C 50.2813 3.7813 50.063 12.9405 55 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path d="M 60 7 C 55.2813 3.7813 55.063 12.9405 60 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path d="M 50 3 L 62 3 L 62 13 L 50 13 L 50 3 ZM 49 2 L 49 14 L 63 14 L 63 2 L 49 2 Z" fill="url(#gradient4)"/>
		<rect x="49" y="2" width="14" height="12" fill="none"/>
	</g>
	<g id="volume">
		<g id="no%20sound">
			<rect x="17" y="5" width="5" height="6" fill="url(#gradient5)"/>
			<path d="M 21 5 L 25 2 L 25 14 L 21 11.0625 L 21 5 Z" fill="url(#gradient6)"/>
		</g>
		<g id="sound%20bars">
			<rect x="17" y="21" width="5" height="6" fill="url(#gradient7)"/>
			<path d="M 21 21 L 25 18 L 25 30 L 21 27.0625 L 21 21 Z" fill="url(#gradient8)"/>
			<path d="M 27 18 C 27 18 30.0625 17.375 30 24 C 29.9375 30.625 27 30 27 30 " stroke="#ffffff" stroke-width="1" fill="none"/>
			<path d="M 26 21.0079 C 26 21.0079 28.041 20.6962 27.9994 24 C 27.9577 27.3038 26 26.9921 26 26.9921 " stroke="#ffffff" stroke-width="1" fill="none"/>
		</g>
	</g>
	<g id="play/pause">
		<g id="play">
			<path id="Polygon" d="M 14 8.5 L 3 14 L 3 3 L 14 8.5 Z" fill="url(#gradient9)"/>
		</g>
		<g id="pause">
			<rect x="3" y="18" width="3" height="12" fill="url(#gradient10)"/>
			<rect x="10" y="18" width="3" height="12" fill="url(#gradient11)"/>
		</g>
	</g>
	<g id="fullscreen">
		<g id="enter%201">
			<path d="M 34 2 L 39 2 L 34 7 L 34 2 Z" fill="url(#gradient12)"/>
			<path d="M 34 14 L 39 14 L 34 9 L 34 14 Z" fill="url(#gradient13)"/>
			<path d="M 46 2 L 41 2 L 46 7 L 46 2 Z" fill="url(#gradient14)"/>
			<path d="M 46 14 L 41 14 L 46 9 L 46 14 Z" fill="url(#gradient15)"/>
		</g>
		<g id="exit">
			<path d="M 42 22 L 46 22 L 42 18 L 42 22 Z" fill="url(#gradient16)"/>
			<path d="M 38 22 L 38 18 L 34 22 L 38 22 Z" fill="url(#gradient17)"/>
			<path d="M 38 26 L 34 26 L 38 30 L 38 26 Z" fill="url(#gradient18)"/>
			<path d="M 42 26 L 42 30 L 46 26 L 42 26 Z" fill="url(#gradient19)"/>
		</g>
	</g>
	<g id="stop">
		<rect x="115" y="3" width="10" height="10" fill="url(#gradient20)"/>
	</g>
	<g id="chooser">
		<path d="M 135.2346 6.1522 C 136.2551 5.7295 137.4251 6.2141 137.8478 7.2346 C 138.2704 8.2551 137.7859 9.425 136.7654 9.8478 C 135.7449 10.2705 134.5749 9.7859 134.1522 8.7654 C 133.7295 7.7449 134.2141 6.5749 135.2346 6.1522 ZM 133.2735 1.4176 L 136 4.0054 L 138.7265 1.4176 L 138.8246 5.1754 L 142.5824 5.2735 L 139.9946 8 L 142.5824 10.7265 L 138.8246 10.8246 L 138.7265 14.5824 L 136 11.9946 L 133.2735 14.5824 L 133.1754 10.8246 L 129.4176 10.7265 L 132.0054 8 L 129.4176 5.2735 L 133.1754 5.1754 L 133.2735 1.4176 Z" fill="url(#gradient21)"/>
	</g>
</svg>
\ No newline at end of file
diff --git a/wp-includes/js/mediaelement/flashmediaelement.swf b/wp-includes/js/mediaelement/flashmediaelement.swf
new file mode 100644
index 0000000000000000000000000000000000000000..c5d205a0ad73921b77ac6f484a1d71775ed2b23e
GIT binary patch
literal 29142
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
A=l}o!

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/loading.gif b/wp-includes/js/mediaelement/loading.gif
new file mode 100644
index 0000000000000000000000000000000000000000..612222be5e474c36c345042dd6f697fa1d16a6a0
GIT binary patch
literal 6224
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

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/mediaelement-and-player.min.js b/wp-includes/js/mediaelement/mediaelement-and-player.min.js
new file mode 100644
index 000000000..f9d9a0b99
--- /dev/null
+++ b/wp-includes/js/mediaelement/mediaelement-and-player.min.js
@@ -0,0 +1,173 @@
+/*!
+* MediaElement.js
+* HTML5 <video> and <audio> shim and player
+* http://mediaelementjs.com/
+*
+* Creates a JavaScript object that mimics HTML5 MediaElement API
+* for browsers that don't understand HTML5 or can't play the provided codec
+* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
+*
+* Copyright 2010-2013, John Dyer (http://j.hn)
+* License: MIT
+*
+*/var mejs=mejs||{};mejs.version="2.13.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"]}],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");b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>';return b.firstChild.href},getScriptPath:function(a){for(var b=0,c,d="",e="",f,g,h=document.getElementsByTagName("script"),l=h.length,j=a.length;b<l;b++){f=h[b].src;c=f.lastIndexOf("/");if(c>-1){g=f.substring(c+
+1);f=f.substring(0,c+1)}else{g=f;f=""}for(c=0;c<j;c++){e=a[c];e=g.indexOf(e);if(e>-1){d=f;break}}if(d!=="")break}return d},secondsToTimeCode:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d=="undefined")d=25;var e=Math.floor(a/3600)%24,f=Math.floor(a/60)%60,g=Math.floor(a%60);a=Math.floor((a%1*d).toFixed(3));return(b||e>0?(e<10?"0"+e:e)+":":"")+(f<10?"0"+f:f)+":"+(g<10?"0"+g:g)+(c?":"+(a<10?"0"+a:a):"")},timeCodeToSeconds:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d==
+"undefined")d=25;a=a.split(":");b=parseInt(a[0],10);var e=parseInt(a[1],10),f=parseInt(a[2],10),g=0,h=0;if(c)g=parseInt(a[3])/d;return h=b*3600+e*60+f+g},convertSMPTEtoSeconds:function(a){if(typeof a!="string")return false;a=a.replace(",",".");var b=0,c=a.indexOf(".")!=-1?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++){d=1;if(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);if(b&&/object|embed/i.test(b.nodeName))if(mejs.MediaFeatures.isIE){b.style.display=
+"none";(function(){b.readyState==4?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)})()}else b.parentNode.removeChild(b)},removeObjectInIE:function(a){if(a=document.getElementById(a)){for(var b in a)if(typeof a[b]=="function")a[b]=null;a.parentNode.removeChild(a)}}};
+mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];b[1]=b[1]||0;b[2]=b[2]||0;return c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?true:false},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=[0,0,0],f;if(typeof this.nav.plugins!="undefined"&&typeof this.nav.plugins[a]=="object"){if((c=this.nav.plugins[a].description)&&
+!(typeof this.nav.mimeTypes!="undefined"&&this.nav.mimeTypes[b]&&!this.nav.mimeTypes[b].enabledPlugin)){e=c.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(a=0;a<e.length;a++)e[a]=parseInt(e[a].match(/\d+/),10)}}else if(typeof window.ActiveXObject!="undefined")try{if(f=new ActiveXObject(c))e=d(f)}catch(g){}return e}};
+mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[];if(a=a.GetVariable("$version")){a=a.split(" ")[1].split(",");b=[parseInt(a[0],10),parseInt(a[1],10),parseInt(a[2],10)]}return b});
+mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(d,e,f,g){for(;d.isVersionSupported(e[0]+"."+e[1]+"."+e[2]+"."+e[3]);)e[f]+=g;e[f]-=g};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);return b});
+mejs.MediaFeatures={init:function(){var a=this,b=document,c=mejs.PluginDetector.nav,d=mejs.PluginDetector.ua.toLowerCase(),e,f=["source","track","audio","video"];a.isiPad=d.match(/ipad/i)!==null;a.isiPhone=d.match(/iphone/i)!==null;a.isiOS=a.isiPhone||a.isiPad;a.isAndroid=d.match(/android/i)!==null;a.isBustedAndroid=d.match(/android 2\.[12]/)!==null;a.isBustedNativeHTTPS=location.protocol==="https:"&&(d.match(/android [12]\./)!==null||d.match(/macintosh.* version.* safari/)!==null);a.isIE=c.appName.toLowerCase().indexOf("microsoft")!=
+-1;a.isChrome=d.match(/chrome/gi)!==null;a.isFirefox=d.match(/firefox/gi)!==null;a.isWebkit=d.match(/webkit/gi)!==null;a.isGecko=d.match(/gecko/gi)!==null&&!a.isWebkit;a.isOpera=d.match(/opera/gi)!==null;a.hasTouch="ontouchstart"in window&&window.ontouchstart!=null;a.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(c=0;c<f.length;c++)e=document.createElement(f[c]);a.supportsMediaTag=typeof e.canPlayType!=="undefined"||a.isBustedAndroid;
+try{e.canPlayType("video/mp4")}catch(g){a.supportsMediaTag=false}a.hasSemiNativeFullScreen=typeof e.webkitEnterFullscreen!=="undefined";a.hasWebkitNativeFullScreen=typeof e.webkitRequestFullScreen!=="undefined";a.hasMozNativeFullScreen=typeof e.mozRequestFullScreen!=="undefined";a.hasTrueNativeFullScreen=a.hasWebkitNativeFullScreen||a.hasMozNativeFullScreen;a.nativeFullScreenEnabled=a.hasTrueNativeFullScreen;if(a.hasMozNativeFullScreen)a.nativeFullScreenEnabled=e.mozFullScreenEnabled;if(this.isChrome)a.hasSemiNativeFullScreen=
+false;if(a.hasTrueNativeFullScreen){a.fullScreenEventName=a.hasWebkitNativeFullScreen?"webkitfullscreenchange":"mozfullscreenchange";a.isFullScreen=function(){if(e.mozRequestFullScreen)return b.mozFullScreen;else if(e.webkitRequestFullScreen)return b.webkitIsFullScreen};a.requestFullScreen=function(h){if(a.hasWebkitNativeFullScreen)h.webkitRequestFullScreen();else a.hasMozNativeFullScreen&&h.mozRequestFullScreen()};a.cancelFullScreen=function(){if(a.hasWebkitNativeFullScreen)document.webkitCancelFullScreen();
+else a.hasMozNativeFullScreen&&document.mozCancelFullScreen()}}if(a.hasSemiNativeFullScreen&&d.match(/mac os x 10_5/i)){a.hasNativeFullScreen=false;a.hasSemiNativeFullScreen=false}}};mejs.MediaFeatures.init();
+mejs.HtmlMediaElement={pluginType:"native",isFullScreen:false,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(typeof a=="string")this.src=a;else{var c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.src=c.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:false,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:true,ended:false,seeking:false,duration:0,error:null,tagName:"",muted:false,volume:1,currentTime:0,play:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.playVideo():this.pluginApi.playMedia();this.paused=false}},load:function(){if(this.pluginApi!=null){this.pluginType!="youtube"&&this.pluginApi.loadMedia();this.paused=
+false}},pause:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia();this.paused=true}},stop:function(){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.stopVideo():this.pluginApi.stopMedia();this.paused=true}},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++){d=e[b];if(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){this.pluginApi!=null&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){this.pluginApi!=null&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if(typeof a=="string"){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a));this.src=mejs.Utility.absolutizeUrl(a)}else{var b,c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src));
+this.src=mejs.Utility.absolutizeUrl(a);break}}}},setCurrentTime:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a);this.currentTime=a}},setVolume:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.setVolume(a*100):this.pluginApi.setVolume(a);this.volume=a}},setMuted:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){a?this.pluginApi.mute():this.pluginApi.unMute();this.muted=a;this.dispatchEvent("volumechange")}else this.pluginApi.setMuted(a);
+this.muted=a}},setVideoSize:function(a,b){if(this.pluginElement.style){this.pluginElement.style.width=a+"px";this.pluginElement.style.height=b+"px"}this.pluginApi!=null&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(true)},exitFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&
+this.setFullscreen(false)},addEventListener:function(a,b){this.events[a]=this.events[a]||[];this.events[a].push(b)},removeEventListener:function(a,b){if(!a){this.events={};return true}var c=this.events[a];if(!c)return true;if(!b){this.events[a]=[];return true}for(i=0;i<c.length;i++)if(c[i]===b){this.events[a].splice(i,1);return true}return false},dispatchEvent:function(a){var b,c,d=this.events[a];if(d){c=Array.prototype.slice.call(arguments,1);for(b=0;b<d.length;b++)d[b].apply(null,c)}},hasAttribute:function(a){return a in
+this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){if(this.hasAttribute(a))return this.attributes[a];return""},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}b.pluginApi!=null&&b.success&&b.success(b,c)}},fireEvent:function(a,b,c){var d,e;if(a=this.pluginMediaElements[a]){b={type:b,target:a};for(d in c){a[d]=c[d];b[d]=c[d]}e=c.bufferedTime||0;b.target.buffered=b.buffered={start:function(){return 0},end:function(){return e},length:1};a.dispatchEvent(b.type,b)}}};
+mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:false,httpsBasicAuthSite:false,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",enablePluginSmoothing:false,enablePseudoStreaming:false,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,
+defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:0.8,success:function(){},error:function(){}};mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)};
+mejs.HtmlMediaElementShim={create:function(a,b){var c=mejs.MediaElementDefaults,d=typeof a=="string"?document.getElementById(a):a,e=d.tagName.toLowerCase(),f=e==="audio"||e==="video",g=f?d.getAttribute("src"):d.getAttribute("href");e=d.getAttribute("poster");var h=d.getAttribute("autoplay"),l=d.getAttribute("preload"),j=d.getAttribute("controls"),k;for(k in b)c[k]=b[k];g=typeof g=="undefined"||g===null||g==""?null:g;e=typeof e=="undefined"||e===null?"":e;l=typeof l=="undefined"||l===null||l==="false"?
+"none":l;h=!(typeof h=="undefined"||h===null||h==="false");j=!(typeof j=="undefined"||j===null||j==="false");k=this.determinePlayback(d,c,mejs.MediaFeatures.supportsMediaTag,f,g);k.url=k.url!==null?mejs.Utility.absolutizeUrl(k.url):"";if(k.method=="native"){if(mejs.MediaFeatures.isBustedAndroid){d.src=k.url;d.addEventListener("click",function(){d.play()},false)}return this.updateNative(k,c,h,l)}else if(k.method!=="")return this.createPlugin(k,c,e,h,l,j);else{this.createErrorMessage(k,c,e);return this}},
+determinePlayback:function(a,b,c,d,e){var f=[],g,h,l,j={method:"",url:"",htmlMediaElement:a,isVideo:a.tagName.toLowerCase()!="audio"},k;if(typeof b.type!="undefined"&&b.type!=="")if(typeof b.type=="string")f.push({type:b.type,url:e});else for(g=0;g<b.type.length;g++)f.push({type:b.type[g],url:e});else if(e!==null){l=this.formatType(e,a.getAttribute("type"));f.push({type:l,url:e})}else for(g=0;g<a.childNodes.length;g++){h=a.childNodes[g];if(h.nodeType==1&&h.tagName.toLowerCase()=="source"){e=h.getAttribute("src");
+l=this.formatType(e,h.getAttribute("type"));h=h.getAttribute("media");if(!h||!window.matchMedia||window.matchMedia&&window.matchMedia(h).matches)f.push({type:l,url:e})}}if(!d&&f.length>0&&f[0].url!==null&&this.getTypeFromFile(f[0].url).indexOf("audio")>-1)j.isVideo=false;if(mejs.MediaFeatures.isBustedAndroid)a.canPlayType=function(m){return m.match(/video\/(mp4|m4v)/gi)!==null?"maybe":""};if(c&&(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="native")&&!(mejs.MediaFeatures.isBustedNativeHTTPS&&
+b.httpsBasicAuthSite===true)){if(!d){g=document.createElement(j.isVideo?"video":"audio");a.parentNode.insertBefore(g,a);a.style.display="none";j.htmlMediaElement=a=g}for(g=0;g<f.length;g++)if(a.canPlayType(f[g].type).replace(/no/,"")!==""||a.canPlayType(f[g].type.replace(/mp3/,"mpeg")).replace(/no/,"")!==""){j.method="native";j.url=f[g].url;break}if(j.method==="native"){if(j.url!==null)a.src=j.url;if(b.mode!=="auto_plugin")return j}}if(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="shim")for(g=
+0;g<f.length;g++){l=f[g].type;for(a=0;a<b.plugins.length;a++){e=b.plugins[a];h=mejs.plugins[e];for(c=0;c<h.length;c++){k=h[c];if(k.version==null||mejs.PluginDetector.hasPluginVersion(e,k.version))for(d=0;d<k.types.length;d++)if(l==k.types[d]){j.method=e;j.url=f[g].url;return j}}}}if(b.mode==="auto_plugin"&&j.method==="native")return j;if(j.method===""&&f.length>0)j.url=f[0].url;return j},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];a=a.substring(a.lastIndexOf(".")+1).toLowerCase();return(/(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi.test(a)?"video":"audio")+"/"+this.getTypeFromExtension(a)},getTypeFromExtension:function(a){switch(a){case "mp4":case "m4v":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){c=a.htmlMediaElement;var g=1,h=1,l="me_"+a.method+"_"+mejs.meIndex++,j=new mejs.PluginMediaElement(l,a.method,a.url),k=document.createElement("div"),
+m;j.tagName=c.tagName;for(m=0;m<c.attributes.length;m++){var n=c.attributes[m];n.specified==true&&j.setAttribute(n.name,n.value)}for(m=c.parentNode;m!==null&&m.tagName.toLowerCase()!="body";){if(m.parentNode.tagName.toLowerCase()=="p"){m.parentNode.parentNode.insertBefore(m,m.parentNode);break}m=m.parentNode}if(a.isVideo){g=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:c.getAttribute("width")!==null?c.getAttribute("width"):b.defaultVideoWidth;h=b.pluginHeight>0?b.pluginHeight:b.videoHeight>
+0?b.videoHeight:c.getAttribute("height")!==null?c.getAttribute("height"):b.defaultVideoHeight;g=mejs.Utility.encodeUrl(g);h=mejs.Utility.encodeUrl(h)}else if(b.enablePluginDebug){g=320;h=240}j.success=b.success;mejs.MediaPluginBridge.registerPluginElement(l,j,c);k.className="me-plugin";k.id=l+"_container";a.isVideo?c.parentNode.insertBefore(k,c):document.body.insertBefore(k,document.body.childNodes[0]);d=["id="+l,"isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+
+g,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+h,"pseudostreamstart="+b.pseudoStreamingStartQueryParam];if(a.url!==null)a.method=="flash"?d.push("file="+mejs.Utility.encodeUrl(a.url)):d.push("file="+a.url);b.enablePluginDebug&&d.push("debug=true");b.enablePluginSmoothing&&d.push("smoothing=true");b.enablePseudoStreaming&&d.push("pseudostreaming=true");f&&d.push("controls=true");if(b.pluginVars)d=d.concat(b.pluginVars);switch(a.method){case "silverlight":k.innerHTML=
+'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+l+'" name="'+l+'" width="'+g+'" height="'+h+'" class="mejs-shim"><param name="initParams" value="'+d.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":if(mejs.MediaFeatures.isIE){a=
+document.createElement("div");k.appendChild(a);a.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+l+'" width="'+g+'" height="'+h+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+d.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" /></object>'}else k.innerHTML=
+'<embed id="'+l+'" name="'+l+'" 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="'+d.join("&")+'" width="'+g+'" height="'+h+'" class="mejs-shim"></embed>';break;case "youtube":b=a.url.substr(a.url.lastIndexOf("=")+1);youtubeSettings={container:k,containerId:k.id,pluginMediaElement:j,pluginId:l,
+videoId:b,height:h,width:g};mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case "vimeo":j.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1);k.innerHTML='<iframe src="http://player.vimeo.com/video/'+j.vimeoid+'?portrait=0&byline=0&title=0" width="'+g+'" height="'+h+'" frameborder="0" class="mejs-shim"></iframe>'}c.style.display="none";c.removeAttribute("autoplay");return j},updateNative:function(a,
+b){var c=a.htmlMediaElement,d;for(d in mejs.HtmlMediaElement)c[d]=mejs.HtmlMediaElement[d];b.success(c,c);return c}};
+mejs.YouTubeApi={isIframeStarted:false,isIframeLoaded:false,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=true}},iframeQueue:[],enqueueIframe:function(a){if(this.isLoaded)this.createIframe(a);else{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(d){mejs.YouTubeApi.handleStateChange(d.data,c,b)}}})},createEvent:function(a,b,c){c={type:c,target:b};if(a&&a.getDuration){b.currentTime=c.currentTime=a.getCurrentTime();b.duration=c.duration=a.getDuration();c.paused=b.paused;
+c.ended=b.ended;c.muted=a.isMuted();c.volume=a.getVolume()/100;c.bytesTotal=a.getVideoBytesTotal();c.bufferedBytes=a.getVideoBytesLoaded();var d=c.bufferedBytes/c.bytesTotal*c.duration;c.target.buffered=c.buffered={start:function(){return 0},end:function(){return d},length:1}}b.dispatchEvent(c.type,c)},iFrameReady:function(){for(this.isIframeLoaded=this.isLoaded=true;this.iframeQueue.length>0;)this.createIframe(this.iframeQueue.pop())},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";if(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>'}else 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);a=b.containerId+"_callback";window[a]=function(e){mejs.YouTubeApi.handleStateChange(e,c,d)};c.addEventListener("onStateChange",a);setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250)},handleStateChange:function(a,b,c){switch(a){case -1:c.paused=true;c.ended=true;mejs.YouTubeApi.createEvent(b,c,"loadedmetadata");break;case 0:c.paused=false;
+c.ended=true;mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=false;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"play");mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=true;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress")}}};function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}window.mejs=mejs;window.MediaElement=mejs.MediaElement;
+(function(a,b){var c={locale:{language:"",strings:{}},methods:{}};c.locale.getLanguage=function(){return c.locale.language||navigator.language};if(typeof mejsL10n!="undefined")c.locale.language=mejsL10n.language;c.locale.INIT_LANGUAGE=c.locale.getLanguage();c.methods.checkPlain=function(d){var e,f,g={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};d=String(d);for(e in g)if(g.hasOwnProperty(e)){f=RegExp(e,"g");d=d.replace(f,g[e])}return d};c.methods.formatString=function(d,e){for(var f in e){switch(f.charAt(0)){case "@":e[f]=
+c.methods.checkPlain(e[f]);break;case "!":break;default:e[f]='<em class="placeholder">'+c.methods.checkPlain(e[f])+"</em>"}d=d.replace(f,e[f])}return d};c.methods.t=function(d,e,f){if(c.locale.strings&&c.locale.strings[f.context]&&c.locale.strings[f.context][d])d=c.locale.strings[f.context][d];if(e)d=c.methods.formatString(d,e);return d};c.t=function(d,e,f){if(typeof d==="string"&&d.length>0){var g=c.locale.getLanguage();f=f||{context:g};return c.methods.t(d,e,f)}else throw{name:"InvalidArgumentException",
+message:"First argument is either not a string or empty."};};b.i18n=c})(document,mejs);(function(a){if(typeof mejsL10n!="undefined")a[mejsL10n.language]=mejsL10n.strings})(mejs.i18n.locale.strings);(function(a){a.de={Fullscreen:"Vollbild","Go Fullscreen":"Vollbild an","Turn off Fullscreen":"Vollbild aus",Close:"Schlie\u00dfen"}})(mejs.i18n.locale.strings);
+(function(a){a.zh={Fullscreen:"\u5168\u87a2\u5e55","Go Fullscreen":"\u5168\u5c4f\u6a21\u5f0f","Turn off Fullscreen":"\u9000\u51fa\u5168\u5c4f\u6a21\u5f0f",Close:"\u95dc\u9589"}})(mejs.i18n.locale.strings);
+
+/*!
+ * MediaElementPlayer
+ * http://mediaelementjs.com/
+ *
+ * Creates a controller bar for HTML5 <video> add <audio> tags
+ * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
+ *
+ * Copyright 2010-2013, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ */if(typeof jQuery!="undefined")mejs.$=jQuery;else if(typeof ender!="undefined")mejs.$=ender;
+(function(f){mejs.MepDefaults={poster:"",showPosterWhenEnded:false,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return a.duration*0.05},defaultSeekForwardInterval:function(a){return a.duration*0.05},audioWidth:-1,audioHeight:-1,startVolume:0.8,loop:false,autoRewind:true,enableAutosize:true,alwaysShowHours:false,showTimecodeFrameCount:false,framesPerSecond:25,autosizeProgress:true,alwaysShowControls:false,
+hideVideoControlsOnLoad:false,clickToPlayPause:true,iPadUseNativeControls:false,iPhoneUseNativeControls:false,AndroidUseNativeControls:false,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:true,enableKeyboard:true,pauseOtherPlayers:true,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?b.play():b.pause()}},{keys:[38],action:function(a,b){b.setVolume(Math.min(b.volume+0.1,1))}},{keys:[40],action:function(a,b){b.setVolume(Math.max(b.volume-
+0.1,0))}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){if(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){if(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){if(typeof a.enterFullScreen!=
+"undefined")a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}}]};mejs.mepIndex=0;mejs.players={};mejs.MediaElementPlayer=function(a,b){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(a,b);this.$media=this.$node=f(a);this.node=this.media=this.$media[0];if(typeof this.node.player!="undefined")return this.node.player;else this.node.player=this;if(typeof b=="undefined")b=this.$node.data("mejsoptions");this.options=f.extend({},mejs.MepDefaults,b);this.id="mep_"+mejs.mepIndex++;
+mejs.players[this.id]=this;this.init();return this};mejs.MediaElementPlayer.prototype={hasFocus:false,controlsAreVisible:true,init:function(){var a=this,b=mejs.MediaFeatures,c=f.extend(true,{},a.options,{success:function(d,g){a.meReady(d,g)},error:function(d){a.handleError(d)}}),e=a.media.tagName.toLowerCase();a.isDynamic=e!=="audio"&&e!=="video";a.isVideo=a.isDynamic?a.options.isVideo:e!=="audio"&&a.options.isVideo;if(b.isiPad&&a.options.iPadUseNativeControls||b.isiPhone&&a.options.iPhoneUseNativeControls){a.$media.attr("controls",
+"controls");if(b.isiPad&&a.media.getAttribute("autoplay")!==null){a.media.load();a.media.play()}}else if(!(b.isAndroid&&a.options.AndroidUseNativeControls)){a.$media.removeAttr("controls");a.container=f('<div id="'+a.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'"><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(a.$media[0].className).insertBefore(a.$media);
+a.container.addClass((b.isAndroid?"mejs-android ":"")+(b.isiOS?"mejs-ios ":"")+(b.isiPad?"mejs-ipad ":"")+(b.isiPhone?"mejs-iphone ":"")+(a.isVideo?"mejs-video ":"mejs-audio "));if(b.isiOS){b=a.$media.clone();a.container.find(".mejs-mediaelement").append(b);a.$media.remove();a.$node=a.$media=b;a.node=a.media=b[0]}else a.container.find(".mejs-mediaelement").append(a.$media);a.controls=a.container.find(".mejs-controls");a.layers=a.container.find(".mejs-layers");b=a.isVideo?"video":"audio";e=b.substring(0,
+1).toUpperCase()+b.substring(1);a.width=a.options[b+"Width"]>0||a.options[b+"Width"].toString().indexOf("%")>-1?a.options[b+"Width"]:a.media.style.width!==""&&a.media.style.width!==null?a.media.style.width:a.media.getAttribute("width")!==null?a.$media.attr("width"):a.options["default"+e+"Width"];a.height=a.options[b+"Height"]>0||a.options[b+"Height"].toString().indexOf("%")>-1?a.options[b+"Height"]:a.media.style.height!==""&&a.media.style.height!==null?a.media.style.height:a.$media[0].getAttribute("height")!==
+null?a.$media.attr("height"):a.options["default"+e+"Height"];a.setPlayerSize(a.width,a.height);c.pluginWidth=a.width;c.pluginHeight=a.height}mejs.MediaElement(a.$media[0],c);typeof a.container!="undefined"&&a.controlsAreVisible&&a.container.trigger("controlsshown")},showControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!b.controlsAreVisible){if(a){b.controls.css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true;b.container.trigger("controlsshown")});
+b.container.find(".mejs-control").css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true})}else{b.controls.css("visibility","visible").css("display","block");b.container.find(".mejs-control").css("visibility","visible").css("display","block");b.controlsAreVisible=true;b.container.trigger("controlsshown")}b.setControlsSize()}},hideControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!(!b.controlsAreVisible||b.options.alwaysShowControls))if(a){b.controls.stop(true,
+true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")});b.container.find(".mejs-control").stop(true,true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block")})}else{b.controls.css("visibility","hidden").css("display","block");b.container.find(".mejs-control").css("visibility","hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")}},
+controlsTimer:null,startControlsTimer:function(a){var b=this;a=typeof a!="undefined"?a:1500;b.killControlsTimer("start");b.controlsTimer=setTimeout(function(){b.hideControls();b.killControlsTimer("hide")},a)},killControlsTimer:function(){if(this.controlsTimer!==null){clearTimeout(this.controlsTimer);delete this.controlsTimer;this.controlsTimer=null}},controlsEnabled:true,disableControls:function(){this.killControlsTimer();this.hideControls(false);this.controlsEnabled=false},enableControls:function(){this.showControls(false);
+this.controlsEnabled=true},meReady:function(a,b){var c=this,e=mejs.MediaFeatures,d=b.getAttribute("autoplay");d=!(typeof d=="undefined"||d===null||d==="false");var g;if(!c.created){c.created=true;c.media=a;c.domNode=b;if(!(e.isAndroid&&c.options.AndroidUseNativeControls)&&!(e.isiPad&&c.options.iPadUseNativeControls)&&!(e.isiPhone&&c.options.iPhoneUseNativeControls)){c.buildposter(c,c.controls,c.layers,c.media);c.buildkeyboard(c,c.controls,c.layers,c.media);c.buildoverlays(c,c.controls,c.layers,c.media);
+c.findTracks();for(g in c.options.features){e=c.options.features[g];if(c["build"+e])try{c["build"+e](c,c.controls,c.layers,c.media)}catch(k){}}c.container.trigger("controlsready");c.setPlayerSize(c.width,c.height);c.setControlsSize();if(c.isVideo){if(mejs.MediaFeatures.hasTouch)c.$media.bind("touchstart",function(){if(c.controlsAreVisible)c.hideControls(false);else c.controlsEnabled&&c.showControls(false)});else{mejs.MediaElementPlayer.prototype.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause)c.media.paused?
+c.media.play():c.media.pause()};c.media.addEventListener("click",c.clickToPlayPauseCallback,false);c.container.bind("mouseenter mouseover",function(){if(c.controlsEnabled)if(!c.options.alwaysShowControls){c.killControlsTimer("enter");c.showControls();c.startControlsTimer(2500)}}).bind("mousemove",function(){if(c.controlsEnabled){c.controlsAreVisible||c.showControls();c.options.alwaysShowControls||c.startControlsTimer(2500)}}).bind("mouseleave",function(){c.controlsEnabled&&!c.media.paused&&!c.options.alwaysShowControls&&
+c.startControlsTimer(1E3)})}c.options.hideVideoControlsOnLoad&&c.hideControls(false);d&&!c.options.alwaysShowControls&&c.hideControls();c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(j){if(c.options.videoHeight<=0&&c.domNode.getAttribute("height")===null&&!isNaN(j.target.videoHeight)){c.setPlayerSize(j.target.videoWidth,j.target.videoHeight);c.setControlsSize();c.media.setVideoSize(j.target.videoWidth,j.target.videoHeight)}},false)}a.addEventListener("play",function(){for(var j in mejs.players){var m=
+mejs.players[j];m.id!=c.id&&c.options.pauseOtherPlayers&&!m.paused&&!m.ended&&m.pause();m.hasFocus=false}c.hasFocus=true},false);c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0)}catch(j){}c.media.pause();c.setProgressRail&&c.setProgressRail();c.setCurrentRail&&c.setCurrentRail();if(c.options.loop)c.media.play();else!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()},false);c.media.addEventListener("loadedmetadata",function(){c.updateDuration&&
+c.updateDuration();c.updateCurrent&&c.updateCurrent();if(!c.isFullScreen){c.setPlayerSize(c.width,c.height);c.setControlsSize()}},false);setTimeout(function(){c.setPlayerSize(c.width,c.height);c.setControlsSize()},50);c.globalBind("resize",function(){c.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||c.setPlayerSize(c.width,c.height);c.setControlsSize()});c.media.pluginType=="youtube"&&c.container.find(".mejs-overlay-play").hide()}if(d&&a.pluginType=="native"){a.load();
+a.play()}if(c.options.success)typeof c.options.success=="string"?window[c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)}},handleError:function(a){this.controls.hide();this.options.error&&this.options.error(a)},setPlayerSize:function(a,b){if(typeof a!="undefined")this.width=a;if(typeof b!="undefined")this.height=b;if(this.height.toString().indexOf("%")>0||this.$node.css("max-width")==="100%"||parseInt(this.$node.css("max-width").replace(/px/,""),10)/this.$node.offsetParent().width()===
+1||this.$node[0].currentStyle&&this.$node[0].currentStyle.maxWidth==="100%"){var c=this.isVideo?this.media.videoWidth&&this.media.videoWidth>0?this.media.videoWidth:this.options.defaultVideoWidth:this.options.defaultAudioWidth,e=this.isVideo?this.media.videoHeight&&this.media.videoHeight>0?this.media.videoHeight:this.options.defaultVideoHeight:this.options.defaultAudioHeight,d=this.container.parent().closest(":visible").width();c=this.isVideo||!this.options.autosizeProgress?parseInt(d*e/c,10):e;if(this.container.parent()[0].tagName.toLowerCase()===
+"body"){d=f(window).width();c=f(window).height()}if(c!=0&&d!=0){this.container.width(d).height(c);this.$media.add(this.container.find(".mejs-shim")).width("100%").height("100%");this.isVideo&&this.media.setVideoSize&&this.media.setVideoSize(d,c);this.layers.children(".mejs-layer").width("100%").height("100%")}}else{this.container.width(this.width).height(this.height);this.layers.children(".mejs-layer").width(this.width).height(this.height)}d=this.layers.find(".mejs-overlay-play");c=d.find(".mejs-overlay-button");
+d.height(this.container.height()-this.controls.height());c.css("margin-top","-"+(c.height()/2-this.controls.height()/2).toString()+"px")},setControlsSize:function(){var a=0,b=0,c=this.controls.find(".mejs-time-rail"),e=this.controls.find(".mejs-time-total");this.controls.find(".mejs-time-current");this.controls.find(".mejs-time-loaded");var d=c.siblings();if(this.options&&!this.options.autosizeProgress)b=parseInt(c.css("width"));if(b===0||!b){d.each(function(){var g=f(this);if(g.css("position")!=
+"absolute"&&g.is(":visible"))a+=f(this).outerWidth(true)});b=this.controls.width()-a-(c.outerWidth(true)-c.width())}c.width(b);e.width(b-(e.outerWidth(true)-e.width()));this.setProgressRail&&this.setProgressRail();this.setCurrentRail&&this.setCurrentRail()},buildposter:function(a,b,c,e){var d=f('<div class="mejs-poster mejs-layer"></div>').appendTo(c);b=a.$media.attr("poster");if(a.options.poster!=="")b=a.options.poster;b!==""&&b!=null?this.setPoster(b):d.hide();e.addEventListener("play",function(){d.hide()},
+false);a.options.showPosterWhenEnded&&a.options.autoRewind&&e.addEventListener("ended",function(){d.show()},false)},setPoster:function(a){var b=this.container.find(".mejs-poster"),c=b.find("img");if(c.length==0)c=f('<img width="100%" height="100%" />').appendTo(b);c.attr("src",a);b.css({"background-image":"url("+a+")"})},buildoverlays:function(a,b,c,e){var d=this;if(a.isVideo){var g=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(c),
+k=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(c),j=f('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(c).click(function(){if(d.options.clickToPlayPause)e.paused?e.play():e.pause()});e.addEventListener("play",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();k.hide()},false);e.addEventListener("playing",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();
+k.hide()},false);e.addEventListener("seeking",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("seeked",function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||j.show()},false);e.addEventListener("waiting",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("loadeddata",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("canplay",
+function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("error",function(){g.hide();b.find(".mejs-time-buffering").hide();k.show();k.find("mejs-overlay-error").html("Error loading this resource")},false)}},buildkeyboard:function(a,b,c,e){this.globalBind("keydown",function(d){if(a.hasFocus&&a.options.enableKeyboard)for(var g=0,k=a.options.keyActions.length;g<k;g++)for(var j=a.options.keyActions[g],m=0,q=j.keys.length;m<q;m++)if(d.keyCode==j.keys[m]){d.preventDefault();
+j.action(a,e,d.keyCode);return false}return true});this.globalBind("click",function(d){if(f(d.target).closest(".mejs-container").length==0)a.hasFocus=false})},findTracks:function(){var a=this,b=a.$media.find("track");a.tracks=[];b.each(function(c,e){e=f(e);a.tracks.push({srclang:e.attr("srclang")?e.attr("srclang").toLowerCase():"",src:e.attr("src"),kind:e.attr("kind"),label:e.attr("label")||"",entries:[],isLoaded:false})})},changeSkin:function(a){this.container[0].className="mejs-container "+a;this.setPlayerSize(this.width,
+this.height);this.setControlsSize()},play:function(){this.media.play()},pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.media.load()},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;for(a in this.options.features){b=
+this.options.features[a];if(this["clean"+b])try{this["clean"+b](this)}catch(c){}}if(this.isDynamic)this.$node.insertBefore(this.container);else{this.$media.prop("controls",true);this.$node.clone().show().insertBefore(this.container);this.$node.remove()}this.media.pluginType!=="native"&&this.media.remove();delete mejs.players[this.id];this.container.remove();this.globalUnbind();delete this.node.player}};(function(){function a(c,e){var d={d:[],w:[]};f.each((c||"").split(" "),function(g,k){var j=k+"."+
+e;if(j.indexOf(".")===0){d.d.push(j);d.w.push(j)}else d[b.test(k)?"w":"d"].push(j)});d.d=d.d.join(" ");d.w=d.w.join(" ");return d}var b=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,e,d){c=a(c,this.id);c.d&&f(document).bind(c.d,e,d);c.w&&f(window).bind(c.w,e,d)};mejs.MediaElementPlayer.prototype.globalUnbind=function(c,e){c=a(c,this.id);c.d&&f(document).unbind(c.d,e);c.w&&f(window).unbind(c.w,
+e)}})();if(typeof jQuery!="undefined")jQuery.fn.mediaelementplayer=function(a){a===false?this.each(function(){var b=jQuery(this).data("mediaelementplayer");b&&b.remove();jQuery(this).removeData("mediaelementplayer")}):this.each(function(){jQuery(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,a))});return this};f(document).ready(function(){f(".mejs-player").mediaelementplayer()});window.MediaElementPlayer=mejs.MediaElementPlayer})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{playpauseText:mejs.i18n.t("Play/Pause")});f.extend(MediaElementPlayer.prototype,{buildplaypause:function(a,b,c,e){var d=f('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+this.id+'" title="'+this.options.playpauseText+'" aria-label="'+this.options.playpauseText+'"></button></div>').appendTo(b).click(function(g){g.preventDefault();e.paused?e.play():e.pause();return false});e.addEventListener("play",function(){d.removeClass("mejs-play").addClass("mejs-pause")},
+false);e.addEventListener("playing",function(){d.removeClass("mejs-play").addClass("mejs-pause")},false);e.addEventListener("pause",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false);e.addEventListener("paused",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false)}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{stopText:"Stop"});f.extend(MediaElementPlayer.prototype,{buildstop:function(a,b,c,e){f('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+this.id+'" title="'+this.options.stopText+'" aria-label="'+this.options.stopText+'"></button></div>').appendTo(b).click(function(){e.paused||e.pause();if(e.currentTime>0){e.setCurrentTime(0);e.pause();b.find(".mejs-time-current").width("0px");b.find(".mejs-time-handle").css("left",
+"0px");b.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0));b.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0));c.find(".mejs-poster").show()}})}})})(mejs.$);
+(function(f){f.extend(MediaElementPlayer.prototype,{buildprogress:function(a,b,c,e){f('<div class="mejs-time-rail"><span class="mejs-time-total"><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(b);b.find(".mejs-time-buffering").hide();var d=
+this,g=b.find(".mejs-time-total");c=b.find(".mejs-time-loaded");var k=b.find(".mejs-time-current"),j=b.find(".mejs-time-handle"),m=b.find(".mejs-time-float"),q=b.find(".mejs-time-float-current"),p=function(h){h=h.pageX;var l=g.offset(),r=g.outerWidth(true),n=0,o=n=0;if(e.duration){if(h<l.left)h=l.left;else if(h>r+l.left)h=r+l.left;o=h-l.left;n=o/r;n=n<=0.02?0:n*e.duration;t&&n!==e.currentTime&&e.setCurrentTime(n);if(!mejs.MediaFeatures.hasTouch){m.css("left",o);q.html(mejs.Utility.secondsToTimeCode(n));
+m.show()}}},t=false;g.bind("mousedown",function(h){if(h.which===1){t=true;p(h);d.globalBind("mousemove.dur",function(l){p(l)});d.globalBind("mouseup.dur",function(){t=false;m.hide();d.globalUnbind(".dur")});return false}}).bind("mouseenter",function(){d.globalBind("mousemove.dur",function(h){p(h)});mejs.MediaFeatures.hasTouch||m.show()}).bind("mouseleave",function(){if(!t){d.globalUnbind(".dur");m.hide()}});e.addEventListener("progress",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);
+e.addEventListener("timeupdate",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);d.loaded=c;d.total=g;d.current=k;d.handle=j},setProgressRail:function(a){var b=a!=undefined?a.target:this.media,c=null;if(b&&b.buffered&&b.buffered.length>0&&b.buffered.end&&b.duration)c=b.buffered.end(0)/b.duration;else if(b&&b.bytesTotal!=undefined&&b.bytesTotal>0&&b.bufferedBytes!=undefined)c=b.bufferedBytes/b.bytesTotal;else if(a&&a.lengthComputable&&a.total!=0)c=a.loaded/a.total;if(c!==null){c=Math.min(1,
+Math.max(0,c));this.loaded&&this.total&&this.loaded.width(this.total.width()*c)}},setCurrentRail:function(){if(this.media.currentTime!=undefined&&this.media.duration)if(this.total&&this.handle){var a=Math.round(this.total.width()*this.media.currentTime/this.media.duration),b=a-Math.round(this.handle.outerWidth(true)/2);this.current.width(a);this.handle.css("left",b)}}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"});f.extend(MediaElementPlayer.prototype,{buildcurrent:function(a,b,c,e){f('<div class="mejs-time"><span class="mejs-currenttime">'+(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(b);this.currenttime=this.controls.find(".mejs-currenttime");e.addEventListener("timeupdate",function(){a.updateCurrent()},false)},buildduration:function(a,b,
+c,e){if(b.children().last().find(".mejs-currenttime").length>0)f(this.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span>").appendTo(b.find(".mejs-time"));else{b.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container");
+f('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span></div>").appendTo(b)}this.durationD=this.controls.find(".mejs-duration");e.addEventListener("timeupdate",function(){a.updateDuration()},
+false)},updateCurrent:function(){if(this.currenttime)this.currenttime.html(mejs.Utility.secondsToTimeCode(this.media.currentTime,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))},updateDuration:function(){this.container.toggleClass("mejs-long-video",this.media.duration>3600);if(this.durationD&&(this.options.duration>0||this.media.duration))this.durationD.html(mejs.Utility.secondsToTimeCode(this.options.duration>0?this.options.duration:
+this.media.duration,this.options.alwaysShowHours,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("Mute Toggle"),hideVolumeOnTouchDevices:true,audioVolume:"horizontal",videoVolume:"vertical"});f.extend(MediaElementPlayer.prototype,{buildvolume:function(a,b,c,e){if(!(mejs.MediaFeatures.hasTouch&&this.options.hideVolumeOnTouchDevices)){var d=this,g=d.isVideo?d.options.videoVolume:d.options.audioVolume,k=g=="horizontal"?f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+d.id+'" title="'+d.options.muteText+
+'" aria-label="'+d.options.muteText+'"></button></div><div class="mejs-horizontal-volume-slider"><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></div>').appendTo(b):f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+d.id+'" title="'+d.options.muteText+'" aria-label="'+d.options.muteText+'"></button><div class="mejs-volume-slider"><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></div></div>').appendTo(b),
+j=d.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),m=d.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),q=d.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),p=d.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),t=function(n,o){if(!j.is(":visible")&&typeof o=="undefined"){j.show();t(n,true);j.hide()}else{n=Math.max(0,n);n=Math.min(n,1);n==0?k.removeClass("mejs-mute").addClass("mejs-unmute"):k.removeClass("mejs-unmute").addClass("mejs-mute");
+if(g=="vertical"){var s=m.height(),u=m.position(),v=s-s*n;p.css("top",Math.round(u.top+v-p.height()/2));q.height(s-v);q.css("top",u.top+v)}else{s=m.width();u=m.position();s=s*n;p.css("left",Math.round(u.left+s-p.width()/2));q.width(Math.round(s))}}},h=function(n){var o=null,s=m.offset();if(g=="vertical"){o=m.height();parseInt(m.css("top").replace(/px/,""),10);o=(o-(n.pageY-s.top))/o;if(s.top==0||s.left==0)return}else{o=m.width();o=(n.pageX-s.left)/o}o=Math.max(0,o);o=Math.min(o,1);t(o);o==0?e.setMuted(true):
+e.setMuted(false);e.setVolume(o)},l=false,r=false;k.hover(function(){j.show();r=true},function(){r=false;!l&&g=="vertical"&&j.hide()});j.bind("mouseover",function(){r=true}).bind("mousedown",function(n){h(n);d.globalBind("mousemove.vol",function(o){h(o)});d.globalBind("mouseup.vol",function(){l=false;d.globalUnbind(".vol");!r&&g=="vertical"&&j.hide()});l=true;return false});k.find("button").click(function(){e.setMuted(!e.muted)});e.addEventListener("volumechange",function(){if(!l)if(e.muted){t(0);
+k.removeClass("mejs-mute").addClass("mejs-unmute")}else{t(e.volume);k.removeClass("mejs-unmute").addClass("mejs-mute")}},false);if(d.container.is(":visible")){t(a.options.startVolume);a.options.startVolume===0&&e.setMuted(true);e.pluginType==="native"&&e.setVolume(a.options.startVolume)}}}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{usePluginFullScreen:true,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")});f.extend(MediaElementPlayer.prototype,{isFullScreen:false,isNativeFullScreen:false,isInIframe:false,buildfullscreen:function(a,b,c,e){if(a.isVideo){a.isInIframe=window.location!=window.parent.location;if(mejs.MediaFeatures.hasTrueNativeFullScreen){c=function(){if(a.isFullScreen)if(mejs.MediaFeatures.isFullScreen()){a.isNativeFullScreen=true;a.setControlsSize()}else{a.isNativeFullScreen=
+false;a.exitFullScreen()}};mejs.MediaFeatures.hasMozNativeFullScreen?a.globalBind(mejs.MediaFeatures.fullScreenEventName,c):a.container.bind(mejs.MediaFeatures.fullScreenEventName,c)}var d=this,g=f('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+d.id+'" title="'+d.options.fullscreenText+'" aria-label="'+d.options.fullscreenText+'"></button></div>').appendTo(b);if(d.media.pluginType==="native"||!d.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)g.click(function(){mejs.MediaFeatures.hasTrueNativeFullScreen&&
+mejs.MediaFeatures.isFullScreen()||a.isFullScreen?a.exitFullScreen():a.enterFullScreen()});else{var k=null;if(function(){var h=document.createElement("x"),l=document.documentElement,r=window.getComputedStyle;if(!("pointerEvents"in h.style))return false;h.style.pointerEvents="auto";h.style.pointerEvents="x";l.appendChild(h);r=r&&r(h,"").pointerEvents==="auto";l.removeChild(h);return!!r}()&&!mejs.MediaFeatures.isOpera){var j=false,m=function(){if(j){for(var h in q)q[h].hide();g.css("pointer-events",
+"");d.controls.css("pointer-events","");d.media.removeEventListener("click",d.clickToPlayPauseCallback);j=false}},q={};b=["top","left","right","bottom"];var p,t=function(){var h=g.offset().left-d.container.offset().left,l=g.offset().top-d.container.offset().top,r=g.outerWidth(true),n=g.outerHeight(true),o=d.container.width(),s=d.container.height();for(p in q)q[p].css({position:"absolute",top:0,left:0});q.top.width(o).height(l);q.left.width(h).height(n).css({top:l});q.right.width(o-h-r).height(n).css({top:l,
+left:h+r});q.bottom.width(o).height(s-n-l).css({top:l+n})};d.globalBind("resize",function(){t()});p=0;for(c=b.length;p<c;p++)q[b[p]]=f('<div class="mejs-fullscreen-hover" />').appendTo(d.container).mouseover(m).hide();g.on("mouseover",function(){if(!d.isFullScreen){var h=g.offset(),l=a.container.offset();e.positionFullscreenButton(h.left-l.left,h.top-l.top,false);g.css("pointer-events","none");d.controls.css("pointer-events","none");d.media.addEventListener("click",d.clickToPlayPauseCallback);for(p in q)q[p].show();
+t();j=true}});e.addEventListener("fullscreenchange",function(){d.isFullScreen=!d.isFullScreen;d.isFullScreen?d.media.removeEventListener("click",d.clickToPlayPauseCallback):d.media.addEventListener("click",d.clickToPlayPauseCallback);m()});d.globalBind("mousemove",function(h){if(j){var l=g.offset();if(h.pageY<l.top||h.pageY>l.top+g.outerHeight(true)||h.pageX<l.left||h.pageX>l.left+g.outerWidth(true)){g.css("pointer-events","");d.controls.css("pointer-events","");j=false}}})}else g.on("mouseover",
+function(){if(k!==null){clearTimeout(k);delete k}var h=g.offset(),l=a.container.offset();e.positionFullscreenButton(h.left-l.left,h.top-l.top,true)}).on("mouseout",function(){if(k!==null){clearTimeout(k);delete k}k=setTimeout(function(){e.hideFullscreenButton()},1500)})}a.fullscreenBtn=g;d.globalBind("keydown",function(h){if((mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||d.isFullScreen)&&h.keyCode==27)a.exitFullScreen()})}},cleanfullscreen:function(a){a.exitFullScreen()},
+containerSizeTimeout:null,enterFullScreen:function(){var a=this;if(!(a.media.pluginType!=="native"&&(mejs.MediaFeatures.isFirefox||a.options.usePluginFullScreen))){f(document.documentElement).addClass("mejs-fullscreen");normalHeight=a.container.height();normalWidth=a.container.width();if(a.media.pluginType==="native")if(mejs.MediaFeatures.hasTrueNativeFullScreen){mejs.MediaFeatures.requestFullScreen(a.container[0]);a.isInIframe&&setTimeout(function c(){if(a.isNativeFullScreen)f(window).width()!==
+screen.width?a.exitFullScreen():setTimeout(c,500)},500)}else if(mejs.MediaFeatures.hasSemiNativeFullScreen){a.media.webkitEnterFullscreen();return}if(a.isInIframe){var b=a.options.newWindowCallback(this);if(b!=="")if(mejs.MediaFeatures.hasTrueNativeFullScreen)setTimeout(function(){if(!a.isNativeFullScreen){a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no")}},250);else{a.pause();window.open(b,a.id,
+"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");return}}a.container.addClass("mejs-container-fullscreen").width("100%").height("100%");a.containerSizeTimeout=setTimeout(function(){a.container.css({width:"100%",height:"100%"});a.setControlsSize()},500);if(a.media.pluginType==="native")a.$media.width("100%").height("100%");else{a.container.find(".mejs-shim").width("100%").height("100%");a.media.setVideoSize(f(window).width(),
+f(window).height())}a.layers.children("div").width("100%").height("100%");a.fullscreenBtn&&a.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen");a.setControlsSize();a.isFullScreen=true}},exitFullScreen:function(){clearTimeout(this.containerSizeTimeout);if(this.media.pluginType!=="native"&&mejs.MediaFeatures.isFirefox)this.media.setFullscreen(false);else{if(mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||this.isFullScreen))mejs.MediaFeatures.cancelFullScreen();
+f(document.documentElement).removeClass("mejs-fullscreen");this.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight);if(this.media.pluginType==="native")this.$media.width(normalWidth).height(normalHeight);else{this.container.find(".mejs-shim").width(normalWidth).height(normalHeight);this.media.setVideoSize(normalWidth,normalHeight)}this.layers.children("div").width(normalWidth).height(normalHeight);this.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen");
+this.setControlsSize();this.isFullScreen=false}}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{startLanguage:"",tracksText:mejs.i18n.t("Captions/Subtitles"),hideCaptionsButtonWhenEmpty:true,toggleCaptionsButtonWhenOnlyOne:false,slidesSelector:""});f.extend(MediaElementPlayer.prototype,{hasChapters:false,buildtracks:function(a,b,c,e){if(a.tracks.length!=0){var d;if(this.domNode.textTracks)for(d=this.domNode.textTracks.length-1;d>=0;d--)this.domNode.textTracks[d].mode="hidden";a.chapters=f('<div class="mejs-chapters mejs-layer"></div>').prependTo(c).hide();a.captions=
+f('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover"><span class="mejs-captions-text"></span></div></div>').prependTo(c).hide();a.captionsText=a.captions.find(".mejs-captions-text");a.captionsButton=f('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+this.id+'" title="'+this.options.tracksText+'" aria-label="'+this.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+
+a.id+'_captions" id="'+a.id+'_captions_none" value="none" checked="checked" /><label for="'+a.id+'_captions_none">'+mejs.i18n.t("None")+"</label></li></ul></div></div>").appendTo(b);for(d=b=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&b++;this.options.toggleCaptionsButtonWhenOnlyOne&&b==1?a.captionsButton.on("click",function(){a.setTrack(a.selectedTrack==null?a.tracks[0].srclang:"none")}):a.captionsButton.hover(function(){f(this).find(".mejs-captions-selector").css("visibility","visible")},
+function(){f(this).find(".mejs-captions-selector").css("visibility","hidden")}).on("click","input[type=radio]",function(){lang=this.value;a.setTrack(lang)});a.options.alwaysShowControls?a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):a.container.bind("controlsshown",function(){a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||a.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")});
+a.trackToLoad=-1;a.selectedTrack=null;a.isLoadingTrack=false;for(d=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&a.addTrackButton(a.tracks[d].srclang,a.tracks[d].label);a.loadNextTrack();e.addEventListener("timeupdate",function(){a.displayCaptions()},false);if(a.options.slidesSelector!=""){a.slidesContainer=f(a.options.slidesSelector);e.addEventListener("timeupdate",function(){a.displaySlides()},false)}e.addEventListener("loadedmetadata",function(){a.displayChapters()},false);a.container.hover(function(){if(a.hasChapters){a.chapters.css("visibility",
+"visible");a.chapters.fadeIn(200).height(a.chapters.find(".mejs-chapter").outerHeight())}},function(){a.hasChapters&&!e.paused&&a.chapters.fadeOut(200,function(){f(this).css("visibility","hidden");f(this).css("display","block")})});a.node.getAttribute("autoplay")!==null&&a.chapters.css("visibility","hidden")}},setTrack:function(a){var b;if(a=="none"){this.selectedTrack=null;this.captionsButton.removeClass("mejs-captions-enabled")}else for(b=0;b<this.tracks.length;b++)if(this.tracks[b].srclang==a){this.selectedTrack==
+null&&this.captionsButton.addClass("mejs-captions-enabled");this.selectedTrack=this.tracks[b];this.captions.attr("lang",this.selectedTrack.srclang);this.displayCaptions();break}},loadNextTrack:function(){this.trackToLoad++;if(this.trackToLoad<this.tracks.length){this.isLoadingTrack=true;this.loadTrack(this.trackToLoad)}else{this.isLoadingTrack=false;this.checkForTracks()}},loadTrack:function(a){var b=this,c=b.tracks[a];f.ajax({url:c.src,dataType:"text",success:function(e){c.entries=typeof e=="string"&&
+/<tt\s+xml/ig.exec(e)?mejs.TrackFormatParser.dfxp.parse(e):mejs.TrackFormatParser.webvvt.parse(e);c.isLoaded=true;b.enableTrackButton(c.srclang,c.label);b.loadNextTrack();c.kind=="chapters"&&b.media.addEventListener("play",function(){b.media.duration>0&&b.displayChapters(c)},false);c.kind=="slides"&&b.setupSlides(c)},error:function(){b.loadNextTrack()}})},enableTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("input[value="+a+"]").prop("disabled",false).siblings("label").html(b);
+this.options.startLanguage==a&&f("#"+this.id+"_captions_"+a).click();this.adjustLanguageBox()},addTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("ul").append(f('<li><input type="radio" name="'+this.id+'_captions" id="'+this.id+"_captions_"+a+'" value="'+a+'" disabled="disabled" /><label for="'+this.id+"_captions_"+a+'">'+b+" (loading)</label></li>"));this.adjustLanguageBox();this.container.find(".mejs-captions-translations option[value="+a+"]").remove()},
+adjustLanguageBox:function(){this.captionsButton.find(".mejs-captions-selector").height(this.captionsButton.find(".mejs-captions-selector ul").outerHeight(true)+this.captionsButton.find(".mejs-captions-translations").outerHeight(true))},checkForTracks:function(){var a=false;if(this.options.hideCaptionsButtonWhenEmpty){for(i=0;i<this.tracks.length;i++)if(this.tracks[i].kind=="subtitles"){a=true;break}if(!a){this.captionsButton.hide();this.setControlsSize()}}},displayCaptions:function(){if(typeof this.tracks!=
+"undefined"){var a,b=this.selectedTrack;if(b!=null&&b.isLoaded)for(a=0;a<b.entries.times.length;a++)if(this.media.currentTime>=b.entries.times[a].start&&this.media.currentTime<=b.entries.times[a].stop){this.captionsText.html(b.entries.text[a]);this.captions.show().height(0);return}this.captions.hide()}},setupSlides:function(a){this.slides=a;this.slides.entries.imgs=[this.slides.entries.text.length];this.showSlide(0)},showSlide:function(a){if(!(typeof this.tracks=="undefined"||typeof this.slidesContainer==
+"undefined")){var b=this,c=b.slides.entries.text[a],e=b.slides.entries.imgs[a];if(typeof e=="undefined"||typeof e.fadeIn=="undefined")b.slides.entries.imgs[a]=e=f('<img src="'+c+'">').on("load",function(){e.appendTo(b.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()});else!e.is(":visible")&&!e.is(":animated")&&e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if(typeof this.slides!="undefined"){var a=this.slides,b;for(b=0;b<a.entries.times.length;b++)if(this.media.currentTime>=
+a.entries.times[b].start&&this.media.currentTime<=a.entries.times[b].stop){this.showSlide(b);break}}},displayChapters:function(){var a;for(a=0;a<this.tracks.length;a++)if(this.tracks[a].kind=="chapters"&&this.tracks[a].isLoaded){this.drawChapters(this.tracks[a]);this.hasChapters=true;break}},drawChapters:function(a){var b=this,c,e,d=e=0;b.chapters.empty();for(c=0;c<a.entries.times.length;c++){e=a.entries.times[c].stop-a.entries.times[c].start;e=Math.floor(e/b.media.duration*100);if(e+d>100||c==a.entries.times.length-
+1&&e+d<100)e=100-d;b.chapters.append(f('<div class="mejs-chapter" rel="'+a.entries.times[c].start+'" style="left: '+d.toString()+"%;width: "+e.toString()+'%;"><div class="mejs-chapter-block'+(c==a.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+a.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(a.entries.times[c].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(a.entries.times[c].stop)+"</span></div></div>"));d+=e}b.chapters.find("div.mejs-chapter").click(function(){b.media.setCurrentTime(parseFloat(f(this).attr("rel")));
+b.media.paused&&b.media.play()});b.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",tl:"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={webvvt:{pattern_identifier:/^([a-zA-z]+-)?[0-9]+$/,pattern_timecode:/^([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ([0-9]{2}:[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
+parse:function(a){var b=0;a=mejs.TrackFormatParser.split2(a,/\r?\n/);for(var c={text:[],times:[]},e,d;b<a.length;b++)if(this.pattern_identifier.exec(a[b])){b++;if((e=this.pattern_timecode.exec(a[b]))&&b<a.length){b++;d=a[b];for(b++;a[b]!==""&&b<a.length;){d=d+"\n"+a[b];b++}d=f.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");c.text.push(d);c.times.push({start:mejs.Utility.convertSMPTEtoSeconds(e[1])==0?0.2:mejs.Utility.convertSMPTEtoSeconds(e[1]),
+stop:mejs.Utility.convertSMPTEtoSeconds(e[3]),settings:e[5]})}}return c}},dfxp:{parse:function(a){a=f(a).filter("tt");var b=0;b=a.children("div").eq(0);var c=b.find("p");b=a.find("#"+b.attr("style"));var e,d;a={text:[],times:[]};if(b.length){d=b.removeAttr("id").get(0).attributes;if(d.length){e={};for(b=0;b<d.length;b++)e[d[b].name.split(":")[1]]=d[b].value}}for(b=0;b<c.length;b++){var g;d={start:null,stop:null,style:null};if(c.eq(b).attr("begin"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("begin"));
+if(!d.start&&c.eq(b-1).attr("end"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b-1).attr("end"));if(c.eq(b).attr("end"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("end"));if(!d.stop&&c.eq(b+1).attr("begin"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b+1).attr("begin"));if(e){g="";for(var k in e)g+=k+":"+e[k]+";"}if(g)d.style=g;if(d.start==0)d.start=0.2;a.times.push(d);d=f.trim(c.eq(b).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,
+"<a href='$1' target='_blank'>$1</a>");a.text.push(d);if(a.times.start==0)a.times.start=2}return a}},split2:function(a,b){return a.split(b)}};if("x\n\ny".split(/\n/gi).length!=3)mejs.TrackFormatParser.split2=function(a,b){var c=[],e="",d;for(d=0;d<a.length;d++){e+=a.substring(d,d+1);if(b.test(e)){c.push(e.replace(b,""));e=""}}c.push(e);return c}})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){if(typeof a.enterFullScreen=="undefined")return null;return a.isFullScreen?mejs.i18n.t("Turn off Fullscreen"):mejs.i18n.t("Go Fullscreen")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return a.media.muted?mejs.i18n.t("Unmute"):mejs.i18n.t("Mute")},click:function(a){a.media.muted?a.setMuted(false):a.setMuted(true)}},{isSeparator:true},{render:function(){return mejs.i18n.t("Download Video")},
+click:function(a){window.location.href=a.media.currentSrc}}]});f.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(a){a.contextMenu=f('<div class="mejs-contextmenu"></div>').appendTo(f("body")).hide();a.container.bind("contextmenu",function(b){if(a.isContextMenuEnabled){b.preventDefault();a.renderContextMenu(b.clientX-1,b.clientY-1);return false}});a.container.bind("click",function(){a.contextMenu.hide()});a.contextMenu.bind("mouseleave",function(){a.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},
+isContextMenuEnabled:true,enableContextMenu:function(){this.isContextMenuEnabled=true},disableContextMenu:function(){this.isContextMenuEnabled=false},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer();a.contextMenuTimer=setTimeout(function(){a.hideContextMenu();a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;if(a!=null){clearTimeout(a);delete a}},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(a,
+b){for(var c=this,e="",d=c.options.contextMenuItems,g=0,k=d.length;g<k;g++)if(d[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var j=d[g].render(c);if(j!=null)e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+Math.random()*1E6+'">'+j+"</div>"}c.contextMenu.empty().append(f(e)).css({top:b,left:a}).show();c.contextMenu.find(".mejs-contextmenu-item").each(function(){var m=f(this),q=parseInt(m.data("itemindex"),10),p=c.options.contextMenuItems[q];typeof p.show!=
+"undefined"&&p.show(m,c);m.click(function(){typeof p.click!="undefined"&&p.click(c);c.contextMenu.hide()})});setTimeout(function(){c.killControlsTimer("rev3")},100)}})})(mejs.$);
+(function(f){f.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")});f.extend(MediaElementPlayer.prototype,{buildpostroll:function(a,b,c){var e=this.container.find('link[rel="postroll"]').attr("href");if(typeof e!=="undefined"){a.postroll=f('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+this.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(c).hide();this.media.addEventListener("ended",
+function(){f.ajax({dataType:"html",url:e,success:function(d){c.find(".mejs-postroll-layer-content").html(d)}});a.postroll.show()},false)}}})})(mejs.$);
+
diff --git a/wp-includes/js/mediaelement/mediaelementplayer.min.css b/wp-includes/js/mediaelement/mediaelementplayer.min.css
new file mode 100644
index 000000000..5d88e84e5
--- /dev/null
+++ b/wp-includes/js/mediaelement/mediaelementplayer.min.css
@@ -0,0 +1 @@
+.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,0.9);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.9)),to(rgba(0,0,0,0.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-moz-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-o-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-ms-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:linear-gradient(rgba(50,50,50,0.9),rgba(0,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,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,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:solid 1px yellow;}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:8px 3px 0 3px;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 span{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{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,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.8));}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size: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,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(44,124,145,0.8)),to(rgba(78,183,212,0.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-moz-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-o-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-ms-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:linear-gradient(rgba(44,124,145,0.8),rgba(78,183,212,0.8));width:0;}.mejs-controls .mejs-time-rail .mejs-time-current{background:#fff;background:rgba(255,255,255,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.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 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-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,0.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,0.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,0.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,0.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0;}.mejs-controls div.mejs-horizontal-volume-slider{height:26px;width:60px;position:relative;}.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,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.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,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.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:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:10px;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 0;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:100px;float:left;padding:4px 0 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 0;}.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,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,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:none;}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(102,102,102,0.7)),to(rgba(50,50,50,0.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-moz-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-o-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-ms-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:linear-gradient(rgba(102,102,102,0.7),rgba(50,50,50,0.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:bold;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px 0;line-height:12px;}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px 0;display:block;white-space:nowrap;text-overflow:ellipsis;}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:22px;font-size:12px;color:#fff;}.mejs-captions-layer a{color:#fff;text-decoration:underline;}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:normal;}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0;}.mejs-captions-position-hover{bottom:45px;}.mejs-captions-text{padding:3px 5px;background:url(background.png);background:rgba(20,20,20,0.8);}.me-cannotplay a{color:#fff;font-weight:bold;}.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,0.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 0;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 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,0.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,0.7);color:#fff;padding:4px;z-index:100;cursor:pointer;}
\ No newline at end of file
diff --git a/wp-includes/js/mediaelement/silverlightmediaelement.xap b/wp-includes/js/mediaelement/silverlightmediaelement.xap
new file mode 100644
index 0000000000000000000000000000000000000000..9d55c2e46ae51017ab91f61b05cf4f4838ab10ab
GIT binary patch
literal 12461
zcmWIWW@Zs#VBp|jsAx`e2(VLoeT9L6VIm^~g8%~qgJVH~Z(?3%T555LUPWSVPHX=`
zFJ?m#*Y8dL1wJu)YDA?LaIx+V=@R{J`1uvfJ#VK^t7hgGKUDw8?I(LhZ%ZEk_k#De
z^|iZqwY3x~aOh|yYOH-TGk9@nq3s0Su05wW9?{hn_q6_!9CE&A=Y_l5wbZw-{C`8=
zF6VXJyw_QrOCwm%9k%*);B-)fTw%u3V~>qfzWCeTcX<AmEAiD2&inkF|9DoVdIjBi
z%T(ROe&Xoy3#W`zuk748=j_yp-Is+G`R1+OdN#)H<%#{%-Yi^kcCD&~QI>G|O<Bpy
z4=aNGdw)$o<-Fqu18N9pXucM|s>i^<FoS_Xnt_2KI5Vd#wJ0YuJ)^`oH6=6AH77MU
zHLpZ3B`4=?EpJ6kc<F=6{3Vi^PbQjdO8x2HcRbm8Vs56%fBU}NoWB-fN=Lg?tqTn_
z7SB}Ad^EH2@a&1Xu7w+>J9v3=*t6~{v5yk+YGk{$tcB@m_UxRWnYUX1zR<gUY14!f
zO`W@E-7~m#O0K`Le7^7dv$N|{CkJdh>rs4v@AG-p?{<QT?{~kay?R&Pz{?Qz;rHeF
zOf^zRo*TscE#}-m_xAq<!t?U}U+VMso*aM6aQ76=Dy~_(R;U)w3o)7>?me&a=wjXH
zwlnvnzxmOlzI>VJ{L@eGEWJEKj(x_IoC$Sbt`s)E`>gQ(#e`c7_xd``7+?R9V3Ye}
zx4787F!BR$z&<7qp5^_#eETIA%>I8m{PUst%jdJ~5N5es;XT*Qj(-E6e%+DR?b$yn
ze6Ibx-1ahg+LrZ8Vl*C>9zI;P`yQX#eKDc$KejBI#x&PFYq#wF_bZM#XUcrb^a}Ik
zjO$Ea_Vu3Bo{3pz@l`=F{e=_5etcnO5NC_*T2#M?!Tb2NdvCt}6T6{ab&&UyR$P=>
z+{8KG6s6zX*7+W*(y%5m;zr0D#sa=I#~Hpg@t(fB>hc73GXa5=pIx%0m*d{39_eLK
z4&ZM5#j)ii!&adT<Hl_U84gK~Z*3Wix_5~>y1wE5?O=bs^}qQE=Gz8-KUbRzxvw@)
zv`APURK1gTvs24E-g8L|3uXJJb+<g4pf6;{bEo0x^{u?D2M@abzVg<knql{umG2H5
zu)FefM-snKe4LNf_r}<}oq{@h%e61n%f41W#gX$$Piu=bvu%~K=@T`r)cf!5)=jo*
z2z+bO<um)R!(C@f=4#Fr3AfhO3LkE)4Jn$C{liT==m%Sv%ijyS$Bvu~z94mwV{2}l
z(eLHA-^g1ZS)TFYOYECxdcXWa#ZPWBQ%tlyJVRsQf+gK1zXYt(on%?Ia=wTZzU6j7
zjIs7a%QoRHp$_t^k8I_Bk*=Lx%<;n9cg5rdxlF$<d)+Bx%$?4g!R|PhNy=#9YmQrr
z3(7+ttrNcRxyUtFkFj>iB&X#KbrI__T*aL>GH?4OyWz^IZzpy0_uO#aA+5hoe7arX
zO%=V_M^n3Z<SaeymmCrMX1!0|W|jD=vqz;}X1;y&XrcH0qq0g*MW@eww8=ZB>~iV>
z{kEG8&0pfG`J@&2S$1p=-zmNR#`Vce?4DblL_hGV*~BouH+(peYsc*tckKsvS^5QS
z;uzl>d=wV_P}cNb{l{6J{Ym%JqneqSE+0JnQ9(85R`~|sSBgE{s^zDxUYK(1>JVFc
zblKjB?oW$4H#G*<r7YmdyC^(m<<{F9j`Md<`n|+X=Z(Y0?}Zb;nt2QQnP_h6?9SO9
zYOu-knqx?St<#+avN<=eD`p?&cy{EOd%&Ea_T<H44i|*`?B1sB%e%Dfht_%_vB<-<
z9v4}S9v23RoSQpU^xI2;RsQ?tZz)We@}|?*`>MjSQytMd9r-I9Yl0;USF?VsHSKt>
ztvtz$zejM<o?W358jaT!tLvO@oljnD;ipu%`RlR*<vNzSj~bqD#1``9Ewp&eV;a~$
z_2H|Qj{Ij{DS;;!>^U{fcg36&XWqq`7id4+_BL*LSI3SMtD|R4y}M}o-m@CoN{^J*
zZ~7a(^q%~tuWu)tajg~o(EBRIa^uxE&+iNV)mcC3Q;>Uo8{_P!S9y7EEV4b`(5RX9
z`t7uXo4vYL%58V@xbSLAL%_#I>xxT~U5mGhH{_;Bx?Efsx6pTu6SF#x?7b6KKEZ~w
z;)>^3oh`IF{P~fNtA9{I*RCI3ceB48pBwJHqkHX?86Wnwly+~+-mCjH-S&p|vpvjf
zcfZTb{rYi^I<ppcmATDx!R}X?c`uh;e*7dn_sZX;d_^Zd?9QKUbHSbW)^<m={mja;
zzi;tMyt&)YoGBf8|1{s>s{OoSE!of1P8PD3Pxh?RUHPJHAvce0vXkwyc`IIUTUb{u
zX}m7%|4Hkt?Kj4pDY0{f@AbrgVe&1jJzBlur02N{-=@q|n3uQGgG+RN`uz0z)?@E$
z9j>pw`^3m9ca5>rv^9p+{1fj_QHx{Ux_xr|0)G{owHfP;S5IQMYQ4>(((bs$ly6$|
zw9JM3jF$d2;PdblP`#hFz}w{1CF$Db$D>`%4^ICYx6qWaa>d8}OY|<Co4xheeusu$
zQJ<HeUo~`VX6I{fUa@z1%m+bl$Kpv(DkFaj6#KZy9TU{z)ey70&h32Vp+pvYtY*)$
z)3@f&c=DZfRmOG4ms7T`pAzg;uXZ$O`5Jp}6P{DQ9=>6`#(!zD>z;eMF$}WFohDte
zEZnKfs^wm8+s{)HezM-7y`0_b>HcVz-;ay-^w;vNNMQUs->f3)kzmg+^9h>2*S%f)
zBEjyFa9Qr|4F#`nnPuG;{O2+|@!>7AOfF`#+w(GRFM4XRPxSHMTh21~mu;@nzf|(|
z#ty;P(NzU3bC2E-&Na{QH@f$&%zO3q?ccT(ZGJuV#=9%~G`dPod=HlAOX-!ANPN8|
zzsqO3pT7Iix3=H7*7&_;XIkyO?|!uJqUhHfikC&JPh9_Of%|PugKMY1f8T6*!PqQA
zSZQ(izWUjw$&056OV)n+n^M3Q!gzm)t<r<pPk-Br{SbRwE^+QNi=T$H{IR7AzqB~(
zhUh8weVM&F>xTrJ{PZIXqGeav>QmNz-Qs^U`*`(Hfkl$7wc_(^+00*^kWw?_5n1aO
zXr4J);>@+q)|ZRKH{4QYTkP;ob?V_=U$a~s7rS)wrY@bk!f?roezTm@nuqsJ+sfzu
zd0R+dVdD;+p3?N25&3J@EoK$j+-H|;cwpYnvdf`aSNaT?PHxyIC|X&&Cnfm&%h0gx
z*^jighD231R_v?Xy{{)F*khZw)Q*6D{n_slGxAHPoMrlK8u#pVbCbh1yGGH6i!OXR
z9cK7Hbi$FJ#~GI&HSzoP<LEA*n@3i?{IIzFz1)s|^_aKrYNCOPm6OUIx~%J}lF3c8
zHE+s!oXY4sX?5ARD|}p;mv2d3*V)3Jd@DM-Y<uvIuCj-YuRe%1-B)|C{pDQOI<M`9
z^P*baJKvqOEAjnyE_}B~?W@0T^6S5EKeTG;y-nOvp>BIS8c+J`CiimNDRA9O6WLO<
z?zejN`K!f&Il9cdPyJQ?V=(>0;iyyGrhx&qi|rI+l|EnSn|NBnQ9O8lIdA-#h1E%J
zx0h$s2VA(L%ERmzA{(V&7WMJIV(V|6Y4dshz5beY;=}EC=Sn2@zSG!u@=bAbd<>tn
z_{D8g3yx|AE|y<nx^G^@GT8>+@SH{G_HX^%=WyJv;LX+VhwdqTlfHZ9iuvbRB{RFS
zZair6+RZwr<kbat?FF*BWnXoVz4;`NYhn53mHxx43-?Vu9KUSt+U<hp`J*q!<i1@W
zdtd1`+l98<*SGJAzN`C6SxnY>{Uo*IDbpP$hGz=5r0Tr4PBY|>uDLtyO4!{8UH4uv
z)Jijc`#S0Fjo4I<N}CfKw(b$%ar;hoRJ!Roru=lt{OO(Q?_W=3Eq--7li|JDx92H8
z7#@8$sGEP|a>kvb&(@t3&8+R-ovOhrHoei7@zAA-@wXMVN;o<r4Q?vCpUaf?tQBF*
zJ*L#La+izW><>2`?`I{->!iH-nkj$i-`l3fa)ndhn9Gyj%$3;Py*$omPq&WIQTBUl
z^Ci2sT@u+7Cx2V-wZ%`-r0mr%UsoRebTl?sYfjnjUvdXm<(cG}u<Ks5&p5HK>dOA*
zd$bqjuX(YJ?^|i;yDc9o7Wzv~zaIZ@^ZUPoKe=yMoH(~e#M|p!xs&Fq(@|cUvo;EQ
z8LiD|o)=@dH0$P>KMS5uStM$l^)KPZ^X2;;&%Y?zwq=bb`{z?dp5AHfwwF(TzUlMI
zEHyREcJ&kfbH|fTdT0spsyHPcmG^(MW^ImT{HZ4*%m$06q@1?<{bi!zum7L#?=rvq
z`MfpPUaKGVmuL7oG5)V9V4O6eStmW`WTFyt<r$AdO6Q(FeUq5;p>MB5&HK&uH4i)%
zHsq*z-;g-p8e<l3^CDJjD%bD!_U@Ics?&9T70sNoOzdjwB>kn&+Rmqc;uddfuB$Kk
z;bb&jRxiUV@Z|Iv4cA|8tebJ?ANO^)3$IryZK^k!t)mofJoAkuYwP|UA+v%m&3sZ3
zb~5p(U5-QO-gb-3+{nmN?LHxmCU+QCD?Of2>^^7N4QBQ3F0)n7yl2f4eY*bC-4LV6
z^ZoR+sy4^TamLS2&~?2WuDL2^ftTmO_UD_u?0iEW#ij4onCpF2B%Iqz&R9G|ce+ku
zP_)cB)vcRPw<@ZHJ6wBieA6ehb>~K-qIEN@U-+hOU07qZT!j1NluhyS;^k?dGQZY*
zOq;T9((Lo=WY)BBEA71Uuk+}hRjLzDH{aXBaBrsP^l5xmixc->FZNj|XZeEH^>19P
zu1;-)zb@aIDPfzq%5?hfG{^bIo?D(ieOmEno^MrYlW#2wniZ>=P|NdOZdJfOW{Vu}
zu4gl^1*k-EdY;kR>0}lev`Rqt#J=E@Z#D(ZKC5B1nr-T8qkzB)o7rbYy1LTYJm(x`
zvhIH+zn*Va?5QQ^o{3(1u;6;J$>g&}K^A`X_a3s@@P-?PE>At&J3H-3WQyIHOSVsP
zE^r&)<e7Ef%2vVXpX%-fdhDW0^Di1@=A3xD;sN_!^^mPkzV@gDr;A5!onWpz)BWi6
zf)?|INkOZYZ{p<+F<#gGnWeW=*vrv#n%gvQRnz+}cBL=p1q3ZksS~t5ArW7=KAmgn
zq?7Vr_*~iketG`YVE^K*GRyV{r@r_oc5VpRx-tLX%D~9|`j5WO@mOYj`sii$y^P9r
z;>WMAICFi)jqIr(mu&iQs&mE@@1%dNf*%F{RkOO(B>ae)vae{3Z1C1IwGoj<)x3x7
z6DB^Gv1!7|^o(1&>o#6rby~9c;>4$uc8R^*^U3Agy0w#~JP+<<JF2T)yLa7%3*USv
zG0Mg|{S7-dWy&&@?yjv7Yop?ux%@@aCtF0WZf(A|_+-vRHJ-iS`K!XyPjq`p-g=U0
z;-SCJ)8naPmdWH7h0I^Y<^-INKHhmh-)G<A(@}v}1N2VTNVRX>6%(>z&4VN#+xgos
z%vwEpuiC#G)+=UY>&QrisWx0%d)fO<goKrFL^6NKm#BuAo~b#qE5m<=h)<N<{7CtQ
z<MWe+VoVXydy}Jz1Yck9^4hgbuy~q}esbR;=UJgrk7nJxw>89e)|vUv-@m`>tclv`
z&>J`VQOsq5nJ3~)J6Pg3Dqgw}zT=+ZA(pkxM=rJ1-*i-76DRDy&hy{-!>V}?GJVn~
zYlqsoJymjyb@}-^D>yXwXwA-!&g_rA{0|=G{$J@+XgO1LY2dO+l`$`pexF(pJt1J>
z!6%Wia|(Ua`c|!cs&u&f?3~wHQd5r>^29GaUMP^E{W&YhJKopyT2p1hj;^_{6aJ*s
zJ&cN!|2NZemE+@mJLcs%zn&TV`TG6*?U&h{zCFMBZP}X*qLy{*UNXHG51F_ulll4o
zXw#^mp!D_e-8+7qHvc7A=@UEeyq5c?nKJoD=IW$<>dvU|&)QP>R5Gw2(QNj@Q-A;c
z{nLN%*rsDUQfHih&;R4^zwFN$uXQf*?5jO=p*w8x+xVH0C(o|FIelhLrE=<nCoLN{
zR_>YLlj@~ieQno*xtb})m98EaC(LdyJHEQ**k)zRzu8gCP2Ntem)$$dMfl75Wzo#*
zE4Kf$S^nyZ{=T`9-C=*FB|qq|PFqvDZuP<4Z2FNqo*!EluV5e{^m~=>wA0Hs+%{U-
z)f32bv2kU(^%uRTPp2)sdM(l={y#hO)4xp#8yx@3&+wZz?Tl>mhSYY&L*~*`g1C$`
z0@H7r_k4_Z-fcEbM|Gpm0pq8fE;WrVN@fx~zmy(6SfW1T!_lOTFA@~qbgQdrT1$LB
z&bD};i;`TwU)aOyci*lAuXoelC3TR!^?`3?q?xal+oXGc0v0U#$;%QJCmru=(`&tF
z=Ar2F?wPfZk3}5*ZDp_QUbXPq<tYb4MJl;k)*TDmE4QlcYGieM=|!8ZF+p|9T#FZ{
z7CqHFy1M&WxcJ%idb8qVP4@4~_~#lMH+S*f^ru%-Kd*khIz05#Rn`CJOB2g;Pw$A_
z8W1koBO1Qu<*qfJu~XO8F@L<O!=U56IpKsjhkL<F(XXz51Y@ct8v;14r#&=aQrZ{6
zH21HO!n<yE=ZOac&WQK17Fvpb`mMCEV2hAIuN&LMY4&nlol2c8q5>a}F5c*pyVa`U
zS`Ba1;?q2@H|gaTYD#vg@0mB*HPvY6BE9K;6RP{OGVZCB#^o+-HRUhzuzH_U<FYib
z{KMS9{F#>f?L*?y!lYV@dKv3C@7z~-|Mk?XfhNhK*HcbN{$|=2pmgtw6Q}OXPm?2R
z1kbM!Jm^}fG^NAkQL|&bjzAClVkWUZx5FPDbE=NW_a%$>2^k1=Elgu!iilQt)L%J)
zp^MGlFvj86qmL|7k9QqdwkC9Kfv&m=ujqP<+^5U8UCP?Ju#6`@+<r!O+Tv{s^n08*
zk6Q91WY<ir*pcbJb}#dvKb^DwCM;pLc=70Bi+xKeTa%%TEh8g$%f#jl`huOCCb)A-
zbh{}rzFAyg@~od#S>tDbide@{r-KJs_%0^gkzddLd7a}U{mnV8wc6#%efhUaITT-?
zWzD(~a?5I$-e0~Se-cGhqSU8IoH7*?+K^z-X4ZE`WK~tmlg<q;HX;i5m_E8_cx`gt
zEzZ~Oyk+*&{$t9W4h!@ObcKB1i!&{KDj_AewBo|)-t3w!+Yk2L(B8s-Ifwt5RayKi
z13%H^Yg;T_)@PjcyS#RxE7P4PJUcgkOK4qq`Ko)p`=%PMWgjcQ8Yy2(=h8Wz@@fu4
zuFKiT_aB6;ZUkq|N|~$qbP_9Dg{_K|RcO(L-3rfaFZRfM3{Xw#Ua>|e$|a)oOs3uD
z2)hlJ-aH8Wnz^_u%YF0AE0K?GIpy><-t&67z<8N`mBVeFn>m{TcJHxQ;47T!zx(If
z<BwmRT|c$@?$sa178)4YpJ|ylZz*&5zgdB=b6(^gO*-UIt!;jY{qN*?7Hx~?xttL1
zX?Jd}<G<G3rYP2N#7TzVMeV0lf6u4T<0jq;JsA&Lx1D-v_3Gm3;<%kG7iWACI2!1`
zlaKlO`9CJN;<k5bzWIKX`C~$4$io@>0$j&d9}(sHz35@UqID5#ig=FI1eQ&ZdK)6W
z{Ma1deC;Dj7LqK?%@Z5+1$vKNcrWsm|J9e%4G}lQxm%egUv+)8MfNOPah9oyle_MO
z$fr)3E_(y!eZRQ1x1+YoFvyEZF<{=Rw4jXqP0F5US6$6Hu49+8<>RY`Csi^lN)~op
zH;%EcDpjt!kiAv&-m-a1cdpzs=d4)ptVK_H4ddJQ3W{zn68-M~MKLb+j>OYz(T1V!
zF};q#m2nqdO$eX$T*zNxRoErns*Rf6%YKE0*L+zKw{i0;mo<e8E(WKoMW6Qk{EYpO
z?cwVIN$<BV{Joy{@2#JLs>_TjPkTO|zVnaN`AzaS3{9Rate!tlY5hi<qpDwRsus-i
zxwtsrxstD{!cOLk&t=>F%Q{qZBPFF)Jvveqyz)_<_T}BbrbJX<`keH3%ewyAFTFM$
z+b~n()$Kjc?!*~-tqNZo%B(s$c#rAwJ+t+*rS4D2+n~GYTDrc}E0-Pn_+pRm$cR!Y
zkiBY>uy$itSn@Tor<p3Nmz|rncS_W?6XMJ6S{QFmI)1?Yv+Y^qr;&?KYCYE|dwVfO
zZ?bE2_uQF&&nCyQolAKa+#<0;s`jzJ%DXF*TAB3kYh3Huwk+b!a>G>P(vNQ%>athg
z^ts$&VHjks8@luK;p~YUD~_#ClDNRP;@^w;u3Jic5;OwlFJAei)hEyL`kR9sr<41{
zvyVl_F4}WcYo5@8sR69X#n;ZL9ev%saOSemS3zsFVq;TheU-G7{5oYt<0g~Kx3_9c
zEVNm+ZkNUNPfNTvta~4AZQ!kCd*@<K#I=r3qB2v~Uzm|orIpI-Y;+~V_g;$D+PPO&
zdCZEPVBBA85;Eu5<@~oZCw4EJ9d+(<`YpCAv*(=OlxOb7{x^K~%+kdn7cXrn@15PF
z_}F8@=UEau(HmCfX5JOL7O=W#Lh_%;#eXk9KjRUr*ZMF@_T&e%h3@yu66RIRPP%aT
zx76n6SFI;&KiQzTGWg8v1<z9yduz=Pm!8X-dDPX_x?^)*k!AF*2<_)u<++U4m5oJD
z&+L-xn35{9JkrcZ`pdPgXMEm99otzZx+ZYH+TGHv%^pejuN1vk7TeiZ9P1nAr9Q=`
zOg;bn#cIXA#VaEB*B*2*5b<wG>Wt73>}F#VeAMqQJTar?-Kt}MKB}$$wzA>Acn7;v
zgpQw1wHmWyyp0SWyHiQ`f%pCFhZ9-aY8hkv)N3{tD9CXi_36l1k#6*``<T+k6?`1W
zofTa^{ucU|aX@}qG)JR{jf8VTjL7HThyGP)2qdoIVte=5r?sXt!$hjzg=gNP7zLMz
zc_%06iyS?*s3!f;e1$OE$%*kMB2K3YCo9)mww?XJo>6Tp*pnzN<oHM=+wG)l@|M;f
zU0#=t;6-tf=9?yeXcfNm%5neAJY_dsS)SjA9<r?a8d<?<Z(3r|a^&$x7ZtTAiG|1b
z+<Lzy>pl!HneyOFL`zGLahSoo{v(SGC#CIlOF7_wRdOoNtFxWQ7MFZayR;_bLJmLY
znH+ZWPVL37zIr7!FB9<$TJ}YwF|=xK_Kwt>72EIJFkDglYwx+DO=;@KH)ZA=(Jt%Y
z?>%$JO6g_(%H`$v=5zmg@r-+$%n#8;Uk=UdPdIjtoxyB}z;gD-C%B`wDeaH0w?6Rv
zmOxn%+rHAtKYSbJZl5zp;_z$x#9s%+d=@(!=I>d==df#YcwYAM@+1FJ$~*4)d2K!a
zYQJrR>yNwn?jL^3{mHu=uX=mYe(Q~)`=#QmGAHf0^)PP-?_u@?#>4&zcR2qu$1MoI
z>dCS{TIt7LnYbq(VrA;We>J7F^UZuzZCTS_v;R%Y`5Sd-)7sbH-q-Q)oY<m(2Orq1
zAId-f;AnmI)BQL42|vvH(q;WNZ2v3VcH834`G=W&rhNC0J<Koqq0?@k_xrV(`i@(g
zcW(JjFlc}I&H9#nEBD(g`}nupUwPM}U-YA#<2}pGpG+l9cRkm>E*IiwpL66eXPeED
z3H}C8cAvAp_4dIlg>&VF5-%5AlYOsnCRoP)y5o%f&58Uqdmn$6wf#^oVYP9yeAfHM
zwXf~&C$?X((%OCCVgL1sK72dB?RfK{>U!>t*7=3Ccb>MK-&uFIt*Ah7>;7`Vzp`^x
z&L6j~-+7s@{=h@;xzz&2{^C#l$_3|tFBSYZS!P>F{rc0K2lF01DKRgc^m^GX+q_k;
z)6B0{uby2oBmKnUclsU)Sxrak?-nS(akVuJQl63JzPEURT*+bf4UzL5dl;VmHQMXO
z_iTwH&w1}U9{DMUB>t@uIsTzprhZm&y@u?83wptO!tHtz9po0@Kl<QDkI&Ba=_evB
z*91>{;QYyu$6hV?Pq56toi?2h!!7@?wck(s;Vtve!>;e4DBoK%uDjcWC8{jG6iTH2
z;AlUd8}iDe{j-di#hw<$Q@3ySN?E<Vq2PP@ebRyG2ZjZS@ANybEbA|RB|T>s&wOU{
zW&Z;G|1#$s+Lm)eF{pa!TaELR=FOUr=MuSZ%VM9+yzg#iUa;w0na|5{=Kbww0iPz?
zDqX#3#4c;FY`K#zcf==4Thn`+ICni*|K&<aH}}q;ee<exm)EUWK4qHBGP8H0E4OdU
zSfOeDYGr-DiTQyg^L|MzGdtA$+vOGaj9V=6*MsZZSLzm=U*K^ws`vswd(9%(bz$OB
zbGIc<eDyda%)ip|>z;X1Pp)*tFIlu!d&aH>%lWq3F_<5yzY;7wW4kO9<HTLuuRk9+
zTb0FUSbkv1yi;5EaqjuBVcxFwU)OHnwi6Pl*|)ot@$KX1U#{eD&1<qPhz?jX@93V|
z30H&Tk6sb5S-kw8`ZYVAzlsy9R(_Rz&~9AC^`_WDEbdaU;_qrjmh?kPTNCQ-T^=~v
zepURP@4z$fTJZT>=8jD7IvMuQe|P)a{kGW;nFS|)SN_c;(_nu!IJb}0g2nzy@NL=I
zFTMvaQkq(@qoC&Bg+&vU3tX>XJ8v2L$5>m)$0Fn2j53q%?hh@=Ykyq(@p|3rDW-Pk
zA1bw1@|`dI;l_9W$U|$1|9fTX?T^>rb$oAJ^JiC9&8e0@Idg75-I`#>D&H=1%a?2Z
z(+`$>`wu<5Zc)>C_<hljTE6<8hs+9|BKglRoPC(aGr!GNqE3uS=xbHeVP%OrIbFBq
zpS>l7p76EQ@IJ14ZvJqK-28$%X<Jc2f2(?i*$<hd_LfyF-yB=Td^vLBzk@qHZ!rfQ
zXD*1mb>*V|-cYMM52wl{bG@JP?ybauJKnOtm-c(@zf>r3m_OmilrO(!lO_Ho9$zct
z=RJR7+$)QtAB-<;zGPp%WXbax|H3W)%re=gr@C|I`STvZuQy%d_OWNwer=-3`2OjK
z?-qZIdCVJ5{Jpj7G{;Xpr+ue?NS=IK74d7I$=j;!Qzja%i=X=IVbg163A-1+a@YJ7
zysmCobEY(6(v$rKwP8i4^>^%3$vyUAzlY?yzl$aQ@gCd%{+C!=c+CAa9t*3^!=-bz
zCGw6GwC`E|nQ_6kKYL9WH=dIzDw0s-oN?&R@+G^i;txfMS=o2mOtF%8tIT`#gR#xO
z^q<Qu<^Sv@mQ0_fTkr4vd~dsfPs5$3lY}?y%idh$!dH@exPs|1r^Vf;Q`MiuTyLnE
zm3^~yPwP|b2WMk{Kjqo8`!uWYhluNmZ&s@BYB{66@rwE`zti%q_D2PtHYWzXdv`9m
zru=)up2)gIt5xPt<Fsc~zPp-Z|K8tQ-lUz7e$x8R{FJs)wxG?Gzji-4yx#on_`EK!
zX;1&*@8$IpiYk-OTFvb*v1d5)Ghg}7%Xj&nj6Wk=Sf1>6IK}ug-*6A}zm2~)f6|+9
zXa3=Wz15-rG_v(Qf7_p){<PtD^e3*@H=>_re&>H$ek%RW@~1r^CI3VI&2lN(rzSYJ
zTq!?y+wmvnyRCEkPxtQ(e^B_dxubH{(}pW|W^a5u|Ir73gBq`2{_p;7i~ZoZ#$4fl
z_?qj?`OWDE*jE>nck_1@u(#zmiM0KG;5wT>{c0x9^~1Xj?{Mw!e(3juuWhl+yjH^_
zdnEtyA9L<8KK$YOp=r}ZM3$ycxE9GX|9RBBiTBeETeK%EzHs<qBH#OmAB5WFAAFGH
zoBv!OO5=}K-%Hh#dh4eje<J+pb&6|U_aDxm!Jmph#h=zcRlAMx_Jp?`Z^LePTlmRO
zZ+kM$`)T}1q4|4%t#*w*8?UtcY=m`0LVYOvHz(N}&#ki(`*-W?FJil2___Ps!?Pde
zBs@7VWmeodt@Z^MXB%I>sUxE)BK5TSW18=Z8bg(cd$%K}J~ht!(3D!rR;*cATpi@Q
zY^sURg|pLB%!=nb<ue6+4w<SS8f5xlJBP0LvGa;AI<`dwUY;|L^O$tf*HsJczWr$R
zImu-)Gv4dj<w#ZAI>n_T96|eIbmis*ytwvt$Fh~T)>xI*aAmM^JymuOP&BzG!@RMj
zwQIA*0(lRH$9EV*?pL+Xl78Cz<n`=pMwTLvEthg!n;W%a*G<k6ZPqhy3s#iB<~p)Y
zA>>|Z<E^tL8u{;<N~48VZGW?B=e*cUQ&e)54@E4C@R%0l-Q_mLbcS}P_cD)DjuH~K
zL5B`${QmPuXa1xnOR-m;yrC-{_UBCZIeaHbvwiB}n4+Ca#3VG=p3zVK`FYFg&YyeU
zFAFbFiVRA~tE)_Oyg22{2`|p0X=<IqGlY2$X>aq`8+_rx55u_u%T5&e2ItuLciC*8
zaPZOMlQzaP<CeW`x#{ytCtK|M5lyviOP;hYc=0w|*wsoi!=uB`M^kg3_{-g{C$*#0
zScQ`%+f=qrt!}!yXwC`oX@QSJHn*S7I^(qJd(^UDmg?LEOr{d1duK7V9_K#cJFC=b
z_F}irgPK*n_i|K|%ClxpGCI~|&h8_;%6+n=OjKCMge43;Tu+}g|NRwfYMb7&o9n2x
z?|!wFBHdGOUh%lp_3DnK>U_O&w(IPFOg44|2?}Z_HGi2AB((d6$l_|g%&wkk?Yye#
zTSQ_{9iHAD7=QV$qQ(l>eS2e!_q>+h`q0twd`t4p&OH?e^>5C#N`JrL-9qM^<wat7
zj{71`FZ;Pf&7?M1JR<H^*t?Z#`DM*r=G#s6lNP<?O0yAOT;3h|V;+Oa&V^hy)*PN)
z&Z~=)_Rn6!GIjCw{8<wtLvx-xeyvqnQSZ<2g*m+VY0l!f!taaj%ynHSDzYG$S>sO1
zx)W+LFM3byQf%=F)aX8FsIz!$REVyY(wj+n)ASB-%~@=m_Qk>P*NHt<d{^Br2A!Cw
zXq)`xwZ886m+zgQU)yZ)<KW!StIEXQE}b?rew#?3SjlQ8_b=0}&!>4sOzq5QI4<%;
z@9^PmX2PypCPZG5Kf7xBT<3%9ucRf^FP|Q~v`UprTWafmGj3DUwHLV8zMdlVzIJ`?
zQoR|RyQCM3rHQ<aQEP3J{b{wd`<hPC=_0jQ??~~?++%?z!KO2-wkFSfk`$*q&1j|4
zhNsa!VIissH+)O#*F>Dv;pFYi4$Bifpk%i&WwN+Mn9k(O+<j5;pJHQYF1qV?zIfvC
zsoM&Qf=*xfZZ^lNVcGRfyHiWI^ljX~*wJXNS?!uxJY~z*1jy`WS^rq?qQhK`ev!|b
z7Mms(Khf_zzWu?0g;(y($@}#~^u42nUA_J)-DfS&pLu!DRFcVfH%oTb{Mnyp8wr?B
ze(_?0>Fu|c2X&+Lmre)`pTT?R(p$^M%!22^+ErIm|F?Y9IjNjvGgZ;TIcwL#W$sey
zpPpaY%oTF#pwG)EoMx@UB9>Q0+$)!#n>5kwt<W>><1%K`YtHF7Yp4Gg<aJJYCShg&
zW@fNUijl3YRUO~c><p>hq8S%-e%T*Ro_A&1JZ6o<zTHVBHv^Zrm#0pgf0U<a(NynO
zx|@8yh1F(SBnGD~emU#YtDg)k+by`$g1)Pr+4634h_!pzzE{4jp+;hL4riYnK6+X>
z;Aexu>zS&a!rXduy0&X-J1J*QTqO4F*!_kme~!(smQ>w)#gvt1@1OQ5zu}{epT?g<
zwKFu17aowDQpg(0#hMuA9PXgKNbmu>^-TV4tyg{@S^I9=O4f5icDnprhU}83jrH2~
zbgwG8@mBtkF`O4HkSk(**X3i`oGX3Vk6$cWA8=UhQ`f~UR!VN>n~$}oR_Df+$vIb_
zI`pW+&a`{ts^gtSZ$or{E$P@?vMWjS*sEmOm#GKddd~5gbTc^BTz<8Ko!1S0r*&5&
zcJ1g%pR)F+sKI4*#h))?)lyc=&l5}we=w=VcYdl%=w`2=fR%DGOmnX#8FQ^$e3>c0
zcps1A{YjzEGjnxsTw3n;Nvm{sjo!-CNiR}5c-Z`;^-doN{AN4xiDle1&T6ecvyN_J
z;*eg@Uw`+_)VGI3{1$YDZPUzo_9KVYdi{ZW+NWLH#dNodtbNnbQ?%Sz)8z1q>_v}H
zW$x`3(_YfcXZU;aanrwVIxlQUnYd74*}}*rH9jX7>8jV<Elm^E`@Q3G7F*+#+zoCm
z@0b!JH$VHyZIHZqmEFmypZz8r>r?r<jay7iJL!0U+@kX3Mn6-d7HxX-B~H9{vH3-%
zDQ>f^yY0?a<Zv;(lWCJY;UIQyq5SHHrp(<NSZ;*)EH|9mQrMz3;c&j(Lvv@Y5Fb&4
zGp{!!S_J(ywpgq8Yv=rH#xwY}RhO(#{8#y*Kyp`~a!Y~~PlLFhQVr+nXB*GyT+ccB
z;luiu6;cJSE@rEHaAi*Uu*%5JV$TM4%eE({FQ3x<TVA^?yY4!BmAYYD82>cE&n$7F
zdz{?QE#Z%TzVlk<5w$ad$8-#93#JRaXIkcFP}^ANn{zzy%=t(0f|d(S***pYrloT}
zRN1Ihyi&1dO0k!YsTSvL?yB4)AB~)*cuBog(S9WOZHd6TLSL7}u=ew_YEn14aGhhy
zF+P<NDQ0oRa$4HSL+^yP%Ur*3Hsi~)8QofWX7iKxP2U;9dR3Ntmr0tGXL9u7d3!`p
zJ7@<sePg}Gn6uXUWNN6v6X!`61llTPL!R3l6KCAT6(jv|t_qjXmgl9t4CYq@k}4*x
zzmONu+V}a4^-J3w(=u9Dyq5mDWkT1nr4!EmGCI=oRdlA(*Oj4a7yLrLPfjbhJea||
zJlEn@p5mP9jniwz_Rf2Dsryd2vd2UXj=QQJY}p%<cn<g~Smr$nR4!fe#n5$c-id}6
z*S74ro^ja7%OrQpBIk!6eN+#qMujBRCGK@xd&e)s{P&{M9fIyRxNmbU`!*>yph6`0
zK3~x3*lRHb;t{{aci!(ZVXIm@XSPiF(uy}TO23Ki^ldxWRmk)Bx?12X!BypVo?Mvl
zTp`x{a;fOr*m-N)nhalA>w8%5y(6Z7MZUF#J(|^Rmf@+ezR$m0=7kFJycaD<-V*9`
zdT;X5#H;3Q@5KtF1i61KHz?1{`N?%zhilE;uN$?ZHr!p|*pn^#&cvPb`TG^;?9(JI
zdmir4c=I!DVWW44^W%drT(7jbOmttc>~$aeGlQ@rl8cVqndGYfvT}2Wd92>ft+SRX
zdi(p<wz*y8dEBVD$17CA_3kc(WA9$cEX@k}{A2BgTFqKLm9<TCzn+?2J;j^<`eDhn
ztGy3ZiQH_PXX-ZNw8v+OAh(_0W>@6-Zqz;h>5X;)+Xns&x#d6SRQa5#GJhG-9kab%
zv!k;5;1&~=(>mvSStnfcPpWFPRIU~Ke28=Ne%%XeS3hvy_xDG+;QG}T_EMU^{@i@j
z?Z5Z^&G|C_{<hcub+(`RV{iMyxBvcseYXG4V*d4eVz-?(dn3KuecG?;m`9Jqrr!(e
zSNZzo)*IW|A9wTaxBjqOdVlo?>z4Zrb;_Ie25;MbvMk(s(f4mEPtN%T{#&p^Cev{T
zpVaal-Ap@08FO>X`gxswJZu~58jTh8g5Q?Be7n=RXlv7zmv))QgWh?+Uvel{w`BUc
zMvl4fyyc4+9>!PQc_t9@+gvc~{L=oe)5m4^+D@N$sLf)gec!gq0}rMI*mb_mIGn$p
z*CCJf#m+A|tJx1fzcpdKcl^tpUzVD+^B$g;H}he<>%`J+Ow-;U;j+#(<1+M9jo;AB
z`*`k&^m_G8E)_xP`&Yd9ZKeM>HSU<}IsP{X&UA(Si{G8V|5Rx`d&}DC*O-NzCajL0
z^z`1m(`zsB7BHX7)QD;--`?51`t0Q{p`-j?=lxbWnHQbT?P0`r;j-7C_;*hWHs4L0
zyuEan!NYxf)?QUi?BLCIPSNT;a93Ai-j?sX^xrF9^g6*(ZnRvM?`Ew~p$FgJzhyqL
z_uO_pS=4iS_g(eCw3^h;IKBjJt7<)W0q0|K@7~|JcK>aGLQV94vp2Egi?|-z-Rt8$
z$o-G|qKzNV&VVVoKS~3y7ydmVz3K4;S1++ySFXLwI5?}b(d@vc`N!+u?G~?QGWxdc
z_a~Mz^U~K(HG3xP+7ZLl_y34MQe4%=r$t{`1TH+9kXkwSaNnO&p=J%9S9kyYGi%pl
z6_NHTa%u9NcJ#=CkH2R>KV-L`W%FF=Gj|nhFZY?X#Y_{LSFoR@wl`1BIi#sUbhd}a
zEOv2sxxdT#ex~&)eR!|?>AcD!|KsMHtuLzX4vjrkeQX2IF0K=+cg}pn`HQ)(U$wlS
zWp`62tLiiVmi9}G{|^ONh<NfGo&5Q;b7P3ktPWPDg#ku98~m8u9scaoaFABpVbrr_
z<H?<k=i<(tl73k@@AlO_J7=5kcKKcK>+QcUi<kFFe}DG!`yTcAN8T$lsHYuE(^Id%
zYy5BD{XI|3@BKfnzvuOfPscgZOa4pVTBSSB(9+I$naKHRR}RfginK|;^0WH<hjY(n
zx@qrmn$@pd|M%plna$cF-yQCr_x8Wme6DxZtq3#k?Z1xBEp>fZ%=qQ!%e)UVZQ=I+
z!|a9TH{WL|SSjVV>iv4=<>w9m-22LN;PbYkbDzzu3M#p3yDfQ+7e2LN7A}y<JN|{G
z&AqW*;7{V|@9QG`k4j&^{$i!r>GNNu<{KWfI{LbM@vo@NroVzyKbIG-j4T$NyS3u#
zqtCl_+jCu#+pb?Z6uxTdmGc&LpY?m<3}k!u$~SSyKdog+HuZ|u>n$_n(GPnl+s|72
zJh{{MI#ZR+;UD4m`~$SYb|&>IebagIBX5R(M*pj7i7Wd=r!0#oz3@EjOk@&&uFrbG
z-)z+(Mz_t6?W^s&9lK(}>8)><Ot9M$`C{IqB3JIc3`OtE_aAY$pL_PnrIy+0{9Dfa
z-Fo%?W7(xTm+$tJoO~UV(zW<a`?><|uU9K&XRuda?6>)480MeF@ZDhl@vlabbK@89
z{W*W;`^<OKGvlsbdZpjG^V+^W*Zy%7*N0qM{ch?jyUya7%6k^6MSb>|9OfIY{r%PR
z_><3>AN^eUj(L68qx+AZ|7Q&FW@KVuz`Y}Y0R^D%4?x$AzM3APnTZka+WG)*RyL4g
QCI%*kb_NCp0Rs>Z0Mb?(!2kdN

literal 0
HcmV?d00001

diff --git a/wp-includes/js/mediaelement/wp-mediaelement.css b/wp-includes/js/mediaelement/wp-mediaelement.css
new file mode 100644
index 000000000..18ad94855
--- /dev/null
+++ b/wp-includes/js/mediaelement/wp-mediaelement.css
@@ -0,0 +1,15 @@
+.mejs-container, .mejs-embed, .mejs-embed body {
+	background: #464646;
+}
+
+.mejs-controls .mejs-time-rail .mejs-time-loaded {
+	background: #21759b;
+}
+
+.mejs-controls .mejs-time-rail .mejs-time-current {
+	background: #d54e21;
+}
+
+.me-cannotplay {
+	width: auto !important;
+}
diff --git a/wp-includes/js/mediaelement/wp-mediaelement.js b/wp-includes/js/mediaelement/wp-mediaelement.js
new file mode 100644
index 000000000..fb09e3cde
--- /dev/null
+++ b/wp-includes/js/mediaelement/wp-mediaelement.js
@@ -0,0 +1,15 @@
+(function ($) {
+	// 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 () {
+		var settings = {};
+
+		if ( typeof _wpmejsSettings !== 'undefined' )
+			settings.pluginPath = _wpmejsSettings.pluginPath;
+
+		$('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer( settings );
+	});
+
+}(jQuery));
diff --git a/wp-includes/js/plupload/changelog.txt b/wp-includes/js/plupload/changelog.txt
index 9a38d4ab1..7aaff4c8b 100644
--- a/wp-includes/js/plupload/changelog.txt
+++ b/wp-includes/js/plupload/changelog.txt
@@ -1,3 +1,17 @@
+Version 1.5.7 (2013-04-10)
+	HTML5: Workaround for squish problem in iOS6, when uploading resized images.
+	HTML5: Fix failing workaround for FormData+Blob bug on Android...
+	HTML5: Allow multiple uploads on iOS.
+	Include VB build script that doesn't depend on Ant and is said to be native to Windows.
+Version 1.5.6 (2013-02-28)
+	Fix regression: getPos() wrong on ie6/7.
+	HTML5: Send file as binary string if it was mangled, even if multipart is set to false.
+	HTML5: Add workaround Android browsers, that are unable to properly send blobs in FormData.
+	HTML4/Flash/Silverlight: Destroy fails to cleanup everything when container not defined.
+	UI, Queue: Use html() instead of text(), otherwise special characters fail to display properly.
+	UI, Queue: Use on() instead of delegate() or live(). Update examples to use jQuery 1.9.0 by default.
+	Queue: Blur rename input field when ESC is pressed.
+	Additional language packs: Slovak.
 Version 1.5.5 (2013-01-23)
 	UI Widget: Fix sortable feature, broken in jQuery UI 1.9.
 	Queue: Replace live() with delegate(), as live() was removed from jQuery 1.9.
diff --git a/wp-includes/js/plupload/plupload.flash.js b/wp-includes/js/plupload/plupload.flash.js
index aa87c6b84..7d3f0087c 100644
--- a/wp-includes/js/plupload/plupload.flash.js
+++ b/wp-includes/js/plupload/plupload.flash.js
@@ -1 +1 @@
-(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins["Shockwave Flash"];h=h.description}catch(j){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){h="0.0"}}h=h.match(/\d+/g);return parseFloat(h[0]+"."+h[1])}d.flash={trigger:function(j,h,i){setTimeout(function(){var m=a[j],l,k;if(m){m.trigger("Flash:"+h,i)}},0)}};d.runtimes.Flash=d.addRuntime("flash",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(m,o){var k,l,h=0,i=b.body;if(c()<10){o({success:false});return}g[m.id]=false;a[m.id]=m;k=b.getElementById(m.settings.browse_button);l=b.createElement("div");l.id=m.id+"_flash_container";d.extend(l.style,{position:"absolute",top:"0px",background:m.settings.shim_bgcolor||"transparent",zIndex:99999,width:"100%",height:"100%"});l.className="plupload flash";if(m.settings.container){i=b.getElementById(m.settings.container);if(d.getStyle(i,"position")==="static"){i.style.position="relative"}}i.appendChild(l);(function(){var p,q;p='<object id="'+m.id+'_flash" type="application/x-shockwave-flash" data="'+m.settings.flash_swf_url+'" ';if(d.ua.ie){p+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '}p+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+m.settings.flash_swf_url+'" /><param name="flashvars" value="id='+escape(m.id)+'" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>';if(d.ua.ie){q=b.createElement("div");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+"_flash")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind("Destroy",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+"_flash_container");if(q){i.removeChild(q)}});m.bind("Flash:Init",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind("UploadFile",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\.(jpg|jpeg)$/i.test(u.name)?"jpg":"png",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind("CancelUpload",function(){n().cancelUpload()});m.bind("Flash:UploadProcess",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger("UploadProgress",u)}});m.bind("Flash:UploadChunkComplete",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger("ChunkUploaded",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger("FileUploaded",t,{response:u.text})}});m.bind("Flash:SelectFiles",function(s,v){var u,t,w=[],x;for(t=0;t<v.length;t++){u=v[t];x=d.guid();r[x]=u.id;r[u.id]=x;w.push(new d.File(x,u.name,u.size))}if(w.length){m.trigger("FilesAdded",w)}});m.bind("Flash:SecurityError",function(s,t){m.trigger("Error",{code:d.SECURITY_ERROR,message:d.translate("Security error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:GenericError",function(s,t){m.trigger("Error",{code:d.GENERIC_ERROR,message:d.translate("Generic error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:IOError",function(s,t){m.trigger("Error",{code:d.IO_ERROR,message:d.translate("IO error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:ImageError",function(s,t){m.trigger("Error",{code:parseInt(t.code,10),message:d.translate("Image error."),file:m.getFile(r[t.id])})});m.bind("Flash:StageEvent:rollOver",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});m.bind("Flash:StageEvent:rollOut",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});m.bind("Flash:StageEvent:mouseDown",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,"mouseup",function(){d.removeClass(t,u)},s.id)}});m.bind("Flash:StageEvent:mouseUp",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});m.bind("Flash:ExifData",function(s,t){m.trigger("ExifData",m.getFile(r[t.id]),t.data)});m.bind("Flash:GpsData",function(s,t){m.trigger("GpsData",m.getFile(r[t.id]),t.data)});m.bind("QueueChanged",function(s){m.refresh()});m.bind("FilesRemoved",function(s,u){var t;for(t=0;t<u.length;t++){n().removeFile(r[u[t].id])}});m.bind("StateChanged",function(s){m.refresh()});m.bind("Refresh",function(s){var t,u,v;n().setFileFilters(m.settings.filters,m.settings.multi_selection);t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+"_flash_container").style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"})}});m.bind("DisableBrowse",function(s,t){n().disableBrowse(t)});o({success:true})})}})})(window,document,plupload);
\ No newline at end of file
+(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins["Shockwave Flash"];h=h.description}catch(j){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){h="0.0"}}h=h.match(/\d+/g);return parseFloat(h[0]+"."+h[1])}d.flash={trigger:function(j,h,i){setTimeout(function(){var m=a[j],l,k;if(m){m.trigger("Flash:"+h,i)}},0)}};d.runtimes.Flash=d.addRuntime("flash",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(m,o){var k,l,h=0,i=b.body;if(c()<10){o({success:false});return}g[m.id]=false;a[m.id]=m;k=b.getElementById(m.settings.browse_button);l=b.createElement("div");l.id=m.id+"_flash_container";d.extend(l.style,{position:"absolute",top:"0px",background:m.settings.shim_bgcolor||"transparent",zIndex:99999,width:"100%",height:"100%"});l.className="plupload flash";if(m.settings.container){i=b.getElementById(m.settings.container);if(d.getStyle(i,"position")==="static"){i.style.position="relative"}}i.appendChild(l);(function(){var p,q;p='<object id="'+m.id+'_flash" type="application/x-shockwave-flash" data="'+m.settings.flash_swf_url+'" ';if(d.ua.ie){p+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '}p+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+m.settings.flash_swf_url+'" /><param name="flashvars" value="id='+escape(m.id)+'" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>';if(d.ua.ie){q=b.createElement("div");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+"_flash")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind("Destroy",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+"_flash_container");if(q){q.parentNode.removeChild(q)}});m.bind("Flash:Init",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind("UploadFile",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\.(jpg|jpeg)$/i.test(u.name)?"jpg":"png",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind("CancelUpload",function(){n().cancelUpload()});m.bind("Flash:UploadProcess",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger("UploadProgress",u)}});m.bind("Flash:UploadChunkComplete",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger("ChunkUploaded",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger("FileUploaded",t,{response:u.text})}});m.bind("Flash:SelectFiles",function(s,v){var u,t,w=[],x;for(t=0;t<v.length;t++){u=v[t];x=d.guid();r[x]=u.id;r[u.id]=x;w.push(new d.File(x,u.name,u.size))}if(w.length){m.trigger("FilesAdded",w)}});m.bind("Flash:SecurityError",function(s,t){m.trigger("Error",{code:d.SECURITY_ERROR,message:d.translate("Security error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:GenericError",function(s,t){m.trigger("Error",{code:d.GENERIC_ERROR,message:d.translate("Generic error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:IOError",function(s,t){m.trigger("Error",{code:d.IO_ERROR,message:d.translate("IO error."),details:t.message,file:m.getFile(r[t.id])})});m.bind("Flash:ImageError",function(s,t){m.trigger("Error",{code:parseInt(t.code,10),message:d.translate("Image error."),file:m.getFile(r[t.id])})});m.bind("Flash:StageEvent:rollOver",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});m.bind("Flash:StageEvent:rollOut",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});m.bind("Flash:StageEvent:mouseDown",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,"mouseup",function(){d.removeClass(t,u)},s.id)}});m.bind("Flash:StageEvent:mouseUp",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});m.bind("Flash:ExifData",function(s,t){m.trigger("ExifData",m.getFile(r[t.id]),t.data)});m.bind("Flash:GpsData",function(s,t){m.trigger("GpsData",m.getFile(r[t.id]),t.data)});m.bind("QueueChanged",function(s){m.refresh()});m.bind("FilesRemoved",function(s,u){var t;for(t=0;t<u.length;t++){n().removeFile(r[u[t].id])}});m.bind("StateChanged",function(s){m.refresh()});m.bind("Refresh",function(s){var t,u,v;n().setFileFilters(m.settings.filters,m.settings.multi_selection);t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+"_flash_container").style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"})}});m.bind("DisableBrowse",function(s,t){n().disableBrowse(t)});o({success:true})})}})})(window,document,plupload);
\ No newline at end of file
diff --git a/wp-includes/js/plupload/plupload.html4.js b/wp-includes/js/plupload/plupload.html4.js
index b20c88f7d..0a8f4033e 100644
--- a/wp-includes/js/plupload/plupload.html4.js
+++ b/wp-includes/js/plupload/plupload.html4.js
@@ -1 +1 @@
-(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime("html4",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind("Init",function(p){var j=a.body,n,h="javascript",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]==="*"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(",");function v(){var B,y,i,A;q=b.guid();z.push(q);B=a.createElement("form");B.setAttribute("id","form_"+q);B.setAttribute("method","post");B.setAttribute("enctype","multipart/form-data");B.setAttribute("encoding","multipart/form-data");B.setAttribute("target",p.id+"_iframe");B.style.position="absolute";y=a.createElement("input");y.setAttribute("id","input_"+q);y.setAttribute("type","file");y.setAttribute("accept",t);y.setAttribute("size",1);A=e(p.settings.browse_button);if(p.features.triggerDialog&&A){b.addEvent(e(p.settings.browse_button),"click",function(C){if(!y.disabled){y.click()}C.preventDefault()},p.id)}b.extend(y.style,{width:"100%",height:"100%",opacity:0,fontSize:"99px",cursor:"pointer"});b.extend(B.style,{overflow:"hidden"});i=p.settings.shim_bgcolor;if(i){B.style.background=i}if(r){b.extend(y.style,{filter:"alpha(opacity=0)"})}b.addEvent(y,"change",function(F){var D=F.target,C,E=[],G;if(D.value){e("form_"+q).style.top=-1048575+"px";C=D.value.replace(/\\/g,"/");C=C.substring(C.length,C.lastIndexOf("/")+1);E.push(new b.File(q,C));if(!p.features.triggerDialog){b.removeAllEvents(B,p.id)}else{b.removeEvent(A,"click",p.id)}b.removeEvent(y,"change",p.id);v();if(E.length){f.trigger("FilesAdded",E)}}},p.id);B.appendChild(y);j.appendChild(B);p.refresh()}function u(){var i=a.createElement("div");i.innerHTML='<iframe id="'+p.id+'_iframe" name="'+p.id+'_iframe" src="'+h+':&quot;&quot;" style="display:none"></iframe>';n=i.firstChild;j.appendChild(n);b.addEvent(n,"load",function(C){var D=C.target,B,y;if(!k){return}try{B=D.contentWindow.document||D.contentDocument||d.frames[D.id].document}catch(A){p.trigger("Error",{code:b.SECURITY_ERROR,message:b.translate("Security error."),file:k});return}y=B.body.innerHTML;if(y){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger("UploadProgress",k);p.trigger("FileUploaded",k,{response:y})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,"position")==="static"){j.style.position="relative"}}p.bind("UploadFile",function(i,A){var B,y;if(A.status==b.DONE||A.status==b.FAILED||i.state==b.STOPPED){return}B=e("form_"+A.id);y=e("input_"+A.id);y.setAttribute("name",i.settings.file_data_name);B.setAttribute("action",i.settings.url);b.each(b.extend({name:A.target_name||A.name},i.settings.multipart_params),function(E,C){var D=a.createElement("input");b.extend(D,{type:"hidden",name:C,value:E});B.insertBefore(D,B.firstChild)});k=A;e("form_"+q).style.top=-1048575+"px";B.submit()});p.bind("FileUploaded",function(i){i.refresh()});p.bind("StateChanged",function(i){if(i.state==b.STARTED){u()}else{if(i.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,"load",i.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(i.files,function(A,y){if(A.status===b.DONE||A.status===b.FAILED){var B=e("form_"+A.id);if(B){B.parentNode.removeChild(B)}}})});p.bind("Refresh",function(y){var F,A,B,C,i,G,H,E,D;F=e(y.settings.browse_button);if(F){i=b.getPos(F,e(y.settings.container));G=b.getSize(F);H=e("form_"+q);E=e("input_"+q);b.extend(H.style,{top:i.y+"px",left:i.x+"px",width:G.w+"px",height:G.h+"px"});if(y.features.triggerDialog){if(b.getStyle(F,"position")==="static"){b.extend(F.style,{position:"relative"})}D=parseInt(F.style.zIndex,10);if(isNaN(D)){D=0}b.extend(F.style,{zIndex:D});b.extend(H.style,{zIndex:D-1})}B=y.settings.browse_button_hover;C=y.settings.browse_button_active;A=y.features.triggerDialog?F:H;if(B){b.addEvent(A,"mouseover",function(){b.addClass(F,B)},y.id);b.addEvent(A,"mouseout",function(){b.removeClass(F,B)},y.id)}if(C){b.addEvent(A,"mousedown",function(){b.addClass(F,C)},y.id);b.addEvent(a.body,"mouseup",function(){b.removeClass(F,C)},y.id)}}});f.bind("FilesRemoved",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e("form_"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind("DisableBrowse",function(i,A){var y=a.getElementById("input_"+q);if(y){y.disabled=A}});f.bind("Destroy",function(i){var y,A,B,C={inputContainer:"form_"+q,inputFile:"input_"+q,browseButton:i.settings.browse_button};for(y in C){A=e(C[y]);if(A){b.removeAllEvents(A,i.id)}}b.removeAllEvents(a.body,i.id);b.each(z,function(E,D){B=e("form_"+E);if(B){j.removeChild(B)}})});v()});g({success:true})}})})(window,document,plupload);
\ No newline at end of file
+(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime("html4",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind("Init",function(p){var j=a.body,n,h="javascript",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]==="*"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(",");function v(){var B,y,i,A;q=b.guid();z.push(q);B=a.createElement("form");B.setAttribute("id","form_"+q);B.setAttribute("method","post");B.setAttribute("enctype","multipart/form-data");B.setAttribute("encoding","multipart/form-data");B.setAttribute("target",p.id+"_iframe");B.style.position="absolute";y=a.createElement("input");y.setAttribute("id","input_"+q);y.setAttribute("type","file");y.setAttribute("accept",t);y.setAttribute("size",1);A=e(p.settings.browse_button);if(p.features.triggerDialog&&A){b.addEvent(e(p.settings.browse_button),"click",function(C){if(!y.disabled){y.click()}C.preventDefault()},p.id)}b.extend(y.style,{width:"100%",height:"100%",opacity:0,fontSize:"99px",cursor:"pointer"});b.extend(B.style,{overflow:"hidden"});i=p.settings.shim_bgcolor;if(i){B.style.background=i}if(r){b.extend(y.style,{filter:"alpha(opacity=0)"})}b.addEvent(y,"change",function(F){var D=F.target,C,E=[],G;if(D.value){e("form_"+q).style.top=-1048575+"px";C=D.value.replace(/\\/g,"/");C=C.substring(C.length,C.lastIndexOf("/")+1);E.push(new b.File(q,C));if(!p.features.triggerDialog){b.removeAllEvents(B,p.id)}else{b.removeEvent(A,"click",p.id)}b.removeEvent(y,"change",p.id);v();if(E.length){f.trigger("FilesAdded",E)}}},p.id);B.appendChild(y);j.appendChild(B);p.refresh()}function u(){var i=a.createElement("div");i.innerHTML='<iframe id="'+p.id+'_iframe" name="'+p.id+'_iframe" src="'+h+':&quot;&quot;" style="display:none"></iframe>';n=i.firstChild;j.appendChild(n);b.addEvent(n,"load",function(C){var D=C.target,B,y;if(!k){return}try{B=D.contentWindow.document||D.contentDocument||d.frames[D.id].document}catch(A){p.trigger("Error",{code:b.SECURITY_ERROR,message:b.translate("Security error."),file:k});return}y=B.documentElement.innerText||B.documentElement.textContent;if(y){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger("UploadProgress",k);p.trigger("FileUploaded",k,{response:y})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,"position")==="static"){j.style.position="relative"}}p.bind("UploadFile",function(i,A){var B,y;if(A.status==b.DONE||A.status==b.FAILED||i.state==b.STOPPED){return}B=e("form_"+A.id);y=e("input_"+A.id);y.setAttribute("name",i.settings.file_data_name);B.setAttribute("action",i.settings.url);b.each(b.extend({name:A.target_name||A.name},i.settings.multipart_params),function(E,C){var D=a.createElement("input");b.extend(D,{type:"hidden",name:C,value:E});B.insertBefore(D,B.firstChild)});k=A;e("form_"+q).style.top=-1048575+"px";B.submit()});p.bind("FileUploaded",function(i){i.refresh()});p.bind("StateChanged",function(i){if(i.state==b.STARTED){u()}else{if(i.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,"load",i.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(i.files,function(A,y){if(A.status===b.DONE||A.status===b.FAILED){var B=e("form_"+A.id);if(B){B.parentNode.removeChild(B)}}})});p.bind("Refresh",function(y){var F,A,B,C,i,G,H,E,D;F=e(y.settings.browse_button);if(F){i=b.getPos(F,e(y.settings.container));G=b.getSize(F);H=e("form_"+q);E=e("input_"+q);b.extend(H.style,{top:i.y+"px",left:i.x+"px",width:G.w+"px",height:G.h+"px"});if(y.features.triggerDialog){if(b.getStyle(F,"position")==="static"){b.extend(F.style,{position:"relative"})}D=parseInt(F.style.zIndex,10);if(isNaN(D)){D=0}b.extend(F.style,{zIndex:D});b.extend(H.style,{zIndex:D-1})}B=y.settings.browse_button_hover;C=y.settings.browse_button_active;A=y.features.triggerDialog?F:H;if(B){b.addEvent(A,"mouseover",function(){b.addClass(F,B)},y.id);b.addEvent(A,"mouseout",function(){b.removeClass(F,B)},y.id)}if(C){b.addEvent(A,"mousedown",function(){b.addClass(F,C)},y.id);b.addEvent(a.body,"mouseup",function(){b.removeClass(F,C)},y.id)}}});f.bind("FilesRemoved",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e("form_"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind("DisableBrowse",function(i,A){var y=a.getElementById("input_"+q);if(y){y.disabled=A}});f.bind("Destroy",function(i){var y,A,B,C={inputContainer:"form_"+q,inputFile:"input_"+q,browseButton:i.settings.browse_button};for(y in C){A=e(C[y]);if(A){b.removeAllEvents(A,i.id)}}b.removeAllEvents(a.body,i.id);b.each(z,function(E,D){B=e("form_"+E);if(B){B.parentNode.removeChild(B)}})});v()});g({success:true})}})})(window,document,plupload);
\ No newline at end of file
diff --git a/wp-includes/js/plupload/plupload.html5.js b/wp-includes/js/plupload/plupload.html5.js
index 2e00bc519..a4b2a1fc0 100644
--- a/wp-includes/js/plupload/plupload.html5.js
+++ b/wp-includes/js/plupload/plupload.html5.js
@@ -1 +1 @@
-(function(h,k,j,e){var c={},g;function m(o,p){var n;if("FileReader" in h){n=new FileReader();n.readAsDataURL(o);n.onload=function(){p(n.result)}}else{return p(o.getAsDataURL())}}function l(o,p){var n;if("FileReader" in h){n=new FileReader();n.readAsBinaryString(o);n.onload=function(){p(n.result)}}else{return p(o.getAsBinary())}}function d(r,p,n,v){var q,o,u,s,t=this;m(c[r.id],function(w){q=k.createElement("canvas");q.style.display="none";k.body.appendChild(q);o=q.getContext("2d");u=new Image();u.onerror=u.onabort=function(){v({success:false})};u.onload=function(){var C,x,z,y,B;if(!p.width){p.width=u.width}if(!p.height){p.height=u.height}s=Math.min(p.width/u.width,p.height/u.height);if(s<1){C=Math.round(u.width*s);x=Math.round(u.height*s)}else{if(p.quality&&n==="image/jpeg"){C=u.width;x=u.height}else{v({success:false});return}}q.width=C;q.height=x;o.drawImage(u,0,0,C,x);if(n==="image/jpeg"){y=new f(atob(w.substring(w.indexOf("base64,")+7)));if(y.headers&&y.headers.length){B=new a();if(B.init(y.get("exif")[0])){B.setExif("PixelXDimension",C);B.setExif("PixelYDimension",x);y.set("exif",B.getBinary());if(t.hasEventListener("ExifData")){t.trigger("ExifData",r,B.EXIF())}if(t.hasEventListener("GpsData")){t.trigger("GpsData",r,B.GPS())}}}if(p.quality){try{w=q.toDataURL(n,p.quality/100)}catch(A){w=q.toDataURL(n)}}}else{w=q.toDataURL(n)}w=w.substring(w.indexOf("base64,")+7);w=atob(w);if(y&&y.headers&&y.headers.length){w=y.restore(w);y.purge()}q.parentNode.removeChild(q);v({success:true,data:w})};u.src=w})}j.runtimes.Html5=j.addRuntime("html5",{getFeatures:function(){var s,o,r,q,p,n;o=r=p=n=false;if(h.XMLHttpRequest){s=new XMLHttpRequest();r=!!s.upload;o=!!(s.sendAsBinary||s.upload)}if(o){q=!!(s.sendAsBinary||(h.Uint8Array&&h.ArrayBuffer));p=!!(File&&(File.prototype.getAsDataURL||h.FileReader)&&q);n=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}g=j.ua.safari&&j.ua.windows;return{html5:o,dragdrop:(function(){var t=k.createElement("div");return("draggable" in t)||("ondragstart" in t&&"ondrop" in t)}()),jpgresize:p,pngresize:p,multipart:p||!!h.FileReader||!!h.FormData,canSendBinary:q,cantSendBlobInFormData:!!(j.ua.gecko&&h.FormData&&h.FileReader&&!FileReader.prototype.readAsArrayBuffer),progress:r,chunks:n,multi_selection:!(j.ua.safari&&j.ua.windows),triggerDialog:(j.ua.gecko&&h.FormData||j.ua.webkit)}},init:function(p,r){var n,q;function o(w){var u,t,v=[],x,s={};for(t=0;t<w.length;t++){u=w[t];if(s[u.name]){continue}s[u.name]=true;x=j.guid();c[x]=u;v.push(new j.File(x,u.fileName||u.name,u.fileSize||u.size))}if(v.length){p.trigger("FilesAdded",v)}}n=this.getFeatures();if(!n.html5){r({success:false});return}p.bind("Init",function(w){var G,F,C=[],v,D,t=w.settings.filters,u,B,s=k.body,E;G=k.createElement("div");G.id=w.id+"_html5_container";j.extend(G.style,{position:"absolute",background:p.settings.shim_bgcolor||"transparent",width:"100px",height:"100px",overflow:"hidden",zIndex:99999,opacity:p.settings.shim_bgcolor?"":0});G.className="plupload html5";if(p.settings.container){s=k.getElementById(p.settings.container);if(j.getStyle(s,"position")==="static"){s.style.position="relative"}}s.appendChild(G);no_type_restriction:for(v=0;v<t.length;v++){u=t[v].extensions.split(/,/);for(D=0;D<u.length;D++){if(u[D]==="*"){C=[];break no_type_restriction}B=j.mimeTypes[u[D]];if(B&&j.inArray(B,C)===-1){C.push(B)}}}G.innerHTML='<input id="'+p.id+'_html5"  style="font-size:999px" type="file" accept="'+C.join(",")+'" '+(p.settings.multi_selection&&p.features.multi_selection?'multiple="multiple"':"")+" />";G.scrollTop=100;E=k.getElementById(p.id+"_html5");if(w.features.triggerDialog){j.extend(E.style,{position:"absolute",width:"100%",height:"100%"})}else{j.extend(E.style,{cssFloat:"right",styleFloat:"right"})}E.onchange=function(){o(this.files);this.value=""};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,"mouseover",function(){j.addClass(F,z)},w.id);j.addEvent(x,"mouseout",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,"mousedown",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,"mouseup",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,"click",function(H){var y=k.getElementById(w.id+"_html5");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind("PostInit",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,"dragenter",function(w){var v,t,u;v=k.getElementById(p.id+"_drop");if(!v){v=k.createElement("input");v.setAttribute("type","file");v.setAttribute("id",p.id+"_drop");v.setAttribute("multiple","multiple");j.addEvent(v,"change",function(){o(this.files);j.removeEvent(v,"change",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,"position")==="static"){j.extend(s.style,{position:"relative"})}j.extend(v.style,{position:"absolute",display:"block",top:0,left:0,width:u.w+"px",height:u.h+"px",opacity:0})},p.id);return}j.addEvent(s,"dragover",function(t){t.preventDefault()},p.id);j.addEvent(s,"drop",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind("Refresh",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+"_html5_container");j.extend(x.style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"});if(p.features.triggerDialog){if(j.getStyle(t,"position")==="static"){j.extend(t.style,{position:"relative"})}w=parseInt(j.getStyle(t,"zIndex"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind("DisableBrowse",function(s,u){var t=k.getElementById(s.id+"_html5");if(t){t.disabled=u}});p.bind("CancelUpload",function(){if(q&&q.abort){q.abort()}});p.bind("UploadFile",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=("FileReader" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N="----pluploadboundary"+j.guid(),O,P="--",U="\r\n",R="";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger("UploadProgress",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger("Error",{code:j.HTTP_ERROR,message:j.translate("HTTP Error."),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger("ChunkUploaded",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger("UploadProgress",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger("FileUploaded",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open("post",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!=="string"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)==="string"){q.setRequestHeader("Content-Type","multipart/form-data; boundary="+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name="'+W+'"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream";R+=P+N+U+'Content-Disposition: form-data; name="'+s.settings.file_data_name+'"; filename="'+unescape(encodeURIComponent(u.name))+'"'+U+"Content-Type: "+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Q<V.length;Q++){S[Q]=(V.charCodeAt(Q)&255)}q.send(S.buffer)}}return}}E=j.buildUrl(s.settings.url,j.extend(L,s.settings.multipart_params));q.open("post",E,true);q.setRequestHeader("Content-Type","application/octet-stream");j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});q.send(V)}if(u.status==j.DONE||u.status==j.FAILED||s.state==j.STOPPED){return}L={name:u.target_name||u.name};if(v.chunk_size&&u.size>v.chunk_size&&(n.chunks||typeof(A)=="string")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)=="string"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!=="string"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\.png$/i.test(u.name)?"image/png":"image/jpeg",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind("Destroy",function(s){var u,v,t=k.body,w={inputContainer:s.id+"_html5_container",inputFile:s.id+"_html5",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u<v;u++){w|=(o.charCodeAt(t+u)<<Math.abs(s+u*8))}return w}function n(u,s,t){var t=arguments.length===3?t:o.length-s-1;o=o.substr(0,s)+u+o.substr(t+s)}function p(t,u,w){var x="",s=q?0:-8*(w-1),v;for(v=0;v<w;v++){x+=String.fromCharCode((u>>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u="";for(t+=s;s<t;s++){u+=String.fromCharCode(r(s,1))}return u}}}function f(s){var u={65505:{app:"EXIF",name:"APP1",signature:"Exif\0"},65506:{app:"ICC",name:"APP2",signature:"ICC_PROFILE\0"},65517:{app:"IPTC",name:"APP13",signature:"Photoshop 3.0\0"}},t=[],r,n,p=e,q=0,o;r=new b();r.init(s);if(r.SHORT(0)!==65496){return}n=2;o=Math.min(1048576,s.length);while(n<=o){p=r.SHORT(n);if(p>=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,"")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x<v;x++){r.SEGMENT(n,0,t[x].segment);n+=t[x].length}return r.SEGMENT()},get:function(x){var y=[];for(var w=0,v=t.length;w<v;w++){if(t[w].app===x.toUpperCase()){y.push(t[w].segment)}}return y},set:function(y,x){var z=[];if(typeof(x)==="string"){z.push(x)}else{z=x}for(var w=ii=0,v=t.length;w<v;w++){if(t[w].app===y.toUpperCase()){t[w].segment=z[ii];t[w].length=z[ii].length;ii++}if(ii>=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:"Orientation",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",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"}};t={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"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z<w;z++){x=v=u+12*z+2;G=C[q.SHORT(x)];if(G===e){continue}B=q.SHORT(x+=2);A=q.LONG(x+=2);x+=4;E=[];switch(B){case 1:case 7:if(A>4){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.BYTE(x+F)}break;case 2:if(A>4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.SHORT(x+F*2)}break;case 4:if(A>1){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)}break;case 5:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)/q.LONG(x+F*4+4)}break;case 9:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)}break;case 10:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)/q.SLONG(x+F*4+4)}break;default:continue}D=(A==1?E[0]:E);if(t.hasOwnProperty(G)&&typeof D!="object"){y[G]=t[G][D]}else{y[G]=D}}return y}function s(){var v=e,u=o.tiffHeader;q.II(q.SHORT(u)==18761);if(q.SHORT(u+=2)!==42){return false}o.IFD0=o.tiffHeader+q.LONG(u+=2);v=p(o.IFD0,n.tiff);o.exifIFD=("ExifIFDPointer" in v?o.tiffHeader+v.ExifIFDPointer:e);o.gpsIFD=("GPSInfoIFDPointer" in v?o.tiffHeader+v.GPSInfoIFDPointer:e);return true}function r(w,u,z){var B,y,x,A=0;if(typeof(u)==="string"){var v=n[w.toLowerCase()];for(hex in v){if(v[hex]===u){u=hex;break}}}B=o[w.toLowerCase()+"IFD"];y=q.SHORT(B);for(i=0;i<y;i++){x=B+12*i+2;if(q.SHORT(x)==u){A=x+8;break}}if(!A){return false}q.LONG(A,z);return true}return{init:function(u){o={tiffHeader:10};if(u===e||!u.length){return false}q.init(u);if(q.SHORT(0)===65505&&q.STRING(4,5).toUpperCase()==="EXIF\0"){return s()}return false},EXIF:function(){var v;v=p(o.exifIFD,n.exif);if(v.ExifVersion&&j.typeOf(v.ExifVersion)==="array"){for(var w=0,u="";w<v.ExifVersion.length;w++){u+=String.fromCharCode(v.ExifVersion[w])}v.ExifVersion=u}return v},GPS:function(){var u;u=p(o.gpsIFD,n.gps);if(u.GPSVersionID){u.GPSVersionID=u.GPSVersionID.join(".")}return u},setExif:function(u,v){if(u!=="PixelXDimension"&&u!=="PixelYDimension"){return false}return r("exif",u,v)},getBinary:function(){return q.SEGMENT()}}}})(window,document,plupload);
\ No newline at end of file
+(function(k,m,l,g){var d={},j;function c(s){var r=s.naturalWidth,u=s.naturalHeight;if(r*u>1024*1024){var t=m.createElement("canvas");t.width=t.height=1;var q=t.getContext("2d");q.drawImage(s,-r+1,0);return q.getImageData(0,0,1,1).data[3]===0}else{return false}}function f(u,r,z){var q=m.createElement("canvas");q.width=1;q.height=z;var A=q.getContext("2d");A.drawImage(u,0,0);var t=A.getImageData(0,0,1,z).data;var x=0;var v=z;var y=z;while(y>x){var s=t[(y-1)*4+3];if(s===0){v=y}else{x=y}y=(v+x)>>1}var w=(y/z);return(w===0)?1:w}function o(K,s,t){var v=K.naturalWidth,z=K.naturalHeight;var E=t.width,B=t.height;var F=s.getContext("2d");F.save();var r=c(K);if(r){v/=2;z/=2}var I=1024;var q=m.createElement("canvas");q.width=q.height=I;var u=q.getContext("2d");var G=f(K,v,z);var A=0;while(A<z){var J=A+I>z?z-A:I;var C=0;while(C<v){var D=C+I>v?v-C:I;u.clearRect(0,0,I,I);u.drawImage(K,-C,-A);var x=(C*E/v)<<0;var y=Math.ceil(D*E/v);var w=(A*B/z/G)<<0;var H=Math.ceil(J*B/z/G);F.drawImage(q,0,0,D,J,x,w,y,H);C+=I}A+=I}F.restore();q=u=null}function p(r,s){var q;if("FileReader" in k){q=new FileReader();q.readAsDataURL(r);q.onload=function(){s(q.result)}}else{return s(r.getAsDataURL())}}function n(r,s){var q;if("FileReader" in k){q=new FileReader();q.readAsBinaryString(r);q.onload=function(){s(q.result)}}else{return s(r.getAsBinary())}}function e(u,s,q,y){var t,r,x,v,w=this;p(d[u.id],function(z){t=m.createElement("canvas");t.style.display="none";m.body.appendChild(t);x=new Image();x.onerror=x.onabort=function(){y({success:false})};x.onload=function(){var F,A,C,B,E;if(!s.width){s.width=x.width}if(!s.height){s.height=x.height}v=Math.min(s.width/x.width,s.height/x.height);if(v<1){F=Math.round(x.width*v);A=Math.round(x.height*v)}else{if(s.quality&&q==="image/jpeg"){F=x.width;A=x.height}else{y({success:false});return}}t.width=F;t.height=A;o(x,t,{width:F,height:A});if(q==="image/jpeg"){B=new h(atob(z.substring(z.indexOf("base64,")+7)));if(B.headers&&B.headers.length){E=new a();if(E.init(B.get("exif")[0])){E.setExif("PixelXDimension",F);E.setExif("PixelYDimension",A);B.set("exif",E.getBinary());if(w.hasEventListener("ExifData")){w.trigger("ExifData",u,E.EXIF())}if(w.hasEventListener("GpsData")){w.trigger("GpsData",u,E.GPS())}}}}if(s.quality&&q==="image/jpeg"){try{z=t.toDataURL(q,s.quality/100)}catch(D){z=t.toDataURL(q)}}else{z=t.toDataURL(q)}z=z.substring(z.indexOf("base64,")+7);z=atob(z);if(B&&B.headers&&B.headers.length){z=B.restore(z);B.purge()}t.parentNode.removeChild(t);y({success:true,data:z})};x.src=z})}l.runtimes.Html5=l.addRuntime("html5",{getFeatures:function(){var v,r,u,t,s,q;r=u=s=q=false;if(k.XMLHttpRequest){v=new XMLHttpRequest();u=!!v.upload;r=!!(v.sendAsBinary||v.upload)}if(r){t=!!(v.sendAsBinary||(k.Uint8Array&&k.ArrayBuffer));s=!!(File&&(File.prototype.getAsDataURL||k.FileReader)&&t);q=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}j=l.ua.safari&&l.ua.windows;return{html5:r,dragdrop:(function(){var w=m.createElement("div");return("draggable" in w)||("ondragstart" in w&&"ondrop" in w)}()),jpgresize:s,pngresize:s,multipart:s||!!k.FileReader||!!k.FormData,canSendBinary:t,cantSendBlobInFormData:!!(l.ua.gecko&&k.FormData&&k.FileReader&&!FileReader.prototype.readAsArrayBuffer)||l.ua.android,progress:u,chunks:q,multi_selection:!(l.ua.safari&&l.ua.windows),triggerDialog:(l.ua.gecko&&k.FormData||l.ua.webkit)}},init:function(s,u){var q,t;function r(z){var x,w,y=[],A,v={};for(w=0;w<z.length;w++){x=z[w];if(v[x.name]&&l.ua.safari&&l.ua.windows){continue}v[x.name]=true;A=l.guid();d[A]=x;y.push(new l.File(A,x.fileName||x.name,x.fileSize||x.size))}if(y.length){s.trigger("FilesAdded",y)}}q=this.getFeatures();if(!q.html5){u({success:false});return}s.bind("Init",function(A){var J,I,F=[],z,G,w=A.settings.filters,x,E,v=m.body,H;J=m.createElement("div");J.id=A.id+"_html5_container";l.extend(J.style,{position:"absolute",background:s.settings.shim_bgcolor||"transparent",width:"100px",height:"100px",overflow:"hidden",zIndex:99999,opacity:s.settings.shim_bgcolor?"":0});J.className="plupload html5";if(s.settings.container){v=m.getElementById(s.settings.container);if(l.getStyle(v,"position")==="static"){v.style.position="relative"}}v.appendChild(J);no_type_restriction:for(z=0;z<w.length;z++){x=w[z].extensions.split(/,/);for(G=0;G<x.length;G++){if(x[G]==="*"){F=[];break no_type_restriction}E=l.mimeTypes[x[G]];if(E&&l.inArray(E,F)===-1){F.push(E)}}}J.innerHTML='<input id="'+s.id+'_html5"  style="font-size:999px" type="file" accept="'+F.join(",")+'" '+(s.settings.multi_selection&&s.features.multi_selection?'multiple="multiple"':"")+" />";J.scrollTop=100;H=m.getElementById(s.id+"_html5");if(A.features.triggerDialog){l.extend(H.style,{position:"absolute",width:"100%",height:"100%"})}else{l.extend(H.style,{cssFloat:"right",styleFloat:"right"})}H.onchange=function(){r(this.files);this.value=""};I=m.getElementById(A.settings.browse_button);if(I){var C=A.settings.browse_button_hover,D=A.settings.browse_button_active,B=A.features.triggerDialog?I:J;if(C){l.addEvent(B,"mouseover",function(){l.addClass(I,C)},A.id);l.addEvent(B,"mouseout",function(){l.removeClass(I,C)},A.id)}if(D){l.addEvent(B,"mousedown",function(){l.addClass(I,D)},A.id);l.addEvent(m.body,"mouseup",function(){l.removeClass(I,D)},A.id)}if(A.features.triggerDialog){l.addEvent(I,"click",function(K){var y=m.getElementById(A.id+"_html5");if(y&&!y.disabled){y.click()}K.preventDefault()},A.id)}}});s.bind("PostInit",function(){var v=m.getElementById(s.settings.drop_element);if(v){if(j){l.addEvent(v,"dragenter",function(z){var y,w,x;y=m.getElementById(s.id+"_drop");if(!y){y=m.createElement("input");y.setAttribute("type","file");y.setAttribute("id",s.id+"_drop");y.setAttribute("multiple","multiple");l.addEvent(y,"change",function(){r(this.files);l.removeEvent(y,"change",s.id);y.parentNode.removeChild(y)},s.id);l.addEvent(y,"dragover",function(A){A.stopPropagation()},s.id);v.appendChild(y)}w=l.getPos(v,m.getElementById(s.settings.container));x=l.getSize(v);if(l.getStyle(v,"position")==="static"){l.extend(v.style,{position:"relative"})}l.extend(y.style,{position:"absolute",display:"block",top:0,left:0,width:x.w+"px",height:x.h+"px",opacity:0})},s.id);return}l.addEvent(v,"dragover",function(w){w.preventDefault()},s.id);l.addEvent(v,"drop",function(x){var w=x.dataTransfer;if(w&&w.files){r(w.files)}x.preventDefault()},s.id)}});s.bind("Refresh",function(v){var w,x,y,A,z;w=m.getElementById(s.settings.browse_button);if(w){x=l.getPos(w,m.getElementById(v.settings.container));y=l.getSize(w);A=m.getElementById(s.id+"_html5_container");l.extend(A.style,{top:x.y+"px",left:x.x+"px",width:y.w+"px",height:y.h+"px"});if(s.features.triggerDialog){if(l.getStyle(w,"position")==="static"){l.extend(w.style,{position:"relative"})}z=parseInt(l.getStyle(w,"zIndex"),10);if(isNaN(z)){z=0}l.extend(w.style,{zIndex:z});l.extend(A.style,{zIndex:z-1})}}});s.bind("DisableBrowse",function(v,x){var w=m.getElementById(v.id+"_html5");if(w){w.disabled=x}});s.bind("CancelUpload",function(){if(t&&t.abort){t.abort()}});s.bind("UploadFile",function(v,x){var y=v.settings,B,w;function A(D,G,C){var E;if(File.prototype.slice){try{D.slice();return D.slice(G,C)}catch(F){return D.slice(G,C-G)}}else{if(E=File.prototype.webkitSlice||File.prototype.mozSlice){return E.call(D,G,C)}else{return null}}}function z(C){var F=0,E=0;function D(){var L,P,N,O,K,M,H,G=v.settings.url;function J(S){if(t.sendAsBinary){t.sendAsBinary(S)}else{if(v.features.canSendBinary){var Q=new Uint8Array(S.length);for(var R=0;R<S.length;R++){Q[R]=(S.charCodeAt(R)&255)}t.send(Q.buffer)}}}function I(R){var V=0,W="----pluploadboundary"+l.guid(),T,S="--",U="\r\n",Q="";t=new XMLHttpRequest;if(t.upload){t.upload.onprogress=function(X){x.loaded=Math.min(x.size,E+X.loaded-V);v.trigger("UploadProgress",x)}}t.onreadystatechange=function(){var X,Z;if(t.readyState==4&&v.state!==l.STOPPED){try{X=t.status}catch(Y){X=0}if(X>=400){v.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:x,status:X})}else{if(N){Z={chunk:F,chunks:N,response:t.responseText,status:X};v.trigger("ChunkUploaded",x,Z);E+=M;if(Z.cancelled){x.status=l.FAILED;return}x.loaded=Math.min(x.size,(F+1)*K)}else{x.loaded=x.size}v.trigger("UploadProgress",x);R=L=T=Q=null;if(!N||++F>=N){x.status=l.DONE;v.trigger("FileUploaded",x,{response:t.responseText,status:X})}else{D()}}}};if(v.settings.multipart&&q.multipart){O.name=x.target_name||x.name;t.open("post",G,true);l.each(v.settings.headers,function(Y,X){t.setRequestHeader(X,Y)});if(typeof(R)!=="string"&&!!k.FormData){T=new FormData();l.each(l.extend(O,v.settings.multipart_params),function(Y,X){T.append(X,Y)});T.append(v.settings.file_data_name,R);t.send(T);return}if(typeof(R)==="string"){t.setRequestHeader("Content-Type","multipart/form-data; boundary="+W);l.each(l.extend(O,v.settings.multipart_params),function(Y,X){Q+=S+W+U+'Content-Disposition: form-data; name="'+X+'"'+U+U;Q+=unescape(encodeURIComponent(Y))+U});H=l.mimeTypes[x.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream";Q+=S+W+U+'Content-Disposition: form-data; name="'+v.settings.file_data_name+'"; filename="'+unescape(encodeURIComponent(x.name))+'"'+U+"Content-Type: "+H+U+U+R+U+S+W+S+U;V=Q.length-R.length;R=Q;J(R);return}}G=l.buildUrl(v.settings.url,l.extend(O,v.settings.multipart_params));t.open("post",G,true);t.setRequestHeader("Content-Type","application/octet-stream");l.each(v.settings.headers,function(Y,X){t.setRequestHeader(X,Y)});if(typeof(R)==="string"){J(R)}else{t.send(R)}}if(x.status==l.DONE||x.status==l.FAILED||v.state==l.STOPPED){return}O={name:x.target_name||x.name};if(y.chunk_size&&x.size>y.chunk_size&&(q.chunks||typeof(C)=="string")){K=y.chunk_size;N=Math.ceil(x.size/K);M=Math.min(K,x.size-(F*K));if(typeof(C)=="string"){L=C.substring(F*K,F*K+M)}else{L=A(C,F*K,F*K+M)}O.chunk=F;O.chunks=N}else{M=x.size;L=C}if(v.settings.multipart&&q.multipart&&typeof(L)!=="string"&&k.FileReader&&q.cantSendBlobInFormData&&q.chunks&&v.settings.chunk_size){(function(){var Q=new FileReader();Q.onload=function(){I(Q.result);Q=null};Q.readAsBinaryString(L)}())}else{I(L)}}D()}B=d[x.id];if(q.jpgresize&&v.settings.resize&&/\.(png|jpg|jpeg)$/i.test(x.name)){e.call(v,x,v.settings.resize,/\.png$/i.test(x.name)?"image/png":"image/jpeg",function(C){if(C.success){x.size=C.data.length;z(C.data)}else{if(q.chunks){z(B)}else{n(B,z)}}})}else{if(!q.chunks&&q.jpgresize){n(B,z)}else{z(B)}}});s.bind("Destroy",function(v){var x,y,w=m.body,z={inputContainer:v.id+"_html5_container",inputFile:v.id+"_html5",browseButton:v.settings.browse_button,dropElm:v.settings.drop_element};for(x in z){y=m.getElementById(z[x]);if(y){l.removeAllEvents(y,v.id)}}l.removeAllEvents(m.body,v.id);if(v.settings.container){w=m.getElementById(v.settings.container)}w.removeChild(m.getElementById(z.inputContainer))});u({success:true})}});function b(){var t=false,r;function u(w,y){var v=t?0:-8*(y-1),z=0,x;for(x=0;x<y;x++){z|=(r.charCodeAt(w+x)<<Math.abs(v+x*8))}return z}function q(x,v,w){var w=arguments.length===3?w:r.length-v-1;r=r.substr(0,v)+x+r.substr(w+v)}function s(w,x,z){var A="",v=t?0:-8*(z-1),y;for(y=0;y<z;y++){A+=String.fromCharCode((x>>Math.abs(v+y*8))&255)}q(A,w,z)}return{II:function(v){if(v===g){return t}else{t=v}},init:function(v){t=false;r=v},SEGMENT:function(v,x,w){switch(arguments.length){case 1:return r.substr(v,r.length-v-1);case 2:return r.substr(v,x);case 3:q(w,v,x);break;default:return r}},BYTE:function(v){return u(v,1)},SHORT:function(v){return u(v,2)},LONG:function(v,w){if(w===g){return u(v,4)}else{s(v,w,4)}},SLONG:function(v){var w=u(v,4);return(w>2147483647?w-4294967296:w)},STRING:function(v,w){var x="";for(w+=v;v<w;v++){x+=String.fromCharCode(u(v,1))}return x}}}function h(v){var x={65505:{app:"EXIF",name:"APP1",signature:"Exif\0"},65506:{app:"ICC",name:"APP2",signature:"ICC_PROFILE\0"},65517:{app:"IPTC",name:"APP13",signature:"Photoshop 3.0\0"}},w=[],u,q,s=g,t=0,r;u=new b();u.init(v);if(u.SHORT(0)!==65496){return}q=2;r=Math.min(1048576,v.length);while(q<=r){s=u.SHORT(q);if(s>=65488&&s<=65495){q+=2;continue}if(s===65498||s===65497){break}t=u.SHORT(q+2)+2;if(x[s]&&u.STRING(q+4,x[s].signature.length)===x[s].signature){w.push({hex:s,app:x[s].app.toUpperCase(),name:x[s].name.toUpperCase(),start:q,length:t,segment:u.SEGMENT(q,t)})}q+=t}u.init(null);return{headers:w,restore:function(B){u.init(B);var z=new h(B);if(!z.headers){return false}for(var A=z.headers.length;A>0;A--){var C=z.headers[A-1];u.SEGMENT(C.start,C.length,"")}z.purge();q=u.SHORT(2)==65504?4+u.SHORT(4):2;for(var A=0,y=w.length;A<y;A++){u.SEGMENT(q,0,w[A].segment);q+=w[A].length}return u.SEGMENT()},get:function(A){var B=[];for(var z=0,y=w.length;z<y;z++){if(w[z].app===A.toUpperCase()){B.push(w[z].segment)}}return B},set:function(B,A){var C=[];if(typeof(A)==="string"){C.push(A)}else{C=A}for(var z=ii=0,y=w.length;z<y;z++){if(w[z].app===B.toUpperCase()){w[z].segment=C[ii];w[z].length=C[ii].length;ii++}if(ii>=C.length){break}}},purge:function(){w=[];u.init(null)}}}function a(){var t,q,r={},w;t=new b();q={tiff:{274:"Orientation",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",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"}};w={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"}};function s(x,F){var z=t.SHORT(x),C,I,J,E,D,y,A,G,H=[],B={};for(C=0;C<z;C++){A=y=x+12*C+2;J=F[t.SHORT(A)];if(J===g){continue}E=t.SHORT(A+=2);D=t.LONG(A+=2);A+=4;H=[];switch(E){case 1:case 7:if(D>4){A=t.LONG(A)+r.tiffHeader}for(I=0;I<D;I++){H[I]=t.BYTE(A+I)}break;case 2:if(D>4){A=t.LONG(A)+r.tiffHeader}B[J]=t.STRING(A,D-1);continue;case 3:if(D>2){A=t.LONG(A)+r.tiffHeader}for(I=0;I<D;I++){H[I]=t.SHORT(A+I*2)}break;case 4:if(D>1){A=t.LONG(A)+r.tiffHeader}for(I=0;I<D;I++){H[I]=t.LONG(A+I*4)}break;case 5:A=t.LONG(A)+r.tiffHeader;for(I=0;I<D;I++){H[I]=t.LONG(A+I*4)/t.LONG(A+I*4+4)}break;case 9:A=t.LONG(A)+r.tiffHeader;for(I=0;I<D;I++){H[I]=t.SLONG(A+I*4)}break;case 10:A=t.LONG(A)+r.tiffHeader;for(I=0;I<D;I++){H[I]=t.SLONG(A+I*4)/t.SLONG(A+I*4+4)}break;default:continue}G=(D==1?H[0]:H);if(w.hasOwnProperty(J)&&typeof G!="object"){B[J]=w[J][G]}else{B[J]=G}}return B}function v(){var y=g,x=r.tiffHeader;t.II(t.SHORT(x)==18761);if(t.SHORT(x+=2)!==42){return false}r.IFD0=r.tiffHeader+t.LONG(x+=2);y=s(r.IFD0,q.tiff);r.exifIFD=("ExifIFDPointer" in y?r.tiffHeader+y.ExifIFDPointer:g);r.gpsIFD=("GPSInfoIFDPointer" in y?r.tiffHeader+y.GPSInfoIFDPointer:g);return true}function u(z,x,C){var E,B,A,D=0;if(typeof(x)==="string"){var y=q[z.toLowerCase()];for(hex in y){if(y[hex]===x){x=hex;break}}}E=r[z.toLowerCase()+"IFD"];B=t.SHORT(E);for(i=0;i<B;i++){A=E+12*i+2;if(t.SHORT(A)==x){D=A+8;break}}if(!D){return false}t.LONG(D,C);return true}return{init:function(x){r={tiffHeader:10};if(x===g||!x.length){return false}t.init(x);if(t.SHORT(0)===65505&&t.STRING(4,5).toUpperCase()==="EXIF\0"){return v()}return false},EXIF:function(){var y;y=s(r.exifIFD,q.exif);if(y.ExifVersion&&l.typeOf(y.ExifVersion)==="array"){for(var z=0,x="";z<y.ExifVersion.length;z++){x+=String.fromCharCode(y.ExifVersion[z])}y.ExifVersion=x}return y},GPS:function(){var x;x=s(r.gpsIFD,q.gps);if(x.GPSVersionID){x.GPSVersionID=x.GPSVersionID.join(".")}return x},setExif:function(x,y){if(x!=="PixelXDimension"&&x!=="PixelYDimension"){return false}return u("exif",x,y)},getBinary:function(){return t.SEGMENT()}}}})(window,document,plupload);
\ No newline at end of file
diff --git a/wp-includes/js/plupload/plupload.js b/wp-includes/js/plupload/plupload.js
index 1555f94a6..5b3ffb716 100644
--- a/wp-includes/js/plupload/plupload.js
+++ b/wp-includes/js/plupload/plupload.js
@@ -1,2 +1,2 @@
-/*1.5.5*/
-(function(){var f=0,k=[],m={},i={},a={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},l=/[<>&\"\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function j(){this.cancelBubble=true}(function(n){var o=n.split(/,/),p,r,q;for(p=0;p<o.length;p+=2){q=o[p+1].split(/ /);for(r=0;r<q.length;r++){i[q[r]]=o[p]}}})("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,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg 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,3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe");var g={VERSION:"1.5.5",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,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:i,ua:(function(){var r=navigator,q=r.userAgent,s=r.vendor,o,n,p;o=/WebKit/.test(q);p=o&&s.indexOf("Apple")!==-1;n=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf("Win")!==-1,ie:!o&&!n&&(/MSIE/gi).test(q)&&(/Explorer/gi).test(r.appName),webkit:o,gecko:!o&&/Gecko/.test(q),safari:p,opera:!!n}}()),typeOf:function(n){return({}).toString.call(n).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(n){g.each(arguments,function(o,p){if(p>0){g.each(o,function(r,q){n[q]=r})}});return n},cleanName:function(n){var o,p;p=[/[\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(o=0;o<p.length;o+=2){n=n.replace(p[o],p[o+1])}n=n.replace(/\s+/g,"_");n=n.replace(/[^a-z0-9_\-\.]+/gi,"");return n},addRuntime:function(n,o){o.name=n;k[n]=o;k.push(o);return o},guid:function(){var n=new Date().getTime().toString(32),o;for(o=0;o<5;o++){n+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||"p")+n+(f++).toString(32)},buildUrl:function(o,n){var p="";g.each(n,function(r,q){p+=(p?"&":"")+encodeURIComponent(q)+"="+encodeURIComponent(r)});if(p){o+=(o.indexOf("?")>0?"&":"?")+p}return o},each:function(q,r){var p,o,n;if(q){p=q.length;if(p===b){for(o in q){if(q.hasOwnProperty(o)){if(r(q[o],o)===false){return}}}}else{for(n=0;n<p;n++){if(r(q[n],n)===false){return}}}}},formatSize:function(n){if(n===b||/\D/.test(n)){return g.translate("N/A")}if(n>1073741824){return Math.round(n/1073741824,1)+" GB"}if(n>1048576){return Math.round(n/1048576,1)+" MB"}if(n>1024){return Math.round(n/1024,1)+" KB"}return n+" b"},getPos:function(o,s){var t=0,r=0,v,u=document,p,q;o=o;s=s||u.body;function n(B){var z,A,w=0,C=0;if(B){A=B.getBoundingClientRect();z=u.compatMode==="CSS1Compat"?u.documentElement:u.body;w=A.left+z.scrollLeft;C=A.top+z.scrollTop}return{x:w,y:C}}if(o&&o.getBoundingClientRect&&((navigator.userAgent.indexOf("MSIE")>0)&&(u.documentMode<8))){p=n(o);q=n(s);return{x:p.x-q.x,y:p.y-q.y}}v=o;while(v&&v!=s&&v.nodeType){t+=v.offsetLeft||0;r+=v.offsetTop||0;v=v.offsetParent}v=o.parentNode;while(v&&v!=s&&v.nodeType){t-=v.scrollLeft||0;r-=v.scrollTop||0;v=v.parentNode}return{x:t,y:r}},getSize:function(n){return{w:n.offsetWidth||n.clientWidth,h:n.offsetHeight||n.clientHeight}},parseSize:function(n){var o;if(typeof(n)=="string"){n=/^([0-9]+)([mgk]?)$/.exec(n.toLowerCase().replace(/[^0-9mkg]/g,""));o=n[2];n=+n[1];if(o=="g"){n*=1073741824}if(o=="m"){n*=1048576}if(o=="k"){n*=1024}}return n},xmlEncode:function(n){return n?(""+n).replace(l,function(o){return a[o]?"&"+a[o]+";":o}):n},toArray:function(p){var o,n=[];for(o=0;o<p.length;o++){n[o]=p[o]}return n},inArray:function(p,q){if(q){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(q,p)}for(var n=0,o=q.length;n<o;n++){if(q[n]===p){return n}}}return -1},addI18n:function(n){return g.extend(m,n)},translate:function(n){return m[n]||n},isEmptyObj:function(n){if(n===b){return true}for(var o in n){return false}return true},hasClass:function(p,o){var n;if(p.className==""){return false}n=new RegExp("(^|\\s+)"+o+"(\\s+|$)");return n.test(p.className)},addClass:function(o,n){if(!g.hasClass(o,n)){o.className=o.className==""?n:o.className.replace(/\s+$/,"")+" "+n}},removeClass:function(p,o){var n=new RegExp("(^|\\s+)"+o+"(\\s+|$)");p.className=p.className.replace(n,function(r,q,s){return q===" "&&s===" "?" ":""})},getStyle:function(o,n){if(o.currentStyle){return o.currentStyle[n]}else{if(window.getComputedStyle){return window.getComputedStyle(o,null)[n]}}},addEvent:function(s,n,t){var r,q,p,o;o=arguments[3];n=n.toLowerCase();if(e===b){e="Plupload_"+g.guid()}if(s.addEventListener){r=t;s.addEventListener(n,r,false)}else{if(s.attachEvent){r=function(){var u=window.event;if(!u.target){u.target=u.srcElement}u.preventDefault=h;u.stopPropagation=j;t(u)};s.attachEvent("on"+n,r)}}if(s[e]===b){s[e]=g.guid()}if(!d.hasOwnProperty(s[e])){d[s[e]]={}}q=d[s[e]];if(!q.hasOwnProperty(n)){q[n]=[]}q[n].push({func:r,orig:t,key:o})},removeEvent:function(s,n){var q,t,p;if(typeof(arguments[2])=="function"){t=arguments[2]}else{p=arguments[2]}n=n.toLowerCase();if(s[e]&&d[s[e]]&&d[s[e]][n]){q=d[s[e]][n]}else{return}for(var o=q.length-1;o>=0;o--){if(q[o].key===p||q[o].orig===t){if(s.removeEventListener){s.removeEventListener(n,q[o].func,false)}else{if(s.detachEvent){s.detachEvent("on"+n,q[o].func)}}q[o].orig=null;q[o].func=null;q.splice(o,1);if(t!==b){break}}}if(!q.length){delete d[s[e]][n]}if(g.isEmptyObj(d[s[e]])){delete d[s[e]];try{delete s[e]}catch(r){s[e]=b}}},removeAllEvents:function(o){var n=arguments[1];if(o[e]===b||!o[e]){return}g.each(d[o[e]],function(q,p){g.removeEvent(o,p,n)})}};g.Uploader=function(r){var o={},u,t=[],q,p=false;u=new g.QueueProgress();r=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:"file",filters:[]},r);function s(){var w,x=0,v;if(this.state==g.STARTED){for(v=0;v<t.length;v++){if(!w&&t[v].status==g.QUEUED){w=t[v];w.status=g.UPLOADING;if(this.trigger("BeforeUpload",w)){this.trigger("UploadFile",w)}}else{x++}}if(x==t.length){this.stop();this.trigger("UploadComplete",t)}}}function n(){var w,v;u.reset();for(w=0;w<t.length;w++){v=t[w];if(v.size!==b){u.size+=v.size;u.loaded+=v.loaded}else{u.size=b}if(v.status==g.DONE){u.uploaded++}else{if(v.status==g.FAILED){u.failed++}else{u.queued++}}}if(u.size===b){u.percent=t.length>0?Math.ceil(u.uploaded/t.length*100):0}else{u.bytesPerSec=Math.ceil(u.loaded/((+new Date()-q||1)/1000));u.percent=u.size>0?Math.ceil(u.loaded/u.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:"",features:{},files:t,settings:r,total:u,id:g.guid(),init:function(){var A=this,B,x,w,z=0,y;if(typeof(r.preinit)=="function"){r.preinit(A)}else{g.each(r.preinit,function(D,C){A.bind(C,D)})}r.page_url=r.page_url||document.location.pathname.replace(/\/[^\/]+$/g,"/");if(!/^(\w+:\/\/|\/)/.test(r.url)){r.url=r.page_url+r.url}r.chunk_size=g.parseSize(r.chunk_size);r.max_file_size=g.parseSize(r.max_file_size);A.bind("FilesAdded",function(C,F){var E,D,H=0,I,G=r.filters;if(G&&G.length){I=[];g.each(G,function(J){g.each(J.extensions.split(/,/),function(K){if(/^\s*\*\s*$/.test(K)){I.push("\\.*")}else{I.push("\\."+K.replace(new RegExp("["+("/^$.*+?|()[]{}\\".replace(/./g,"\\$&"))+"]","g"),"\\$&"))}})});I=new RegExp(I.join("|")+"$","i")}for(E=0;E<F.length;E++){D=F[E];D.loaded=0;D.percent=0;D.status=g.QUEUED;if(I&&!I.test(D.name)){C.trigger("Error",{code:g.FILE_EXTENSION_ERROR,message:g.translate("File extension error."),file:D});continue}if(D.size!==b&&D.size>r.max_file_size){C.trigger("Error",{code:g.FILE_SIZE_ERROR,message:g.translate("File size error."),file:D});continue}t.push(D);H++}if(H){c(function(){A.trigger("QueueChanged");A.refresh()},1)}else{return false}});if(r.unique_names){A.bind("UploadFile",function(C,D){var F=D.name.match(/\.([^.]+)$/),E="tmp";if(F){E=F[1]}D.target_name=D.id+"."+E})}A.bind("UploadProgress",function(C,D){D.percent=D.size>0?Math.ceil(D.loaded/D.size*100):100;n()});A.bind("StateChanged",function(C){if(C.state==g.STARTED){q=(+new Date())}else{if(C.state==g.STOPPED){for(B=C.files.length-1;B>=0;B--){if(C.files[B].status==g.UPLOADING){C.files[B].status=g.QUEUED;n()}}}}});A.bind("QueueChanged",n);A.bind("Error",function(C,D){if(D.file){D.file.status=g.FAILED;n();if(C.state==g.STARTED){c(function(){s.call(A)},1)}}});A.bind("FileUploaded",function(C,D){D.status=g.DONE;D.loaded=D.size;C.trigger("UploadProgress",D);c(function(){s.call(A)},1)});if(r.runtimes){x=[];y=r.runtimes.split(/\s?,\s?/);for(B=0;B<y.length;B++){if(k[y[B]]){x.push(k[y[B]])}}}else{x=k}function v(){var F=x[z++],E,C,D;if(F){E=F.getFeatures();C=A.settings.required_features;if(C){C=C.split(",");for(D=0;D<C.length;D++){if(!E[C[D]]){v();return}}}F.init(A,function(G){if(G&&G.success){A.features=E;A.runtime=F.name;A.trigger("Init",{runtime:F.name});A.trigger("PostInit");A.refresh()}else{v()}})}else{A.trigger("Error",{code:g.INIT_ERROR,message:g.translate("Init error.")})}}v();if(typeof(r.init)=="function"){r.init(A)}else{g.each(r.init,function(D,C){A.bind(C,D)})}},refresh:function(){this.trigger("Refresh")},start:function(){if(t.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger("StateChanged");s.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger("CancelUpload");this.trigger("StateChanged")}},disableBrowse:function(){p=arguments[0]!==b?arguments[0]:true;this.trigger("DisableBrowse",p)},getFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w){return t[v]}}},removeFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w.id){return this.splice(v,1)[0]}}},splice:function(x,v){var w;w=t.splice(x===b?0:x,v===b?t.length:v);this.trigger("FilesRemoved",w);this.trigger("QueueChanged");return w},trigger:function(w){var y=o[w.toLowerCase()],x,v;if(y){v=Array.prototype.slice.call(arguments);v[0]=this;for(x=0;x<y.length;x++){if(y[x].func.apply(y[x].scope,v)===false){return false}}}return true},hasEventListener:function(v){return !!o[v.toLowerCase()]},bind:function(v,x,w){var y;v=v.toLowerCase();y=o[v]||[];y.push({func:x,scope:w||this});o[v]=y},unbind:function(v){v=v.toLowerCase();var y=o[v],w,x=arguments[1];if(y){if(x!==b){for(w=y.length-1;w>=0;w--){if(y[w].func===x){y.splice(w,1);break}}}else{y=[]}if(!y.length){delete o[v]}}},unbindAll:function(){var v=this;g.each(o,function(x,w){v.unbind(w)})},destroy:function(){this.stop();this.trigger("Destroy");this.unbindAll()}})};g.File=function(q,o,p){var n=this;n.id=q;n.name=o;n.size=p;n.loaded=0;n.percent=0;n.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(n,o){}};g.QueueProgress=function(){var n=this;n.size=0;n.loaded=0;n.uploaded=0;n.failed=0;n.queued=0;n.percent=0;n.bytesPerSec=0;n.reset=function(){n.size=n.loaded=n.uploaded=n.failed=n.queued=n.percent=n.bytesPerSec=0}};g.runtimes={};window.plupload=g})();
\ No newline at end of file
+/*1.5.7*/
+(function(){var f=0,k=[],m={},i={},a={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},l=/[<>&\"\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function j(){this.cancelBubble=true}(function(n){var o=n.split(/,/),p,r,q;for(p=0;p<o.length;p+=2){q=o[p+1].split(/ /);for(r=0;r<q.length;r++){i[q[r]]=o[p]}}})("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,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg 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,3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe");var g={VERSION:"1.5.7",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,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:i,ua:(function(){var r=navigator,q=r.userAgent,s=r.vendor,o,n,p;o=/WebKit/.test(q);p=o&&s.indexOf("Apple")!==-1;n=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf("Win")!==-1,android:/Android/.test(q),ie:!o&&!n&&(/MSIE/gi).test(q)&&(/Explorer/gi).test(r.appName),webkit:o,gecko:!o&&/Gecko/.test(q),safari:p,opera:!!n}}()),typeOf:function(n){return({}).toString.call(n).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(n){g.each(arguments,function(o,p){if(p>0){g.each(o,function(r,q){n[q]=r})}});return n},cleanName:function(n){var o,p;p=[/[\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(o=0;o<p.length;o+=2){n=n.replace(p[o],p[o+1])}n=n.replace(/\s+/g,"_");n=n.replace(/[^a-z0-9_\-\.]+/gi,"");return n},addRuntime:function(n,o){o.name=n;k[n]=o;k.push(o);return o},guid:function(){var n=new Date().getTime().toString(32),o;for(o=0;o<5;o++){n+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||"p")+n+(f++).toString(32)},buildUrl:function(o,n){var p="";g.each(n,function(r,q){p+=(p?"&":"")+encodeURIComponent(q)+"="+encodeURIComponent(r)});if(p){o+=(o.indexOf("?")>0?"&":"?")+p}return o},each:function(q,r){var p,o,n;if(q){p=q.length;if(p===b){for(o in q){if(q.hasOwnProperty(o)){if(r(q[o],o)===false){return}}}}else{for(n=0;n<p;n++){if(r(q[n],n)===false){return}}}}},formatSize:function(n){if(n===b||/\D/.test(n)){return g.translate("N/A")}if(n>1073741824){return Math.round(n/1073741824,1)+" GB"}if(n>1048576){return Math.round(n/1048576,1)+" MB"}if(n>1024){return Math.round(n/1024,1)+" KB"}return n+" b"},getPos:function(o,s){var t=0,r=0,v,u=document,p,q;o=o;s=s||u.body;function n(B){var z,A,w=0,C=0;if(B){A=B.getBoundingClientRect();z=u.compatMode==="CSS1Compat"?u.documentElement:u.body;w=A.left+z.scrollLeft;C=A.top+z.scrollTop}return{x:w,y:C}}if(o&&o.getBoundingClientRect&&g.ua.ie&&(!u.documentMode||u.documentMode<8)){p=n(o);q=n(s);return{x:p.x-q.x,y:p.y-q.y}}v=o;while(v&&v!=s&&v.nodeType){t+=v.offsetLeft||0;r+=v.offsetTop||0;v=v.offsetParent}v=o.parentNode;while(v&&v!=s&&v.nodeType){t-=v.scrollLeft||0;r-=v.scrollTop||0;v=v.parentNode}return{x:t,y:r}},getSize:function(n){return{w:n.offsetWidth||n.clientWidth,h:n.offsetHeight||n.clientHeight}},parseSize:function(n){var o;if(typeof(n)=="string"){n=/^([0-9]+)([mgk]?)$/.exec(n.toLowerCase().replace(/[^0-9mkg]/g,""));o=n[2];n=+n[1];if(o=="g"){n*=1073741824}if(o=="m"){n*=1048576}if(o=="k"){n*=1024}}return n},xmlEncode:function(n){return n?(""+n).replace(l,function(o){return a[o]?"&"+a[o]+";":o}):n},toArray:function(p){var o,n=[];for(o=0;o<p.length;o++){n[o]=p[o]}return n},inArray:function(p,q){if(q){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(q,p)}for(var n=0,o=q.length;n<o;n++){if(q[n]===p){return n}}}return -1},addI18n:function(n){return g.extend(m,n)},translate:function(n){return m[n]||n},isEmptyObj:function(n){if(n===b){return true}for(var o in n){return false}return true},hasClass:function(p,o){var n;if(p.className==""){return false}n=new RegExp("(^|\\s+)"+o+"(\\s+|$)");return n.test(p.className)},addClass:function(o,n){if(!g.hasClass(o,n)){o.className=o.className==""?n:o.className.replace(/\s+$/,"")+" "+n}},removeClass:function(p,o){var n=new RegExp("(^|\\s+)"+o+"(\\s+|$)");p.className=p.className.replace(n,function(r,q,s){return q===" "&&s===" "?" ":""})},getStyle:function(o,n){if(o.currentStyle){return o.currentStyle[n]}else{if(window.getComputedStyle){return window.getComputedStyle(o,null)[n]}}},addEvent:function(s,n,t){var r,q,p,o;o=arguments[3];n=n.toLowerCase();if(e===b){e="Plupload_"+g.guid()}if(s.addEventListener){r=t;s.addEventListener(n,r,false)}else{if(s.attachEvent){r=function(){var u=window.event;if(!u.target){u.target=u.srcElement}u.preventDefault=h;u.stopPropagation=j;t(u)};s.attachEvent("on"+n,r)}}if(s[e]===b){s[e]=g.guid()}if(!d.hasOwnProperty(s[e])){d[s[e]]={}}q=d[s[e]];if(!q.hasOwnProperty(n)){q[n]=[]}q[n].push({func:r,orig:t,key:o})},removeEvent:function(s,n){var q,t,p;if(typeof(arguments[2])=="function"){t=arguments[2]}else{p=arguments[2]}n=n.toLowerCase();if(s[e]&&d[s[e]]&&d[s[e]][n]){q=d[s[e]][n]}else{return}for(var o=q.length-1;o>=0;o--){if(q[o].key===p||q[o].orig===t){if(s.removeEventListener){s.removeEventListener(n,q[o].func,false)}else{if(s.detachEvent){s.detachEvent("on"+n,q[o].func)}}q[o].orig=null;q[o].func=null;q.splice(o,1);if(t!==b){break}}}if(!q.length){delete d[s[e]][n]}if(g.isEmptyObj(d[s[e]])){delete d[s[e]];try{delete s[e]}catch(r){s[e]=b}}},removeAllEvents:function(o){var n=arguments[1];if(o[e]===b||!o[e]){return}g.each(d[o[e]],function(q,p){g.removeEvent(o,p,n)})}};g.Uploader=function(r){var o={},u,t=[],q,p=false;u=new g.QueueProgress();r=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:"file",filters:[]},r);function s(){var w,x=0,v;if(this.state==g.STARTED){for(v=0;v<t.length;v++){if(!w&&t[v].status==g.QUEUED){w=t[v];w.status=g.UPLOADING;if(this.trigger("BeforeUpload",w)){this.trigger("UploadFile",w)}}else{x++}}if(x==t.length){this.stop();this.trigger("UploadComplete",t)}}}function n(){var w,v;u.reset();for(w=0;w<t.length;w++){v=t[w];if(v.size!==b){u.size+=v.size;u.loaded+=v.loaded}else{u.size=b}if(v.status==g.DONE){u.uploaded++}else{if(v.status==g.FAILED){u.failed++}else{u.queued++}}}if(u.size===b){u.percent=t.length>0?Math.ceil(u.uploaded/t.length*100):0}else{u.bytesPerSec=Math.ceil(u.loaded/((+new Date()-q||1)/1000));u.percent=u.size>0?Math.ceil(u.loaded/u.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:"",features:{},files:t,settings:r,total:u,id:g.guid(),init:function(){var A=this,B,x,w,z=0,y;if(typeof(r.preinit)=="function"){r.preinit(A)}else{g.each(r.preinit,function(D,C){A.bind(C,D)})}r.page_url=r.page_url||document.location.pathname.replace(/\/[^\/]+$/g,"/");if(!/^(\w+:\/\/|\/)/.test(r.url)){r.url=r.page_url+r.url}r.chunk_size=g.parseSize(r.chunk_size);r.max_file_size=g.parseSize(r.max_file_size);A.bind("FilesAdded",function(C,F){var E,D,H=0,I,G=r.filters;if(G&&G.length){I=[];g.each(G,function(J){g.each(J.extensions.split(/,/),function(K){if(/^\s*\*\s*$/.test(K)){I.push("\\.*")}else{I.push("\\."+K.replace(new RegExp("["+("/^$.*+?|()[]{}\\".replace(/./g,"\\$&"))+"]","g"),"\\$&"))}})});I=new RegExp(I.join("|")+"$","i")}for(E=0;E<F.length;E++){D=F[E];D.loaded=0;D.percent=0;D.status=g.QUEUED;if(I&&!I.test(D.name)){C.trigger("Error",{code:g.FILE_EXTENSION_ERROR,message:g.translate("File extension error."),file:D});continue}if(D.size!==b&&D.size>r.max_file_size){C.trigger("Error",{code:g.FILE_SIZE_ERROR,message:g.translate("File size error."),file:D});continue}t.push(D);H++}if(H){c(function(){A.trigger("QueueChanged");A.refresh()},1)}else{return false}});if(r.unique_names){A.bind("UploadFile",function(C,D){var F=D.name.match(/\.([^.]+)$/),E="tmp";if(F){E=F[1]}D.target_name=D.id+"."+E})}A.bind("UploadProgress",function(C,D){D.percent=D.size>0?Math.ceil(D.loaded/D.size*100):100;n()});A.bind("StateChanged",function(C){if(C.state==g.STARTED){q=(+new Date())}else{if(C.state==g.STOPPED){for(B=C.files.length-1;B>=0;B--){if(C.files[B].status==g.UPLOADING){C.files[B].status=g.QUEUED;n()}}}}});A.bind("QueueChanged",n);A.bind("Error",function(C,D){if(D.file){D.file.status=g.FAILED;n();if(C.state==g.STARTED){c(function(){s.call(A)},1)}}});A.bind("FileUploaded",function(C,D){D.status=g.DONE;D.loaded=D.size;C.trigger("UploadProgress",D);c(function(){s.call(A)},1)});if(r.runtimes){x=[];y=r.runtimes.split(/\s?,\s?/);for(B=0;B<y.length;B++){if(k[y[B]]){x.push(k[y[B]])}}}else{x=k}function v(){var F=x[z++],E,C,D;if(F){E=F.getFeatures();C=A.settings.required_features;if(C){C=C.split(",");for(D=0;D<C.length;D++){if(!E[C[D]]){v();return}}}F.init(A,function(G){if(G&&G.success){A.features=E;A.runtime=F.name;A.trigger("Init",{runtime:F.name});A.trigger("PostInit");A.refresh()}else{v()}})}else{A.trigger("Error",{code:g.INIT_ERROR,message:g.translate("Init error.")})}}v();if(typeof(r.init)=="function"){r.init(A)}else{g.each(r.init,function(D,C){A.bind(C,D)})}},refresh:function(){this.trigger("Refresh")},start:function(){if(t.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger("StateChanged");s.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger("CancelUpload");this.trigger("StateChanged")}},disableBrowse:function(){p=arguments[0]!==b?arguments[0]:true;this.trigger("DisableBrowse",p)},getFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w){return t[v]}}},removeFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w.id){return this.splice(v,1)[0]}}},splice:function(x,v){var w;w=t.splice(x===b?0:x,v===b?t.length:v);this.trigger("FilesRemoved",w);this.trigger("QueueChanged");return w},trigger:function(w){var y=o[w.toLowerCase()],x,v;if(y){v=Array.prototype.slice.call(arguments);v[0]=this;for(x=0;x<y.length;x++){if(y[x].func.apply(y[x].scope,v)===false){return false}}}return true},hasEventListener:function(v){return !!o[v.toLowerCase()]},bind:function(v,x,w){var y;v=v.toLowerCase();y=o[v]||[];y.push({func:x,scope:w||this});o[v]=y},unbind:function(v){v=v.toLowerCase();var y=o[v],w,x=arguments[1];if(y){if(x!==b){for(w=y.length-1;w>=0;w--){if(y[w].func===x){y.splice(w,1);break}}}else{y=[]}if(!y.length){delete o[v]}}},unbindAll:function(){var v=this;g.each(o,function(x,w){v.unbind(w)})},destroy:function(){this.stop();this.trigger("Destroy");this.unbindAll()}})};g.File=function(q,o,p){var n=this;n.id=q;n.name=o;n.size=p;n.loaded=0;n.percent=0;n.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(n,o){}};g.QueueProgress=function(){var n=this;n.size=0;n.loaded=0;n.uploaded=0;n.failed=0;n.queued=0;n.percent=0;n.bytesPerSec=0;n.reset=function(){n.size=n.loaded=n.uploaded=n.failed=n.queued=n.percent=n.bytesPerSec=0}};g.runtimes={};window.plupload=g})();
\ No newline at end of file
diff --git a/wp-includes/js/plupload/plupload.silverlight.js b/wp-includes/js/plupload/plupload.silverlight.js
index 0a3004616..ccaa95a00 100644
--- a/wp-includes/js/plupload/plupload.silverlight.js
+++ b/wp-includes/js/plupload/plupload.silverlight.js
@@ -1 +1 @@
-(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return"null"}if(m==="string"){n="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(q,p){var i=n.indexOf(p);if(i+1){return"\\"+n.charAt(i+1)}q=p.charCodeAt().toString(16);return"\\u"+"0000".substring(q.length)+q})+'"'}if(m=="object"){j=o.length!==e;n="";if(j){for(l=0;l<o.length;l++){if(n){n+=","}n+=c(o[l])}n="["+n+"]"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=","}n+=c(k)+":"+c(o[k])}}n="{"+n+"}"}return n}return""+o}function f(r){var u=false,i=null,n=null,j,k,l,t,m,p=0;try{try{n=new ActiveXObject("AgControl.AgControl");if(n.IsVersionSupported(r)){u=true}n=null}catch(q){var o=navigator.plugins["Silverlight Plug-In"];if(o){j=o.description;if(j==="1.0.30226.2"){j="2.0.30226.2"}k=j.split(".");while(k.length>3){k.pop()}while(k.length<4){k.push(0)}l=r.split(".");while(l.length>4){l.pop()}do{t=parseInt(l[p],10);m=parseInt(k[p],10);p++}while(p<l.length&&t===m);if(t<=m&&!isNaN(t)){u=true}}}}catch(s){u=false}return u}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]="Silverlight:"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime("silverlight",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m="",n=p.settings.filters,l,k=b.body;if(!f("2.0.31005.0")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement("div");o.id=p.id+"_silverlight_container";d.extend(o.style,{position:"absolute",top:"0px",background:p.settings.shim_bgcolor||"transparent",zIndex:99999,width:"100px",height:"100px",overflow:"hidden",opacity:p.settings.shim_bgcolor||b.documentMode>8?"":0.01});o.className="plupload silverlight";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,"position")==="static"){k.style.position="relative"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=""?"|":"")+n[l].title+" | *."+n[l].extensions.replace(/,/g,";*.")}o.innerHTML='<object id="'+p.id+'_silverlight" data="data:application/x-silverlight," type="application/x-silverlight-2" style="outline:none;" width="1024" height="1024"><param name="source" value="'+p.settings.silverlight_xap_url+'"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="id='+p.id+",filter="+m+",multiselect="+p.settings.multi_selection+'"/></object>';function j(){return b.getElementById(p.id+"_silverlight").content.Upload}p.bind("Silverlight:Init",function(){var i,r={};if(h[p.id]){return}h[p.id]=true;p.bind("Silverlight:StartSelectFiles",function(s){i=[]});p.bind("Silverlight:SelectFile",function(s,v,t,u){var w;w=d.guid();r[w]=v;r[v]=w;i.push(new d.File(w,t,u))});p.bind("Silverlight:SelectSuccessful",function(){if(i.length){p.trigger("FilesAdded",i)}});p.bind("Silverlight:UploadChunkError",function(s,v,t,w,u){p.trigger("Error",{code:d.IO_ERROR,message:"IO Error.",details:u,file:s.getFile(r[v])})});p.bind("Silverlight:UploadFileProgress",function(s,w,t,v){var u=s.getFile(r[w]);if(u.status!=d.FAILED){u.size=v;u.loaded=t;s.trigger("UploadProgress",u)}});p.bind("Refresh",function(s){var t,u,v;t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+"_silverlight_container").style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"})}});p.bind("Silverlight:UploadChunkSuccessful",function(s,v,t,y,x){var w,u=s.getFile(r[v]);w={chunk:t,chunks:y,response:x};s.trigger("ChunkUploaded",u,w);if(u.status!=d.FAILED&&s.state!==d.STOPPED){j().UploadNextChunk()}if(t==y-1){u.status=d.DONE;s.trigger("FileUploaded",u,{response:x})}});p.bind("Silverlight:UploadSuccessful",function(s,v,t){var u=s.getFile(r[v]);u.status=d.DONE;s.trigger("FileUploaded",u,{response:t})});p.bind("FilesRemoved",function(s,u){var t;for(t=0;t<u.length;t++){j().RemoveFile(r[u[t].id])}});p.bind("UploadFile",function(s,u){var v=s.settings,t=v.resize||{};j().UploadFile(r[u.id],s.settings.url,c({name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,image_width:t.width,image_height:t.height,image_quality:t.quality,multipart:!!v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,headers:v.headers}))});p.bind("CancelUpload",function(){j().CancelUpload()});p.bind("Silverlight:MouseEnter",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});p.bind("Silverlight:MouseLeave",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});p.bind("Silverlight:MouseLeftButtonDown",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,"mouseup",function(){d.removeClass(t,u)})}});p.bind("Sliverlight:StartSelectFiles",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});p.bind("DisableBrowse",function(s,t){j().DisableBrowse(t)});p.bind("Destroy",function(s){var t;d.removeAllEvents(b.body,s.id);delete h[s.id];delete a[s.id];t=b.getElementById(s.id+"_silverlight_container");if(t){k.removeChild(t)}});q({success:true})})}})})(window,document,plupload);
\ No newline at end of file
+(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return"null"}if(m==="string"){n="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(q,p){var i=n.indexOf(p);if(i+1){return"\\"+n.charAt(i+1)}q=p.charCodeAt().toString(16);return"\\u"+"0000".substring(q.length)+q})+'"'}if(m=="object"){j=o.length!==e;n="";if(j){for(l=0;l<o.length;l++){if(n){n+=","}n+=c(o[l])}n="["+n+"]"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=","}n+=c(k)+":"+c(o[k])}}n="{"+n+"}"}return n}return""+o}function f(r){var u=false,i=null,n=null,j,k,l,t,m,p=0;try{try{n=new ActiveXObject("AgControl.AgControl");if(n.IsVersionSupported(r)){u=true}n=null}catch(q){var o=navigator.plugins["Silverlight Plug-In"];if(o){j=o.description;if(j==="1.0.30226.2"){j="2.0.30226.2"}k=j.split(".");while(k.length>3){k.pop()}while(k.length<4){k.push(0)}l=r.split(".");while(l.length>4){l.pop()}do{t=parseInt(l[p],10);m=parseInt(k[p],10);p++}while(p<l.length&&t===m);if(t<=m&&!isNaN(t)){u=true}}}}catch(s){u=false}return u}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]="Silverlight:"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime("silverlight",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m="",n=p.settings.filters,l,k=b.body;if(!f("2.0.31005.0")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement("div");o.id=p.id+"_silverlight_container";d.extend(o.style,{position:"absolute",top:"0px",background:p.settings.shim_bgcolor||"transparent",zIndex:99999,width:"100px",height:"100px",overflow:"hidden",opacity:p.settings.shim_bgcolor||b.documentMode>8?"":0.01});o.className="plupload silverlight";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,"position")==="static"){k.style.position="relative"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=""?"|":"")+n[l].title+" | *."+n[l].extensions.replace(/,/g,";*.")}o.innerHTML='<object id="'+p.id+'_silverlight" data="data:application/x-silverlight," type="application/x-silverlight-2" style="outline:none;" width="1024" height="1024"><param name="source" value="'+p.settings.silverlight_xap_url+'"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="id='+p.id+",filter="+m+",multiselect="+p.settings.multi_selection+'"/></object>';function j(){return b.getElementById(p.id+"_silverlight").content.Upload}p.bind("Silverlight:Init",function(){var i,r={};if(h[p.id]){return}h[p.id]=true;p.bind("Silverlight:StartSelectFiles",function(s){i=[]});p.bind("Silverlight:SelectFile",function(s,v,t,u){var w;w=d.guid();r[w]=v;r[v]=w;i.push(new d.File(w,t,u))});p.bind("Silverlight:SelectSuccessful",function(){if(i.length){p.trigger("FilesAdded",i)}});p.bind("Silverlight:UploadChunkError",function(s,v,t,w,u){p.trigger("Error",{code:d.IO_ERROR,message:"IO Error.",details:u,file:s.getFile(r[v])})});p.bind("Silverlight:UploadFileProgress",function(s,w,t,v){var u=s.getFile(r[w]);if(u.status!=d.FAILED){u.size=v;u.loaded=t;s.trigger("UploadProgress",u)}});p.bind("Refresh",function(s){var t,u,v;t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+"_silverlight_container").style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"})}});p.bind("Silverlight:UploadChunkSuccessful",function(s,v,t,y,x){var w,u=s.getFile(r[v]);w={chunk:t,chunks:y,response:x};s.trigger("ChunkUploaded",u,w);if(u.status!=d.FAILED&&s.state!==d.STOPPED){j().UploadNextChunk()}if(t==y-1){u.status=d.DONE;s.trigger("FileUploaded",u,{response:x})}});p.bind("Silverlight:UploadSuccessful",function(s,v,t){var u=s.getFile(r[v]);u.status=d.DONE;s.trigger("FileUploaded",u,{response:t})});p.bind("FilesRemoved",function(s,u){var t;for(t=0;t<u.length;t++){j().RemoveFile(r[u[t].id])}});p.bind("UploadFile",function(s,u){var v=s.settings,t=v.resize||{};j().UploadFile(r[u.id],s.settings.url,c({name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,image_width:t.width,image_height:t.height,image_quality:t.quality,multipart:!!v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,headers:v.headers}))});p.bind("CancelUpload",function(){j().CancelUpload()});p.bind("Silverlight:MouseEnter",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});p.bind("Silverlight:MouseLeave",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});p.bind("Silverlight:MouseLeftButtonDown",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,"mouseup",function(){d.removeClass(t,u)})}});p.bind("Sliverlight:StartSelectFiles",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});p.bind("DisableBrowse",function(s,t){j().DisableBrowse(t)});p.bind("Destroy",function(s){var t;d.removeAllEvents(b.body,s.id);delete h[s.id];delete a[s.id];t=b.getElementById(s.id+"_silverlight_container");if(t){t.parentNode.removeChild(t)}});q({success:true})})}})})(window,document,plupload);
\ No newline at end of file
diff --git a/wp-includes/js/plupload/plupload.silverlight.xap b/wp-includes/js/plupload/plupload.silverlight.xap
index 1503a95e3a57005a6a17fddb599b3f6cd2c87be2..e1584d3b1a9960ed66af1d9b9980126bceb5cc70 100644
GIT binary patch
delta 39260
zcmca|gX#4RrVSlJoEdQzPG{V0PpeIyDCANf!Q$#Fcyy+M69*$x<3Y&-sS-!F-qI55
z(T!T#Rl553KJVC9ajbXDH|XVVy}xQ}*~V|&|BKJ<eScQPC42w=_y7O@thK9WE`DeG
z{9g6DvUfXw*Sc^0KjUPNq52;_nS?iW$Nt~CvH$;Vmi>!9G`qgZ`<~x+=e@-zbLYP3
zdviP2crLG>w$wVz)yg_-z2Dkiop)VJuCMJYS>NYlUzL{<n&lb3_xy5xahpENDI1k#
zjeehge^aLWeYKC&qr!{{9PG)0ez)g~d~@ZSXSL;b<u1w7v)^d3U;OBwmit`DX~+F#
zzqvmZFn^eP+TwofCx@9O2Ko~5YBD(nzxn?u)J8F`Vyuf`G>zN8?e&$dGv0kviqGxa
z$N5-C?CNskmwp?9Z;5f*AGi4Rqxn+CYX9=DOAag!Uo!KLuGNYAA>StRib&Mg{{Q~>
z{(t@d_q;z@DxLFHeU_BlZ(R1>Ut)7w-+7x;H&%YCKX&=%`{km4l+Mh%G<i06UDt-+
zNA;DiiK$HFSlbZyBJbzMKbG8&G`_gcEPST^udmKNvtj-njm@9eR$A!wxa?ySFqOD$
z9?GzNLtUV3%es4|^O`LeGpg`wsr)~n#$T_eGCzN^Hup*K8&6g_ed5n8k~m=+8ni`Z
z!YqfylS@Btkq#1BpmcKQ#Rtxlj2YR3i;^$QtCW)|O1>!NxL^Dz<FhOazN1Bf#*dtT
zKRhfjz3FO|9+#P_xsY<(4yFLP?8=)CbB-Q}TKCoaX4;o|vaALBm7f{d25l336ZbYC
za>`=<`Z~oQN83DB2~S@C;!c!XnDAP)NZZU4Cui|o_<DJ%PMZ2x35zSIyzZv4e$om2
zGb4THxyf?vb-rI-n@HQdoY}!9SgKgHr&ml(P{!(w#+-F6??R+RUGLqwdqurvPWB;%
zb26<VMG{-mjM5L@d|Q6yM6cdAW<~iRG4IH-T|xSeO|kV)dHbZopUjt*%+@L_@-})n
z{luf`sSg~dPB_X`=DM(;MDx}0hJ#Du`=)woq@3bdIm?DcI7IM4*xTu6k9}vgJaSU#
zxl$JA(<Ixq)sC{MfgC|g75Ho_SBeMtElArd613Q0(oE}?9?_i^?(Pc&PlYxozA~IY
z#g#GejP}$7r*IFy`bYI9wl5kcEt(a+>R^kzD4*%arX5+wIG$KK>~gHwT&Q>Cro=4g
zg>#Z)b}$7@Q+Tx}@9Yk5zTFGm@=jkr;g%Csl)sKqczdCN`zwx>PdscDLuFR7CMVB$
z6C<Z?vS6CR>U9$`7TvOxs+)db{ZY?#A@d@2rY=*9s|s`N-Lks-_T;pBt&XQr0YCPz
zMa!ksTKevr$nn1|a)tcn8&#U!UjwX{<OfV@e=?0jLus2q=tBq1pXVptwO_VRRIk(N
zwCS_gPno^X2P`;Y|K0dnm2R3=RFmYsIjbYtQ-oMGPwrJMUAkeX%IvOR3wBM(-L&!0
znL;(rR&%aN^PJXmZPm|UY*DHBy{2AmV^EmN4wi6X?gE=5&%^^2n0eh6s%6-|Inc;_
zXRFP+52se|jM4HrJ<YNE_mt`+Z}+^8P(8nE=XQ%c=sL2m&iR3P(F2|pD*X9si#~K5
ziJr1+Yt;Urh@G!LX{%0E3Rtl_QsdPBOuaR1&;8%_MEh>~JZaTAzU?xTcRt)Bv8d8(
zN`0`~Gfm~n&+Ej`R%`cPQVzH`M>@rLSy6UTW#aGpb6=7?&dgAA;woLR^RwdJFb~}s
zAF`BGt_P}nUU}|3Z^Ke2*W}ltu1}vXeYly0>8X)mL7}%s6yHr=jcEpp(o8LVrzEi)
zXX;EaTJSN*$e}QgbBAt<w}ZKY$*YMwf;mfHX^Gc2sU=qJaK9NK6wR~utx0?6Ee}S&
zw%u#B{cj)g{XT75@+TJo5l6P@+Ytp5oI4vX%X<CDsoLuQ!_Z;fD&}*#xz#g{COACb
zz3=YM@6mH-`~MZ&F1-Kf+PBen+UmP!KQr5MEh!^0?=Y*Er`p64_L#hdvP@kISMaXA
zAL8u9WHQrSqFyoSYF+z6vzJ^YEx&#|{_gzw=&U1NiybAy6I4{6{+_G$<-(r7F<h>T
zFU@d#zVEflW;YZ5g?Saf1#A-+?z=Lz*WyYxhv(02mltTNl=E(ivA+58q1`MKqY|0_
zU#=hMI%Um$@1KKV?~*!UA&DoCwZwlcDO?@6V4d2&<|gBRrVSHf>gRoUR=@b(T=tda
zJXx#Xs<pn(S@<pLfA<!PKGRiS3x9hwZLsI_t+@H_$P|^QrI(UD0t-}D_3U20!2R(=
z{^wot-FBuNK@SAIW=x*6b5HE4q~&)l?q1p>oUr9``i#l)ze9rK!{08hDxKZC{`*%6
z>8$ICrTh3gb58`lSQH-o`c{-#z5Es4$zAU+PyXi1ao*{Imo4wIQwQVU@}#eAcTc%A
z;rj3VELZClVJ2(-9NHzvb4jP)oRKX%KrXDwX2<W7hfO%2CQb@b;GcWHc8bETpZ}GA
zcHaJEJSY2Y);fdA(6SG!K65Fqn!ot!xo3^0dM>?dC%FlQShumuUWqtv%l=y1^>A*z
z+!gm_N*0OCS9M-(-1Ajtm79~)=2j;OA1%+RE%_}{URC?{>Qy#{DrReW%sie`^Dz4G
z7fH3FeShAu%0FS;zc{D#%S!(F9c)u_E<Inv+mZFXz-aou0}NANnYs8DO?~`K>v+L8
z@!i$`q>sMa_TOz|b719aiMjq_&qA`N*o6u#i>zna)bl{mto-@}zTe6PR|3<_6Mp1y
zm$jaq6cXIfK5O^Wgktd?>$F2WNj&`daqCuGbTql+Y;r@KH!?${%As|cR8Se$w|o5;
z8(dCpQ!KLXSDkS<BT6heeNMj_$Hg{<D1DdLr`=cY{Oxj^oi{S$i(iM>FN^uNyQaAr
z*DmJ$nDM{<#4i`?e`0ewS#PgXo|(J&mZR9rgBCG`ay~^f8CA^=@~qe>*mgO9$FwP1
zJaEQ?7j3KM`BVi1cvtI`Nd`#VSlLx#t1>m7CHb-=<Jk*7+WW0}bTcd%+jzte$OLhB
z^R|`zJaT<zK#FRRL6qw&izB`>7TLE<-lR2a%0iDVoEHzI)L+?iV!FCY#~Gj2jsDAY
zn53S(5Q$oJ!uQ$c*J0J?xcbg8Z+g5W#93cTJ1E3+S<+3%sqcE~S3UUT&NAITLzn4@
z#CfZRKAXn0Qn}E+LoXuZxu@En(9U&Owd~O&51;TW&uXtp9dmftRvW$J<b(;%3r!D(
z*tTtE*=SbMW%~Vj<+S4Z%`2<~m)$y0ZE&>v+)V4X^Otj{hp=2vP5ZvQZDN&4Q0z|S
z9m;KIbliRgdT5;8)A&vKZBg{`>)||_#zL}u%lWqSE&CanBDi*W+yt?@lA|g|OIn3`
z_IRdkX`Eu&CUxxdr^@U+tEWud3%9k*7WzI(%5N?6&1I`riv76X_<ctGwVwLJ=^aN+
zqB^Bnel6f!wTa`>v1I-!lBr5{i*+O_o1+sV@^`oxtx#Cz;CO|XZ+gItSF!e+rtMES
zlCN>m?Nf*5i318T2NmsGXSE$QXWBb+<IA?0Qk`MEx44f@f5jH=Y`P^!z2J1Rx6F#&
zPMuFzK5bocCFsZ*krj!1->uslcX&-GV?FE2i}yR{u>YwjyVG|2RG+m(<?LuDwT4d|
zWkKN~KOD~b8r^x96(DzNp7s)*u*7dkG9j^Y1x+37t&1Pt`N99@LRIzm7{^U=dENCM
zr*uW`Yf9#wDziB7_$u$+u5f<0x}&-h>*M6i7{Wd%opdsrTg@PUCH~zitIF>!ea*kE
zpUth;`t6;TxMS77zRKkrc3<EP5lyjOQ@v0pO>!68&98ZLnq4n+&*K#5jC<&ibu_7Q
zor+1~?^_jfI9yqqKjw7a*OIgn^=sX(l+eN(=QNKiPfXG^%u|$A*?-Z|E75W6mw80A
zw=$|mybpBxdTxW@<tD@M8~t-L4}1tHX`5)m6z-r}f6zpHcJ#O8s9J`Z*RQT+tZ&q}
zSJ`;ugF4gEJ@5W}yr0o1w0MU4A#R;E$+&mBRWxVR1|9IZvNKSo-uZE2&4hx(=~8UI
zZ+ZC@*q-zy$2F?<B>8<{?b_1dxHRaZmB_Lfw?GeWRqj=*SI87_Pwr9D^LMq`6twt?
z*3wG}PjvGfE9<p%`KuYjWMbwvZ!mk^d#P@#=7-0U>yP(-p0UC)E_tbF^rQ3K{>z?P
z->GW#ozxTLCHYFUUH*Ds_-0G%pM~2T7N3%9nV4_*LRfeg`{nFk2~U#QVwN)chlZ-P
z@!rdhta)e_Wyde_)!#;4+&eO4b13&Kle});$7%fm%@eo%yckvgASL^#OL=JZ0sYkU
z+XvIS6E^?PHDIp(8rT-k@y$pe$NA+_O>K@ziYHEUpLE-2{eJepAAb$34EE}VU&><6
zN?m*0pz7Iw>9x7PqQsmy%$K-bWyqMYWSYfC4WG*$`!Xd1C8`CI%pD3V7x2D4YW5`a
zW~XrWgJ)q3F9KvYKIT1pp<cMnn2~ou%XHtvJS&z&2(Jh)KUAQ)ppmsA(wxV1kHM)z
zNjc?&DGAG$u0QgQtIcXc`SgdYy6oFub23V74?DX4@vF-pmQ8bTVzO)e<)P~k6&&lK
z_vo#+S=Rzjt-UJU8RvxO-8<^jz-_YO-rFRdOl|oO7oynTy7Oq~>b87Q$_cN(AE3VW
z`@t=}ZXIp=zZz}0%y7{l>iJ_KR{wx3d9H6M_sUPEX<R*E9q{I`dsMZQqG92RD4prt
z*-BF`taa$(NO>C`8C}%+JK}Gl%=<Y<x9{yK+PJi2;ohY!zSkGUr3CluF38)qvN(6u
zI+o_!Qw9E*$)*e2Y6*lYteV}oy)%xtqh3m2tMBI{??R89GM8_cG~s*w!n$tq4~sR;
z{fCz{9?SoGnD_U#g4;{qB<UQyQ<J44yJ%v`2e&4_m2QUfCN8vF7V+3BJdaU+`8<!s
z*UsKO_?K^n<5MxgtE??A0%S^cpETc^e8Ho4sUp{;tTfM=7Q6J91xmiXeRlGb7c2`b
zpT2N0sBgOXQA2!vr{a>;e$$fWEU&igY<&5DL5zAY+v}9{Gmmu?^c}w~OL@2b+M@Ff
zU#2C@yt3-jvv(WzpPXD~nJ`E0`E2#O77NV1zH1vi3NtzzG2cU}O5}+~*lSPuyx+@H
z6H~JVp4iI7?XZ}UBQ<3oZw%x2DHe+s7lyGI`_29R>}+arefb|&PZiJU8TmTtQ<K;7
zofDkm?lDd4>Ex}4yuxPB)lm_=>vc`A^8f7JPkXi3Dg+yxh~Q~bS>&F0Kyvl>CGStL
zADrpAe8xf@!QV4(RLOiOK4dRhr&T<0?l*&skp5*nM$cHLE3WC(4A>TYL*~QHgMMj@
zW>b#doavLiG)L?9p>=8X<r|LAn9ZAf_D#e$OYP+D$XRdOc5XP?wmI<4_BFHq&SZ`3
zn7WzEjOkXjNXm}3-n8T!5!VhK+xRg@YW6w4RO1^yWfInN&L$P#EPPX8)<5@vkj}|l
zk?PThcHIct)}xz#H;47~hOGwQ;`vwFPMv$quidQ9%({K<>2t~U3C}lk-{7ym8CJ&m
zI(7P{`5WeM%6(&0W_kPIy2Skn*EhYs@%0T`neuPd-IMPgeV6uqL-oztH+A0_swdc<
zo0s6fDSq?v8<*cme$%P$dz+}gIsC@zH>TgLs+;$oyqENTGyjeDH_G3vzg2%@|7Q5R
zrS{;zL;F(dQ|puK)Bh*LZ>*0p<yX}_Y~NY$bt`qc@w5WJDMs%WN<0X1Qnh70WyPR+
zmoe2=<kYSyUQ(wcnm^6;QjKL>x<~p{rNtEUX<s4(zC~OM;|v#{@^Qugt3m(%uj{F|
zcF_F)Q~Gq|vdr-N^{w@LmITfc)d=rBb=tY)x_R5rX9X*i=L^^!s<Sc<*!wzZ_2P~<
z36B&Uzt*plk9IL`uF4A*pO>@2DMwP{$hA7fX<}_Vjui1!vo75}|9fidJ$>5~zx{tz
z#`{S*=1p;6YdMl8Vq?4U;I$hIuAhH2_rS`Uq&g`n*K>E=_Gxf*U5|XiWttT<v0J%I
zQeP|RP@anBPUGCAhxIJdzWL0LTex_iUHF;XtB=@xUmkX<zU0M3zoo5Cn%#k0r*C(k
z$9SHzt}I!$-_$#HdXigu(*Gi>rQbZ>R4j6T{3*+&OU^l)A!r&?%EkH;wqLF`%e<D(
z5w^VE!&pCK?u!zsT6QVXu+CcDwZ|`<Vk{|@lW3Tsbw6`qXL|&D;DWOqn;w6(I9S|N
z_C#Z5gQc*|qO*5>FV@%0vQYiR9>92Ga#DkfUGJuowFwnneK)Qp)V!^ITx`jmRJ`j`
zVXuUN-gEP#Pl|$U4)}dpIb(lN_1{B_XBE}?EoDo+y~?|5vX)cJY{f&NHy$2Zc&H(<
zUXEMzlg@v&c}6eH&KYNXe)F31di-hGBp!v<#EKp#!MUx`)^b7uA9Qo;eS$M51jiM%
z91&&N_;NX~$9kb9%3OOFF<d>la7OZngX^CCpD^WU*^Egq7*4b8RuX;Z@3}0dW^+@G
zVa|5Ti4rEef2-fQmEBw@^+nO5?oP{XaX-_CrG?eI{g+xUU3UDK=gr`ZlQCi2VidI*
zSPyPh^>m)eYVf!<OiC|K-~g}BrXBSeI!{W}AN6<cJsvhk(=jHD#h|+DV1}P(&POGc
z*;8WsZ=U=t%F^pU=jsn{(;R^le{&5M@doYk7q;#VTRHu>jOb3^5Qi1{Musucmz8c@
zPdoOo=2GqsUfs`(eiOe;%l@!S^4;pFulqW``2MbGl``kKwX(Bf=jLnYo}ZD^^zNF_
zQJ=N@p`mVhVMw#G(tN4w;R@~P7k=&bXWHr`^+qJAh%J|`Wyv9xEyesZ%4c}96`J0;
z{fUe3n`@BRm8rXU(@p(2E!o#JHJn~_(B;zY=nFf3U0BVgc6+r_$fT_c_wD&~_L^VQ
zg>xsLiOp-d<)+<zbdvOH$+?T&FRC=8Z<=5y{d|60eaC_98%J+PbryTy&6V<-^<ZVx
zp~V@Vv4-krZ};o1{Ai(Bwp{Ik(TasR?~aw8uem&-Kzu>H^xYYfD^><;6nR-z1{~$9
ziHMJHOOkq3f8!93uITaB_YL{$jSjJ#;ECs*t)%Ch6dl24R3mHuyRkTey-)SpjbC?U
z6y&q_8_KhGHP+X3>eQx}7W_!O+<&x!f4<#Q3nTuywzAj1F7Nyj(y^~{wk^Bc*UUiu
z%`0azy?Sa^x;A3*@k*At^(HFmC3<qjQ&Lo`=0rSq`YwGy=lIY4ck<TDybZZ^@z%H7
zm(OP&ow?|q++3Cmi`~?lFTTC1H>>UJ>2H2n+Gb%7-oG`8X<NN_d423m`CQeNg^&MT
zJhhr9d+z+Ll3vwK*?KYA7a#dQ+7`U@c7VRyxvT2RCUdl(&-WDDczemw@4H^US=pKW
zXNLMs$sRfXok1;U7kAZt$o^m~Q5qlX;P>{><3%g)T4dg4R!A#ou@>MInYG$4Ty)Wv
z<1(wZyWEUtYgM1Baqf;~z#P@C`Z>QDXGXniPtn@>`D94(^P=)3saf-_`&Di{U!^_i
zo3?s_h{4e-$#DmsMM~)Dq%OO#Z}!8Y_zuIR%b2nZEj27Rb-0OLJbg#K|BR-E&tlOv
zS4!-h4%s~@zOa32#Qy7x*!Q-i8Vbvq?q=t=X6&l`+}K&kX>oV<?&gyX+yy;43%1n9
zbay*<of2-^+Hku3U4)<UmfXDJ=xPUkHk*wb7BV0Fpt5b^#5>apr03-Z9N+b@@zm!A
zw_<kTkLH4Gd#07^f9GSX_+Iqh$==cGQT|1<CDJ7qR<GD;QgE?@u}ov#wabCUJDK*~
z$g$RSJ?LO)pzpNq=$uN!rAsAdic209*l|PST)pvkN!QjhwG6dw{m-uzs6M`a>srHp
z*8bbK0woVRaJr->$f(+^66#vTve>9+l7g;t*N1;8e?)IfaYQgOpUgef(7-5XAh0C$
zRE^Z%w!j%~_73|WKED%H%{7f};iUkHsD7rSzRxW}0*XTK?|sLsZs{=J&8gu}z$K<t
zs=QIB^#kjrOuVJ;JSbr7ns42xy<y%BwzC&1KUO&MI_vFqFsO;JNeIxZo#DMc^pb|G
zf~bbF>$LAm@Ah^qS=3Rj@5JvWs4p^oVc2B14{@n44mwE&M{N#~Q($$!>G_eJneD?j
z<>2PeW*VAopV}_*CT*1dTk%`>o>Q93Tg{U{O1GH?Tq=^QKiSfunZV|yxQxLq@Kmza
z(ivWc%Nhc?)_C;>3GP$T7gjy#FjI6x54+CdhE$sbNfsUBQ@>OV6I3_$ui3ipkkW%q
ziz1Z@CAwH%9_22)*Hf(hNyg`uUy$;_CGFXV1v1hWHedP1^3rYJZNb@z2NF!*uZ;El
zpv)X9)yeznM~hF`_xf$C3tVqa@|IKk*S2-uxtquHr<<gkbjAvv`ziPMyg)}utJsy!
zmR7MVRhJlVMg{+#mZJVPMZI!U=)U(0Smx+n{%9hdaq^1xjz6BAN4Sbv75{#1<DRSV
z^~tHXo}1L?EL%8Xt*o`yM0vT=KQk4+MA~dvsCFkT!P$40Yl5@s=SElc`eViojaw5A
z++{l3-e@KK^j6<&ajOR>neGU)^jb<kdU$lr;(a1z{4dY#alYhc)AC_X)2T%w1v3S>
z!j?R4+m|&peQhag$Aq*4D#zEVEwomAn;b6J7CdR~_K4qndv07!d9AwRcf#3XAB~TS
zE2@8$@7oo6cxxH&^~y`>-&QBSU}$|^Un8)8ntSH`D>s|e_qSh~Hm6&fi%;g-uB|E|
zjI!pP<q}f;Yag<_S;5D=(sxpmQHinLsSA}&Qdth!2L*&zvxl@NRV-?MbVlZtxK>E}
zMwML>a#|L<3s#)SI~%Tg@?a#F7mvsBKa5<fO20MQ9lc`3_PrwOmGS37&KGYEMVt0q
zYpPF+czm%yx_48N_@#sEyZ7w)RA;#T_l1ASTbh?kzR2`e++@1{(fJJ9rzvq+Z8sJk
zVb<gJ&Cgl4C@U*>wP{ZFR`>KM|LQv7KvtCy^S?XRx9_;EQ<QwWCg#wE+u_Gzoc}-C
zlWvqd_u{$W&_8asZmsHy*E}|ZOS-t=&tb)X6BezMuGc@rIk#<b_TC96+nY{Gd!2o3
zaOUw=+4WAJdop{Eu9LIA+G%UptLA0c?%6*1#}0LlPv$+xJC9eCBq^BOEVPK3tEaJm
zu`T05-s)S9%sGp{G+6A=aDB_U{_2a>kMcbu*Kk{zER3CcUwx1Me*X$vkL1(-o?%<3
z8Mm(S`@BG=FTlJ$&+Xc(hicd6%zW6Ev6W?uf4^#K=*RF-uUi`OvfK}6cA2i4^3{+{
zQ1kE|MGuy(8ytQ}>Rx0G**dRDwrRr6RoD204txwMVZ3|0tE}r}!;1Ikt@w67p0RBI
zR=ep|S*O?T|G(+$bhq>A-Q~3xvv&I5sQkNrS9|@PUja{EzIj<(cY9a;gJoatJ<h*z
zx9jU2o>aRz*F@7V)I3T5wrf$2*{OpK!F>9eMQzg;sNQ?fIfp;*Q_Tti{<TJ@7Jf@P
zu=AtNov$V9THe?hm)03<l`6Lie=w_wJL|mgY?euvRZ;^V-Q70jkif3(?t%K*;ag7M
zdi(dox1Zt3mxYzS?h#lySNi<VWfCIwU5Q3V1g39_{(Wo#kBqZ_qR9D94Y{c=mh@)s
zDD#NSS)u0tfzOX$s%rszrHS>AUC)0SC0}iQ%hD#?tH#5t)D@UD<s^qkg~ysnHT$D_
zcvn5jkABR3LaQa`W>@X}K(EtVDwq~c(lOX;-!Y9RBY{8a$iX{{zb8Z)Eoib$5o9my
zuiw|4X;8&dz0-Bg13Bh%&7B4}12#@CX7*v*BbAkPb}mnVQQ?RA3vw3KA8}c>@iFsJ
z<6T>A9X3iEEZSnr=jKy!#F2B07VB<yS!pglk;J@7GEv`d3Qtayu>Ueu{^i=X-Lh?M
zjf)n(R*SvQ<s~n;e_^*oSEd=Gvd$b|7N!}V$_(|7gSGb+9hoF1X5z)O|7}?343F+m
z+qK>c7jMZvVd7QU8N$VV<$|NhnuQBoWpXON$oU+W;)*=tIL-b3L6bELi@GBcD_f+j
zI)0orWjU#{Vj))_Z-}!%wIeU@vm5`rO<88@tXNpo*D2Mcq`hLH7f6!p?81bQ18xqp
zMcS)ge5v<ebMnj4RidHScIdr-*n6|mas_+L$xFLmR<M`;4*hst_wV8>XS(OL+_n2=
zc(FC(_L=fmKhyl572NUI(URYlqQ7vm^yVM6(KAh*t=umCdab&Jt<|8EWe3~jmCBi~
z(-_(pXUIM<tu}rsWp!-kZn54^cl3Wu{Pg<8rgug$-aF>yf2hBcus+;-2mj$kCC7@*
z@^-C1AUJ1|m8f;EmS*+b8+ZS;8mt$6?I(1baZ@eFQgLNp*<R0(Q))3SO8ajwZWA}T
zw&LMJ;ev#9ZSH<EJf8hgiS0XLEbv1{^4|8`nGSlZrB7e^aEbG(%*=+xr>7~lteN{j
z-T3t3OS97)c8DI9Td?{3lzMHiSFKBTcx;lfwwwICT0oyQQ0-!=#qt#sD`te4CtObw
zcvt@6V4dadgw0y4E3YWLIdGBHlKY+as$cv`yu0@YZ#nhu#mNZGAQNA<2iX^yo*7n5
zyR!NX-}S5746kS3eKE`NdP1+}w+g$aMXMJ6`o+3`>8kGNRRXj4g4eX%&-n2$q5hLV
zVX<hxwn>7cv&6K2!aWa{zR2>i^Vqc5&v&)oHnnG7><2o|IePkqH*HnB>+^wQ`BVEU
z9gDb*X116mEcvqAE^oc@N^i|+>r~A*tSsvlcU=Cqr;O{@W5c&{9a;}>Ezet9yY5i%
zwF%G9e7w@&6mntNa@O}BGVRPeo-13}GJo7t-+o5;sHtW2qP?wUyvG|JF70(?5Wl{C
z!QQ$g9p-1Renm1|KI#1N2V=>HFAwD97R_one9hA9#@t!#GHw^Lnu3l_yuqgWM)ca`
zsT=$wrfVg}Mm*OJaxJl)x9p3%Kf|d!$N9@LrfqedJbUSa<^D#eU$tiy)rQ^^zL&n`
zE^FXgZjPjSrVCm5k+<bP+DJ~fQ*B*(;;CWxr|{R)wRTRKRc5@y?~V6__Fa3H>`Tj(
z^X7N;U%2<N(@r}Jk+rc8-ad=kz0XH~hm!h?*iStstEO#Ot@1{TtGZ`_$QQl|rw{2=
zotjmDG<e}vx20V3+~!>_sNG>U^@ya`Zq?;ezRl3Iae1!1_uQiTdT+BAZ~jfZCUgGD
z#uE>>{+1P&%VT91nWdpWeFj(QpI9!A(!9+Ur`aDL{qW;gl4?x!dS`EY!EToI_io&L
zKe=%4no9BOHx2%$m9jpS{_H6DY0@G)pS%y^1_y<1AO9SG_;;71QeAMrW#;#QJPj?5
zfNOs^?@xB{|0=;>W>vLv`IY+HpA=(LBV1RTwp|Xh`&+*ww8->Nn#hgl0&eHnaGuGJ
zZY|g)=G$xjN5rSFBq}NJy6D1UhuH3A1xNRpZkwfS%DU>1wD+eaA*R`qFE*6M`z+jd
zQ$0yjY~v2irihgf-aWl@_eeyb=f~Z)hU=ZQ?mk~P^^Tn8ET-QT%xZ~Qy`}Ru)Hi;4
zcW&Qvfzt~e_FQV4`^RQs_JZOL(5P46Ln+NW>wg^!KX~|WS9|b2?;VNv4P%5`tJmb$
zG*|36USaWdcZ>8l*~3RQ?>w%3EPdv%?YYC5_f_v~$mcF!Z@X&O)V>!>#1{GOnJIsL
zXY*t+#g}%5X1hXXm`7i~ktf#jn=8C=UGud1w+^C3w)fax9(e4eZJ}8${%+m<mPyr$
z^EdNnh0J9BH8JgXOx2FN&wJLnIJz+&T{h((&#!}5l0t&!-dNT6s7N%(#$n|f=Z{RO
zIr3fpOqXK1U3yi%Go%TgP`_<AJt6PC;FIFq`!gopX>O{ijsN7_R1+V6Z#(Cw<l2+l
zyO%q?Q?I|8^KN?4_fLn{Z=Z1K=qDe0e#fSZdK|&C17C}*^((u+P9Sf7V|0n8Rp_H*
zI$=RslDSp8n=g77F#O@j`s(;s_UxX;Q(QCF8Eh<VmV0VpRuFfw+MPXSrpa2>2U<bz
zs;my_KCPI0&$HY6_f(#W0}Hq4EnTqb%U*+J2j*O9Q&lZDug{fsKi?`*J!Rg{n$xE3
zrSjUMU-I5*dW2|J*~NX?^iG$dWKMl!@|L#aY75TK(Jm>Pd2Vu4^ikjCQ<)E?gikcS
z>a4uv&Eb+0TQ_hN@duxi*Zb1(ySusJf3HIQ;uUxA9Lj$h^mM|SbsdjG%dae{dgr%j
zQNfk9;fL0)yn03c$HA(H^@-PR`1OlwJ``l#G3j6a3Pa8AM-5fM{p%hY%WAEuQhghC
zK{9#IhX|fhBmPjo6dxve3!#~8$EviNcUf*0o9WoTYQ47O!Kx`i?FO>V8&-bZ;?RD`
z@}1bO<qg-aXiEGG$x+aaw0W!I>VNp#;n>hgmkTSt2m8+LySq4FW?lPR{+#+fOt0!}
zzJ(;_t99$WyeQBqdDr2avWQ4T-g~xcj~o7s)jK!*=XoP~s809>JLhlj1bLk|@{N0g
zZv5x@rj__#>P_NyhZrq|T@Fkg6&yF^Z?vow=`5XYvDh+4?ezlfW6}oQ`yTrX^~W7m
z`*cZ1M=I;k%HA7^+iEAjmV99~W%n|(`ozc9H_p#YXkKK`-Sctz!5Jm_ft_3Kn>ft=
z5M9*ty)M=Goy8nqQ_nx=91EA5^MCN+Q2Xlt;Wkg{l&LS)Dg2##y!LvV%ZlQOj+)aa
zyb!yxJ2UT7-}Y<AeLemDvdG@9{NM2;zVOr2+Cw&KGV+i6ZoAGn&ib>^@7}@X*Y~*p
zD1RniAM|bdlGr?^8zJnw`Zh>&E}C27_RQ>!h2Ep-#uw}P_CEd@9RBZ|<2SK4=@mbs
z*Zy1Hpe0o<XTQSx)$#Y+Z1&&&{3q}A@%P)_pLySBv)}sjpLZ{gzwdj0=KVUG{kuQ^
zdH3r0`*ryb+iO4c&owbM^I~p16Lsb9Qn!^;4l@+JvJr_1sW+<H#dj<E3wy<r#cP)E
zY~6NltJo_m|6eQxUzdq9e3{BNM{tkn;rAzY_5{87yus?MC?l`HD$5yPVifd>7Kh1x
z7mkVWEO#oHx@^~#X-jmz?Y^?RNY{%wY@z*ej_a$h+IfXkC@zn_V%N3hfaX`{y8B<R
z2pRuUwtAx8`nCH*K&V1SJ&SK{yCBah2B$oRr!U(Z1S7P(?p);l7_?PTMnukQmfV`=
zi~g!jS_S(%cDLX4=*V+(y?c6v{nFsXQ_u3OR<M1H>(NR$%oxP@tj>5sIAfx`zt;(l
z#2}{`Qv}phQ&d$$6jKXXn727*Zg*R9ux19sHZSYKg<3qKWy@FZoNw^te|_0I%{Pkb
z`iJuU($6ejvfMFZ6~6$tV$hAo^%>_sx^*pi(ADC4G*<fFMSr{gWv&^#85?=sGEGgh
zont31Sir_16<BqoA#vZ0nI79ZTTk54KN%e+u|%n@qtRo*I*Iq2)@)`|F0t18n(VXu
za=}B!J#3pU*JcY&TxjYufoJ*wA7|nEZA%{By0cel-6X-wpTFcysaR^Ypl`m9f84?i
z*Ziij#kQQX3CNo=JD~2V<BFx91g->CTHex{&?Z&<!04{E+Jf|J))~*QB~N)4Am8YE
z{_ZUK)XHz#%fHB{zMY$Ek<EMJLdCrGYZDxznal2-S$Trbf60_*0kVxpXYaN>e{Orc
z<y!mt-Q^-LQuVe~Nvf7|mKnTHn#$Vc#e8(;<%vu0e_-~$;*p?v>aM5Qx;+ZnzaCVr
zHtSkw_UHH1HL=o1-8Ob)`W!fs<B+E6#%bVO$|9y*UT#;b`g>~3|1Vd4UOxSMNBqO#
z?JA0nW%lj$27SrD4<6>4F{%Gye)uKR9$BNgUsL%-F4U_&tnWE<H(mV0&zNP#Eoa_7
zIo;}c@c1J2xs`T*tJgnwkPb9^ck=c9>d&jb-(%dO$Fg&N)1B%3MfG+k{@ynTFEXkT
zOy-&EX>nfa*UJU&`cD_{u>QH>;c*|4#a_ON@7?lO>TkYyP+V=x9osGC9LD@cm8&XU
z!wSXT?NU0tGv4y>s(Rk}(O1~d@t8eLXZzkc^WfjwG`4iPkWPy_@$`t-uWvpKyLoN?
zAvgYzdHv0GYJL0yH5as|Kj>O=U`58d!;5}iY^Z(Y{G#)7g+=@Uv(PC;a`G$uOD_HU
z9q~#ycIIZ6bxUQ~CS2D&(sVpko|WC#O2Yo=Y>OT2cWh!#=N$fZA*=gi{f&pI7L^Cq
z9O?5|e|gPzd#xQ+;k;LU?A^K|d5hGp_%lj*$v^l~#Oj`KVeyJ3i;vz`ygKdN(_+uK
zKYAIB0j%k_buXmua53%qlzL83DM4dr`-*pWceZ~HWjC#R=lE(_%<52+AhRspCr{It
zsIEI8x618Grt0sfmvcn&<EOsa`+r&evqN!@i*@&?b*a77lxVigId6aQ=|raK?w{VP
zUVGFfF{S#8SAo~*ycd<*x>Kdxtr#*Un5<tn;}f6i*W!>!Q;W8f4xN36O?R$-v1I+6
zT~d?h-fRq3PoKMN$vVc_@kI;2if2rnYdhzL@%^iZGYz8mPMbF4ZS3cb|CG|#ZaxvZ
z`ebAMh23>B>DI63JS^Kkx&7<M21bYVi-pAbk2h?Xk=JbRv-xm96YIALxyMhxxS)H<
zaQ@718+XLjB%R+Q^Ik@x>c)LdKW7a`$5op&6&(e4Skyo4yPqpN*I>@aY_F!@r(-I3
zEKbb7Y1q^@N%D|CZ>5p@f&h^x<spkTgnhs4uk#e?^{t=4yZ*AM&)H@F)YxQ04@}=F
z_c<=)$trF08dtx?8o|wi4(t<F9d*~MZ@w;2^TmZt;>V-b9bymJMb;mCtowgbM871*
zk!Le4ewpxSFuqQzzOlbTP@V1b5v^{qQ<o<^YM<wNB#}kP?Pb|(hgA!X)#u5Yi)ePm
zC;Vugy<kS#jkz=1>Q8DJp9*SUbkwAa=dy{<#YSn@#tU)RJNEjlGj#fC{Od=1e*Z)N
zJ@;Q9C{2B{`Pkx|dk&wgElZWNc2#+rh0nP7`p6%xL*kF;J>V|z|Ma_PznFK9KgVa!
z#DBBi?-pvF{p0she?`sn&o$3I&ph{BQt(}7Vw45ztaSFOY3x;gJEES|Z)VMxc>nCS
zU7N{f_vz_T%ge;Js@k4&I<uN*_J;Q_y6blR%3m8*eP}t)?9%fW{mZr1Z(a5FWTLcL
zTbobK>+%PaTBaH2q)aaR{NP)Cqp)3wX5X4U)3dU9B94bkbX(u8PMRfIeDUPM<kZ(X
zc2(M^<<F!SPJgKLg(GU?g~h8cEM8rILHYdr$=g`fpM7rM`N`|B-i%Ez7RNfr=Y`&C
z*Zrn`?C#$)zh~S^Jio5~%X3lQ{sgh_GTQu~*VR9|=dAzRG|v9V^Dl1?i<|8Cy1A9l
ztWke=!-4&m%NYJ27C$ew@AuE`C;rb0j*I?#VcqVH6<mL>U$B<j-t}AHX~{0WD+}hD
zoxHQHev|rqJI#&^yWXIV4^zW69j)q;mxr}%4mxxAX>e|<cg)h33WwXR>{}+~v2K}k
zo>|Rs!QI`*RjVfJRmpSx&B<n+6(3s__h#?zh}Kg1_(^B7Y`+V=n;2SMwEy7LDR;Pk
zny0Ye%ztfnetxU7{M9N0$2if-^P)BPbJrYwFa7sx>Bo8w@ldu@?TR@$`;~v&KfHMT
zto9v~J!fy+zo;&Ax8kE<()}L(xXJ8A<&pZ=gbwXZlCC|Ox7hDm;&btpX_p_~pOB&X
zTj?(I<A19Pl1vlCcI;oJ`rz`Jy(hMN#%t{muGlCVZ(2FU(!S<zg5dW!UzYSHC(iKt
zKTGOouc@CdB^Q5VfBh1JSsUy%gTBYU`uE`0$?Gyx>Uj0P{;6JJe$&W3Rc!u;_eO!b
zlcHxF(VFKZp01Y~zrcOo?B5IOZm#+!{^RkBJ&$~|7!v-p?SEuBVSbjAqs55_xmk0*
zUW-hW`BPV<$bU5C$kd1X3^lKmC_dlw(rM2HL5uL~J%YIwznIk7i+8X6R<F7Fq`-5P
zu3~fB`#t9`ypn0O`mFKjSf0|SbOZlOqM<izCUMp7oAh8$*q7RMa#pr`uKt-+%YMf7
z_p8bO50}6F=vK1lg6yf+3#Pwe_bXqc`-!dOW!%}TDm(Y+^~TK&PucVP#q>4H(@R1<
zE4CzTx|MBKv!Fv}l~TRl=8uW<j=S3Q*I#Ie7kj3ik+;qKdEB$uPug2Hyvli=zUpI$
zja=i?x<%^~BhO5Fv0=~T;;iYyw;c|CQ{K65k#S<?>)z_fJ;ojrPdu7>F#N}9J(tB-
zL|nRdmuz&qEX`efjq6F|bknK!4le37&*N3+Rk*NyG(TePctZVO32%LOmfrsJ86s|n
z{4Fonzue+>S)5xtuh+eCangCSq`T+bcRjN8JQweB>}Ru!%n$oNhpnf6K9bBQbXW7)
z{nCow`sW9a#V_CN`)6y*9cfmNuj{neCLi8u{`<oA+h4Z75q?*c>oX~Ma$)tm+<j$s
zoNwPxXg7a(=SVcm{bjy&bC$o_*}w9NK;98|2@Q`|X|tZy3l+X}IFiaNxciro<!}Fv
zzv^bcPyTe6f8)(>;px0CZ(e!#?3=#-dH;8p+eh~0uVKr&J7v@Q%f;spvh1C<Pp1Ep
z{_$P4?f0tt-#d#>Sz7+Ww&};`Nt1q0uJtbwvoB}=V<BIxZCfn1dh(|A7i&Lgcgh-y
z8Rmw*zJI-`dwO-Jp~uzwB9YbCEx&JX-FJNY`(<4v+wORB^VryKeIWiiHgsLfmGjRp
zW_Ts7o>Dtm{YLW5Q?tBVOy9pgb%-H<;`U`iiP|4jk3@?cd}?<57nk5}gEtW$S5}_3
zPYK<#>bliqhPx{#zs%)&v%jgxpwo7Xo+htrs*!Ez6b6-t>61#|C$4k8^Oe8;Y2Eqr
zQU4mt;;Lg$X7TgbN{1}vPVz`veAQs7*M{KmSO2seuYVQX_w3=G7~{p;C)h+(O!)93
z&T9FSX(^$~*7qX6Z@tslF8|Wfy*xjEYn*v&yl=)q_Y)IezJIZI!fECCk40Gz?wAmE
z;Ld?UhPfHqc{M>FMO4gQ^jf+mDR%9bI#=IyRLalh(;wb&`)6&d8;TQWd5X5)j!J(d
z$|{lBtMee~TXK@vhX=`%MV<H`Z~MHvVsjwpt{<}lxl6B3{h;x1!YOUeRU%E6;x9K!
z9o@I&{nV|tE2BT2<9v8lYelik)Ky1!MNR#(B9ym!L2rVC=h?m4Ur+zpD`q$C?&<G)
zG(Y{Hvb8?TjP;XZ&8FGy0&ms0C1<x4w(M2Bv-@)Ke$~{BMEMDJM;A1GsH;EJ{%2Ew
z<h;#4RvhR%Dp|NdX_+a@(gW+BZH;j_t-Za$dc8VxRh%uGP32b656`xS9+)0p)3|8Q
zK5mi8+g34gYMF_=`n{kw_qqPH%nJ?n8|60Eh|f9uw(I<n==$=sd<J_l!#e?*9S?8m
z>D|}xTK{m(f98a4#>d+W8p6I?e~8siwO^qAd&*ihmN&ik{5GXrY<e*<qa@(0?ESC0
zp2h#ytG{)=75rkhN%uE-Rp0;d{!(2t1Fx88ioLb>n)STiIFr#n?qubBGcO){wR0b$
zS8iVExJUQw%4?>X<$ogU*IE0{>z0+_F7mu_aBBC-N)DY9tCQT%zUlH^zv%Tcd!^FL
z^_`}ReR`WU1!LxP)pe}Ou<6m}4)|#I*(=-DcE;~XY|7;iGFaJeG~c<#5bbxjQ{DLQ
zOHYSKUv_7x@a~&-b6>)m*PipA>HV;}BECiKsQTaepC7)R|MustrQiN=Wqzqwa(iRY
z=W+9VWt#nRJuB0Ljp;wnE;9`JW*ifuH>rhR^_RQVnh&ma0`>m_4RVidf0VD~pm0!p
z_uKZJnliakT*rPqx}2U=@o#DAuU?(Phd=Z7wNCsi(z*I+)c!fU*iXAPPjG2wn13sI
zYT$(9FPD5zZa;BKtba|64}Zd(o`5bV*LqFa>T@bCz5h7ZufBBJVx3Ek`PYX#?20s|
z3NF(s(VV}qMeOB+jf-W|j+xf@r?l=>|0JnzVWc;8@q^f#=PoWV(AygGUFFwqmzd`n
zQPmd~wXez0{a%o9Qtn((&)aJe&ny0K*Uk$`Jlgw6^!tq1LepKH|JPdWoUCtAxMa7$
z&gs+Q>n~5WYT3i@d~Lb7$c=o>4XfwvsZDJByN#)O>Ge(P#XYkRZ4X&A|5l}-eqHqu
z$@Dn&`h$m4OfT&F=j0z>*RpTtoVU79i`wK*EqL(w=sfPducOa&t^Q!C9d|7?DNcS%
zoaXfP6GV(p#9Pljez`e5OgdS8W!k-C`!9wpZvKAfeXLe!z3$5cnt$(Sdf7Wo3V-_V
z+|fHv#6E6&UZVZ>>XWT&nqySY^|en6FIcB7wy#K2oiYF2TK@(4Gp;`Fwyap@zI8wE
z_3P39J@-gne^Xgqr*+?aRm2*D)@vrV^MBf{6uIA-U9m8}NK@B7GsJ)8Ta8~|4qCoD
zeQJKp(zriQyG$3afBWZ0{Veb4IsNnhmtE9<SO0v=s{Z)e_kYa4|1l|hviF_4*`1An
zYj^+u9<5dWucGt+zEk>2+t*vXdBXm0Q~9aI&!5Cqu71=nzi)TeIotI$KfmnMpKqHV
z?f)R$d`(Qzukh~wzxU63`|IIFbt|v?Zvw5X)kXh*UT^nyQM%G<^*K-8+kHB$S>GM!
zJAY5k@pt@BJB{ND<v!kj{_ESCJ?{Iz%{RYeyes|o+~D}?Zwt5I-dFYG8GqHij`h}s
z_ZRB_jH_0+%>3?aZobbl$>z3o`sF#-=Nnp=z1{Qt^zL?^>QCz`r^o(!;C=MEUD5w<
zzn88k+n4=tZhqB#sec=v_sQpYm`b?o`QHh-S^x3Il3h!`|EoA<{d(%;`(-vVH#e_6
z_WxD7_?+tFCm&Y73tjiO;Q9I4@jL(XTh9yim;EZLeXpkZxB9|d*Zs98wm<6G<+*yx
z{BJrpA6abtTpoWea%WMY`}qgvQoGO1Ju6oKak=-@d2hD%Iri7CoLhQm^3nR*S7&eU
z?)&*;-z5Kc^<V1UrO(wri2tp1KendgZggt>%@3biW8L?CDqZyW+~T-7#pi!)ee*E;
zUVhDsshZc{&HnmpX}(X?*C+4dYyLjX)?fc)NA<1!_hM|bj{Q8HceC{WqU}bd=U&Q(
zo;u6jf2IEC8@Btqh5gH9KcCjT<gx$$=NFZN?>Arlu4DgjU2(ABcWv)_`5!;qW%b2s
zw|-xedwyT#i3_>A^Y;I4yFQ=KZ<luEviI+PajM%D-Pg6{|EE>-?Qi|A@9XAHufD%O
zd|%CZ+3e$IYramt?RT>{^=8NRx#_dtr+C@Sm7imr==uJM=;|8tE$c1reh#|W9xhi9
zZ}cf_+5L^NXMOiC`SIEIdWL<(zt+X|S^pn<eQy#L`~UZ6YV2%3xy!--s#Bl7`q~_K
z^MBl%r`)&v>rekbw5ELe(r>mOu7=OI-Bo#O@psnvyEVTT*~fgol`XA*v-a!c{{0t=
z-iZJ1`}cWMdzrrV!-uc$g}%$QO*%8TeXr=}y@gK{{%+fUcG7VjtGkv@JI{-~wXVCr
zN!spq{hnPfx47?4kEsYh{#i6#zxKx}+m){j-|O3dyA-@f|AetEzion-v$WfezWS0w
z&HMYR<aQQk|GsPZylc1Lo__~k_nYtC@_L?pZvEzMpRVowoL^sa^1NHk#h>xvF`JX-
z)}7RP>2|c%_4SNJ_Vaf8__F&YtlOOScF&eCUw+@;Z(8PFzb*B`-h1<N?`^*N{l#ke
zyWekGOSiqLzWw>syy@p>|N5t0|L=J0d%gJDZ_y9$&*-0LS$~AN{`XtW?aTdUR>r?5
ze|zg^c9@8KMPAdUFE0IuEjH|Z{pek^`2WXGnYFF?YF8e&`C9vTmH+o2arW<Wp1(Q%
ze$w&Mo`|x)_s_cS?wfV9w*JTM<!k2IWFLJOeLu7Q?b)UCYIEoNS0ul=6D_~*<MrF}
zx2lhMm!JFd<A7~%^Ztq_6XosxJt*#-e#i9tuIzVm@1!=rKIlE=dVTQ;&g%Z#JKvm5
z{JLC!@9Te&vi@Gp)AV2TF3mb-_iE?wS7-03v%M|e8vkWx$o5(5|E^gub<X_T{Gs)K
z*M4|o{p!T|Bey2zcs<*;`pE(jmI&2WhPJ;!mQr~unR+Iea3t(Bk?`CV(%GgMx=?V^
zp*$1ipa}QPF<jLbbQ)g@&yv%8!@SvvOT5w0gG*fbs&?z&47Md38r3YOFR*msV!zPi
z^)SdpdTD{=tagt?pTvq4BF9YH8u^!Q3gHT_H>wSixNI50mF%Rw)L`ir53b;#(@PAN
ziq1Kl!8iGkph@<U4+18$mwX5?iC*%-z~s2+!-pBimKK=KGSswTI{PrFLS@zg`>ti0
zt^AIgBe<?FkeqVJ&}8+J0^M0xgLd$pjna(iPunb#=TN*yB+sR|NhHsyc#25h;z;$@
z*%xILTkG8yN=`ep_@azv>+uDV`mM(oSw?YfUtk%?)$d$9Nkp#ynS`bd<5@OM8^N<1
zgDQk(O<wvT#Uy%Z!Ru|Sv)*h!yf**sF7A7h*MH8w{YCaVNBw%9?<y}uBVSAJi~E<R
z(fhXTgZ1i)_||u&JWt=Z1}=XueE)Z-q&;`&vHP5dw=2C^Q|~KmZ}0f}Z-u<pu@}C~
zQQr@iAMcX1mkw23_vv9}ciKLC-|Ii!K3a!Vq|ex=-TZ#__3qV^g@0Dr&22rDJvsU3
zF6+I%+aqEO*4-<ede`D#;0=pU=UXn^x)i{Ex2ehSjpvt2*?mH5qc!5YziHS8iQVUa
zKl6R)!Ceh&_BF{~b*K}szk0Xt{m+aq*Sa3Q;?wvRmw!N0a+a*j{0Ctl&K#9&n=Hp1
z<6-zHl1sa6#$3%UOMG9S4HCPrvwrTmS~l()HvUgLC+w@6@?G%N^TP#M7MddIrWMbk
zu3z#_c=t!zT*^QDbw<qA=BDg}iMNA;zSQ+N-&!y7IB+iegy+pokK9i=dsNoX2#exn
z&*iiT?tidwp=E=s{L)MED#xB1f9yHyH)pX<Ia~1lL*_{ziw|1KPWO`McaCbb&$}NT
zaOrd7oH!1JuPna~9p3k3YQS9in=hGSJnLB|I9+@>SFrl2V09$#{`-MP{9Yv*&6E7K
za7r#i;>ywo8WOodzx)OCru;NL_ETi(^?LnVew?T4Pe+Nq^%l%M9eQEfo<(PWy8PA_
zdb{a{5Zl?8Q%jbfcv$u`r9Y}C`9<KP+dCgN2s~V!E0|Y!VfKkXwTEQQDrIgcg<eZL
zu<WB*mz=q8!G-INtId>RInA{?R~@~0Fn~Qg&qY1TWW_G0&OZ{jUqo+Qct^g}z-!Sb
zh4qQw>qYMv{)@V&zprT$$8P>lF`RYIch-yk=e;jtzs%xa*p9CBB&D>e_AB>f3Y|ar
zpw}a0%7)`y{d}hs{%y<Jp|!97o=Dua|IvPvH|nWA@?Ty2@R5(i{3$uARXemY1aDa=
z1_Yk`sL6LLHFI-W<g#alQF=4l(*Mb~XPzu!&-In_Qom6@Ay>=kedM;MYlC&P_wKCN
zzIUC&mxoW5n&#)8j#j_zv$@^+NK|rBK$iMx>ur&J2krQZTsJiZXzWg$7T=?9EqvgZ
z*e|W~(~3SF(w}kc{u9H_6xX*~L<BO<zf=AAZr#f5cU&&J>u|ZgF*{@<=<Rj0YyK(E
zs%-NW7ri)MJl=D6rDA=<4rRSF?ni54M9gPv@jhR0Ou&D!l*yc=yEhAh9&O1G-5YWE
za?*~D=7(Ho`PC{v2-++u3pg=jy8EgifsdvFYt~*n{PK^<u89Vdt9j3A_iuWB<izF^
zk?OMz-8bx6kPzH|D=hrg!9BH^j7^*Gv}dkgb0u(tdCuF!4_tE-UF!|so~)nSV=yD4
zPHmQx+^Wx?0&=}OSM*K%`#L=(?#hMYRyn<oM^^m`-*s#E(VV6vzYA<Ft4!YUifcZ7
z%PCmI(&E!`qjm4v1AR_?@>Ncg@6~th;4VtG*dDanY)<s8kJ%A_bk*-|i$C7J=tBAI
zx3{-Wy|v+?()~w*8W|_^GvDoa^6gO1uKFvX6EB>ymfrItFLa`DSA6{1i+9ete@x<w
z{5pAq7RO|#Rc)6hN~KK~%;fLt6JEUR@H)A3YZloXt43YB|C~q9ehKT3>6sgC&u_bJ
z{F38SQryYetY_{DE<G%9S@zmXncYX8G`_Nndbi=bn*7%NjPsxC>c2mJM|(#0xld2#
zX)^>&zFg1!D3Gngy>rLLq*YTqRO>=+v*fi;auV+~cGU9aQ(MVc#g*kJ+b}yyP+w3c
zBxknGmJ_FcOK+Usbn@UK-Ng4veIX@EQClkn-B)w0-Ed*U_Ttlvp8nC>`!!Z}pX%i^
zm!q9`1@!Nn+SQ`RYW>$|Ro0JgCDn=<oBsT*+%B}KCZs^VKL6(4!-0HOlPhL4*K<Gc
zFqs>3|NH}!S8c`a3pO49dM;v~{t6SVsLx&tqtY&vzj#zX!K-+)%oi=@ZB~D>c-@pk
z40fG(WPL)&)Vq@Vq_n?z-)8>9rY3iIJ`~S;buH@Tm7_0N1y8!~xOd~#=IhexkJGs|
zzuE*{F%N$feL}^0hW_jNv$7{29o*d6=#!r_VbRLljkakauX)9@x7=($?v`;`T=K|$
z!`h9KHfP`I#(X#X%(L_3%6%#N?`NE>GwhA?bCclt&8wbXuJ-8B8J4ohkJdVOZ*Vd%
ziJTHP&th)<!_&X)B67B+WJ-hxZGHSAIGHivqrs9;-mT@k7hdvwt`<CH=E8cG$qRp8
zW!zf6`e9a$aKYi7cMEPsd3N3x;@;(4nDI&P*QZj4;Gf6uZh0G}@o(ajWBTR`5<c_`
zB@}IK*zJ_fulkd3zTBl-&4=C@-eFuX`QfPB>bCXf0VyvO4`0s{$$dU8VNuTRhlVXj
zBwV9ci{-QTx8?8tTD4lN-pjO_`KZ?1%k?jLfB62>$upJ{ye8$;=5Fd$Reh2}t*Uyq
zNL^WkDNo6byeSWycP=cen-|e-&wTM`HFM((wsQ|SYb35V3T<B5vU$NK!-m8Kh3mV{
zo8=yV;mxZr_vhQA>Hx*V_wz*ZpHEYejsGTb^wGl7J=!X3{y3+nO2}6#EN=;%c0|8}
zecS(f|4)e`Paf}1ci{G`O8DQ%Jb~Z&{+(W{7566Foyt@C(Rt8W=2~63&zz%+eYa0Y
zGBwe=t5xFh_tx#*T=(?@UF751f^L4&JeRQ7MxdlhV^(R^lXeSnjqgX?c-UT;#eAK*
z>BR@O3$vG9FW_9*BU&hYD`snWrU9>dzAA6rc3IcI*7dV)Dg4;UeIxTU>;4-|<!cN0
zf3tV!n|X4-?w!V;tRUaql6;b(FKkv+tcCoO^w<B6aGic~HD7mfL#Wy=owlO?lbJY<
zgv{hu&76>F_RsR#!*y#X9j;Rn(}-DXBl)QLpxGJo3PZLJhpPWXES1r-JYo9AGi=i4
zxnH&Bl}1_r&^~dvUa-XO#-&vzmI{0OoH};zUikCRpZ@;U;oEn{u5h@tYJNw)<RU*V
zwX<)z?4<4$nb|(d*s(zI%e1ThN1|KyUJHM15HWfBY(`eoEe}=p?>*FF&=w@?@OG1}
zS=%ADmOS$-`*zJ-opMo-Q|>|Sc~Jv7@1(mkg|9#4-uC6i*@-5nIWn5+MOUqAxEB3;
zXREl8AJ?%%>MxkyKB(Bb;OLbHvVNCV&-9IR-hAR?d`8;ieoOK0umf)1B1aD0b*{Zr
zspXVa?I2R_(C;hWd1>Ksu8Jg6#hVA(J(%C!`_>SC%)Pey^ek`Ji4t)a)B>dBPHaE^
zVMgz6Lz#UI(dG4LIaZ$OxwgnpQnCKzA+>L7o`0X&ek%3sx`TD@YeLK(>sh|Z`?Mtg
zbiQEfyd%YBvL^q}ESfm+Wp?o%Yx~Y+(=QhCRV9_^@VdR0DJl0qwMe-yYUu|1?H3Nt
z{}SPn+E^3x{qh0{$)zSTNk>>0i7Ux{WRPuZE_5jslMK~Ssxu8{mHWnZD5>*t=-D{I
z`jg2L_qN>BoMV39<?z~lv)0;pTs;)!Z`J;5N6-6QeKBKI@wOjNZlBiJ&0u?-Jz>V?
zhEMK|!LCYgJq}O*XK^)rMhoY*bM^AKUQOJgu)N!5&c!#L_k$)VDE(58^UGem-00cE
zp5~JY>L*fVOk5|2ybIlWuv@%x$NL9|qNYpr>3mvI|Ipx1`~;thij^yN^ew$HFN%xn
zp8A`-PYv_#Ce|<i;IAPsTjX^^|I*Xg6WI;F4;EF=nODKIcj5={0N-v8$8{bP7<Ta3
zY<ny9UGr>eWv}lKT}74fJ(I*|eNl8-U1u?^i0S^W+^|9uYtiscZV5}zUapvV<&muK
zs(<bW%EO;J&Dc|a^pu6B$hDn^N?J?TIZM^2b7q`YnN=mc`Cx8uOUaY;t19PvSzAQ~
zQj;`lPoD_*B@!f>{!eb7Dd)<quj+yte_Yj?xqRiU=0y^^AA<v<!d&JrbPfJfutl@e
z-)s52x4%7H%2qbd-*dv^$Vu)^4NsOE?mgdW`ZWJ{pZdDWI@V`_H|o<vo_=_IZqnD@
zbJ=g4cWQH;+`r+Zw&l-)UrOog)cb$l*%{i`q(4_z^=ja1OXKs8Wjqay^%H)WJe_^%
zm-H?z32psCxA-NjS98RtO^oJpTmHyWyk`3o)tE_lcW+;DWaoVzQ5&wNJ1?78%6UG$
zy!h&gh#SGI-%?q>J)LquvhUD)ruz9u-R>M%ADH~RrIP>LQeIEJUO#u+={HlCTK$#I
zSZ3v4y-alZ;;a<=eakxHnZj4T6WMiYTC`JdzIpxY%SVg&vj6$4<hv~Hx5L)SlH=Jm
zix-RwCjWHd*uT(C<kyrn*G{|t&)!jFH&Z4|%wmp@w!ew{rf$`L8(!xAl-_EpBjLNU
zJ}N+6dt=bj51$Wx5ep2p?$6mL8vVOWa9Q}v_d)!&5&TEXT3zn{ysERFeIu({1ox~i
z!POgsN)L4SKYJ5?OE7pw+}8cvZhKC3Rao|0eB~AVuHSWS{kPA#&9;kFUAgY{9QnIs
z@yfhw*1z`Xt9^dIf8BB$m%Ge+^{?53mT7GdIaM#y=Dq7R*X<LUe6M*z=GdRj^iYu#
z;&fXa{_f$nc|Q$h-zIK)-Bs&Yy1#UL%0iC({7(%nbCW!0Z%|skOz6Sna>g{n{l1-F
z((S`e9^i1Xl-<u;zU9T?lr!dcIp3T=d2@RIalh{HKzB>ge4ilh_d?NoOsAi{?V2xi
z#_?Y3np?X|>vtNg`j*#!`MF()P_@*K=YpTpYYrTd);=}IXW696ndK`)bXvN19O^UA
z2~{;^lV>|Hd%tP9SL7PebTRvvv!lJ=a=+$ZpSu2eFW=pd!c5=FYxB1r4_kkUP54W>
z*R9}|{3-j~!r9}FPpi~wn|ArBga2N~`Jzu+Hu&B+z*#EBsBc;SVy8^*KN+qgFF3!*
zuKIgw<Br8&#eP*pzbQPsRr5W^sX~v+aG6zVr#_mc#{bj#^swTf@ac+Nj{VBYOZ(e8
ze#qAJXKAh6yda=#g=6|Fwhb4QjjXRs5DuMv=>6l>PtRTX`b2Y<Mnv?w*XPZ-Yn+)s
z$SS;X%-r=!`cg^pe3QGE)P3u>%bnT2*8cw71KVpD_LYBmSY0jm_zfH5`nP;ludZtF
zT6lkq{^+H7F2n4T?(Q?yTjFQ`JF&_nqcoy-<^81n3aJ|x1-}oL|H$~QI;yjc-REmz
zbKz|6{@pKE-oJR-T37yo+<fb=)m82ux@<F7otxK|y@oO7pl$Cn-k<6vSI^A+QCcr@
zw&2qDl~x;$=?nAcFWaQ?o$Y_o)ufW0BC!b;Q>=PpM2cRzOxON-TE|PvT~BMLj^p&z
z7hO$5YCgM7yfiOqHA|-1qK`%`H#?_U&A#m<wQsX3*M$!OoL-SRJa;xv`^Eg9D^_Iw
zpM%GZzgO{=ujLZCw|9BFNOw?A<&rNZ+&8VS)T=MG?*4d@x$9nbg|GSB3-1i}h;Z9(
zFiaJ>&b>l-BX^6N!|w&x?sGUE4!_^lRqpdhVQrX+!3?kX;0~Jv<<CEsz4JcW`raU7
zlUdN7s|v2q7n=Q8C9yPq&pCzEjW6E^H2qAMdb4@`@rO6BpE+*AV)XQix`v7pgCgsn
zDOcnJ11y;9vvq$|ylVGbnt6Qwhq>Diiha{Oxnz>H?DdYs8I^MTW8z<2SKkn{O87)>
zT=7HiG>J{uPM^K<vu0Z98ii_>pG<Yv1JC7_{E^=q{n1&ox^3_OTDFxA+xNf!x4rhH
z{&vpCvlLS=E@?Ege`FaMps<<u(O=&~Z~e_KE#-04QF(Z#w?n4Bnep39zFnaj?%@y9
zITqVS{9oSvV{WT_`11Un6W&igqJH`IE8CZ>|NgWeuAHgUaN}8E?84_Y5qBe(Uotm2
z`m}nFeaPaBO^d#+%Xu%Te}P#jCqP7Zhb)_jfm2q|qb$qb(kW-}evCEP_pb1X{ojY;
z=?o=_{GG-oXCIyE3jfo^b*}zqk9d02F|J+f<8KuHnPWP4xu(!_0iVKYY(M8I%oCrl
zb54E6BOhOG`}=3Z9-2%4+|yjaCtSGoquqR6@$(bsYn*$#<>N++k4Fm@Y$|X&v+Kt{
zmY;{s_DR%Lv?X_bxE@*HrlfN2S;@EGQ#&?0iT<&>?f6dd;WeX%=;aSAze?ZvmtX(m
z;V=K`Ut@D$Yh2p;(?4wSnw&%an=gEi4B+1ONq>2cmGttXVI8l3wI1+ad*OQ+m-C$0
zC+^qo@4tS1zvb~G7th}P(P1w4bLRa2cYLjLxAr`<<9YtnqNiCd`|-^$OZu%#bskH9
zyd!C~>H5m^g4SA5e^&mHTq*d|I7m68ghRM8W_P_!r=R_N4}rOv8Z)9b{L(KzRBC(t
zLwx@4H-U5X^AB#{^laX=$lF_2{kyTwCo6W>X6@wLeQ#eyT$;MBcg?AiWtVL4c4sSp
z-gRl_yDP6e7r&DJ7@wPRYuCK3uP?<;4l7?9J^S5@mAx{X^9udTp9{t=mz^GUb8FS5
zM;nu^-OBsqE}PV^s|*QGKD{H6-F;i$*IVyGW5p8lu195m=&nERGqdl%cx~OSqpI=z
zk-=$uAGf~U&OGawR2V<+a%QOne#<Fq7*ixqxX-iU-v7Q-qv5>VEz81FvrH%K>DxMi
zbN)NK($Mp-&MaAY`ue(9<9!PiFYnxw9qPWUF0?$|YO1GhZ1nw^QT0~~yuQC$y4>uD
zwDfV4Ikz^hTAt{;OZ)QHD&36|Ssx|pU)3LLW$K%M?efIN7yVvyZ{58*GwM=kz0dhw
zrnW2lRKHF*vvBf3|HP`#scm}iI-Os=QZmzI3f;0S+jB{BZpzzF>pUDcc=%ucwQinA
zT4h%3`AH`ptvfMk-O{_O55E4iuB1M^cFDTFN0~pCb^O}FV3)E*<K$!G*q50ruV!Cf
zIq&~$?@u%OQe$5{Z+WMhJ>6gG))fhPQ<I{I@b8<RX6xo;xj#RZ`tr)ItKMq7wt9Cr
zT5VpY%==P`>(JbDOD;`rle@ODiZjfe<)510>xjMklt1@2s`=+Uuv_tli!1Zfm7SZH
zS=Ap|CHl?(_2UaIZsvWx$?gY#{P_?fVaap*#Etd@J098d8+K-2zPoyQ>V@N>uOG0_
zy|&@;^G(}6SNu24dG@hA`F}Cb1MdsDS^Rbmr=RC9c;@%x=ic@m8#n(+FEuWUlK5S9
z@w*KV#|!ha&SvxN{zq?DFLwQ3)nt*rysNHc%ZvM3N9%8fwOdSoF7Q0)ZcUM1(TWYL
zpPo)_jdlMZ*7RMlX4-?@pH6Q&_fM&w;~TTX#hU`lZ?D|oZBnwgD`C3yL-BprYq_k~
zzDV8hyh|`H@Xz9;*4o%VyViI3e(nFN{bs7slVvS-E_RAfDjz5Ce3dvjSu6hg%Qt6E
z%{wKuZT+X2Uafa+S?Vq8ZJ#_=<kFVx+R*qQr|C3Dp3)EFrtd<3N?v$7i>mQDzmRX6
z;>@AeepaH4H`<h^xc2A<-oql_3=W=eOVs(VV3BJPq^Gu{)*`6R(IBF?z~JCQ7Ih(;
zX%957N?dnk$yYsfF6&Hn0?V`PZylV<BG)V*72Ql>cUzEs*JF#k;imf1C5NQCCwy`g
z@qTl``9j?pMTu>*A4s}XJ{BnX+wn&5(|kS!oplqlMa&jIOWoOYH>5bxmvuMuf<yCG
zIsVVT`e((CroWrpYL4km_l}5sBdKv)tHJfnh8q$8eXg+{{{FL%*HFgamVJuSw;J7R
zA;ou}e)4H6Y1LhKSZdD>zS!8W9QFEY74EjbYF7SBeeh@fuXL?avsH>W7Hl?aQfCOc
zF^$dVVOi65^90?RYYi_8O&96Rz0)zNAYR$)(7I!i0nZLDlRT_-V};t6&D%56FGqMa
zpNo2Id*FXe)Bmo;EPWZrWMr@Y@lo9zK6B$;s~6U_XD<YCHh(i0HrRgPuMX!7@u;>l
z^>_H}dwv)hoXSab<SJK7(35CoJNdk|VP~R_WQx&_+@*$hOCI#**{Am(c#&&$W`{tv
zq=9*l&*CGg^1qD>JU3YE+$menHvco@ZI&AX2ksc;<t&?+d!^B^<j@YW+P>lhtLhsj
zhn7t~zxn3IGt4h-jx{cRSe(GppZ8Yeox91r@0;r<%XrJ=m2rMqE>X>AApSa4o8z})
z;%x!u`Fo#ymfF+Kk!N3iha=DY&<e4;a%^YL=CSeY5Bn@5_dd~ogEwcjf5LRZZ(9$n
zQ}LN>QD$1m>1l3tiedM(4H}958{>t{rfo>SnLFjxVbwE-Kfm!SvX079dlPp^jG>J0
z_R)Du-WRT!RKH<M*~WP1zCUk7KJDzbb+<b|VZ)Sf41G5G3iH-)GC%QF{lR9LFHe7q
zyi?=)9$wZ^bI;N4|3MRWy+il?Z-fV2dhw0rgUnGWnK<^MO2(jA&Imy<_1ms7QnIRi
zl6US+4w!$gpylLq_a|nz1D$UyKeG9<;mi%|Iig=>D4$VHzag-#{+i+B4O$0IF<AF(
z@HF}r^W0+2hR9F7eOYCzlKGat$@u9q<3wIjiQu-bnt3lH9B<q-TK3E4xKtL`@Akw~
z=ZcreG9K`k>bq3D_rSgNdPmO51a|DT+az##QR|Igb~pI>HyTKKefS~ObN<kjs3UnL
zYgFG99Lg(PqyDDmP+svIuN$@XEq5PU%-x{Rx%>3S#tqT01a=?aIB|nH=kD_xJ2!aP
zCh=RGQ_9gx<hMMxa7v}LVQRm{IpsB5`OQ|Z6gYir#-b~hrDpk;GnVr|P-!yekbB+3
zU^6jhH|IL_9i0zaS+)!BX?!r3MPBWP#ldurcZxsw4&E31V|<XA#Z>%IQBz>kV#fMe
zIa&uT*9kM~DeRb%FzW$ZL$O)xlSB7vwl)>4{Z!nrT=0&^6mE{ZrOdCxC;nAyDi^K^
z*~#``y{P;F@y<_d2k#60(Qm3(e-U^wePxyHfrDB>t2nQ%zOn20itUVZ*4*R$d$i`O
zW`p-tj?G@Bq5;oxtzw*Ju<dSM8@}=Hymk9HKGb_Z`t09ycuUZP-<}Mj-&77*&W^iQ
za^i6|%YBs}eQkE%Gv7Y=ocva$VSe^phW*#3B}$imXDHcuvA;h-^MG2|OFO{_1x>x6
z5@*f>PKJeF?quh9{@DGS?f4$wRdviuRF+J)nv>J9?y!fpTS3o1r2{Kjp1+FN_V(9V
zf%i*)EoPWse_`XF`Ro~+Y=6bIpR`l>!RmN(^Yui7)F)eK9W-Lem;1TSEdR0$zt=5K
zmg$uSypm1Qob&iMO!->1j<G`W;9G{dZ={;ch4-{8Oj|zr)a8?9RRVUtA6)%6K1r#z
zx!(LYx8vx^I{z>Jod3EPoUc}rKD@0W-HU6-Jl+C{o|6eIt{dvleP>>9gtJfil!*MY
zw*~UkJ`3*Kyj0EXc)8+%oeZMeE`Db?@VTa+Y0r)CEC*IITHOfW*RQgA&elcemsZaH
z!*ZH2>Wjz4=?<MjIVu*@9=J3GbIQ3E$Q|@+(rn->^P4EX>y7-xTJMSSZ>BS)v)_&r
zVfcO4wesYg*qRwO`IloF`0C4?K2ButSJ^Qo!TjJ>mh;+nQV(K}7BjxnIrhiSwIJN^
z+P`QPdyQk)KC(B>57IbW&vZcGV2Aut6SsoCdc}ag@8wK;PVDD;p#3lS!ty$`1CxY!
zPXGL{<C&a`=hOwYwg+c>Z^-3a9A(k+;I3-m@@CtBrngT|Fx-015E4=SAm?OOz4#3`
zpRz!Px8bY-N%<-j>Id05?A$&?HkD6Txa0fpJL8m_=`8!zR!q?=J9S3EV#WiHrjM7V
zGN=p93GA}#*LFP_8MBM;(&nWZb1$c8dlxhKGrvf%*SO14P$c=RJnd$)-#lw|?wP;m
z_?cZfa!EQhDbt_LBK`8zv@17{tTVm%yt{thip?|s-m($Q`o?Sge9rbvc~BM+KB&+6
zPW=U^(i(*b*8+`$f-Kn_*Mxh7Wt<Ca4xVILE;PsUgGW;_$2nz-`45zuV*mSB=QG_4
zD>dOczcVV=dy{T@aS}W0B!Tp;vh6BI7*o9c=2RT!_VlPojhvP%7#XBu*{R54?ZBby
zUB6(-nx#3ln);cMT)L^++1#qS7o51KY<J*{<`jv#<#b<c-%QKruTFV?`c!xSyUqXq
zf9mrVT|6_V_*qVI+Os*;wMRerv=z2xwxt`&B<+~}@F>svgbLHc`G$LDKFsC$ZoFsq
zLw-rS6CVQG{0;wD9)2#d@5Beuw*Bcp#14O#s5|nZKDh0F0!MI$Ue)po9QC<enHNQQ
z@)Ihg4_8ar9r(c6wttS(v~N>2Qv&}RJQeHVwx9JWx8?uQ3O~b#le_W{-kctnoc7VK
zyP>G<wB)=XAFHr%pI>(Zd}dt>^tts(=F{2_Lepz|E#DWuQlInx{n3=YM?<~^2fsgZ
z)4p1(I=wC2a8G^nL+0R}TY2hFeh6)QZ}i95d4`)o|HF{BVoAOEZlCraD|l~m>A-t~
zy5n1J8`XWdmpMP8;JMLTnJaI%FTdM#>!16%pGUXskMfxizlqZ_Sn{0S!mSSfP8|8i
zk$6&k#`3m@E9ayuAC^038Q@eJ8^0)$)h4`2tY`0}hWcqbTPJ;AxvhSZ`5*1Rhl?&1
z3&sa|{S2S>ZsV(KZ|>SOeO-EG9$%Zu{*35lmuKCwn5)!v_HupFT$bAsaVHAo4=ELX
zJ5w(3ujk==iGQ67GsO<-r|(VB7BW9`FG*kMyTKpL!~Xr^maa+PWV8<nKNq-nq(c1h
z{TY+nKbRepPx-Uca=YWiA31({PWA4Rj{JvjpW-U+ez2+X{^`SJI*b17PqtY9$1Q!L
z#o|BK9M#$;;S+c4I@I=|n`_nGSWknkGlKM8GFtcT+-9SlGjI3ttkmC`t&e^#@ivz5
z`nT+7{<D{s#}D6^JUU$_(k!~}>LIqtec$!=TvH7Ge*VFImRUs$mkPVraRpEJf2p%i
ztp54idp=Pu_g<gee{-Mox-BXW&F{5dRh<so(pua%`AWHt^+C4NBBkQXZa!#OBzI7%
zXkq5ECG%3U7B6{oKC(<vH1LY{w7VX;fmd!%Td!!kVugLQp7X03)u-O4?M^gLx;bf6
zv~{8STz7NX!sjtZLZ&WS7G17bx_8mD!l<OaCDWqT*So&jx^q%gu5SX5or!<Ya>c3q
z)#4tjxK}!Dn0k8Kn@xLpTqmqw;hmGOXc`%K{q{ZQR}!vw^Q>F0$hiI$xUA-|bJ4s5
zTR1nw1fIWLcF`^_=)<($Z?CkqQfF;=e@HZN^$MG1*TP;Ee~}Dw_Nf(CySX;0tL8Mr
z^0UI1MZN|XZrtlsKP7F&``h6h{%utU;`(>*w$|dEtI=E?S{r}*rrxOs6BgyUX6c=Y
zSo8dj>NCgCwqLs<IKF#x$(?@b^7^*l_R@zo6|+`GPxpMabWZIergJfh?%#XoymnE2
z6L3XwiP+(6ZJypWO~$Kxr-eF31${FvelHrjAwJN0ViZ%pQK{XXIo0(XkKK=Z-JG_&
zSYF)ws^#;^)8wC)9qQcBc==rVOm(M{rE!Plk92P6UYWS$pT??(fy?yR%kRY>IeDRO
z(vrTDzuPTX|9w`8{JqC!au{>Ic9v%F_ti!DXZBr;W6loU`QW4Zt?Y*(uCdjBPM66~
zxh}Ey>*v=WQ=-)}>O8KzdR*DFO{~7fKWMV-<}GX*A5PvoS8&F4RaBs8pVwN>Z|N(Z
zMsfRm@LqN6;niCU90N-|N)PmQWjSWa+N@l0S$6IQM!u__tB!9JUHNsj%2bCe;XA8V
zI3D-oIM8Q0=~nYorUwz(Uo;qIUpo~R|2krIqMz&CXD==^1>93uDQ{(#6?<XbiuqPm
zTk7*}T+t|fl<FSzy7lYXNxuYE+I7s+D&~4_rpxp!Y-U);m9&bDzRRX6T;;!UwCCHA
zhxu>aPCt6^V9V!_sPy(ZQ!mf?y~SeB!WG6dtiGA-Ja*_@zVg+&Sy!GgKL5T&Bqw_L
z^$q-&K76sdIqmnH-w6zFq*Knh&$Yk2?a<fRDqnj(r{>m6*X%f%aav)<IfGl49Fxxl
zY&$pe3R~i`MQ7GI--;AC^<++t756%O=WTE7!dJe`sR&qhv;L9QwJpr^0<JJ#|L9@6
zdPR8PDZYxplQu7Iaaup9+11En-}*iFv*Gh^emC3gcb}U0OGRU4ed4*|1i$G^*8F_B
ztoT8)tEkde;jnfUQ`7qW!sl9TyR7u;J730BSWVu>-}WHc_3UZ;CA^32cc-4-#a-ol
zI6!pT6|*H}jv;~OqB(|h*|%%GI_@!-f4%0bt4*7I#SgT|dCIzEnVV?5n%u<gBYx;-
z*Dt1(wjUnP>p5!_%kqAeN%+H>%hw<Jcg;F+<-Vxt-Va<$p3L9!ew%#!j(Tamwk%J_
z%7>xLx)Xz4eoj4<KU1%@UCHQd{0`xD4SNGUOGV0*O8JBRyVf15H;-jJuc_5~#r%P+
zYi!7l`z5L~eyM)#Jyh-U`@zK-YaX^8`t5taW#5)1?_6JLRTMe|`HQM;U7dKy%yVzc
z*H~uWE~}2(9c<^qugG)D8^&_a+pJRmb^D?Dv-jB^D!()1sdb#m-8oOK>(Y0bo-V(W
z|La{x(e{3g^5Y#v_oV~hy%T);?xfcDzL)pb6v@x3vsiS8S^1RhjL>(+mk&oi-DmPQ
z#bu}ZgCm>2RPI0YMdeEBikQ#A0+XiH&Z^$`GV{io6_)SrelS@g68iF9>y?|4LG#+Y
zH!rcNXD&~fYRzDOLaUrXF64^anuiQF6E(v#>=@Rs*diP8Zu*C1i^_~kU+C;SlwaU)
z_Fsr^j_%6niB*h?tV^=me!9-6?MrlyYid<qA^Kb*?3HSU<?)X5b<DR#uRglbex<jo
z>ds#NI&OB+uiQ)G+8+3M{ynx=G_H|bCAD7o_jjo`q4k;aJFO==F(0^Mf9La=^#{Lp
z8HvAbzJK`jq)ofK%MQIR@K{>eH7$Gn;kC|_X2qI#|7PA}pYr7)|Ec!>SAMR_-tHJF
zchYb3kBx0PudF_XiES0-J9IzdnYE?L)7T$ItJ}&CTAs;#B)DvuMpw!{?pVoJRv+bf
zQdg|~V0Y!M(W0%+7wWg1?zqNxFmv}8sb@3!4@OG9a{26DF!9vQ$S3CiIoE}UEXi2=
zQ+P-A^qAQv7YU!8@AR{>DCV42mg#@ddG`L_W1cI9mNuTLJlW#+Lwe5o75T<rXDxb{
zmi0exrM~^_f{8!#KYYr2*<WY*(CBmehMfL0KifI4&-%|={&wQmT7yLSy!tHl7?qX#
z7mFya+ij73T;bgwi^Y*n9mkEYoK5rHGh^X9gW0Z!Rc-hmc~40amXA}a&Ys)xoBd<B
ztMAN;`8U<}1zd^o+1$OyTlK0z;l7i4T_Rf(ABlQQjbD{Cr88R5T}5Q-tREdW71xDb
z*(ogVzUqOIXKZKjYY}ndufe~sZ(v(qzr!c+e#$E@*Slw~Y!@wke&nvl+wd#QK7S(u
z?Pvcm-W+VBs##I{h;g&`o&_tKXM`#I3l5a`y~Eo2sMhxE));M(`p_%))&Je<+5K|w
zB%#T5xq4!Lu9aO@iMwX3*Ep`Ss7zzk(T_VScm0^Q=+5MAhYTOF`_wY;vwvCpdE=v*
zd)v;{pBLGGOWXa!K~H<*^CIitnwHc}tH@u!@bl&)n@;o2ov(XK-@N2sMdH6@8;hQG
zeg7tDWf*R;PxI@Wou2hZ=S7Xz85W%r|CZe|=d<h0jxAct=CO2LdfvS*d-LUUGLEtJ
zYp+~88O)^dRL^zoyi3WE8mrb%zO}2=OMObW`+DP7+Twrem;cDBkJbyiZ}cXibw_C6
z-lM-KyxQj&^zxD43X$bC(LuYr@;8KZy%zn-yTnf**4*<|+oQP!i#)VnSs%Tw^mWgo
zeepH3Q(Jd@OS9DbE?$3rQ_!A@%{_+mHTE4ZnzZ4*(#rG+R*_TgF53RteOj=~b6q#<
z+DBThJD0t4eii8IJNH&SXWd7C*R!*J%{Zzrv)yYI*X6Lz-=d{P!Nqx#L;hZg^(fVP
z^=0Mxh_KEt<*K4?SzA5s=((HQeXaD~d!wk`kU#s#&2ovl)ZQDD7v9^pMzns{;f&J7
z7G?W4zRwrw{wDqVpIhMC6}vKBetvr`*LZ5HcGnuW#T={W<X$dQ+8P`f>r-D_yT8t^
zaBhZ3_<M6d?O8_-|L(oq9DFprOKQe8?kLv(ElNSw%VXQ7ysrK=^Emr7v%pCUr)9rY
z`tJ94%44gIem?syTYQetU-dpj@cEXX%X*XU&ON4)E5bN6P4nlSO@UvuUj3OgcZOJc
z){TAJpV)nN+Zem_ZtSG=yDE8SJ!W=Xajq|ad1d3ZdSTY`*VepuiaWF48NTA~nC%wu
z`~Ai5XX>&YWcIk<H~zhL?xG*;ZD$s&_|<sD-#fE=tM`&rsU6<eBX=K_mefjkD|q$$
ztC0DoO7HfDZ(F*<B=N2e-@VnR_uROpANOye&+X`6zS%x^>h~{M=cc7NFX+nmiC$gt
zny(y}T&jQc^>?Z@|J1tEyFzQ!G&lI{KeQ$E%>RvkcXRHlE$TWozixMFz@0@aR?aAH
zuLud;ysZ3?<s)%>vqztbj~tYjF8pcvsMvL?|NiqeeFpXkE@!P>zcRPET87`Lm@oD7
zl(_HnuJa;awU@NHPJQ)Odg}Wb=Y++zUoAd$-bcLS0Q0Wv_v+R4L<~I_?%n72M$lO@
zOFKs8TiS}>Ys9<RjjlX?=6&SyCf#ojzOb*E-t}Dm!tq~~r<XqZ%Kl|@xBA-Yo%(VU
z#GY<@c|J;CJXmf@?T++c>(_*L*z!w<ef0WxzMXe>_0k_FmD|3>XujEdGo<m>SDrJz
zS>atP|K7|roz%qoS@Z1;!TL;RE!|U@#qLXN*I!!qc*`ll%y~0>s%KvIlbJXzAoCmR
zly8Mv*1VTqJ!!dYCp~dn#M0Umnag=nmT&doS|uKI>y=>U^VM74&S9&$=l9|H<(DgW
zJYO#SFZx)${oHS|`TY;~g!s(ipYeZdCX4+{yQo7CKk#pQU@!5nJNRX5Ps#sTAL{FG
ztPqnfo^xCvo$2vqiTQOrOV3G6Pi~ue{KDkcbBC9NS-EddWPBcZrZTKR^S?x23-=th
zGt)kt7iwBww6Zs5)$Gsq6TRo87rQ@F>qre^EjDR=|D~r*bJ|bMezsoDyV=X`y<K8I
zr+NKGnMWKuCKboc&Rjl6Q+EH<XjRK{ndBvD^^fnLKJ-52PkYR(;M+fBG=HkcJoex8
zs@6PTC9g@{;;VRMz_Nee41Q$y>_2C^@2Kg%v&H2*yMMeddi6+0!&1KJ-+tqN{%y~T
z>kcYsrdG(DpWFPgN$1DGFaIUqoLs)E?78$DPPs=ij}604G4<O$OWWGy_o0V>dg{UV
zAF`qj{x~_W{^I8SGfH<i2K#^QiIbI`6MxF2KzKdJ<|x6S|NrmDpL%<3A=~?>!Sm*S
z$k@KK)MAo+`nj<0;hTkiY27QCar6Dxo^7Q?r6(%iJP#^7|Kr<-?d==qyZf2Gnb)vZ
zl6%3y3mSKpJUL+_EqVXwO7W@^@1+M_=M=ARcPpLWUh?eMnk)N1*IVqFnjf((+Q#b2
zgL{EHGUo(Jz2=rXcj|MsU+op+x_{e`KYdXa{p$b3V1D(_>35!O++4ZCuztF`@;l2t
zX|LveoZhql)F1OoAG=2z|E^d5q-z}UKRsZT%u>%Y6L(DhxM$^*S2G<`)6Xy1)bwwK
z-_4D#F=edJW8!iS{E}>YuDasjz52{H)tc`!F4|7DoWJQ+mG!)D+s<52tlB8K_-k0z
z$p<{L@|K4-#m!tk|MQp4b2dxvZ}{jPx$H^I+^Mr{Z<(L5xD+G97e9TyGw;9Tw#51B
zA9_4y-<cdA;86aG_w_Fq)u%sQpN1cupLX&RyP%BaA-4GVsnU`6m#m*Y=lPE7`)3;p
z>(#ee{-|WtkgFDc!Sb!PZN9;uISU0?iY3I1bkZ!CAJ#rII;Jh5m;S=_$F8p-j@CDL
zn^f43E<YZda_`WO1wSsH;a}4l^VoOJ|FX7nV;QlHk@1iAX_~%P`rJS9@z%2~tJAkC
zEV;aIX2Ih%rDpmk=4?M_bv*1?(L6!>S*0uAvVMHCran9Oe8+vocMaWd{cmbj9JiKF
zJM(YvS}w7(|BifHW>NdiuOj|PdbyKniP+!M&yr6%Zp{70_1niH{hMZ){IyNjVh&oj
zbLyl=?6LYi;hW|54Rb$nFPvNUhySgh<M;BSEtmWMx7JR6^#9k7{x_{sU-vfoPvzR$
z|NP9Q0`-V(hvY;~*GsHRxzSM2=C<^dK-se?nVp-Km^tshG4IN$Eo)Ov^3tdORa4g}
zOZJoBcDDa*jlf5f?^eA1Q@1`@_HgB<*pA@%OCMrx+C{7jwBCNe@w(oJta=^pC(knK
zHM^h8TlIIb&bbP!?GxVn<SwX6Y!0*f9^*6Dvb_AA*bMt}@h2Ig#rsdz|6HH`&v$2B
z?$0|8@Ax`IY<ng=4_Rz&)$FjmB5r~457`@Sdu&d<ciWNu?#Z5xZzt{uwQc^y_ONy5
z=TBNcbk;X{^A_K4e|UJO=!xZ%cPGwSytUHu*8Jz&p2RMxHQcV;A60F2IN_e@tv!{s
zmFAhJpB**$>f~+pzHDvoJ-(LZ=MT@V*Ie=}c0#$`xv!>`;-6!lXNaGhoxe*cLvP)Y
zja3%ky>_JDbFQ3zc<zk<Wp5eV_Rs$waxXb*Nyj_OiFr8>D)+?xe!M3=(CEzjmf*x^
zP0qKtqrNure~P<M!(DdxZPeu^|4(HJvGbqC_Lo}9Y(F%Ob^eXK*6>(4_N`^p9#>5>
z<7uwv*4pv+vy7-iRQc|0#RoT6p3gAXUr}&pov7ZOhd*3?e>;?KZFgNRwqmvNahK|w
zx*u*G`nl}<)^dToMBQI5$`!q7(O-5fzVIaO%a+HiSI)#+borWy8~gNjf9o_l5?^@6
z;H%!P);ViAGVktvsA2pz?n}eg3D0*mebzU>yY0nuwe|I#UzW^D-#n`{)Be?r@YN4K
zpZ~i@@7v=j4=Zg8f7S~>b=Nkn_7QbZ-)(tou5h{H{BwD)BX1R*+j-C>d54Ui#{Y?*
z<0kxg`qbYtzv=xn`{yxy{Zse9>6sCyS%0_EdQW)W{GVk%w*1juF8)Sz%Pg&D`<~x9
z^ma+)KjUZX*ZpY!tfp8Wy>I`bt6T4s#2>A??)+hTmtBi^)Fhto2c0dHtz-N@y|F*}
z_`ksR=Zf#<PXAanE#}bcUGprjXKdDvFOyC9<GS?l?q_u`cFn04G+Dd)&t~n6SMC+P
zk77c9S{D72edw$6RxSA6qu*!DXD-v-cc^6Y%A}3D|4py7_~)3<TqW**&i+LGx90-e
zUoos-V6xqkx3t^()8!8z=lK3C-#mx;!tNhu{xIKRv%axVz@BeL%LayJ6XhEp3(P<C
zN9bAgg#7lI2HX#2W^@<W={QC3g>tM;usoDnAap2eg=+;@am|^?vvb(~Y;)!|QOao#
zYk8e0d&oD&TmAZ_vs-x{ZkOdV{Ga@+{#5-R&L)dsm-Yi;hVK$@oZaB>b7<Oq)j3jb
zg-y5W?LW&4sXPpH6q=V}5x@A`_UtLU;uc@=mHN1Q=H=saG>V0!zUr;5U3N2Zx7*wM
z3;%L|RP;5z`LJf%X7|mC|6=ua%b$LBKy#VuGntBuB^PoUo0siZt~vk3@{seg|4u&)
zAJ3olueJVz@#X0p|1*Wexc^QQblUvWqUYC}H10=yn|Tu(E!iKk6w4jbOjAE3RBY$e
zzf<6$PqE-3%V(V&&u6PE>zIoxuQBp>-f<?TYs0M?o<qTBj0Jw3Ij$I!JFj)a!5W)G
zV#Sh&%0An)ygth<kY}XtbR%<}!;Rdyo(<>suq0mDBa(QieveGztvyT+%RYOxSf5c>
zmNBXpoR`1Ob;t2H?iCv=MGx(LR@D+d>$=jOTX#A>R23T^l0Lg!Y0uR=Z69_&<7@eS
z_O-yh)O!sd;y$~ze4l-O!-G3Be+$}W`YF}i+Qa*h@iSk``PuD)`!eqJen|a%U2tF8
zz3zgUt!YbcIeo6^db&We{_6#&&6{sIeZG3&j~MsaOzYxn#jn(!l}CA`ZGURc@mpuV
zv&7bbUe43fV!Z#d3bVKqjn8OBaHJpRYRN6A|L1gr<A3W0j(u$ftTHY$n!J4GvV|+}
zlZbPRIBj{JS^iUha*dqLr1yrk%%*=t+UD}KOWbRET-5d1Li%C80gJUGfBoUd5>=Ad
zjChQA3~l-!>hjD__#x&T%r`wX;&egV<fjHaMqgyA=ZHR($rE)xzh?q(A;c8Wh_=Ce
z@3YT?c&sJ)40-faGUBGR2Yi?<;kRV2-hZdg2m2?jJ(kbE|E6Pu{{?9Ymi-4Gr2MgK
zy}v}^$N7-!O@A`m*{b$U|6d;z`XT;=*}?d=^P^?Ww&!lj-Id$8_R_XH-}1M`Zrh#1
z9w7SaP4wI9H~Y7VKk+%Gd3NSpWBcWL>AB}vHtH=mPd9kJYR>QCd1rpco||91@5Ib0
z)iHU#?=p8Te_r-{-qh;Ccl)2$*?(VoN4)s|gx`hl#CM+lTsL?7mBM|G?Pc_>?iJQo
z%-KA*dye-Ub*t+Z*DcQ%lv%US4Yyoh{;&PB^76x>FJ`^6I=J;#>CD$@*ZE`4@0wTa
z_;1mlb$?v`IsD_RW4hmYEsN`dbjXYR{L7YK!nZAde(ATK71xW6v%I-p)C%c~U1(Mf
zE)t&eYSCSxXXee^876Zz7BYAReqN?r$|G`^=Suy~#}kZ&EjLdnwvjpgtx7N}+VbD(
z1NGh;&Mo~jeV?7Q?A-MmFDe$Terx!vI^lPUWB#TE_ltj;|Nh8PEvfcq%IBCiaf3A{
z7w^9teYn8$U#Hrft$!v9t~>W#am$YR?iuMXN+$oA+H>9T-UBtxn-%)Y<Ic@lEfFRr
zSnnFxIx|Jc{ZRcIvp1TzT2}T>);RChHd}q-9Fxb^67$Y~nB*Dq?UZNRoHzUIEqWhJ
zzO3=QnCE`^M43BVA8gqZ?lh<0TTG$u(wE%=c9wrbvl*v6<e6lC<%7I!a_;e|dB=XP
za9Z*3&jQ(Y#|=u)by}pdcJ)5L+xBPk&Fk+RRvb+EBFVZzIQ7OunU?w`;*}>P4+)i7
zh%andxkmpe$J+q?m@nIFIasTn*F5o0j_8sLK5VJK=&z}d%MPK`>>abZ1l?|K{+_IN
zXK|ulRq+EJD`S`1ix>0+_b`;YHQx@%Hu<6V{e9ULY2I&#nOg2U>t1^BdxhhR^o{GK
z?({}2Ie2)5uar%jTzvEL0^jTp^~Gx<o1Yi{&HBLP_LeEm>G$%)E6yKeKV0UMTFCbP
zpw^N99A7*3pa0;$<CN)_-@P36jcG0Q$4*2f@LXv75iim7;=%r_ZyjnDMzj}9ywR{B
zCTB@;P9fVNEx`r*x)lxuyKpQFZ`l~a>%^Pos(<LR3(LcqNyhI4>b18;hTpDBu0CJ?
z&HQ%K@9l5yZ{MG6KjriCIi@@9&+N5%Z(aHQ=}g&RnRF}p!m?duyX)Rp9S@!G{-nL#
zepcS=c^hRPwmx!esXlU<LtjX~`o;Tn|CLNXcJ0V!eKn~<<e}=L%9iO}{r*fld_?B(
zYzSZDE?mCzM&Adnk1MAC3;WO865e%Q;GJ-A7DN3$&0krCu^s2HF~sP;NIiL-!}?J6
z(Rrl|*E{z<XRPtQ)B1t!<GrU}w(tD5nlVpg?sdj*Z}eKsyKT#v?kKHut5|*Gv%-P$
zBlFrB{>9E{@7bPn>h;yfPj)lu%q-83%L{rhb>fk%O#AjN2|E7&TEBYSi%;u+8k^m;
zro1+8`;2?psrAmidJb>rHvO_^{aViT>bFQl$E^ybtlM0FLLR59*7+SefAYt|9hbW+
zvpxiO%gfjO`LXiwd96Qdj``cxU3-wO`z-f>zjEEI50Be#=hSV{7pyq8kJY}eLhm~N
z|IYdRA3j^w<vstN<5Zfwr&>YEj#KCtw?@#!7uO1my!7Wp+>q_9Z_>Xb%)9Jx?n{+J
z_Z$uGg$Ta>di=#xQBPa`y;e$7`Ho#$$#Y!(b?=cw0n+`)CP#!?aFt$ce48!w@LucI
zk4wBVyjh$RSG?!{CZybUb@@#GDgM_kPU`utc6en-ZoI)Y>384Ms)LnPb+6n`n&Rn{
zZ6W%`-$i-jy<Hw6(Z;)ao+Q;9dHAe9y5CgB`?S@J^G@OXU%q@{PkwuFU53OaD}UWS
zclH-+6|{cOsu2H?b$g+%EKhD*Vce&S6Z>3(H>ipBn;v;O+iS*y@CycN_fwSHm(&^v
z%DHn~70u)Q-ZJ^2L|+`carWaIcMGh1@)<f8F&up>-H|Id_ldvSW6!x4tnD_<sW;@A
zb5r4X-{rPj>!L)2`$`{YTzlY=n%VlusWvy>VvD8e1^&2IDTS(Qyx7>EZt0hZ*_-g$
z!OC!g+gWb*-wVwo4+$-Iukz>rc4(H^|5e8lij1#ay3(>)#!{Q-o{Lg&P-pYElp6x-
z>4AM~`q?+nwoo{2e)O{MLxWF$ZaY6@Ip10DBeAr~ZT`-uM*L-Ss{(~PStmEYo+P*`
zcgd=&=EYx^^F8>~G3RKpp7m{k`_nj<1+5bPwYuA3UpdDgLz#8Y))^mOXfj8vhfgC{
zqGOrz!UV0i-0p|>-Y_?aS{fJ8@^xina8K#Pi1M0fu1#_M%x>ZCX;CZgF-~q;BYx;W
z*eZL01@#|!l9;D#YTy0!WOkn``@!eyUq)<QwJ%e2%U1L4ziJz2wLQDF)uZC}>ulz?
zYwPNzf0&tQu338Z{<D1kAFm3x{`gaRudnT!!{Ysh7arK3z0c5l?`xx5e)Zd|j5Ya}
z44<rBy)r+)xit6d^52QEi?`?MuKBiYEuX=3L%+l`9=Xx6@%7iwHA&5yeZ4CD_g*`(
zXRGtG+r{c9^WT<P@p8rF){Ta|_sZ%W%9Nb1Ro=eUyQS?}sZP^wjniwh^1da$o*lOJ
z^fI#w|N9KSU$_3tNqd`>Un_jY%zWDxwpUiOvJw+Ddatdsm0Qo9HjQ^n>*cS8SLzkE
z`gn>|?(^tK<N4b2#dyxN`U&A8U)nA+GH3TMZ@&0T;<4oCxu?_uVwm^lb}lp0dM-D;
zu6)88msR|)k}ZB`{`8X1=yuz6Sj%6w&h$v3>5@ym2TN9*FAyrc#O``^VN+Vrq6i%!
zZ`NN6_`?-cCOuqx!9Vq)huUSKT!+{0ocGoq^q3;<9&RFcOQ(3rrIRAc7c1&(iYK(@
zOkV5x^6pFiJpPtnO%o-OFFuHD7U*s{q_NHXF8kh(72BPhGq^K7A6s1GJyKz_vC!f`
z#!iK`ZM~9bZEb}<9^Y{B)P%2^uZ5m0oW{J4zbq}s`N_ecH#cVqAJk<|+*WpB*D5xq
zg>@V%g(X*9wn}A8TdZ<Pyl<(}%Y$ESa_c3Pv{RkSPO+&jvKQ=MXt|=7|HvhUvtiTb
z-*wBMb|_MT|2*rD(BPhv-+dOY<V}_jS-t9Omj5jojtkLCZp?05e0Sy)-sGT=i$2Z9
zZ>6uAMQ&cTRqpPKG#=(XD-T9+Or7P!^LXpQj4j<ZnZ6RuoKtz9D>tXIb6jZqe^K&F
zqd8Y&eakuC4=PRy^FFFG&T-`^Sscr|Vk5_iiJUo-9Bv!8-nmgFzh;@lBE1vdU$*G{
zxni<1<FZ4&c<ENN*`N9r+%VHVe=CylF`LN>@4Jm3gC{-w_v6}!L?Ko28&5s1PkU4r
zJn!3%C)(~OcbI#6-4NkRV*65l<GtRSu1}6}CBFAER5C2;D>#lEy8T2)a9Ns`Lj3k;
z+{>CRnlw1>%B@vAnQ*lI<FE1=^Lo=>Pd@g}XVzk$>J!zxUMrk7Yv{k6^2N{M`^&ui
z+}wDhd;PtO4s=NJGDj}SFWIH9ZR=v_)ja9sk<1{2wfuAacO<>mas4$rYj*9whV2Ve
zw~Ei2B^nfd|H8X`UXyxL^Pi=A)-HB)w~i`V(|E`GZ&tkamEU_h7KS&m91CvF6q)Pc
z_UL5Tmhy`Q{!yED32ZwOobv94_7t9r?X#H@ukqxYToiASvkaMHd$ox%GR6AVbRA`l
zxeiS?Y}z?(cZDhnTvan|pXw2IE~8c_cILrVJt;TRGL~?O++y1$a&2Njy{ksUBQ8tx
znK!ELIXtjg!^M|yxyi6=opH;oqDP^>ZXN1On6$SgCH%)Nw%@-GzgX*3Wzqjm>2S7u
z|H^Ku_Am{P<;~ONcdcCNnK^?a-&4JD%lv(_6&gMUGZir1T9~aM^mbin{M#p~m0nqk
zC%Q0wo&6`t_AURm0E3Q?vE?b*Dy{YBm}<BTuLM3%$<C?OnbfzS^H9M=m#Y&sM8n&%
zPb9v&C?oYZW5(X-tcR-#bbMrUI+k3@Xerq7yKpA|g6a94>H$mU-1{}7%XIdmlm8M#
zvL1cRkg%2Y%iAID9(R<<mpSm(iKES#3D0%7AOG=W3D0I?Za=szp*|ulAjq)&(5=I_
z>n~?bo;)Q!^WL8aT5jy?4_(&y=67FVsX|+#fakFQ>zQ1a^*q;k+HU8m4B%)#F;kT*
zgm+i^)sjV<0^W7H+z1o)nwxfHcdv|@lE{n;+eK!qytu+w?L!_@d7HrEzSFr;?nYb_
z^A0#35c}Bh#r;>Rh`;oXUlIN?%sebv=WhMZu(7Cr;B>uxvt00Q)~-W^7aD9A9dh2X
z(fj0jvwL<Ijwv{DowgA=e4A_837!u{kJBUyQ_`0P@*Owp=(@N(hI4AbKO?8^(kIgv
zaV|c8^<_y??2gr@J%W5~)h9np3ycoj_GfX#sSo{+`Zh<N)w5}`4?5JLa&NU){izx6
z?2X^_7)w5_kEl<7wfkpxyT(#w8OO^Or+zJ&#uL=h!sl%`yTECOVu1H*lU19{j=Oy|
zIxKPV#j}Xo%{ht1I+x{4R}@_^4iuP`(z7t=A<yCcvdQNHqMkoKqcka~*wx)Imid=j
zc-}U{rM7uDO5SXWS$XB~61`UD%Q;SEdd*9Xcp0zeo_u?JTCnPr`i+4Pf0=)k=2dXN
zaZJorH`#Ae51XyL>uKAJpD%WI`-?JN5cOQnu|i;yjeB&w&CGK<6rZ-<5SsKt%2xlF
z*<Qn&#Z%i|B!#4IXD#7dQt*D>E9GF{`x9&<Bop1#Bo{gKZa=H9%x3i{gPS$^X^_<0
z$H7*M&TZe6x@hvlC0AujOMC0%ZoOE?zoj}`s-WJ-n)ln`mJeQT%rhP8oA)*ReDTxx
zWs3Dvg{=?#+T1mrPYO%UtFyhM7SmR??-s+m{gWoXeJZgt?E=sCLl43vVwyYOE!e-4
zeXoG!<0(t_Sh;R?wQKLsVTzblt){u&Z{ouHJZ~0dtnc_cC0*HSx!7)tNy_K*C)KYK
zieY@R;Ho9d`8{=3>g@~cbe9M9I<wenq%Et>QMtPOS<JfW&vGLg=d2Tyx%N9@P3yOn
z|0K$0D;f37+<tWO-3^vD8f)FV&v~W_-<b9!K}pv%NS*EGqlwSfT=iaDQx?XR&)shR
z+Cn=sj7KZG`|-LinLw@C3zE*B<j9*UF?DuLz24&4x;rO6S|u_0Q1;>slP6gRHn_>n
ze3-?(?9k2U1&kd_EYi&rBb7xOCNi5<Z7^EA@O#kv#AW5Hrq1lUqUJnf;p}}+pG@8=
z<B<Dc@_~?J2TvOxJeI&@mGtXpLTqhpLhqkdljFaB%C@ar8!xZ$ce2E>CyleFiFs~W
zpZC?fs5Vx%evSU|&<(p}YnCSoT))G%?^>1BR>wVZe|~&4HEr0wbm<%i)<!R;Zq5+F
z2&V@uOx~P2${XewpH_-l*2EoJu#!tJY$Hq5?OUfgLj+c+Y?$F7%IIg?cpxapGuE<^
zi)kv0m@ru1oK(y7iISG-tj`bK;?SF@c+26Cg>z1yW?22V%tZG!{ogknV_X@ipdFo%
zV|Pn9>41>8_U=5E4KqJ8ta!QNG4qzTsyiH&(oDXxy$<fhJy))5H~%qPBKPZd7BP0e
zfcrNzowT%=M7yUyoO6ZsmYK;l6LSY&=LI{jKF?SE9elOxwlt5V<`jQ-C*Bm_AghH_
z{DStqQJL@6btyBi-r$t`$-5aRC0+)VFudh<QFT!kJ8(uotzIU<e5=6`ch=mDxqAZj
zl5);3wM^Koa{lZl2_aW;=ZBfrR=*CiiJa-^@6n7Z-y6)E^S_p-+Tf4ZN?F65941FM
zxf{xI8oudz)WdV3R_crVs@ZpIPYLsVD^L7$I{oXve=f89Id50EEUE91x_3=Nga62?
zf~csNza6}bCkOaC%N}jknO0m_H+A8${>i7)7yR3{?bkE4lNs3`Pd^T`<2vVe>}-kI
zO1{L4rQ29<{drr{)RPhG?0!4Ts#a~!zLjx;zF#$V$$oA=wR**@zHPi*SG`{?iK}3F
z`(1O>wuL)&ol}$~O{P>a9Gs_mr+%%6)uE#aF>;UAUGk5uOt@O8xc{qM(#Ok-C+h9Y
z&GWl<^zoLvs---q7j$ZIoQ}?#$+cNaI&`AdkB72lwOwcCXRW%$z-qB<x^GI)Rlj2_
zJ*xs1s!H;?2L0;eDWA&xcjK=q`3v^fPq1A3G1tnoohyhTaaB!nLG?F9sYy4VXViSC
zmzZ+aJM|&sok{Fpjn`If&7T^WDmFiFLd#DHhTzqqHx1b*?K<;j5vTH*XTR-hKD!G(
zzW?jt+W@ZZ#YRj#yecn6e{JcVEWILR#<trjDl2R)WR<@~EY91wLbHp1$)THV+r{3#
zNc;1wh0W@vq{s5dhVeDgKF=4q^Q!mi99;YG;->8SNgSEG<-FX4em$G5%vSojz{M$6
zMRWFoGNU^S!|q8NMoIIsPcFSvI{(eADg2MUxR*SUo9OSbbf4k2ZHFwbMnpgC&RKhA
zk@n{E=GVf4vdr2SzbcDWXuD>yYvyF7lkXpT>~&`=F?!K#aqP?v*VJJ3^X!@Dp2&6!
z+&WYj(EcIz#fJJIf$6diTVHpVJFj4Jnko>*qgXp%HN3mdDrb&LdHP-No|L{VM(oRv
z?ab7eCoyGt4x^p-t!v_(UsoFIM(JJBVyT?pxOB?Go|BKaNtB%2q*<xr%3in9ByZA>
z<1!j0uTS2o=~I`A5}csXabV^rzP6S-W@Ta}EG+4l3{OpC++u7|f5P*V@T)sY1`~RU
zvKZP8&hCFX;R3VqooSExRF+oFo>^dZ*+E9U@Jz>^%HWgR3l&_G-FP`47Ih{1Z$GS{
zH*KDr$Kl9{_cj~kIUkoeq|3Jby!L)K_60L<h#Yl@IkvN~#N*_IqEoy0pGOCNS{<p?
zq*AiIFIfNXnxYSH?nEvwxWBS~j<#OL9mmB|Y3yvukJ`_88dhx+={j*|&f%pJ_xNs_
z@zk!}zdL-t>{Pz?UrB<y^jm6HYIbP&dQR;6Y^FM4g1XTkQPunB-A(osepz<0uRPI(
zCyQ&x45QVyA5%19nw!N{^C$k4oGn+X#Bnb~>&|^q*_{3*ixZtEo%_}ryl0i+>-rlm
zcaD5>sbZgW@UZH4^`?ynH*#k9?`C&;`O!;-ZSs}R8$I88%IvNClJa=UB>QK{Dlhg<
zvA?)^f}if>k1o*`J57ZqO}w7@;`pvjzjtRTT(S+@^y}_|jhrcL$5mEk)lN*v*O}+E
zHlST^??J&(PdUA%Zea@odzU&oKRo&7no@K7j(SrW-n{9@7qnS~PGGl|ec3f3)F|k9
z^*nZ4{jA93mh;7h+@W_T_2lqgvaDhH8uLF>T7FfI$}FpwZ&vMEb@XYds3`ZJ?!Wt3
zLrqPma__k(b-&5#|D|2CR;7x1PyhYu9OK@*zs}iYn=ms<ns3?^bix1lycB`3u&Ia7
z%)E4ATE6|l`aOI0JZkA;6|I^c*1niC%HY!xSHqhVPw&o%l;)V3x@OI(!iw(W4?}wo
zM>Fm5JZ8AcqVb(qlIz{Gog1!{B?mY2RX4Ep_DwimH2dW}!}<JDnM<CE{Jp>^qu1Q_
zKtakSd56kgF<$nH-MgQjJ+pyJ{ANnZyl)2#-!BS1%jIX*Q+Bd`3A^X2-e%FK2l@@z
zMNhkZ-Mh!ArFemRNQSe)qDMR8mOo8w>8U!l^Z0~V5$4%z6Rm`nDs<eLT(iM_p3kMV
z%x9W5^<UYuF*u_0tn_JV{rgE)XAdy0I=63bc~H1QK;9PX&bJaBtp-M`b7x1^Ui##)
zz^vou?!6l;ayG~(uXYn##b00LnwE9k#`Lm4XD*|%0Be4Zz^fN*UQwnF_hgp*+Mkpf
zn#`s5FN?L%xL@zjhsC=p-ek;eSX{M)DfICa3I9`%3M(E@jV)@qb!_dMmck0};}3f;
zK0liHCQ5l-^OFT#vbP>TmhM^lIOE!-!m6Dj)i(v+w{FutX>z4aIdETKGei2_`u(<w
zwZ${$Y1(Mt(anE)VtKfVo_|z=uZ-`8?c94^Y8>WeFYPl>Q}2<R{7E%7Mf>IUJtqQI
zwA*PMo0@%ZcG&lqS9s0t>{ZFk)_7mA@I4>v%RiB!>+Y8?+N#z4QE%?NB##Ts`ZI#7
zy2Y&4Wb>*o`m-S|D^^}s?1QlC6OpA7`{ve%)&^+^ELbYX%lC<YZYYDB(^d6QR;HKx
zJh)apHFMTG{%uEHzu{^{iREATT$(*)f=b(Gm1XYLXiY43x;cAF&(qgEyF)UTKYghr
zyVFG7(8DkN-DCl7U$wT>v$hu|_B6;pUdrPBI?K67_UOg9x$pWvJ+5i_@klZ5%cq62
zKXOc(QeVpMV`p>NI&!B;Vs6ES4U=M~_}6UiNv+<axR2Mp=8BE}+k=&P{(S3#%qK*y
zFn77uele<Y)iHD7jjTrJWJ0IP)qHZ)=aMS)=bSnrZ%)t54Nn{1>AA=*)!6C!@ap4x
z{gaMm_H^iFuAj!rRAOyDi%V`{#nl^+?z*4Ymm<Tfy_~V$fami=?)e6O4^JsSiPw@}
zwRrcs+#0^-S3-IHD`q$Oe#|ZE?w(yX>*6~@<(}ZP#n**;R4!g!adWxzyOL{jR!C>w
ztX*)6E$G!lTest8HJYY1PwqNo6(6-=j@tOgpmMs$(@@<DyBD0;m{c%dV=Lb(_q*jO
znX$>;A=CPUTD#_bJYC<`GyCMKUu%}Fc(_ES$Rb00nyHn~DW6ksE{0dnk<&6PN`0GE
zQM&rM<kR4So?kEZZmoDc<yb+v%8m(rCr)@=ak=#OV2hPO@}6G#_D7FxIzM)*%TFoT
zWmC0q@9vK)WGAogZT}GU<l4T)d-EjamjwArvK)7mV_M;!e{uOjO>?E=f%Rp|SB#I%
z6<jYg>(R??jV?^rYreg#Y2WhRo#W`K<G)h3`MMW8@jh1ZHuY(Q((kb5e;X|CPQL!$
z{KMaW8_flNbO=3NeO%b;)!(AShtf8f%K1Oum!}{R8m&{hd)+)UZyBAH#jawfJS9&?
zrYHZ|V)xF>`C-qDWfeYl40q>l?RBm`UvF5|ylb`o`*@i;jcI+7ou8E3V?-Z|PFU7_
zrFn~Ey;}L3V!KVwpE!e}7{3H;o7g9~*L>+__v@P~Zr;$~sGRzwM7hLI?fg%V^;b81
z<XmF2K*o6SVm<?Fp~r<kBQ9Go%Ld2Em8OX<Ieadw)Ju!GqtV4d)`ImVi>dX-B$iOi
zrl|Te3z=N`cI5Uac^v1nel0RRqtwjZ+NSi-oonLvmvMbL#j``}Y4N25p7SrhdiGgK
zbS^#dsXtEC`xu|qC#~cEo9EnX_58a%k8v8G1CQBbb-vpIRSGQ;_9_aT5?T-Tb6hf9
z!F)=*Y0IL6H(Te({SiMl=RuG0JSQ#Q3GPN3_K$kc)(f=eO_6rAYP@6e=(a*frEN^M
z)#`H^)A=8NS14M^Tj(?SEyv~ejn4!7*3Mymm2GI+HD6`fC4GfpKTYjpm6K*(lQvzt
zf%OaXsSvHRM&e9Y%oN(bF<REnQ18fG!EvXpBkMWCH4)dIQ<VnsGXE=glxeja9rD#!
zEbe`gBlqdF9M^iSF4e<2$}J%}m-&7gpG#cl-PhZm&A<7|$LQv*YgRwsH}MWfzt+|@
z^1F6yzp_itl<DrOYjRhU=9)+Sx*5Rt`~k-tvqfwF`}ZHXc6bY0Hm6zd<;N3$?w%+u
zw=n+iomB$ge-tQBOxhXYTyMNx`($cL{%=FwqmzD3(Ecs<M9e$4N47pqZPK1qL0aY8
zSJ|GjOg?e^mf3&*ti{vH|G&Q;x<@dp;@%>gcZL?s#cP-BH#z_Mq2Q8GHp|Q@uF0Ij
z=1uccD~*i{*bb!3z1^d0A^dq_s6}(}^^JBcGs7lrJXf`iCGlVDrzH~~-Qn={T7B+8
zP3{cs6R(S0YA<gJcDov>ae2}j`}(~{H1Bfg+K3f}T-I3JSubpRCRasvf|&k+YY%l^
zJ%7TH&9PO#A=yK_yM(E0^UozS1&{nbvC8+f-_0hWr(H{KE!e`oQDb?@=Li<T?v-W^
zf%e~LUh{DJ%9+;llvTuS=>@On-#_-0YOiLql&rM;D=_g!;p~FG=MP?}RIDjCaJ$c0
zFE`t0!F=7NHj~`6{HJdc%AUb{?1n<@4BzD)lP@<dzR&j7rmHaS<ini)0Ii*war~JP
z21&J?=@Q$DPp@E+5qF#$+fX{$O;|25dQZc1m1EOlo=j$+^slw{Okt)R|E1KEu?Idm
zd$C<rQRCad7d&f@Y*y!q$xo{)_dJ;+aIIZ6b8da(<Qn#?GZj`<l-Os4t$eyDhw(%`
zXIwbv(zkb4Oulr#^z$6vrVRmliG@yj2TpC=yxZgE)4DTDU!UNL5nlXs&5>==n;Fi%
zk!(D6EAZ`?jcff1)+^1dv^0Fo>UKTt%)gBa%Vba6#FlTqyr87S_idJo$F>y{rp@_c
zzhsU5)3_u1tk2fV)iU-MPb%FZe<aF&eg0u%-W3v#+piaWJ$7SNYv}wWo6YkCCtX;!
z_RKWZ=XI+$b$hO>X4s#+CU#TKgi6gk>lq&=%LiRr8p|SmHcNlqDZRd+Lo2?DY&~&f
zsqX4BjqEcKuO=3<x>|UevM(tQxN&xuOz5umTQ-K)by=5n16_5qU)6uqNluaEzdhqc
zhsUcF0qNSsD)Q^L?)v{%{)FAm)G2x|4QD1s_lrb2eh$x%mQG5%@>==S?GN^or?*Wk
zyep`({`ad%(Nk5|9lUpX<L~{(OuOzVpL+fO)u*f*+!t#4rpi1Dofz^u((U%+E8DJ2
z*y#7N*g{*$CP!O$_6hkJeW^STch;NyGqU^mA!<o}^4)U>ZDdcp51!~9vi91Wsk)C3
zn{D$es&zNMcY}HAkB@!Xtrb&m_qo2`&h+4lYqHLFr)%#w8il8PQz^_V>{+{QO|oK@
zkyP@XW{dO$?cX=^7d(&OGRxg+;jP_M*H*MtPkp9gddN&|MgQeRR_ELw-)vtTu<Tl5
zQ2p8K3!*j$nkp5Xd2w_37mf9Se(^iqe%A3{S*2m#@`G>N>nrcy>iEB#nzCingzD+f
zD%L1x#~g496tGxoA7GZf>EX$sJ?z2vY?jZfZoIK4M{=uV{?)eo3(xqiYhQYx=gpq~
zwS3OA7K$5aTf5Kw6l?VF_1QNGiEV=R+fuhipYONysb|iZc-(vOCbsfBVRDn_I^TLP
zP<&;L?>WEoS-(H_zWJG<B3%)8c}H5N?DELxHCgU_!o4+hPg^G|@8DgdzvN)Rx6rTB
zpHi>fS-q$z<F|dRw64~pQ&F<&{rA?cI~Y?J(K@4NX7U>E^whQC{O3ca%T({-I=l6(
z{JzrjxBgfB=q`R=FDq9g`^K6t_QP%WJn20ln{WAEbJ{(#Xy!{%&9tieuC%KxGhW_}
zOtb#{!Zq@XnrN{dqlD9kr#m@bxN4_qFa4LSzTexs;bc_S@dk$r*4+nQ2_CZDa{ST7
z51T4|7F|hN9>Qz?Wp4LWkz2YmxNkR1XlT>b+WP4DqR8U2VLE;f;+X2IeTz5TkkK(?
z?@m0t{6V@?-`0|**0|{`JLN6}3fVAb7fgy!-*z}Q$l~bBi!KjYY`cYhtg^P>HeGF8
z-WOQICpw?mFK3s=%t_6@`Wr6TFF*cBZ}N(2N6&f3*Zg>A^!enM*GXaDeX?Fo?hp|!
zGF4igd#&>w*TZ=;n{y}5kY(NFUH|4?(xjf7f{OzuY`C)MQ}X*~t2aHJx#_9K#+oMe
z%VmrCulf8kk~Z5d(mwIk!u+#blh}Iqd9Agu<JfRGOmW3r^Ji6S7EL*J(C>3&v%jT|
z#_}solheLtl>IrRxkUd=<IMu5JIkL`n0&u5^~ZhBr84JY=IWI`sr0d0by4R*#!8bv
z{q>(;FQ{6-C0gBL$6reZuHr>nX;!UCB~4yarrqMS*tlmiLvRY`*QW=r-4e~){-{7l
zP;~{fszsmfk4*E~k@1`tUSB+8S#)e#cG#Imc@HEb^4J0&DSgdUywLYFcF9yV7Cq~i
zuH21fA$*f|dv4yf;f>dyip*7iW_71reY|}3(^BPY^~WRRlLC(|>QI&NesF+mdbMhA
ze|O2*r<<zJSRC7F!+U6M+K#yo`Pxz|S2P`cmo%s0kgrXsUQTy6%hVm0cgk(v&9gty
zQZ;?|qnz^vWg6%Bp3P{{p8hQO$+Kq->z*#r<(p%c&A0SM=Gn|={`;1Qs(rb6K!p93
z4A%kAQy&}7&2!GFpA))!PH4;=q0Jv_CTKl6w5=$7T4ci)jqAydXVsr7vkKoaT_a{~
z`9)woztau742!px7Rq8u5>Jxm7Zr0$X9k?|Fx?ouB%FWd{v+H^pFfGnSx{JhL@H4I
zm20Dhi0dQok4t{ctqA?I{D;#XojAeuo#sboKjMF+TNtoM_nzSUuJ83nen0Ae#9Zi6
zqhTjhFLb_J{K)zv>yLInQvE3XG5X_*3LhK2c>?~O^SkDErXM+fbn_$eN7El!TAo>c
zYCWIv-kb|Ib9<hY1np8{`r@TstjK5{9pZH~?0&yn*aD^vbFZApxpmQuTbpsWExYgq
zp-%=MKW+2)U1cxLyStL9Q%lidfBnMa#_dKdS;DWP8SA_P7T;YlZ|SVL>W6K=X!zZ6
z`ObDo#^i~r@ZEHQgO`Jwy58xXoVob<0x`LOu(THr>+&YF@kKaZzA!6swSd?;_r=Zk
zI}8p-TEzFc?DS3De!BG0yCZ6)Uc1Gv#CSCyzH*F1zdLB<JU#KP%1)clrk(bCThUuo
zKjqfVbvM0tzFK(w!np;mn=h{r;j2BKqbpOT&;I<L?U#s$7lPGhZ-~xOlL=yv=ty7A
zzp=pKtl5{Au-P+9E~K8`eEVX^r__xJLSfCG5tq_7-?$lGz?*+-%DLodE}dUd8+^7u
z4N#jp%`l}c{g6+knQrp-&kVQ!ZTs_HLtxp<00Y_j7xQhyE4w+(CcA7><PR5&G71rU
z^-6K}EbDof7V^6a-uO8??Hse~f@|`Ay32Gn`7U#NbYo#<Ise|CnH-n@7hdPQsCr{c
zq^oPmq~Iem#ks<7jx8-OZ*g3<a$)za?;G!?DM?wbiho+Q|I}thD~&ZR%a~vPlW`WD
z{i{rz!*{WrAA9{XpW_Bf;Sq(syJJ*My!Ut+J$<uk&fHTs-KRYMR^#=+nCbtP2RRG+
zH+#mXUtT`X<Zw_<@kNWsAI)V)ZRb3e+a+hc@Zt&UPdR1FFZcDGe|IEx<sWJN(+>|h
z&F+<%v-d)KOLaxk!u40o7&$+6Eame%bXw8=$Nl8lQ|3m!+R%S$LVEq?g^iP+a^?E9
zuFknq-M;w1GVU^i`;Bse+NIBK`s|9|vO9NY)+U*mi>@6?EVz-g)NiTCx0l;IcLmE<
zC;I26&5Pvz9kEHwwSk*wx#N!Om%q%+aPqM+*Sj=R$jMt{?}oXHHa=vXl2LxMI7dw7
z1n+{dojz)(d{hf0Z~4qfx_)K*rg|yWl;2$oJOU23359d+`WjQRc}48IykG7i@`1Hq
z`d4TK2L5snX<EVZ*ZH$C^X;IPM=K5qWtDfz`rLSS=;6~FHZD3Dy=~z^bKfQAdn)=i
z+|`qQH1DC@vW`P<m#X^mx=XXEy)metIwfKL#t$oX4(Yr8h%Gy?p6|$~jG27-7gp%k
zn;nZ$J)$jR=lqf5@V`@atKUsdKk}qW>0nZG%8yeQo?GUMP4}K!FtJr8P2iZC2%me#
zk#5Z*g^zzFKmMJmwLPUGdV>2ir-%j}181q$Lk}6}=dRi<SKYpE)-}&{r+gnjPzY%F
z`cPwMySjjBYoPVDby-?V>-D64|1H>^qomhYbtor9Qta_Uv-2wa0cS$_{I}h_d-(Z|
zcKrj-l7GpZv)UZe_r}%Yo$3=auMG>gNW~UCjO`14USc)<cGum*zwaELZV|b(H{kv|
zy+VH5{slK|(_NZ&@46CX!T8!uS8g90Z{uWr6BdrZg__e0o<6xzJo)@Gsrr>`1N1D+
zTCPp}e}eO-?vAda49j!s0q-^>DtP2BaN1OUe=^?=<;{vOHcVFY<oA+%cTAyaQTcbC
zs6ah&uab%176#e-EDYe(lIL8nw1G$a=+X4e9?rIB%{*u3?45cn^u#oS*;AFLGndYN
z_BdK%@6HoJw>C9*KRjMgd-B-4gAy-q*9X6u`$Bs2&O%jw+bsR7UZ!(fx7~1MD*7sr
zys1dkncb}}@%fyxPq*K#I`q@xJ(GA(m)@G9fQ-=96D!^7{xU7yZSC#-=FXJq7p|Ys
zmvb*!sJ-^nX|=icPeqz7ul~XM-K$*vRf7Dj87r(6y;ty*1?7G^{!NKz_kt}PIc5u^
z-Fj>5P0ZTw$or}F&%AtYUef;H2HVe4o)&HgLh3#!3i4K~To%4GKRdERQFedO)`$Zw
zXS_9RKOLMr<#;sn1oZ=};>s8&vxubqn|Ao~kGJzqefsp2A(bgjFaA>SJy|~e=nJxO
zQZWIgP8lbgp59$}q3M&V_vziIs+~gBLv-D)iY2U$h^Y7bAF!Ksf5cQlYh{TGTp8EZ
z)_SuE`$qCV-v0e!{F0O9`~N+SwFs?O*Z#|rbC8XZ^(#}<?V4QX`ky}@u&=%Pk9+=y
zd!OIjzx`7E+=6dMe19#Tqv>yO?QLdo{f8|lZ{PK=_n-Ex-Nf9Kugd7B+1f?o93{Dz
z<S*Tr;?-u>8dQ5Qr9Nr0-KN=(V$<`oc-;>l45_%h!@pQ%*UROv=ig7*v-z9yAzOoY
zUyrdFb_uWORj<96p}hZNU!062-)HUUm%oa{D*PH3U%&YJMd=r-s=xpLPTH?$$ofK}
zR%QMkub&n*yTTr)*Dh~(tEQZ~dnMPy%nNLcEp-{LYvg9V6s`Dim!-6${_@uiKmFr9
zER$N!OcqTIv$OjBsc_xpAAS9G^6l?jE(8mdoP84XcII-=MUmg-pOjAjnc7>QYV`W%
zqK%W@J+*l{vp)2KYchkb0q@VPHT_HC@5+0ATwg44zR~5UU)Hy~V&^T&L&b`+r4o|d
z;+k&f*j#4OG3UGelT+&P&2469CO@jLcKutk{TjFFr_i?(nm2vf_v43OSjX=f5{7KL
zi{G&_o?maf`c0<tybViMGu@7!_wxdW_+@?3w0Dt5fA~$f_-TFB{!GRD!hKq?T2Jm<
zP4t&?s|*pkaeYZ)dbZ3w_Ppo2kC=F$jy$K97rptEaA59g>91c-|BsVC{j*&6N$iQd
zeaZDR<P76w7a!Z&b-Xm?-^In&RXNiOCD&IOZJYmo#>Kyn{;#_O4PDv2eR1yV;ejpt
zEo<U_4^DMC*)D__nv%W$_E-JY5AbGWVqg$qVBp|juv%m8<nv3{@HYbk!)8VX27%2F
dR;e&@X2e-IopHB4tu~o=jU(HwRSXOa3;_NC3CjQg

delta 39213
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

diff --git a/wp-includes/js/quicktags.js b/wp-includes/js/quicktags.js
index cb4d2bee0..202c1cbac 100644
--- a/wp-includes/js/quicktags.js
+++ b/wp-includes/js/quicktags.js
@@ -8,7 +8,7 @@
  * settings = {
  *   id : 'my_id',          the HTML ID of the textarea, required
  *   buttons: ''            Comma separated list of the names of the default buttons to show. Optional.
- *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
+ *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close';
  * }
  *
  * The settings can also be a string quicktags_id.
@@ -229,7 +229,7 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
 
 	qt._buttonsInit = function() {
 		var t = this, canvas, name, settings, theButtons, html, inst, ed, id, i, use,
-			defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,';
+			defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,';
 
 		for ( inst in t.instances ) {
 			if ( inst == 0 )
@@ -296,14 +296,14 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
 	 *     QTags.addButton( 'my_id', 'my button', '<span>', '</span>' );
 	 *     QTags.addButton( 'my_id2', 'my button', '<br />' );
 	 *
-	 * @param id string required Button HTML ID
-	 * @param display string required Button's value="..."
-	 * @param arg1 string || function required Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
-	 * @param arg2 string optional Ending tag like "</span>"
-	 * @param access_key string optional Access key for the button.
-	 * @param title string optional Button's title="..."
-	 * @param priority int optional Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
-	 * @param instance string optional Limit the button to a specifric instance of Quicktags, add to all instances if not present.
+	 * @param string id Required. Button HTML ID
+	 * @param string display Required. Button's value="..."
+	 * @param string|function arg1 Required. Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
+	 * @param string arg2 Optional. Ending tag like "</span>"
+	 * @param string access_key Optional. Access key for the button.
+	 * @param string title Optional. Button's title="..."
+	 * @param int priority Optional. Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
+	 * @param string instance Optional. Limit the button to a specifric instance of Quicktags, add to all instances if not present.
 	 * @return mixed null or the button object that is needed for back-compat.
 	 */
 	qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance ) {
@@ -499,36 +499,8 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
 		}
 	};
 
-	// the spell button
-	qt.SpellButton = function() {
-		qt.Button.call(this, 'spell', quicktagsL10n.lookup, '', quicktagsL10n.dictionaryLookup);
-	};
-	qt.SpellButton.prototype = new qt.Button();
-	qt.SpellButton.prototype.callback = function(element, canvas, ed) {
-		var word = '', sel, startPos, endPos;
-
-		if ( document.selection ) {
-			canvas.focus();
-			sel = document.selection.createRange();
-			if ( sel.text.length > 0 ) {
-				word = sel.text;
-			}
-		} else if ( canvas.selectionStart || canvas.selectionStart == '0' ) {
-			startPos = canvas.selectionStart;
-			endPos = canvas.selectionEnd;
-			if ( startPos != endPos ) {
-				word = canvas.value.substring(startPos, endPos);
-			}
-		}
-
-		if ( word === '' ) {
-			word = prompt(quicktagsL10n.wordLookup, '');
-		}
-
-		if ( word !== null && /^\w[\w ]*$/.test(word)) {
-			window.open('http://www.answers.com/' + encodeURIComponent(word));
-		}
-	};
+	// removed
+	qt.SpellButton = function() {};
 
 	// the close tags button
 	qt.CloseButton = function() {
@@ -643,7 +615,6 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
 	edButtons[100] = new qt.TagButton('li','li','\t<li>','</li>\n','l'),
 	edButtons[110] = new qt.TagButton('code','code','<code>','</code>','c'),
 	edButtons[120] = new qt.TagButton('more','more','<!--more-->','','t'),
-	edButtons[130] = new qt.SpellButton(),
 	edButtons[140] = new qt.CloseButton()
 
 })();
diff --git a/wp-includes/js/quicktags.min.js b/wp-includes/js/quicktags.min.js
index 64bf5323e..56b1dbc06 100644
--- a/wp-includes/js/quicktags.min.js
+++ b/wp-includes/js/quicktags.min.js
@@ -1 +1 @@
-var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,o=m.clientWidth||m.offsetWidth,l;if(!o){return}if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}if("rtl"==document.getElementsByTagName("html")[0].dir){o.textdirection=new c.TextDirectionButton();m+=o.textdirection.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){c.Button.call(this,"spell",quicktagsL10n.lookup,"",quicktagsL10n.dictionaryLookup)};c.SpellButton.prototype=new c.Button();c.SpellButton.prototype.callback=function(h,g,d){var j="",i,f,e;if(document.selection){g.focus();i=document.selection.createRange();if(i.text.length>0){j=i.text}}else{if(g.selectionStart||g.selectionStart=="0"){f=g.selectionStart;e=g.selectionEnd;if(f!=e){j=g.value.substring(f,e)}}}if(j===""){j=prompt(quicktagsL10n.wordLookup,"")}if(j!==null&&/^\w[\w ]*$/.test(j)){window.open("http://www.answers.com/"+encodeURIComponent(j))}};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(!f.id||typeof(fullscreen)=="undefined"){return}fullscreen.on()};c.TextDirectionButton=function(){c.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)};c.TextDirectionButton.prototype=new c.Button();c.TextDirectionButton.prototype.callback=function(f,h){var d=("rtl"==document.getElementsByTagName("html")[0].dir),g=h.style.direction;if(!g){g=(d)?"rtl":"ltr"}h.style.direction=("rtl"==g)?"ltr":"rtl";h.focus()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[130]=new c.SpellButton(),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
+var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,o=m.clientWidth||m.offsetWidth,l;if(!o){return}if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}if("rtl"==document.getElementsByTagName("html")[0].dir){o.textdirection=new c.TextDirectionButton();m+=o.textdirection.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(!f.id||typeof(fullscreen)=="undefined"){return}fullscreen.on()};c.TextDirectionButton=function(){c.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)};c.TextDirectionButton.prototype=new c.Button();c.TextDirectionButton.prototype.callback=function(f,h){var d=("rtl"==document.getElementsByTagName("html")[0].dir),g=h.style.direction;if(!g){g=(d)?"rtl":"ltr"}h.style.direction=("rtl"==g)?"ltr":"rtl";h.focus()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
diff --git a/wp-includes/js/swfupload/swfupload.swf b/wp-includes/js/swfupload/swfupload.swf
index 1090a0e019009956fedad060b2e87f65af710da8..7d94bbab5d3d0770bf0f3a7d7d6f438f82465df1 100644
GIT binary patch
literal 13133
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

literal 12767
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
FZvn^{_Ll$v

diff --git a/wp-includes/js/thickbox/thickbox.js b/wp-includes/js/thickbox/thickbox.js
index 995c60fee..e874446b8 100644
--- a/wp-includes/js/thickbox/thickbox.js
+++ b/wp-includes/js/thickbox/thickbox.js
@@ -20,7 +20,7 @@ jQuery(document).ready(function(){
 
 //add thickbox to href & area elements that have a class of .thickbox
 function tb_init(domChunk){
-	jQuery(domChunk).live('click', tb_click);
+	jQuery('body').on('click', domChunk, tb_click);
 }
 
 function tb_click(){
@@ -230,10 +230,8 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
 					jQuery("#TB_window").css({'visibility':'visible'});
 				}else if(url.indexOf('TB_iframe') != -1){
 					tb_position();
-					if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload
-						jQuery("#TB_load").remove();
-						jQuery("#TB_window").css({'visibility':'visible'});
-					}
+					jQuery("#TB_load").remove();
+					jQuery("#TB_window").css({'visibility':'visible'});
 				}else{
 					jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
 						tb_position();
diff --git a/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js
index 2ca33ac0e..517ef4860 100644
--- a/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js
@@ -438,7 +438,7 @@
 			}
 
 			// Add HTML5 video element
-			if (typeItem.name === 'Video' && data.video.sources[0]) {
+			if (typeItem.name === 'Video' && data.video.sources && data.video.sources[0]) {
 				// Create new object element
 				video = new Node('video', 1).attr(tinymce.extend({
 					id : node.attr('id'),
@@ -477,7 +477,7 @@
 			}
 
 			// Add HTML5 audio element
-			if (typeItem.name === 'Audio' && data.video.sources[0]) {
+			if (typeItem.name === 'Audio' && data.video.sources && data.video.sources[0]) {
 				// Create new object element
 				audio = new Node('audio', 1).attr(tinymce.extend({
 					id : node.attr('id'),
@@ -575,10 +575,9 @@
 						type: typeItem.mimes[0]
 					});
 				} else {
-					object.attr({
-						classid: "clsid:" + typeItem.clsids[0],
-						codebase: typeItem.codebase
-					});
+					if ( typeItem.clsids )
+						object.attr('clsid', typeItem.clsids[0]);
+					object.attr('codebase', typeItem.codebase);
 
 					embed = new Node('embed', 1);
 					embed.shortEnded = true;
diff --git a/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js b/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
index e71099a0e..3a87f1e0e 100644
--- a/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
+++ b/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{init:function(f,c){var j=this,e=f.getParam("wordpress_adv_toolbar","toolbar2"),i=0,d,b,h,g;d='<img src="'+c+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+f.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+c+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+f.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){f.settings.wordpress_adv_hidden=0}f.onPostRender.add(function(){var k=f.controlManager.get(e);if(f.getParam("wordpress_adv_hidden",1)&&k){a.hide(k.id);j._resizeIframe(f,e,28)}});f.addCommand("WP_More",function(){f.execCommand("mceInsertContent",0,d)});f.addCommand("WP_Page",function(){f.execCommand("mceInsertContent",0,b)});f.addCommand("WP_Help",function(){f.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});f.addCommand("WP_Adv",function(){var k=f.controlManager,l=k.get(e).id;if("undefined"==l){return}if(a.isHidden(l)){k.setActive("wp_adv",1);a.show(l);j._resizeIframe(f,e,-28);f.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{k.setActive("wp_adv",0);a.hide(l);j._resizeIframe(f,e,28);f.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});f.addCommand("WP_Medialib",function(){if(typeof wp!=="undefined"&&wp.media&&wp.media.editor){wp.media.editor.open(f.id)}});f.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});f.addButton("wp_page",{title:"wordpress.wp_page_desc",image:c+"/img/page.gif",cmd:"WP_Page"});f.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});f.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});f.addButton("add_media",{title:"wordpress.add_media",image:c+"/img/image.gif",cmd:"WP_Medialib"});f.onBeforeExecCommand.add(function(r,q,u,p,l){var x=tinymce.DOM,m,k,t,w,v,s;if("mceFullScreen"==q){if("mce_fullscreen"!=r.id&&x.select("a.thickbox").length){r.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==q||"JustifyRight"==q||"JustifyCenter"==q){m=r.selection.getNode();if(m.nodeName=="IMG"){s=q.substr(7).toLowerCase();v="align"+s;k=r.dom.getParent(m,"dl.wp-caption");t=r.dom.getParent(m,"div.mceTemp");if(k&&t){w=r.dom.hasClass(k,v)?"alignnone":v;k.className=k.className.replace(/align[^ '"]+\s?/g,"");r.dom.addClass(k,w);if(w=="aligncenter"){r.dom.addClass(t,"mceIEcenter")}else{r.dom.removeClass(t,"mceIEcenter")}l.terminate=true;r.execCommand("mceRepaint")}else{if(r.dom.hasClass(m,v)){r.dom.addClass(m,"alignnone")}else{r.dom.removeClass(m,"alignnone")}}}}});f.onInit.add(function(m){var l=m.getParam("body_class",""),k=m.getBody();if(l){l=l.split(" ")}else{l=[]}if(m.getParam("directionality","")=="rtl"){l.push("rtl")}if(tinymce.isIE9){l.push("ie9")}else{if(tinymce.isIE8){l.push("ie8")}else{if(tinymce.isIE7){l.push("ie7")}}}if(m.id!="wp_mce_fullscreen"&&m.id!="mce_fullscreen"){l.push("wp-editor")}else{if(m.id=="mce_fullscreen"){l.push("mce-fullscreen")}}tinymce.each(l,function(n){if(n){m.dom.addClass(k,n)}});m.onNodeChange.add(function(o,n,q){var p;if(q.nodeName=="IMG"){p=o.dom.getParent(q,"dl.wp-caption")}else{if(q.nodeName=="DIV"&&o.dom.hasClass(q,"mceTemp")){p=q.firstChild;if(!o.dom.hasClass(p,"wp-caption")){p=false}}}if(p){if(o.dom.hasClass(p,"alignleft")){n.setActive("justifyleft",1)}else{if(o.dom.hasClass(p,"alignright")){n.setActive("justifyright",1)}else{if(o.dom.hasClass(p,"aligncenter")){n.setActive("justifycenter",1)}}}}});m.onBeforeSetContent.add(function(n,p){if(p.content){p.content=p.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");p.content=p.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){f.onKeyUp.add(function(m,n){var l=n.keyCode||n.charCode;if(l==i){return}if(13==l||8==i||46==i){jQuery(document).triggerHandler("wpcountwords",[m.getContent({format:"raw"})])}i=l})}f.onSaveContent.addToTop(function(k,l){l.content=l.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});f.onSaveContent.add(function(k,l){if(k.getParam("wpautop",true)&&typeof(switchEditors)=="object"){if(k.isHidden()){l.content=l.element.value}else{l.content=switchEditors.pre_wpautop(l.content)}}});j._handleMoreBreak(f,c);g="alt+shift";f.addShortcut(g+"+c","justifycenter_desc","JustifyCenter");f.addShortcut(g+"+r","justifyright_desc","JustifyRight");f.addShortcut(g+"+l","justifyleft_desc","JustifyLeft");f.addShortcut(g+"+j","justifyfull_desc","JustifyFull");f.addShortcut(g+"+q","blockquote_desc","mceBlockQuote");f.addShortcut(g+"+u","bullist_desc","InsertUnorderedList");f.addShortcut(g+"+o","numlist_desc","InsertOrderedList");f.addShortcut(g+"+n","spellchecker.desc","mceSpellCheck");f.addShortcut(g+"+a","link_desc","WP_Link");f.addShortcut(g+"+s","unlink_desc","unlink");f.addShortcut(g+"+m","image_desc","WP_Medialib");f.addShortcut(g+"+z","wordpress.wp_adv_desc","WP_Adv");f.addShortcut(g+"+t","wordpress.wp_more_desc","WP_More");f.addShortcut(g+"+d","striketrough_desc","Strikethrough");f.addShortcut(g+"+h","help_desc","WP_Help");f.addShortcut(g+"+p","wordpress.wp_page_desc","WP_Page");f.addShortcut("ctrl+s","save_desc",function(){if("function"==typeof autosave){autosave()}});if(/\bwpfullscreen\b/.test(f.settings.plugins)){f.addShortcut(g+"+w","wordpress.wp_fullscreen_desc","wpFullScreen")}else{if(/\bfullscreen\b/.test(f.settings.plugins)){f.addShortcut(g+"+g","fullscreen.desc","mceFullScreen")}}f.onInit.add(function(k){tinymce.dom.Event.add(k.getWin(),"scroll",function(l){k.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(k.getBody(),"dragstart",function(l){k.plugins.wordpress._hideButtons()})});f.onBeforeExecCommand.add(function(k,m,l,n){k.plugins.wordpress._hideButtons()});f.onSaveContent.add(function(k,l){k.plugins.wordpress._hideButtons()});f.onMouseDown.add(function(k,l){if(l.target.nodeName!="IMG"){k.plugins.wordpress._hideButtons()}});f.onKeyDown.add(function(k,l){if(l.which==tinymce.VK.DELETE||l.which==tinymce.VK.BACKSPACE){k.plugins.wordpress._hideButtons()}});h=function(k){var l;if(k.target.id=="mceModalBlocker"||k.target.className=="ui-widget-overlay"){for(l in f.windowManager.windows){f.windowManager.close(null,l)}}};tinymce.dom.Event.remove(document.body,"click",h);tinymce.dom.Event.add(document.body,"click",h)},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"})},_hideButtons:function(){var b=tinymce.DOM;b.hide(b.select("#wp_editbtns, #wp_gallerybtns"))},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{init:function(g,d){var k=this,f=g.getParam("wordpress_adv_toolbar","toolbar2"),j=0,e,b,i,h,c;e='<img src="'+d+'/img/trans.gif" class="mce-wp-more mceItemNoResize" title="'+g.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mce-wp-nextpage mceItemNoResize" title="'+g.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){g.settings.wordpress_adv_hidden=0}g.onPostRender.add(function(){var l=g.controlManager.get(f);if(g.getParam("wordpress_adv_hidden",1)&&l){a.hide(l.id);k._resizeIframe(g,f,28)}});g.addCommand("WP_More",function(){g.execCommand("mceInsertContent",0,e)});g.addCommand("WP_Page",function(){g.execCommand("mceInsertContent",0,b)});g.addCommand("WP_Help",function(){g.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});g.addCommand("WP_Adv",function(){var l=g.controlManager,m=l.get(f).id;if("undefined"==m){return}if(a.isHidden(m)){l.setActive("wp_adv",1);a.show(m);k._resizeIframe(g,f,-28);g.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{l.setActive("wp_adv",0);a.hide(m);k._resizeIframe(g,f,28);g.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});g.addCommand("WP_Medialib",function(){if(typeof wp!=="undefined"&&wp.media&&wp.media.editor){wp.media.editor.open(g.id)}});g.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});g.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});g.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});g.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});g.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/image.gif",cmd:"WP_Medialib"});g.onBeforeExecCommand.add(function(s,r,v,q,m){var y=tinymce.DOM,p,l,u,x,w,t;if("mceFullScreen"==r){if("mce_fullscreen"!=s.id&&y.select("a.thickbox").length){s.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==r||"JustifyRight"==r||"JustifyCenter"==r){p=s.selection.getNode();if(p.nodeName=="IMG"){t=r.substr(7).toLowerCase();w="align"+t;l=s.dom.getParent(p,"dl.wp-caption");u=s.dom.getParent(p,"div.mceTemp");if(l&&u){x=s.dom.hasClass(l,w)?"alignnone":w;l.className=l.className.replace(/align[^ '"]+\s?/g,"");s.dom.addClass(l,x);if(x=="aligncenter"){s.dom.addClass(u,"mceIEcenter")}else{s.dom.removeClass(u,"mceIEcenter")}m.terminate=true;s.execCommand("mceRepaint")}else{if(s.dom.hasClass(p,w)){s.dom.addClass(p,"alignnone")}else{s.dom.removeClass(p,"alignnone")}}}}if(tinymce.isWebKit&&("InsertUnorderedList"==r||"InsertOrderedList"==r)){if(!c){c=s.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;}")}s.getDoc().head.appendChild(c)}});g.onExecCommand.add(function(l,n,m,o){if(tinymce.isWebKit&&c&&("InsertUnorderedList"==n||"InsertOrderedList"==n)){l.dom.remove(c)}});g.onInit.add(function(n){var m=n.getParam("body_class",""),l=n.getBody();if(m){m=m.split(" ")}else{m=[]}if(n.getParam("directionality","")=="rtl"){m.push("rtl")}if(tinymce.isIE9){m.push("ie9")}else{if(tinymce.isIE8){m.push("ie8")}else{if(tinymce.isIE7){m.push("ie7")}}}if(n.id!="wp_mce_fullscreen"&&n.id!="mce_fullscreen"){m.push("wp-editor")}else{if(n.id=="mce_fullscreen"){m.push("mce-fullscreen")}}tinymce.each(m,function(o){if(o){n.dom.addClass(l,o)}});n.onNodeChange.add(function(p,o,r){var q;if(r.nodeName=="IMG"){q=p.dom.getParent(r,"dl.wp-caption")}else{if(r.nodeName=="DIV"&&p.dom.hasClass(r,"mceTemp")){q=r.firstChild;if(!p.dom.hasClass(q,"wp-caption")){q=false}}}if(q){if(p.dom.hasClass(q,"alignleft")){o.setActive("justifyleft",1)}else{if(p.dom.hasClass(q,"alignright")){o.setActive("justifyright",1)}else{if(p.dom.hasClass(q,"aligncenter")){o.setActive("justifycenter",1)}}}}});n.onBeforeSetContent.add(function(p,q){if(q.content){q.content=q.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");q.content=q.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){g.onKeyUp.add(function(m,n){var l=n.keyCode||n.charCode;if(l==j){return}if(13==l||8==j||46==j){jQuery(document).triggerHandler("wpcountwords",[m.getContent({format:"raw"})])}j=l})}g.onSaveContent.addToTop(function(l,m){m.content=m.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});g.onSaveContent.add(function(l,m){if(l.isHidden()){m.content=m.element.value}else{if(l.getParam("wpautop",true)&&typeof(switchEditors)=="object"){m.content=switchEditors.pre_wpautop(m.content)}}});k._handleMoreBreak(g,d);h="alt+shift";g.addShortcut(h+"+c","justifycenter_desc","JustifyCenter");g.addShortcut(h+"+r","justifyright_desc","JustifyRight");g.addShortcut(h+"+l","justifyleft_desc","JustifyLeft");g.addShortcut(h+"+j","justifyfull_desc","JustifyFull");g.addShortcut(h+"+q","blockquote_desc","mceBlockQuote");g.addShortcut(h+"+u","bullist_desc","InsertUnorderedList");g.addShortcut(h+"+o","numlist_desc","InsertOrderedList");g.addShortcut(h+"+n","spellchecker.desc","mceSpellCheck");g.addShortcut(h+"+a","link_desc","WP_Link");g.addShortcut(h+"+s","unlink_desc","unlink");g.addShortcut(h+"+m","image_desc","WP_Medialib");g.addShortcut(h+"+z","wordpress.wp_adv_desc","WP_Adv");g.addShortcut(h+"+t","wordpress.wp_more_desc","WP_More");g.addShortcut(h+"+d","striketrough_desc","Strikethrough");g.addShortcut(h+"+h","help_desc","WP_Help");g.addShortcut(h+"+p","wordpress.wp_page_desc","WP_Page");g.addShortcut("ctrl+s","save_desc",function(){if("function"==typeof autosave){autosave()}});if(/\bwpfullscreen\b/.test(g.settings.plugins)){g.addShortcut(h+"+w","wordpress.wp_fullscreen_desc","wpFullScreen")}else{if(/\bfullscreen\b/.test(g.settings.plugins)){g.addShortcut(h+"+g","fullscreen.desc","mceFullScreen")}}g.onInit.add(function(l){tinymce.dom.Event.add(l.getWin(),"scroll",function(m){l.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(l.getBody(),"dragstart",function(m){l.plugins.wordpress._hideButtons()})});g.onBeforeExecCommand.add(function(l,n,m,o){l.plugins.wordpress._hideButtons()});g.onSaveContent.add(function(l,m){l.plugins.wordpress._hideButtons()});g.onMouseDown.add(function(l,m){if(m.target.nodeName!="IMG"){l.plugins.wordpress._hideButtons()}});g.onKeyDown.add(function(l,m){if(m.which==tinymce.VK.DELETE||m.which==tinymce.VK.BACKSPACE){l.plugins.wordpress._hideButtons()}});i=function(l){var m;if(l.target.id=="mceModalBlocker"||l.target.className=="ui-widget-overlay"){for(m in g.windowManager.windows){g.windowManager.close(null,m)}}};tinymce.dom.Event.remove(document.body,"click",i);tinymce.dom.Event.add(document.body,"click",i)},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"})},_hideButtons:function(){var b=tinymce.DOM;b.hide(b.select("#wp_editbtns, #wp_gallerybtns"))},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mce-wp-more mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mce-wp-nextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mce-wp-more")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mce-wp-nextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mce-wp-more')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mce-wp-nextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mce-wp-nextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mce-wp-more"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js
index 9fecbc4c3..653eb7c8b 100644
--- a/wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js
@@ -7,9 +7,9 @@
 
 	tinymce.create('tinymce.plugins.WordPress', {
 		init : function(ed, url) {
-			var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML, closeOnClick, mod_key;
-			moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
-			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
+			var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML, closeOnClick, mod_key, style;
+			moreHTML = '<img src="' + url + '/img/trans.gif" class="mce-wp-more mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
+			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mce-wp-nextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
 			if ( getUserSetting('hidetb', '0') == '1' )
 				ed.settings.wordpress_adv_hidden = 0;
@@ -133,6 +133,18 @@
 						}
 					}
 				}
+
+				if ( tinymce.isWebKit && ( 'InsertUnorderedList' == cmd || 'InsertOrderedList' == cmd ) ) {
+					if ( !style )
+						style = ed.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;}');
+
+					ed.getDoc().head.appendChild( style );
+				}
+			});
+
+			ed.onExecCommand.add( function( ed, cmd, ui, val ) {
+				if ( tinymce.isWebKit && style && ( 'InsertUnorderedList' == cmd || 'InsertOrderedList' == cmd ) )
+					ed.dom.remove( style );
 			});
 
 			ed.onInit.add(function(ed) {
@@ -217,12 +229,11 @@
 			});
 
 			ed.onSaveContent.add(function(ed, o) {
-				if ( ed.getParam('wpautop', true) && typeof(switchEditors) == 'object' ) {
-					if ( ed.isHidden() )
-						o.content = o.element.value;
-					else
-						o.content = switchEditors.pre_wpautop(o.content);
-				}
+				// If editor is hidden, we just want the textarea's value to be saved
+				if ( ed.isHidden() )
+					o.content = o.element.value;
+				else if ( ed.getParam('wpautop', true) && typeof(switchEditors) == 'object' )
+					o.content = switchEditors.pre_wpautop(o.content);
 			});
 
 			/* disable for now
@@ -372,17 +383,17 @@
 		_handleMoreBreak : function(ed, url) {
 			var moreHTML, nextpageHTML;
 
-			moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
-			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
+			moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mce-wp-more mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
+			nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mce-wp-nextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
 			// Display morebreak instead if img in element path
 			ed.onPostRender.add(function() {
 				if (ed.theme.onResolveName) {
 					ed.theme.onResolveName.add(function(th, o) {
 						if (o.node.nodeName == 'IMG') {
-							if ( ed.dom.hasClass(o.node, 'mceWPmore') )
+							if ( ed.dom.hasClass(o.node, 'mce-wp-more') )
 								o.name = 'wpmore';
-							if ( ed.dom.hasClass(o.node, 'mceWPnextpage') )
+							if ( ed.dom.hasClass(o.node, 'mce-wp-nextpage') )
 								o.name = 'wppage';
 						}
 
@@ -402,11 +413,11 @@
 			ed.onPostProcess.add(function(ed, o) {
 				if (o.get)
 					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
-						if (im.indexOf('class="mceWPmore') !== -1) {
+						if (im.indexOf('class="mce-wp-more') !== -1) {
 							var m, moretext = (m = im.match(/alt="(.*?)"/)) ? m[1] : '';
 							im = '<!--more'+moretext+'-->';
 						}
-						if (im.indexOf('class="mceWPnextpage') !== -1)
+						if (im.indexOf('class="mce-wp-nextpage') !== -1)
 							im = '<!--nextpage-->';
 
 						return im;
@@ -415,8 +426,8 @@
 
 			// Set active buttons if user selected pagebreak or more break
 			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setActive('wp_page', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceWPnextpage'));
-				cm.setActive('wp_more', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceWPmore'));
+				cm.setActive('wp_page', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mce-wp-nextpage'));
+				cm.setActive('wp_more', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mce-wp-more'));
 			});
 		}
 	});
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin_src.js
index 4be9c3faf..b301413b2 100644
--- a/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin_src.js
@@ -2,7 +2,7 @@
  * editor_plugin_src.js
  *
  * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
+ * Released under LGPL
  *
  * License: http://tinymce.moxiecode.com/license
  * Contributing: http://tinymce.moxiecode.com/contributing
diff --git a/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js b/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js
index b45a1fd2e..e8c7d1d0a 100644
--- a/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js
+++ b/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js
@@ -6,7 +6,7 @@
  * ------------------------------------------------------------------
  *
  * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
+ * Released under LGPL
  *
  * License: http://tinymce.moxiecode.com/license
  * Contributing: http://tinymce.moxiecode.com/contributing
@@ -155,7 +155,7 @@ var tinyMCEPopup = {
 
 	/**
 	 * Stores the current editor selection for later restoration. This can be useful since some browsers
-	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 * loses its selection if a control element is selected/focused inside the dialogs.
 	 *
 	 * @method storeSelection
 	 */
@@ -165,7 +165,7 @@ var tinyMCEPopup = {
 
 	/**
 	 * Restores any stored selection. This can be useful since some browsers
-	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 * loses its selection if a control element is selected/focused inside the dialogs.
 	 *
 	 * @method restoreSelection
 	 */
@@ -246,7 +246,7 @@ var tinyMCEPopup = {
 	},
 
 	/**
-	 * Creates a alert dialog. Please don't use the blocking behavior of this
+	 * Creates an alert dialog. Please don't use the blocking behavior of this
 	 * native version use the callback method instead then it can be extended.
 	 *
 	 * @method alert
diff --git a/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js
index c1a30759b..4618fcfe6 100644
--- a/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js
@@ -1,7 +1,7 @@
 /**
  * WP Fullscreen TinyMCE plugin
  *
- * Contains code from Moxiecode Systems AB released under LGPL License http://tinymce.moxiecode.com/license
+ * Contains code from Moxiecode Systems AB released under LGPL http://tinymce.moxiecode.com/license
  */
 
 (function() {
diff --git a/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
index 6d18b2a0b..8fb2a4e87 100644
--- a/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
+++ b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c.editor=a;c._createButtons();a.addCommand("WP_Gallery",function(){if(tinymce.isIE){a.selection.moveToBookmark(a.wpGalleryBookmark)}var e=a.selection.getNode(),d=wp.media.gallery,f;if(typeof wp==="undefined"||!wp.media||!wp.media.gallery){return}if(e.nodeName!="IMG"||a.dom.getAttrib(e,"class").indexOf("wpGallery")==-1){return}f=d.edit("["+a.dom.getAttrib(e,"title")+"]");f.state("gallery-edit").on("update",function(g){var h=d.shortcode(g).string().slice(1,-1);a.dom.setAttrib(e,"title",h)})});a.onInit.add(function(d){if("ontouchstart" in window){d.dom.events.add(d.getBody(),"touchstart",function(g){var f=g.target;if(f.nodeName=="IMG"&&d.dom.hasClass(f,"wpGallery")){d.selection.select(f);d.dom.events.cancel(g);d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f,"wp_gallerybtns")}})}});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wpGallery")){d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinymce.activeEditor,d=tinymce.DOM,e,c,f;if(d.get("wp_gallerybtns")){return}f=(window.devicePixelRatio&&window.devicePixelRatio>1)||(window.matchMedia&&window.matchMedia("(min-resolution:130dpi)").matches);d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/edit-2x.png":b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(h){var g=tinymce.activeEditor;g.wpGalleryBookmark=g.selection.getBookmark("simple");g.execCommand("WP_Gallery");g.plugins.wordpress._hideButtons()});c=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/delete-2x.png":b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(i){var g=tinymce.activeEditor,h=g.selection.getNode();if(h.nodeName=="IMG"&&g.dom.hasClass(h,"wpGallery")){g.dom.remove(h);g.execCommand("mceRepaint");g.dom.events.cancel(i)}g.plugins.wordpress._hideButtons()})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c.editor=a;c._createButtons();a.addCommand("WP_Gallery",function(){if(tinymce.isIE){a.selection.moveToBookmark(a.wpGalleryBookmark)}var e=a.selection.getNode(),d=wp.media.gallery,f;if(typeof wp==="undefined"||!wp.media||!wp.media.gallery){return}if(e.nodeName!="IMG"||a.dom.getAttrib(e,"class").indexOf("wp-gallery")==-1){return}f=d.edit("["+a.dom.getAttrib(e,"title")+"]");f.state("gallery-edit").on("update",function(g){var h=d.shortcode(g).string().slice(1,-1);a.dom.setAttrib(e,"title",h)})});a.onInit.add(function(d){if("ontouchstart" in window){d.dom.events.add(d.getBody(),"touchstart",function(g){var f=g.target;if(f.nodeName=="IMG"&&d.dom.hasClass(f,"wp-gallery")){d.selection.select(f);d.dom.events.cancel(g);d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f,"wp_gallerybtns")}})}});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wp-gallery")){d.plugins.wordpress._hideButtons();d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wp-gallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wp-gallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinymce.activeEditor,d=tinymce.DOM,e,c,f;if(d.get("wp_gallerybtns")){return}f=(window.devicePixelRatio&&window.devicePixelRatio>1)||(window.matchMedia&&window.matchMedia("(min-resolution:130dpi)").matches);d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/edit-2x.png":b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(h){var g=tinymce.activeEditor;g.wpGalleryBookmark=g.selection.getBookmark("simple");g.execCommand("WP_Gallery");g.plugins.wordpress._hideButtons()});c=d.add("wp_gallerybtns","img",{src:f?b.url+"/img/delete-2x.png":b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(i){var g=tinymce.activeEditor,h=g.selection.getNode();if(h.nodeName=="IMG"&&g.dom.hasClass(h,"wp-gallery")){g.dom.remove(h);g.execCommand("mceRepaint");g.dom.events.cancel(i)}g.plugins.wordpress._hideButtons()})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js
index 99434628e..986304dc6 100644
--- a/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js
@@ -23,7 +23,7 @@
 					return;
 
 				// Make sure we've selected a gallery node.
-				if ( el.nodeName != 'IMG' || ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 )
+				if ( el.nodeName != 'IMG' || ed.dom.getAttrib(el, 'class').indexOf('wp-gallery') == -1 )
 					return;
 
 				frame = gallery.edit( '[' + ed.dom.getAttrib( el, 'title' ) + ']' );
@@ -40,7 +40,7 @@
 					ed.dom.events.add(ed.getBody(), 'touchstart', function(e){
 						var target = e.target;
 
-						if ( target.nodeName == 'IMG' && ed.dom.hasClass(target, 'wpGallery') ) {
+						if ( target.nodeName == 'IMG' && ed.dom.hasClass(target, 'wp-gallery') ) {
 							ed.selection.select(target);
 							ed.dom.events.cancel(e);
 							ed.plugins.wordpress._hideButtons();
@@ -51,7 +51,7 @@
 			});
 
 			ed.onMouseDown.add(function(ed, e) {
-				if ( e.target.nodeName == 'IMG' && ed.dom.hasClass(e.target, 'wpGallery') ) {
+				if ( e.target.nodeName == 'IMG' && ed.dom.hasClass(e.target, 'wp-gallery') ) {
 					ed.plugins.wordpress._hideButtons();
 					ed.plugins.wordpress._showButtons(e.target, 'wp_gallerybtns');
 				}
@@ -69,7 +69,7 @@
 
 		_do_gallery : function(co) {
 			return co.replace(/\[gallery([^\]]*)\]/g, function(a,b){
-				return '<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(b)+'" />';
+				return '<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wp-gallery mceItem" title="gallery'+tinymce.DOM.encode(b)+'" />';
 			});
 		},
 
@@ -83,7 +83,7 @@
 			return co.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g, function(a,im) {
 				var cls = getAttr(im, 'class');
 
-				if ( cls.indexOf('wpGallery') != -1 )
+				if ( cls.indexOf('wp-gallery') != -1 )
 					return '<p>['+tinymce.trim(getAttr(im, 'title'))+']</p>';
 
 				return a;
@@ -130,7 +130,7 @@
 			tinymce.dom.Event.add(dellButton, 'mousedown', function(e) {
 				var ed = tinymce.activeEditor, el = ed.selection.getNode();
 
-				if ( el.nodeName == 'IMG' && ed.dom.hasClass(el, 'wpGallery') ) {
+				if ( el.nodeName == 'IMG' && ed.dom.hasClass(el, 'wp-gallery') ) {
 					ed.dom.remove(el);
 
 					ed.execCommand('mceRepaint');
diff --git a/wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js
index 6057f5c90..f36e86369 100644
--- a/wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js
+++ b/wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js
@@ -2,7 +2,7 @@
 	tinymce.create('tinymce.plugins.wpLink', {
 		/**
 		 * Initializes the plugin, this will be executed after the plugin has been created.
-		 * This call is done before the editor instance has finished it's initialization so use the onInit event
+		 * This call is done before the editor instance has finished its initialization so use the onInit event
 		 * of the editor instance to intercept that event.
 		 *
 		 * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
diff --git a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
index 598eadf24..c979af99b 100644
--- a/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
+++ b/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
@@ -45,16 +45,6 @@ body {
 	margin: 10px;
 }
 
-br[data-mce-bogus] {
-	line-height: 1em;
-	margin-top: -1em;
-}
-
-br[data-mce-bogus]:only-child {
-	line-height: inherit;
-	margin-top: inherit;
-}
-
 .aligncenter,
 dl.aligncenter {
 	display: block;
@@ -109,8 +99,8 @@ td {
 }
 
 /* Styles for the WordPress plugins */
-img.mceWPnextpage,
-img.mceWPmore {
+img.mce-wp-nextpage,
+img.mce-wp-more {
 	border: 0;
 	border-top: 1px dotted #cccccc;
 	display: block;
@@ -119,15 +109,15 @@ img.mceWPmore {
 	margin: 15px auto 0;
 }
 
-img.mceWPmore {
+img.mce-wp-more {
 	background: transparent url("img/more_bug.gif") no-repeat right top;
 }
 
-img.mceWPnextpage {
+img.mce-wp-nextpage {
     background: transparent url("img/page_bug.gif") no-repeat right top;
 }
 
-img.wpGallery {
+img.wp-gallery {
 	border: 1px dashed #888;
 	background: #f2f8ff url("img/gallery.png") no-repeat scroll center center;
 	width: 99%;
diff --git a/wp-includes/js/tinymce/wp-tinymce-schema.js b/wp-includes/js/tinymce/wp-tinymce-schema.js
index e2a05d879..503a56399 100644
--- a/wp-includes/js/tinymce/wp-tinymce-schema.js
+++ b/wp-includes/js/tinymce/wp-tinymce-schema.js
@@ -4,7 +4,7 @@
  * Duck-punched by WordPress core to support a sane schema superset.
  *
  * Copyright, Moxiecode Systems AB
- * Released under LGPL License.
+ * Released under LGPL
  *
  * License: http://www.tinymce.com/license
  * Contributing: http://www.tinymce.com/contributing
@@ -441,7 +441,7 @@
 		textBlockElementsMap = createLookupTable('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');
 		blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
-						'th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup', textBlockElementsMap);
+						'th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup', textBlockElementsMap);
 
 		// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
 		function patternToRegExp(str) {
diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz
index 1c28903880b50e37eb36fff75823aac44278fbd6..600163f068e29155446db11224fd6b375146e234 100644
GIT binary patch
delta 32554
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
X*I9DhHz~zN<iC95%hJ`H!K@4b$@0%j

delta 32385
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

diff --git a/wp-includes/js/underscore.min.js b/wp-includes/js/underscore.min.js
index e617fe871..88d63a5b4 100644
--- a/wp-includes/js/underscore.min.js
+++ b/wp-includes/js/underscore.min.js
@@ -1,5 +1,5 @@
-//     Underscore.js 1.4.1
+//     Underscore.js 1.4.4
 //     http://underscorejs.org
-//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
 //     Underscore may be freely distributed under the MIT license.
-(function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.push,u=r.slice,a=r.concat,f=r.unshift,l=i.toString,c=i.hasOwnProperty,h=r.forEach,p=r.map,d=r.reduce,v=r.reduceRight,m=r.filter,g=r.every,y=r.some,b=r.indexOf,w=r.lastIndexOf,E=Array.isArray,S=Object.keys,x=s.bind,T=function(e){if(e instanceof T)return e;if(!(this instanceof T))return new T(e);this._wrapped=e};typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=T),exports._=T):e._=T,T.VERSION="1.4.1";var N=T.each=T.forEach=function(e,t,r){if(h&&e.forEach===h)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i<s;i++)if(t.call(r,e[i],i,e)===n)return}else for(var o in e)if(T.has(e,o)&&t.call(r,e[o],o,e)===n)return};T.map=T.collect=function(e,t,n){var r=[];return p&&e.map===p?e.map(t,n):(N(e,function(e,i,s){r[r.length]=t.call(n,e,i,s)}),r)},T.reduce=T.foldl=T.inject=function(e,t,n,r){var i=arguments.length>2;if(d&&e.reduce===d)return r&&(t=T.bind(t,r)),i?e.reduce(t,n):e.reduce(t);N(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.reduceRight=T.foldr=function(e,t,n,r){var i=arguments.length>2;if(v&&e.reduceRight===v)return r&&(t=T.bind(t,r)),arguments.length>2?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=T.keys(e);s=o.length}N(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.find=T.detect=function(e,t,n){var r;return C(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},T.filter=T.select=function(e,t,n){var r=[];return m&&e.filter===m?e.filter(t,n):(N(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},T.reject=function(e,t,n){var r=[];return N(e,function(e,i,s){t.call(n,e,i,s)||(r[r.length]=e)}),r},T.every=T.all=function(e,t,r){t||(t=T.identity);var i=!0;return g&&e.every===g?e.every(t,r):(N(e,function(e,s,o){if(!(i=i&&t.call(r,e,s,o)))return n}),!!i)};var C=T.some=T.any=function(e,t,r){t||(t=T.identity);var i=!1;return y&&e.some===y?e.some(t,r):(N(e,function(e,s,o){if(i||(i=t.call(r,e,s,o)))return n}),!!i)};T.contains=T.include=function(e,t){var n=!1;return b&&e.indexOf===b?e.indexOf(t)!=-1:(n=C(e,function(e){return e===t}),n)},T.invoke=function(e,t){var n=u.call(arguments,2);return T.map(e,function(e){return(T.isFunction(t)?t:e[t]).apply(e,n)})},T.pluck=function(e,t){return T.map(e,function(e){return e[t]})},T.where=function(e,t){return T.isEmpty(t)?[]:T.filter(e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},T.max=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&T.isEmpty(e))return-Infinity;var r={computed:-Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},T.min=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&T.isEmpty(e))return Infinity;var r={computed:Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o<r.computed&&(r={value:e,computed:o})}),r.value},T.shuffle=function(e){var t,n=0,r=[];return N(e,function(e){t=T.random(n++),r[n-1]=r[t],r[t]=e}),r};var k=function(e){return T.isFunction(e)?e:function(t){return t[e]}};T.sortBy=function(e,t,n){var r=k(t);return T.pluck(T.map(e,function(e,t,i){return{value:e,index:t,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index<t.index?-1:1}),"value")};var L=function(e,t,n,r){var i={},s=k(t);return N(e,function(t,o){var u=s.call(n,t,o,e);r(i,u,t)}),i};T.groupBy=function(e,t,n){return L(e,t,n,function(e,t,n){(T.has(e,t)?e[t]:e[t]=[]).push(n)})},T.countBy=function(e,t,n){return L(e,t,n,function(e,t,n){T.has(e,t)||(e[t]=0),e[t]++})},T.sortedIndex=function(e,t,n,r){n=n==null?T.identity:k(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},T.toArray=function(e){return e?e.length===+e.length?u.call(e):T.values(e):[]},T.size=function(e){return e.length===+e.length?e.length:T.keys(e).length},T.first=T.head=T.take=function(e,t,n){return t!=null&&!n?u.call(e,0,t):e[0]},T.initial=function(e,t,n){return u.call(e,0,e.length-(t==null||n?1:t))},T.last=function(e,t,n){return t!=null&&!n?u.call(e,Math.max(e.length-t,0)):e[e.length-1]},T.rest=T.tail=T.drop=function(e,t,n){return u.call(e,t==null||n?1:t)},T.compact=function(e){return T.filter(e,function(e){return!!e})};var A=function(e,t,n){return N(e,function(e){T.isArray(e)?t?o.apply(n,e):A(e,t,n):n.push(e)}),n};T.flatten=function(e,t){return A(e,t,[])},T.without=function(e){return T.difference(e,u.call(arguments,1))},T.uniq=T.unique=function(e,t,n,r){var i=n?T.map(e,n,r):e,s=[],o=[];return N(i,function(n,r){if(t?!r||o[o.length-1]!==n:!T.contains(o,n))o.push(n),s.push(e[r])}),s},T.union=function(){return T.uniq(a.apply(r,arguments))},T.intersection=function(e){var t=u.call(arguments,1);return T.filter(T.uniq(e),function(e){return T.every(t,function(t){return T.indexOf(t,e)>=0})})},T.difference=function(e){var t=a.apply(r,u.call(arguments,1));return T.filter(e,function(e){return!T.contains(t,e)})},T.zip=function(){var e=u.call(arguments),t=T.max(T.pluck(e,"length")),n=new Array(t);for(var r=0;r<t;r++)n[r]=T.pluck(e,""+r);return n},T.object=function(e,t){var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},T.indexOf=function(e,t,n){var r=0,i=e.length;if(n){if(typeof n!="number")return r=T.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(b&&e.indexOf===b)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},T.lastIndexOf=function(e,t,n){var r=n!=null;if(w&&e.lastIndexOf===w)return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},T.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var O=function(){};T.bind=function(t,n){var r,i;if(t.bind===x&&x)return x.apply(t,u.call(arguments,1));if(!T.isFunction(t))throw new TypeError;return i=u.call(arguments,2),r=function(){if(this instanceof r){O.prototype=t.prototype;var e=new O,s=t.apply(e,i.concat(u.call(arguments)));return Object(s)===s?s:e}return t.apply(n,i.concat(u.call(arguments)))}},T.bindAll=function(e){var t=u.call(arguments,1);return t.length==0&&(t=T.functions(e)),N(t,function(t){e[t]=T.bind(e[t],e)}),e},T.memoize=function(e,t){var n={};return t||(t=T.identity),function(){var r=t.apply(this,arguments);return T.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},T.delay=function(e,t){var n=u.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},T.defer=function(e){return T.delay.apply(T,[e,1].concat(u.call(arguments,1)))},T.throttle=function(e,t){var n,r,i,s,o,u,a=T.debounce(function(){o=s=!1},t);return function(){n=this,r=arguments;var f=function(){i=null,o&&(u=e.apply(n,r)),a()};return i||(i=setTimeout(f,t)),s?o=!0:(s=!0,u=e.apply(n,r)),a(),u}},T.debounce=function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},T.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},T.wrap=function(e,t){return function(){var n=[e];return o.apply(n,arguments),t.apply(this,n)}},T.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},T.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},T.keys=S||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)T.has(e,n)&&(t[t.length]=n);return t},T.values=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push(e[n]);return t},T.pairs=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push([n,e[n]]);return t},T.invert=function(e){var t={};for(var n in e)T.has(e,n)&&(t[e[n]]=n);return t},T.functions=T.methods=function(e){var t=[];for(var n in e)T.isFunction(e[n])&&t.push(n);return t.sort()},T.extend=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},T.pick=function(e){var t={},n=a.apply(r,u.call(arguments,1));return N(n,function(n){n in e&&(t[n]=e[n])}),t},T.omit=function(e){var t={},n=a.apply(r,u.call(arguments,1));for(var i in e)T.contains(n,i)||(t[i]=e[i]);return t},T.defaults=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},T.clone=function(e){return T.isObject(e)?T.isArray(e)?e.slice():T.extend({},e):e},T.tap=function(e,t){return t(e),e};var M=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof T&&(e=e._wrapped),t instanceof T&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=M(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(T.isFunction(a)&&a instanceof a&&T.isFunction(f)&&f instanceof f))return!1;for(var c in e)if(T.has(e,c)){o++;if(!(u=T.has(t,c)&&M(e[c],t[c],n,r)))break}if(u){for(c in t)if(T.has(t,c)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};T.isEqual=function(e,t){return M(e,t,[],[])},T.isEmpty=function(e){if(e==null)return!0;if(T.isArray(e)||T.isString(e))return e.length===0;for(var t in e)if(T.has(e,t))return!1;return!0},T.isElement=function(e){return!!e&&e.nodeType===1},T.isArray=E||function(e){return l.call(e)=="[object Array]"},T.isObject=function(e){return e===Object(e)},N(["Arguments","Function","String","Number","Date","RegExp"],function(e){T["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),T.isArguments(arguments)||(T.isArguments=function(e){return!!e&&!!T.has(e,"callee")}),typeof /./!="function"&&(T.isFunction=function(e){return typeof e=="function"}),T.isFinite=function(e){return T.isNumber(e)&&isFinite(e)},T.isNaN=function(e){return T.isNumber(e)&&e!=+e},T.isBoolean=function(e){return e===!0||e===!1||l.call(e)=="[object Boolean]"},T.isNull=function(e){return e===null},T.isUndefined=function(e){return e===void 0},T.has=function(e,t){return c.call(e,t)},T.noConflict=function(){return e._=t,this},T.identity=function(e){return e},T.times=function(e,t,n){for(var r=0;r<e;r++)t.call(n,r)},T.random=function(e,t){return t==null&&(t=e,e=0),e+(0|Math.random()*(t-e+1))};var _={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};_.unescape=T.invert(_.escape);var D={escape:new RegExp("["+T.keys(_.escape).join("")+"]","g"),unescape:new RegExp("("+T.keys(_.unescape).join("|")+")","g")};T.each(["escape","unescape"],function(e){T[e]=function(t){return t==null?"":(""+t).replace(D[e],function(t){return _[e][t]})}}),T.result=function(e,t){if(e==null)return null;var n=e[t];return T.isFunction(n)?n.call(e):n},T.mixin=function(e){N(T.functions(e),function(t){var n=T[t]=e[t];T.prototype[t]=function(){var e=[this._wrapped];return o.apply(e,arguments),F.call(this,n.apply(T,e))}})};var P=0;T.uniqueId=function(e){var t=P++;return e?e+t:t},T.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var H=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},j=/\\|'|\r|\n|\t|\u2028|\u2029/g;T.template=function(e,t,n){n=T.defaults({},n,T.templateSettings);var r=new RegExp([(n.escape||H).source,(n.interpolate||H).source,(n.evaluate||H).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){s+=e.slice(i,u).replace(j,function(e){return"\\"+B[e]}),s+=n?"'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?"'+\n((__t=("+r+"))==null?'':__t)+\n'":o?"';\n"+o+"\n__p+='":"",i=u+t.length}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(n.variable||"obj","_",s)}catch(u){throw u.source=s,u}if(t)return o(t,T);var a=function(e){return o.call(this,e,T)};return a.source="function("+(n.variable||"obj")+"){\n"+s+"}",a},T.chain=function(e){return T(e).chain()};var F=function(e){return this._chain?T(e).chain():e};T.mixin(T),N(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=r[e];T.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],F.call(this,n)}}),N(["concat","join","slice"],function(e){var t=r[e];T.prototype[e]=function(){return F.call(this,t.apply(this._wrapped,arguments))}}),T.extend(T.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file
+(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.4";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2),e=w.isFunction(t);return w.map(n,function(n){return(e?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t,r){return w.isEmpty(t)?r?null:[]:w[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.findWhere=function(n,t){return w.where(n,t,!0)},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var k=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=k(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var F=function(n,t,r,e){var u={},i=k(t||w.identity);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};w.groupBy=function(n,t,r){return F(n,t,r,function(n,t,r){(w.has(n,t)?n[t]:n[t]=[]).push(r)})},w.countBy=function(n,t,r){return F(n,t,r,function(n,t){w.has(n,t)||(n[t]=0),n[t]++})},w.sortedIndex=function(n,t,r,e){r=null==r?w.identity:k(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i},w.bind=function(n,t){if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));var r=o.call(arguments,2);return function(){return n.apply(t,r.concat(o.call(arguments)))}},w.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},w.bindAll=function(n){var t=o.call(arguments,1);return 0===t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var I=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=I(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&I(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return I(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),"function"!=typeof/./&&(w.isFunction=function(n){return"function"==typeof n}),w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return n===void 0},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var M={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};M.unescape=w.invert(M.escape);var S={escape:RegExp("["+w.keys(M.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(M.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(S[n],function(t){return M[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=++N+"";return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var T=/(.)^/,q={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},B=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){var e;r=w.defaults({},r,w.templateSettings);var u=RegExp([(r.escape||T).source,(r.interpolate||T).source,(r.evaluate||T).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(B,function(n){return"\\"+q[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,w);var c=function(n){return e.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},w.chain=function(n){return w(n).chain()};var D=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
\ No newline at end of file
diff --git a/wp-includes/js/wp-auth-check.js b/wp-includes/js/wp-auth-check.js
new file mode 100644
index 000000000..667143de5
--- /dev/null
+++ b/wp-includes/js/wp-auth-check.js
@@ -0,0 +1,106 @@
+// Interim login dialog
+(function($){
+	var wrap, check, next;
+
+	function show() {
+		var parent = $('#wp-auth-check'), form = $('#wp-auth-check-form'), noframe = wrap.find('.wp-auth-fallback-expired'), frame, loaded = false;
+
+		if ( form.length ) {
+			// Add unload confirmation to counter (frame-busting) JS redirects
+			$(window).on( 'beforeunload.wp-auth-check', function(e) {
+				e.originalEvent.returnValue = window.authcheckL10n.beforeunload;
+			});
+
+			frame = $('<iframe id="wp-auth-check-frame" frameborder="0">').attr( 'title', noframe.text() );
+			frame.load( function(e) {
+				var height, body;
+
+				loaded = true;
+
+				try {
+					body = $(this).contents().find('body');
+					height = body.height();
+				} catch(e) {
+					wrap.addClass('fallback');
+					parent.css( 'max-height', '' );
+					form.remove();
+					noframe.focus();
+					return;
+				}
+
+				if ( height ) {
+					if ( body && body.hasClass('interim-login-success') )
+						hide();
+					else
+						parent.css( 'max-height', height + 40 + 'px' );
+				} else if ( ! body || ! body.length ) {
+					// Catch "silent" iframe origin exceptions in WebKit after another page is loaded in the iframe
+					wrap.addClass('fallback');
+					parent.css( 'max-height', '' );
+					form.remove();
+					noframe.focus();
+				}
+			}).attr( 'src', form.data('src') );
+
+			$('#wp-auth-check-form').append( frame );
+		}
+
+		wrap.removeClass('hidden');
+
+		if ( frame ) {
+			frame.focus();
+			// WebKit doesn't throw an error if the iframe fails to load because of "X-Frame-Options: DENY" header.
+			// Wait for 10 sec. and switch to the fallback text.
+			setTimeout( function() {
+				if ( ! loaded ) {
+					wrap.addClass('fallback');
+					form.remove();
+					noframe.focus();
+				}
+			}, 10000 );
+		} else {
+			noframe.focus();
+		}
+	}
+
+	function hide() {
+		$(window).off( 'beforeunload.wp-auth-check' );
+
+		// When on the Edit Post screen, speed up heartbeat after the user logs in to quickly refresh nonces
+		if ( typeof adminpage != 'undefined' && ( adminpage == 'post-php' || adminpage == 'post-new-php' )
+			 && typeof wp != 'undefined' && wp.heartbeat ) {
+
+			wp.heartbeat.interval( 'fast', 1 );
+		}
+
+		wrap.fadeOut( 200, function() {
+			wrap.addClass('hidden').css('display', '');
+			$('#wp-auth-check-frame').remove();
+		});
+	}
+
+	function schedule() {
+		var interval = parseInt( window.authcheckL10n.interval, 10 ) || 180; // in seconds, default 3 min.
+		next = ( new Date() ).getTime() + ( interval * 1000 );
+	}
+
+	$( document ).on( 'heartbeat-tick.wp-auth-check', function( e, data ) {
+		if ( 'wp-auth-check' in data ) {
+			schedule();
+			if ( ! data['wp-auth-check'] && wrap.hasClass('hidden') )
+				show();
+			else if ( data['wp-auth-check'] && ! wrap.hasClass('hidden') )
+				hide();
+		}
+	}).on( 'heartbeat-send.wp-auth-check', function( e, data ) {
+		if ( ( new Date() ).getTime() > next )
+			data['wp-auth-check'] = true;
+	}).ready( function() {
+		schedule();
+		wrap = $('#wp-auth-check-wrap');
+		wrap.find('.wp-auth-check-close').on( 'click', function(e) {
+			hide();
+		});
+	});
+
+}(jQuery));
diff --git a/wp-includes/js/wp-auth-check.min.js b/wp-includes/js/wp-auth-check.min.js
new file mode 100644
index 000000000..0bdbb3f9a
--- /dev/null
+++ b/wp-includes/js/wp-auth-check.min.js
@@ -0,0 +1 @@
+(function(f){var e,b,d;function a(){var j=f("#wp-auth-check"),k=f("#wp-auth-check-form"),h=e.find(".wp-auth-fallback-expired"),l,i=false;if(k.length){f(window).on("beforeunload.wp-auth-check",function(m){m.originalEvent.returnValue=window.authcheckL10n.beforeunload});l=f('<iframe id="wp-auth-check-frame" frameborder="0">').attr("title",h.text());l.load(function(o){var n,m;i=true;try{m=f(this).contents().find("body");n=m.height()}catch(o){e.addClass("fallback");j.css("max-height","");k.remove();h.focus();return}if(n){if(m&&m.hasClass("interim-login-success")){c()}else{j.css("max-height",n+40+"px")}}else{if(!m||!m.length){e.addClass("fallback");j.css("max-height","");k.remove();h.focus()}}}).attr("src",k.data("src"));f("#wp-auth-check-form").append(l)}e.removeClass("hidden");if(l){l.focus();setTimeout(function(){if(!i){e.addClass("fallback");k.remove();h.focus()}},10000)}else{h.focus()}}function c(){f(window).off("beforeunload.wp-auth-check");if(typeof adminpage!="undefined"&&(adminpage=="post-php"||adminpage=="post-new-php")&&typeof wp!="undefined"&&wp.heartbeat){wp.heartbeat.interval("fast",1)}e.fadeOut(200,function(){e.addClass("hidden").css("display","");f("#wp-auth-check-frame").remove()})}function g(){var h=parseInt(window.authcheckL10n.interval,10)||180;d=(new Date()).getTime()+(h*1000)}f(document).on("heartbeat-tick.wp-auth-check",function(i,h){if("wp-auth-check" in h){g();if(!h["wp-auth-check"]&&e.hasClass("hidden")){a()}else{if(h["wp-auth-check"]&&!e.hasClass("hidden")){c()}}}}).on("heartbeat-send.wp-auth-check",function(i,h){if((new Date()).getTime()>d){h["wp-auth-check"]=true}}).ready(function(){g();e=f("#wp-auth-check-wrap");e.find(".wp-auth-check-close").on("click",function(h){c()})})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/wp-backbone.js b/wp-includes/js/wp-backbone.js
new file mode 100644
index 000000000..9e0041d4d
--- /dev/null
+++ b/wp-includes/js/wp-backbone.js
@@ -0,0 +1,384 @@
+window.wp = window.wp || {};
+
+(function ($) {
+	// Create the WordPress Backbone namespace.
+	wp.Backbone = {};
+
+
+	// wp.Backbone.Subviews
+	// --------------------
+	//
+	// A subview manager.
+	wp.Backbone.Subviews = function( view, views ) {
+		this.view = view;
+		this._views = _.isArray( views ) ? { '': views } : views || {};
+	};
+
+	wp.Backbone.Subviews.extend = Backbone.Model.extend;
+
+	_.extend( wp.Backbone.Subviews.prototype, {
+		// ### Fetch all of the subviews
+		//
+		// Returns an array of all subviews.
+		all: function() {
+			return _.flatten( this._views );
+		},
+
+		// ### Get a selector's subviews
+		//
+		// Fetches all subviews that match a given `selector`.
+		//
+		// If no `selector` is provided, it will grab all subviews attached
+		// to the view's root.
+		get: function( selector ) {
+			selector = selector || '';
+			return this._views[ selector ];
+		},
+
+		// ### Get a selector's first subview
+		//
+		// Fetches the first subview that matches a given `selector`.
+		//
+		// If no `selector` is provided, it will grab the first subview
+		// attached to the view's root.
+		//
+		// Useful when a selector only has one subview at a time.
+		first: function( selector ) {
+			var views = this.get( selector );
+			return views && views.length ? views[0] : null;
+		},
+
+		// ### Register subview(s)
+		//
+		// Registers any number of `views` to a `selector`.
+		//
+		// When no `selector` is provided, the root selector (the empty string)
+		// is used. `views` accepts a `Backbone.View` instance or an array of
+		// `Backbone.View` instances.
+		//
+		// ---
+		//
+		// Accepts an `options` object, which has a significant effect on the
+		// resulting behavior.
+		//
+		// `options.silent` &ndash; *boolean, `false`*
+		// > If `options.silent` is true, no DOM modifications will be made.
+		//
+		// `options.add` &ndash; *boolean, `false`*
+		// > Use `Views.add()` as a shortcut for setting `options.add` to true.
+		//
+		// > By default, the provided `views` will replace
+		// any existing views associated with the selector. If `options.add`
+		// is true, the provided `views` will be added to the existing views.
+		//
+		// `options.at` &ndash; *integer, `undefined`*
+		// > When adding, to insert `views` at a specific index, use
+		// `options.at`. By default, `views` are added to the end of the array.
+		set: function( selector, views, options ) {
+			var existing, next;
+
+			if ( ! _.isString( selector ) ) {
+				options  = views;
+				views    = selector;
+				selector = '';
+			}
+
+			options  = options || {};
+			views    = _.isArray( views ) ? views : [ views ];
+			existing = this.get( selector );
+			next     = views;
+
+			if ( existing ) {
+				if ( options.add ) {
+					if ( _.isUndefined( options.at ) ) {
+						next = existing.concat( views );
+					} else {
+						next = existing;
+						next.splice.apply( next, [ options.at, 0 ].concat( views ) );
+					}
+				} else {
+					_.each( next, function( view ) {
+						view.__detach = true;
+					});
+
+					_.each( existing, function( view ) {
+						if ( view.__detach )
+							view.$el.detach();
+						else
+							view.remove();
+					});
+
+					_.each( next, function( view ) {
+						delete view.__detach;
+					});
+				}
+			}
+
+			this._views[ selector ] = next;
+
+			_.each( views, function( subview ) {
+				var constructor = subview.Views || wp.Backbone.Subviews,
+					subviews = subview.views = subview.views || new constructor( subview );
+				subviews.parent   = this.view;
+				subviews.selector = selector;
+			}, this );
+
+			if ( ! options.silent )
+				this._attach( selector, views, _.extend({ ready: this._isReady() }, options ) );
+
+			return this;
+		},
+
+		// ### Add subview(s) to existing subviews
+		//
+		// An alias to `Views.set()`, which defaults `options.add` to true.
+		//
+		// Adds any number of `views` to a `selector`.
+		//
+		// When no `selector` is provided, the root selector (the empty string)
+		// is used. `views` accepts a `Backbone.View` instance or an array of
+		// `Backbone.View` instances.
+		//
+		// Use `Views.set()` when setting `options.add` to `false`.
+		//
+		// Accepts an `options` object. By default, provided `views` will be
+		// inserted at the end of the array of existing views. To insert
+		// `views` at a specific index, use `options.at`. If `options.silent`
+		// is true, no DOM modifications will be made.
+		//
+		// For more information on the `options` object, see `Views.set()`.
+		add: function( selector, views, options ) {
+			if ( ! _.isString( selector ) ) {
+				options  = views;
+				views    = selector;
+				selector = '';
+			}
+
+			return this.set( selector, views, _.extend({ add: true }, options ) );
+		},
+
+		// ### Stop tracking subviews
+		//
+		// Stops tracking `views` registered to a `selector`. If no `views` are
+		// set, then all of the `selector`'s subviews will be unregistered and
+		// removed.
+		//
+		// Accepts an `options` object. If `options.silent` is set, `remove`
+		// will *not* be triggered on the unregistered views.
+		unset: function( selector, views, options ) {
+			var existing;
+
+			if ( ! _.isString( selector ) ) {
+				options = views;
+				views = selector;
+				selector = '';
+			}
+
+			views = views || [];
+
+			if ( existing = this.get( selector ) ) {
+				views = _.isArray( views ) ? views : [ views ];
+				this._views[ selector ] = views.length ? _.difference( existing, views ) : [];
+			}
+
+			if ( ! options || ! options.silent )
+				_.invoke( views, 'remove' );
+
+			return this;
+		},
+
+		// ### Detach all subviews
+		//
+		// Detaches all subviews from the DOM.
+		//
+		// Helps to preserve all subview events when re-rendering the master
+		// view. Used in conjunction with `Views.render()`.
+		detach: function() {
+			$( _.pluck( this.all(), 'el' ) ).detach();
+			return this;
+		},
+
+		// ### Render all subviews
+		//
+		// Renders all subviews. Used in conjunction with `Views.detach()`.
+		render: function() {
+			var options = {
+					ready: this._isReady()
+				};
+
+			_.each( this._views, function( views, selector ) {
+				this._attach( selector, views, options );
+			}, this );
+
+			this.rendered = true;
+			return this;
+		},
+
+		// ### Remove all subviews
+		//
+		// Triggers the `remove()` method on all subviews. Detaches the master
+		// view from its parent. Resets the internals of the views manager.
+		//
+		// Accepts an `options` object. If `options.silent` is set, `unset`
+		// will *not* be triggered on the master view's parent.
+		remove: function( options ) {
+			if ( ! options || ! options.silent ) {
+				if ( this.parent && this.parent.views )
+					this.parent.views.unset( this.selector, this.view, { silent: true });
+				delete this.parent;
+				delete this.selector;
+			}
+
+			_.invoke( this.all(), 'remove' );
+			this._views = [];
+			return this;
+		},
+
+		// ### Replace a selector's subviews
+		//
+		// By default, sets the `$target` selector's html to the subview `els`.
+		//
+		// Can be overridden in subclasses.
+		replace: function( $target, els ) {
+			$target.html( els );
+			return this;
+		},
+
+		// ### Insert subviews into a selector
+		//
+		// By default, appends the subview `els` to the end of the `$target`
+		// selector. If `options.at` is set, inserts the subview `els` at the
+		// provided index.
+		//
+		// Can be overridden in subclasses.
+		insert: function( $target, els, options ) {
+			var at = options && options.at,
+				$children;
+
+			if ( _.isNumber( at ) && ($children = $target.children()).length > at )
+				$children.eq( at ).before( els );
+			else
+				$target.append( els );
+
+			return this;
+		},
+
+		// ### Trigger the ready event
+		//
+		// **Only use this method if you know what you're doing.**
+		// For performance reasons, this method does not check if the view is
+		// actually attached to the DOM. It's taking your word for it.
+		//
+		// Fires the ready event on the current view and all attached subviews.
+		ready: function() {
+			this.view.trigger('ready');
+
+			// Find all attached subviews, and call ready on them.
+			_.chain( this.all() ).map( function( view ) {
+				return view.views;
+			}).flatten().where({ attached: true }).invoke('ready');
+		},
+
+		// #### Internal. Attaches a series of views to a selector.
+		//
+		// Checks to see if a matching selector exists, renders the views,
+		// performs the proper DOM operation, and then checks if the view is
+		// attached to the document.
+		_attach: function( selector, views, options ) {
+			var $selector = selector ? this.view.$( selector ) : this.view.$el,
+				managers;
+
+			// Check if we found a location to attach the views.
+			if ( ! $selector.length )
+				return this;
+
+			managers = _.chain( views ).pluck('views').flatten().value();
+
+			// Render the views if necessary.
+			_.each( managers, function( manager ) {
+				if ( manager.rendered )
+					return;
+
+				manager.view.render();
+				manager.rendered = true;
+			}, this );
+
+			// Insert or replace the views.
+			this[ options.add ? 'insert' : 'replace' ]( $selector, _.pluck( views, 'el' ), options );
+
+			// Set attached and trigger ready if the current view is already
+			// attached to the DOM.
+			_.each( managers, function( manager ) {
+				manager.attached = true;
+
+				if ( options.ready )
+					manager.ready();
+			}, this );
+
+			return this;
+		},
+
+		// #### Internal. Checks if the current view is in the DOM.
+		_isReady: function() {
+			var node = this.view.el;
+			while ( node ) {
+				if ( node === document.body )
+					return true;
+				node = node.parentNode;
+			}
+
+			return false;
+		}
+	});
+
+
+	// wp.Backbone.View
+	// ----------------
+	//
+	// The base view class.
+	wp.Backbone.View = Backbone.View.extend({
+		// The constructor for the `Views` manager.
+		Subviews: wp.Backbone.Subviews,
+
+		constructor: function() {
+			this.views = new this.Subviews( this, this.views );
+			this.on( 'ready', this.ready, this );
+
+			Backbone.View.apply( this, arguments );
+		},
+
+		remove: function() {
+			var result = Backbone.View.prototype.remove.apply( this, arguments );
+
+			// Recursively remove child views.
+			if ( this.views )
+				this.views.remove();
+
+			return result;
+		},
+
+		render: function() {
+			var options;
+
+			if ( this.prepare )
+				options = this.prepare();
+
+			this.views.detach();
+
+			if ( this.template ) {
+				options = options || {};
+				this.trigger( 'prepare', options );
+				this.$el.html( this.template( options ) );
+			}
+
+			this.views.render();
+			return this;
+		},
+
+		prepare: function() {
+			return this.options;
+		},
+
+		ready: function() {}
+	});
+}(jQuery));
diff --git a/wp-includes/js/wp-backbone.min.js b/wp-includes/js/wp-backbone.min.js
new file mode 100644
index 000000000..a96dac9ed
--- /dev/null
+++ b/wp-includes/js/wp-backbone.min.js
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(a){wp.Backbone={};wp.Backbone.Subviews=function(c,b){this.view=c;this._views=_.isArray(b)?{"":b}:b||{}};wp.Backbone.Subviews.extend=Backbone.Model.extend;_.extend(wp.Backbone.Subviews.prototype,{all:function(){return _.flatten(this._views)},get:function(b){b=b||"";return this._views[b]},first:function(b){var c=this.get(b);return c&&c.length?c[0]:null},set:function(b,c,d){var f,e;if(!_.isString(b)){d=c;c=b;b=""}d=d||{};c=_.isArray(c)?c:[c];f=this.get(b);e=c;if(f){if(d.add){if(_.isUndefined(d.at)){e=f.concat(c)}else{e=f;e.splice.apply(e,[d.at,0].concat(c))}}else{_.each(e,function(g){g.__detach=true});_.each(f,function(g){if(g.__detach){g.$el.detach()}else{g.remove()}});_.each(e,function(g){delete g.__detach})}}this._views[b]=e;_.each(c,function(i){var g=i.Views||wp.Backbone.Subviews,h=i.views=i.views||new g(i);h.parent=this.view;h.selector=b},this);if(!d.silent){this._attach(b,c,_.extend({ready:this._isReady()},d))}return this},add:function(b,c,d){if(!_.isString(b)){d=c;c=b;b=""}return this.set(b,c,_.extend({add:true},d))},unset:function(b,c,d){var e;if(!_.isString(b)){d=c;c=b;b=""}c=c||[];if(e=this.get(b)){c=_.isArray(c)?c:[c];this._views[b]=c.length?_.difference(e,c):[]}if(!d||!d.silent){_.invoke(c,"remove")}return this},detach:function(){a(_.pluck(this.all(),"el")).detach();return this},render:function(){var b={ready:this._isReady()};_.each(this._views,function(d,c){this._attach(c,d,b)},this);this.rendered=true;return this},remove:function(b){if(!b||!b.silent){if(this.parent&&this.parent.views){this.parent.views.unset(this.selector,this.view,{silent:true})}delete this.parent;delete this.selector}_.invoke(this.all(),"remove");this._views=[];return this},replace:function(b,c){b.html(c);return this},insert:function(c,f,e){var b=e&&e.at,d;if(_.isNumber(b)&&(d=c.children()).length>b){d.eq(b).before(f)}else{c.append(f)}return this},ready:function(){this.view.trigger("ready");_.chain(this.all()).map(function(b){return b.views}).flatten().where({attached:true}).invoke("ready")},_attach:function(b,c,d){var f=b?this.view.$(b):this.view.$el,e;if(!f.length){return this}e=_.chain(c).pluck("views").flatten().value();_.each(e,function(g){if(g.rendered){return}g.view.render();g.rendered=true},this);this[d.add?"insert":"replace"](f,_.pluck(c,"el"),d);_.each(e,function(g){g.attached=true;if(d.ready){g.ready()}},this);return this},_isReady:function(){var b=this.view.el;while(b){if(b===document.body){return true}b=b.parentNode}return false}});wp.Backbone.View=Backbone.View.extend({Subviews:wp.Backbone.Subviews,constructor:function(){this.views=new this.Subviews(this,this.views);this.on("ready",this.ready,this);Backbone.View.apply(this,arguments)},remove:function(){var b=Backbone.View.prototype.remove.apply(this,arguments);if(this.views){this.views.remove()}return b},render:function(){var b;if(this.prepare){b=this.prepare()}this.views.detach();if(this.template){b=b||{};this.trigger("prepare",b);this.$el.html(this.template(b))}this.views.render();return this},prepare:function(){return this.options},ready:function(){}})}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/wp-util.js b/wp-includes/js/wp-util.js
new file mode 100644
index 000000000..701ec3ea4
--- /dev/null
+++ b/wp-includes/js/wp-util.js
@@ -0,0 +1,105 @@
+window.wp = window.wp || {};
+
+(function ($) {
+	// Check for the utility settings.
+	var settings = typeof _wpUtilSettings === 'undefined' ? {} : _wpUtilSettings;
+
+	/**
+	 * wp.template( id )
+	 *
+	 * Fetches a template by id.
+	 *
+	 * @param  {string} id   A string that corresponds to a DOM element with an id prefixed with "tmpl-".
+	 *                       For example, "attachment" maps to "tmpl-attachment".
+	 * @return {function}    A function that lazily-compiles the template requested.
+	 */
+	wp.template = _.memoize(function ( id ) {
+		var compiled,
+			options = {
+				evaluate:    /<#([\s\S]+?)#>/g,
+				interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
+				escape:      /\{\{([^\}]+?)\}\}(?!\})/g,
+				variable:    'data'
+			};
+
+		return function ( data ) {
+			compiled = compiled || _.template( $( '#tmpl-' + id ).html(), null, options );
+			return compiled( data );
+		};
+	});
+
+	// wp.ajax
+	// ------
+	//
+	// Tools for sending ajax requests with JSON responses and built in error handling.
+	// Mirrors and wraps jQuery's ajax APIs.
+	wp.ajax = {
+		settings: settings.ajax || {},
+
+		/**
+		 * wp.ajax.post( [action], [data] )
+		 *
+		 * Sends a POST request to WordPress.
+		 *
+		 * @param  {string} action The slug of the action to fire in WordPress.
+		 * @param  {object} data   The data to populate $_POST with.
+		 * @return {$.promise}     A jQuery promise that represents the request.
+		 */
+		post: function( action, data ) {
+			return wp.ajax.send({
+				data: _.isObject( action ) ? action : _.extend( data || {}, { action: action })
+			});
+		},
+
+		/**
+		 * wp.ajax.send( [action], [options] )
+		 *
+		 * Sends a POST request to WordPress.
+		 *
+		 * @param  {string} action  The slug of the action to fire in WordPress.
+		 * @param  {object} options The options passed to jQuery.ajax.
+		 * @return {$.promise}      A jQuery promise that represents the request.
+		 */
+		send: function( action, options ) {
+			if ( _.isObject( action ) ) {
+				options = action;
+			} else {
+				options = options || {};
+				options.data = _.extend( options.data || {}, { action: action });
+			}
+
+			options = _.defaults( options || {}, {
+				type:    'POST',
+				url:     wp.ajax.settings.url,
+				context: this
+			});
+
+			return $.Deferred( function( deferred ) {
+				// Transfer success/error callbacks.
+				if ( options.success )
+					deferred.done( options.success );
+				if ( options.error )
+					deferred.fail( options.error );
+
+				delete options.success;
+				delete options.error;
+
+				// Use with PHP's wp_send_json_success() and wp_send_json_error()
+				$.ajax( options ).done( function( response ) {
+					// Treat a response of `1` as successful for backwards
+					// compatibility with existing handlers.
+					if ( response === '1' || response === 1 )
+						response = { success: true };
+
+					if ( _.isObject( response ) && ! _.isUndefined( response.success ) )
+						deferred[ response.success ? 'resolveWith' : 'rejectWith' ]( this, [response.data] );
+					else
+						deferred.rejectWith( this, [response] );
+				}).fail( function() {
+					deferred.rejectWith( this, arguments );
+				});
+			}).promise();
+		}
+	};
+
+}(jQuery));
diff --git a/wp-includes/js/wp-util.min.js b/wp-includes/js/wp-util.min.js
new file mode 100644
index 000000000..d5dbd2ea9
--- /dev/null
+++ b/wp-includes/js/wp-util.min.js
@@ -0,0 +1 @@
+window.wp=window.wp||{};(function(b){var a=typeof _wpUtilSettings==="undefined"?{}:_wpUtilSettings;wp.template=_.memoize(function(e){var d,c={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(f){d=d||_.template(b("#tmpl-"+e).html(),null,c);return d(f)}});wp.ajax={settings:a.ajax||{},post:function(d,c){return wp.ajax.send({data:_.isObject(d)?d:_.extend(c||{},{action:d})})},send:function(d,c){if(_.isObject(d)){c=d}else{c=c||{};c.data=_.extend(c.data||{},{action:d})}c=_.defaults(c||{},{type:"POST",url:wp.ajax.settings.url,context:this});return b.Deferred(function(e){if(c.success){e.done(c.success)}if(c.error){e.fail(c.error)}delete c.success;delete c.error;b.ajax(c).done(function(f){if(f==="1"||f===1){f={success:true}}if(_.isObject(f)&&!_.isUndefined(f.success)){e[f.success?"resolveWith":"rejectWith"](this,[f.data])}else{e.rejectWith(this,[f])}}).fail(function(){e.rejectWith(this,arguments)})}).promise()}}}(jQuery));
\ No newline at end of file
diff --git a/wp-includes/js/wplink.js b/wp-includes/js/wplink.js
index c52d2a197..232fd4e2f 100644
--- a/wp-includes/js/wplink.js
+++ b/wp-includes/js/wplink.js
@@ -71,8 +71,7 @@ var wpLink;
 					width: 480,
 					height: 'auto',
 					modal: true,
-					dialogClass: 'wp-dialog',
-					zIndex: 300000
+					dialogClass: 'wp-dialog'
 				});
 			}
 
@@ -114,8 +113,7 @@ var wpLink;
 				inputs.url.val( ed.dom.getAttrib(e, 'href') );
 				inputs.title.val( ed.dom.getAttrib(e, 'title') );
 				// Set open in new tab.
-				if ( "_blank" == ed.dom.getAttrib(e, 'target') )
-					inputs.openInNewTab.prop('checked', true);
+				inputs.openInNewTab.prop('checked', ( "_blank" == ed.dom.getAttrib( e, 'target' ) ) );
 				// Update save prompt.
 				inputs.submit.val( wpLinkL10n.update );
 
diff --git a/wp-includes/js/wplink.min.js b/wp-includes/js/wplink.min.js
index 9d6a5606a..9c9cf839a 100644
--- a/wp-includes/js/wplink.min.js
+++ b/wp-includes/js/wplink.min.js
@@ -1 +1 @@
-var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog",zIndex:300000})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));if("_blank"==d.dom.getAttrib(g,"target")){b.openInNewTab.prop("checked",true)}b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,k,h,l,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}else{if(typeof g.selectionStart!=="undefined"){k=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(k,h);j=j+selection+"</a>";l=k+j.length;if(k==h){l-="</a>".length}g.value=g.value.substring(0,k)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=l}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.parent().find(".spinner").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
+var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog"})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));b.openInNewTab.prop("checked",("_blank"==d.dom.getAttrib(g,"target")));b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,k,h,l,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}else{if(typeof g.selectionStart!=="undefined"){k=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(k,h);j=j+selection+"</a>";l=k+j.length;if(k==h){l-="</a>".length}g.value=g.value.substring(0,k)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=l}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.parent().find(".spinner").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php
index de76f45aa..f52f8ea2e 100644
--- a/wp-includes/link-template.php
+++ b/wp-includes/link-template.php
@@ -13,7 +13,7 @@
  * @uses apply_filters() Calls 'the_permalink' filter on the permalink string.
  */
 function the_permalink() {
-	echo apply_filters('the_permalink', get_permalink());
+	echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
 }
 
 /**
@@ -232,7 +232,7 @@ function post_permalink( $post_id = 0, $deprecated = '' ) {
  *
  * @since 1.5.0
  *
- * @param mixed $post Optional. Post ID or object.
+ * @param int|object $post Optional. Post ID or object.
  * @param bool $leavename Optional, defaults to false. Whether to keep page name.
  * @param bool $sample Optional, defaults to false. Is it a sample permalink.
  * @return string
@@ -256,7 +256,7 @@ function get_page_link( $post = false, $leavename = false, $sample = false ) {
  * @since 2.1.0
  * @access private
  *
- * @param mixed $post Optional. Post ID or object.
+ * @param int|object $post Optional. Post ID or object.
  * @param bool $leavename Optional. Leave name.
  * @param bool $sample Optional. Sample permalink.
  * @return string
@@ -291,7 +291,7 @@ function _get_page_link( $post = false, $leavename = false, $sample = false ) {
  *
  * @since 2.0.0
  *
- * @param mixed $post Optional. Post ID or object.
+ * @param int|object $post Optional. Post ID or object.
  * @param bool $leavename Optional. Leave name.
  * @return string
  */
@@ -301,9 +301,9 @@ function get_attachment_link( $post = null, $leavename = false ) {
 	$link = false;
 
 	$post = get_post( $post );
+	$parent = ( $post->post_parent > 0 && $post->post_parent != $post->ID ) ? get_post( $post->post_parent ) : false;
 
-	if ( $wp_rewrite->using_permalinks() && ( $post->post_parent > 0 ) && ( $post->post_parent != $post->ID ) ) {
-		$parent = get_post($post->post_parent);
+	if ( $wp_rewrite->using_permalinks() && $parent ) {
 		if ( 'page' == $parent->post_type )
 			$parentlink = _get_page_link( $post->post_parent ); // Ignores page_on_front
 		else
@@ -867,9 +867,10 @@ function get_post_type_archive_feed_link( $post_type, $feed = '' ) {
 
 	if ( ! $link = get_post_type_archive_link( $post_type ) )
 		return false;
+
 	$post_type_obj = get_post_type_object( $post_type );
-	if ( $post_type_obj->rewrite['feeds'] && get_option( 'permalink_structure' ) ) {
-		$link = trailingslashit($link);
+	if ( get_option( 'permalink_structure' ) && is_array( $post_type_obj->rewrite ) && $post_type_obj->rewrite['feeds'] ) {
+		$link = trailingslashit( $link );
 		$link .= 'feed/';
 		if ( $feed != $default_feed )
 			$link .= "$feed/";
@@ -896,7 +897,9 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
 	if ( ! $post = get_post( $id ) )
 		return;
 
-	if ( 'display' == $context )
+	if ( 'revision' === $post->post_type )
+		$action = '';
+	elseif ( 'display' == $context )
 		$action = '&amp;action=edit';
 	else
 		$action = '&action=edit';
@@ -905,7 +908,7 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
 	if ( !$post_type_object )
 		return;
 
-	if ( !current_user_can( $post_type_object->cap->edit_post, $post->ID ) )
+	if ( !current_user_can( 'edit_post', $post->ID ) )
 		return;
 
 	return apply_filters( 'get_edit_post_link', admin_url( sprintf($post_type_object->_edit_link . $action, $post->ID) ), $post->ID, $context );
@@ -959,7 +962,7 @@ function get_delete_post_link( $id = 0, $deprecated = '', $force_delete = false
 	if ( !$post_type_object )
 		return;
 
-	if ( !current_user_can( $post_type_object->cap->delete_post, $post->ID ) )
+	if ( !current_user_can( 'delete_post', $post->ID ) )
 		return;
 
 	$action = ( $force_delete || !EMPTY_TRASH_DAYS ) ? 'delete' : 'trash';
@@ -1174,7 +1177,7 @@ function get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $pr
 	$where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date, $post->post_type), $in_same_cat, $excluded_categories );
 	$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
 
-	$query = "SELECT p.id FROM $wpdb->posts AS p $join $where $sort";
+	$query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort";
 	$query_key = 'adjacent_post_' . md5($query);
 	$result = wp_cache_get($query_key, 'counts');
 	if ( false !== $result ) {
@@ -1217,16 +1220,15 @@ function get_adjacent_post_rel_link($title = '%title', $in_same_cat = false, $ex
 	if ( empty($post) )
 		return;
 
-	if ( empty($post->post_title) )
+	$post_title = the_title_attribute( array( 'echo' => false, 'post' => $post ) );
+
+	if ( empty( $post_title ) )
 		$post_title = $previous ? __('Previous Post') : __('Next Post');
-	else
-		$post_title = $post->post_title;
 
 	$date = mysql2date(get_option('date_format'), $post->post_date);
 
 	$title = str_replace('%title', $post_title, $title);
 	$title = str_replace('%date', $date, $title);
-	$title = apply_filters('the_title', $title, $post->ID);
 
 	$link = $previous ? "<link rel='prev' title='" : "<link rel='next' title='";
 	$link .= esc_attr( $title );
@@ -1449,13 +1451,13 @@ function get_pagenum_link($pagenum = 1, $escape = true ) {
 		}
 
 		$request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request);
-		$request = preg_replace( '|^index\.php|i', '', $request);
+		$request = preg_replace( '|^' . preg_quote( $wp_rewrite->index, '|' ) . '|i', '', $request);
 		$request = ltrim($request, '/');
 
 		$base = trailingslashit( get_bloginfo( 'url' ) );
 
 		if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) )
-			$base .= 'index.php/';
+			$base .= $wp_rewrite->index . '/';
 
 		if ( $pagenum > 1 ) {
 			$request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( $wp_rewrite->pagination_base . "/" . $pagenum, 'paged' );
@@ -1919,7 +1921,7 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
 
 	$url = set_url_scheme( $url, $scheme );
 
-	if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+	if ( $path && is_string( $path ) )
 		$url .= '/' . ltrim( $path, '/' );
 
 	return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
@@ -1971,7 +1973,7 @@ function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
 
 	$url = set_url_scheme( $url, $scheme );
 
-	if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+	if ( $path && is_string( $path ) )
 		$url .= '/' . ltrim( $path, '/' );
 
 	return apply_filters( 'site_url', $url, $path, $scheme, $blog_id );
@@ -2005,7 +2007,7 @@ function admin_url( $path = '', $scheme = 'admin' ) {
 function get_admin_url( $blog_id = null, $path = '', $scheme = 'admin' ) {
 	$url = get_site_url($blog_id, 'wp-admin/', $scheme);
 
-	if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim( $path, '/' );
 
 	return apply_filters( 'admin_url', $url, $path, $blog_id );
@@ -2018,12 +2020,13 @@ function get_admin_url( $blog_id = null, $path = '', $scheme = 'admin' ) {
  * @since 2.6.0
  *
  * @param string $path Optional. Path relative to the includes url.
+ * @param string $scheme Optional. Scheme to give the includes url context.
  * @return string Includes url link with optional path appended.
 */
-function includes_url($path = '') {
-	$url = site_url() . '/' . WPINC . '/';
+function includes_url( $path = '', $scheme = null ) {
+	$url = site_url( '/' . WPINC . '/', $scheme );
 
-	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim($path, '/');
 
 	return apply_filters('includes_url', $url, $path);
@@ -2041,7 +2044,7 @@ function includes_url($path = '') {
 function content_url($path = '') {
 	$url = set_url_scheme( WP_CONTENT_URL );
 
-	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+	if ( $path && is_string( $path ) )
 		$url .= '/' . ltrim($path, '/');
 
 	return apply_filters('content_url', $url, $path);
@@ -2080,7 +2083,7 @@ function plugins_url($path = '', $plugin = '') {
 			$url .= '/' . ltrim($folder, '/');
 	}
 
-	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+	if ( $path && is_string( $path ) )
 		$url .= '/' . ltrim($path, '/');
 
 	return apply_filters('plugins_url', $url, $path, $plugin);
@@ -2111,7 +2114,7 @@ function network_site_url( $path = '', $scheme = null ) {
 	else
 		$url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme );
 
-	if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim( $path, '/' );
 
 	return apply_filters( 'network_site_url', $url, $path, $scheme );
@@ -2147,7 +2150,7 @@ function network_home_url( $path = '', $scheme = null ) {
 	else
 		$url = set_url_scheme( 'http://' . $current_site->domain . $current_site->path, $scheme );
 
-	if ( ! empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim( $path, '/' );
 
 	return apply_filters( 'network_home_url', $url, $path, $orig_scheme);
@@ -2169,7 +2172,7 @@ function network_admin_url( $path = '', $scheme = 'admin' ) {
 
 	$url = network_site_url('wp-admin/network/', $scheme);
 
-	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim($path, '/');
 
 	return apply_filters('network_admin_url', $url, $path);
@@ -2188,7 +2191,7 @@ function network_admin_url( $path = '', $scheme = 'admin' ) {
 function user_admin_url( $path = '', $scheme = 'admin' ) {
 	$url = network_site_url('wp-admin/user/', $scheme);
 
-	if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
+	if ( $path && is_string( $path ) )
 		$url .= ltrim($path, '/');
 
 	return apply_filters('user_admin_url', $url, $path);
diff --git a/wp-includes/load.php b/wp-includes/load.php
index 1742af40d..e1eb15e4b 100644
--- a/wp-includes/load.php
+++ b/wp-includes/load.php
@@ -27,7 +27,6 @@ function wp_unregister_GLOBALS() {
 	$input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
 	foreach ( $input as $k => $v )
 		if ( !in_array( $k, $no_unset ) && isset( $GLOBALS[$k] ) ) {
-			$GLOBALS[$k] = null;
 			unset( $GLOBALS[$k] );
 		}
 }
@@ -254,17 +253,14 @@ function timer_stop( $display = 0, $precision = 3 ) { // if called like timer_st
  * When WP_DEBUG_LOG is true, errors will be logged to wp-content/debug.log.
  * WP_DEBUG_LOG defaults to false.
  *
+ * Errors are never displayed for XML-RPC requests.
+ *
  * @access private
  * @since 3.0.0
  */
 function wp_debug_mode() {
 	if ( WP_DEBUG ) {
-		// E_DEPRECATED is a core PHP constant in PHP 5.3. Don't define this yourself.
-		// The two statements are equivalent, just one is for 5.3+ and for less than 5.3.
-		if ( defined( 'E_DEPRECATED' ) )
-			error_reporting( E_ALL & ~E_DEPRECATED & ~E_STRICT );
-		else
-			error_reporting( E_ALL );
+		error_reporting( E_ALL );
 
 		if ( WP_DEBUG_DISPLAY )
 			ini_set( 'display_errors', 1 );
@@ -278,6 +274,8 @@ function wp_debug_mode() {
 	} else {
 		error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
 	}
+	if ( defined( 'XMLRPC_REQUEST' ) )
+		ini_set( 'display_errors', 0 );
 }
 
 /**
@@ -514,7 +512,8 @@ function wp_get_active_and_valid_plugins() {
  */
 function wp_set_internal_encoding() {
 	if ( function_exists( 'mb_internal_encoding' ) ) {
-		if ( !@mb_internal_encoding( get_option( 'blog_charset' ) ) )
+		$charset = get_option( 'blog_charset' );
+		if ( ! $charset || ! @mb_internal_encoding( $charset ) )
 			mb_internal_encoding( 'UTF-8' );
 	}
 }
diff --git a/wp-includes/locale.php b/wp-includes/locale.php
index bc5037c72..244d08a65 100644
--- a/wp-includes/locale.php
+++ b/wp-includes/locale.php
@@ -327,6 +327,21 @@ class WP_Locale {
 	function is_rtl() {
 		return 'rtl' == $this->text_direction;
 	}
+
+	/**
+	 * Private, unused function to add some date/time formats translated
+	 * on wp-admin/options-general.php to the general POT.
+	 *
+	 * @since 3.6.0
+	 */
+	function _strings_for_pot() {
+		/* translators: localized date format, see http://php.net/date */
+		__( 'F j, Y' );
+		/* translators: localized time format, see http://php.net/date */
+		__( 'g:i a' );
+		/* translators: localized date and time format, see http://php.net/date */
+		__( 'F j, Y g:i a' );
+	}
 }
 
 /**
diff --git a/wp-includes/media-template.php b/wp-includes/media-template.php
index d4840903d..6af7dc5f3 100644
--- a/wp-includes/media-template.php
+++ b/wp-includes/media-template.php
@@ -48,7 +48,7 @@ function wp_print_media_templates() {
 			<h3 class="upload-message">{{ data.message }}</h3>
 		<# } #>
 		<?php if ( ! _device_can_upload() ) : ?>
-			<h3 class="upload-instructions"><?php _e('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.'); ?></h3>
+			<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.'), 'http://wordpress.org/mobile/' ); ?></h3>
 		<?php elseif ( is_multisite() && ! is_upload_space_available() ) : ?>
 			<h3 class="upload-instructions"><?php _e( 'Upload Limit Exceeded' ); ?></h3>
 			<?php do_action( 'upload_ui_over_quota' ); ?>
@@ -205,6 +205,10 @@ function wp_print_media_templates() {
 					<# } #>
 				<# } #>
 
+				<# if ( data.fileLength ) { #>
+					<div class="file-length"><?php _e( 'Length:' ); ?> {{ data.fileLength }}</div>
+				<# } #>
+
 				<# if ( ! data.uploading && data.can.remove ) { #>
 					<a class="delete-attachment" href="#"><?php _e( 'Delete Permanently' ); ?></a>
 				<# } #>
@@ -281,25 +285,47 @@ function wp_print_media_templates() {
 
 		<div class="setting">
 			<label>
-				<span><?php _e('Link To'); ?></span>
+				<# if ( data.model.canEmbed ) { #>
+					<span><?php _e('Embed or Link'); ?></span>
+				<# } else { #>
+					<span><?php _e('Link To'); ?></span>
+				<# } #>
+
 				<select class="link-to"
 					data-setting="link"
-					<# if ( data.userSettings ) { #>
+					<# if ( data.userSettings && ! data.model.canEmbed ) { #>
 						data-user-setting="urlbutton"
 					<# } #>>
 
-					<option value="custom">
-						<?php esc_attr_e('Custom URL'); ?>
+				<# if ( data.model.canEmbed ) { #>
+					<option value="embed" selected>
+						<?php esc_attr_e('Embed Media Player'); ?>
 					</option>
+					<option value="file">
+				<# } else { #>
 					<option value="file" selected>
+				<# } #>
+					<# if ( data.model.canEmbed ) { #>
+						<?php esc_attr_e('Link to Media File'); ?>
+					<# } else { #>
 						<?php esc_attr_e('Media File'); ?>
+					<# } #>
 					</option>
 					<option value="post">
+					<# if ( data.model.canEmbed ) { #>
+						<?php esc_attr_e('Link to Attachment Page'); ?>
+					<# } else { #>
 						<?php esc_attr_e('Attachment Page'); ?>
+					<# } #>
+					</option>
+				<# if ( 'image' === data.type ) { #>
+					<option value="custom">
+						<?php esc_attr_e('Custom URL'); ?>
 					</option>
 					<option value="none">
 						<?php esc_attr_e('None'); ?>
 					</option>
+				<# } #>
 				</select>
 			</label>
 			<input type="text" class="link-to-custom" data-setting="linkUrl" />
@@ -353,6 +379,9 @@ function wp_print_media_templates() {
 				<option value="file">
 					<?php esc_attr_e('Media File'); ?>
 				</option>
+				<option value="none">
+					<?php esc_attr_e('None'); ?>
+				</option>
 			</select>
 		</label>
 
diff --git a/wp-includes/media.php b/wp-includes/media.php
index d664e0735..6111f3637 100644
--- a/wp-includes/media.php
+++ b/wp-includes/media.php
@@ -138,16 +138,16 @@ function image_downsize($id, $size = 'medium') {
 	if ( !wp_attachment_is_image($id) )
 		return false;
 
+	// plugins can use this to provide resize services
+	if ( $out = apply_filters( 'image_downsize', false, $id, $size ) )
+		return $out;
+
 	$img_url = wp_get_attachment_url($id);
 	$meta = wp_get_attachment_metadata($id);
 	$width = $height = 0;
 	$is_intermediate = false;
 	$img_url_basename = wp_basename($img_url);
 
-	// plugins can use this to provide resize services
-	if ( $out = apply_filters('image_downsize', false, $id, $size) )
-		return $out;
-
 	// try for a new style intermediate size
 	if ( $intermediate = image_get_intermediate_size($id, $size) ) {
 		$img_url = str_replace($img_url_basename, $intermediate['file'], $img_url);
@@ -164,7 +164,7 @@ function image_downsize($id, $size = 'medium') {
 			$is_intermediate = true;
 		}
 	}
-	if ( !$width && !$height && isset($meta['width'], $meta['height']) ) {
+	if ( !$width && !$height && isset( $meta['width'], $meta['height'] ) ) {
 		// any other type: use the real image
 		$width = $meta['width'];
 		$height = $meta['height'];
@@ -539,6 +539,7 @@ function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon =
  * @param int $attachment_id Image attachment ID.
  * @param string $size Optional, default is 'thumbnail'.
  * @param bool $icon Optional, default is false. Whether it is an icon.
+ * @param mixed $attr Optional, attributes for the image markup.
  * @return string HTML img element or empty string on failure.
  */
 function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false, $attr = '') {
@@ -644,7 +645,7 @@ function img_caption_shortcode($attr, $content = null) {
 		'align'	=> 'alignnone',
 		'width'	=> '',
 		'caption' => ''
-	), $attr));
+	), $attr, 'caption'));
 
 	if ( 1 > (int) $width || empty($caption) )
 		return $content;
@@ -696,7 +697,7 @@ function gallery_shortcode($attr) {
 	extract(shortcode_atts(array(
 		'order'      => 'ASC',
 		'orderby'    => 'menu_order ID',
-		'id'         => $post->ID,
+		'id'         => $post ? $post->ID : 0,
 		'itemtag'    => 'dl',
 		'icontag'    => 'dt',
 		'captiontag' => 'dd',
@@ -704,7 +705,7 @@ function gallery_shortcode($attr) {
 		'size'       => 'thumbnail',
 		'include'    => '',
 		'exclude'    => ''
-	), $attr));
+	), $attr, 'gallery'));
 
 	$id = intval($id);
 	if ( 'RAND' == $order )
@@ -769,20 +770,31 @@ function gallery_shortcode($attr) {
 			#{$selector} .gallery-caption {
 				margin-left: 0;
 			}
-		</style>
-		<!-- see gallery_shortcode() in wp-includes/media.php -->";
+			/* see gallery_shortcode() in wp-includes/media.php */
+		</style>";
 	$size_class = sanitize_html_class( $size );
 	$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
 	$output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
 
 	$i = 0;
 	foreach ( $attachments as $id => $attachment ) {
-		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
+		if ( ! empty( $attr['link'] ) && 'file' === $attr['link'] )
+			$image_output = wp_get_attachment_link( $id, $size, false, false );
+		elseif ( ! empty( $attr['link'] ) && 'none' === $attr['link'] )
+			$image_output = wp_get_attachment_image( $id, $size, false );
+		else
+			$image_output = wp_get_attachment_link( $id, $size, true, false );
+
+		$image_meta  = wp_get_attachment_metadata( $id );
+
+		$orientation = '';
+		if ( isset( $image_meta['height'], $image_meta['width'] ) )
+			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
 
 		$output .= "<{$itemtag} class='gallery-item'>";
 		$output .= "
-			<{$icontag} class='gallery-icon'>
-				$link
+			<{$icontag} class='gallery-icon {$orientation}'>
+				$image_output
 			</{$icontag}>";
 		if ( $captiontag && trim($attachment->post_excerpt) ) {
 			$output .= "
@@ -802,6 +814,284 @@ function gallery_shortcode($attr) {
 	return $output;
 }
 
+/**
+ * Provide a No-JS Flash fallback as a last resort for audio / video
+ *
+ * @since 3.6.0
+ *
+ * @param string $url
+ * @return string Fallback HTML
+ */
+function wp_mediaelement_fallback( $url ) {
+	return apply_filters( 'wp_mediaelement_fallback', sprintf( '<a href="%1$s">%1$s</a>', esc_url( $url ) ), $url );
+}
+
+/**
+ * Return a filtered list of WP-supported audio formats
+ *
+ * @since 3.6.0
+ * @return array
+ */
+function wp_get_audio_extensions() {
+	return apply_filters( 'wp_audio_extensions', array( 'mp3', 'ogg', 'wma', 'm4a', 'wav' ) );
+}
+
+/**
+ * The Audio shortcode.
+ *
+ * This implements the functionality of the Audio Shortcode for displaying
+ * WordPress mp3s in a post.
+ *
+ * @since 3.6.0
+ *
+ * @param array $attr Attributes of the shortcode.
+ * @return string HTML content to display audio.
+ */
+function wp_audio_shortcode( $attr ) {
+	$post_id = get_post() ? get_the_ID() : 0;
+
+	static $instances = 0;
+	$instances++;
+
+	$audio = null;
+
+	$default_types = wp_get_audio_extensions();
+	$defaults_atts = array(
+		'src'      => '',
+		'loop'     => '',
+		'autoplay' => '',
+		'preload'  => 'none'
+	);
+	foreach ( $default_types as $type )
+		$defaults_atts[$type] = '';
+
+	$atts = shortcode_atts( $defaults_atts, $attr, 'audio' );
+	extract( $atts );
+
+	$primary = false;
+	if ( ! empty( $src ) ) {
+		$type = wp_check_filetype( $src, wp_get_mime_types() );
+		if ( ! in_array( $type['ext'], $default_types ) )
+			return sprintf( '<a class="wp-embedded-audio" href="%s">%s</a>', esc_url( $src ), esc_html( $src ) );
+		$primary = true;
+		array_unshift( $default_types, 'src' );
+	} else {
+		foreach ( $default_types as $ext ) {
+			if ( ! empty( $$ext ) ) {
+				$type = wp_check_filetype( $$ext, wp_get_mime_types() );
+				if ( $type['ext'] === $ext )
+					$primary = true;
+			}
+		}
+	}
+
+	if ( ! $primary ) {
+		$audios = get_attached_media( 'audio', $post_id );
+		if ( empty( $audios ) )
+			return;
+
+		$audio = reset( $audios );
+		$src = wp_get_attachment_url( $audio->ID );
+		if ( empty( $src ) )
+			return;
+
+		array_unshift( $default_types, 'src' );
+	}
+
+	$library = apply_filters( 'wp_audio_shortcode_library', 'mediaelement' );
+	if ( 'mediaelement' === $library && did_action( 'init' ) ) {
+		wp_enqueue_style( 'wp-mediaelement' );
+		wp_enqueue_script( 'wp-mediaelement' );
+	}
+
+	$atts = array(
+		'class'    => apply_filters( 'wp_audio_shortcode_class', 'wp-audio-shortcode' ),
+		'id'       => sprintf( 'audio-%d-%d', $post_id, $instances ),
+		'loop'     => $loop,
+		'autoplay' => $autoplay,
+		'preload'  => $preload,
+		'style'    => 'width: 100%',
+	);
+
+	// These ones should just be omitted altogether if they are blank
+	foreach ( array( 'loop', 'autoplay', 'preload' ) as $a ) {
+		if ( empty( $atts[$a] ) )
+			unset( $atts[$a] );
+	}
+
+	$attr_strings = array();
+	foreach ( $atts as $k => $v ) {
+		$attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
+	}
+
+	$html = '';
+	if ( 'mediaelement' === $library && 1 === $instances )
+		$html .= "<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->\n";
+	$html .= sprintf( '<audio %s controls="controls">', join( ' ', $attr_strings ) );
+
+	$fileurl = '';
+	$source = '<source type="%s" src="%s" />';
+	foreach ( $default_types as $fallback ) {
+		if ( ! empty( $$fallback ) ) {
+			if ( empty( $fileurl ) )
+				$fileurl = $$fallback;
+			$type = wp_check_filetype( $$fallback, wp_get_mime_types() );
+			$html .= sprintf( $source, $type['type'], esc_url( $$fallback ) );
+		}
+	}
+
+	if ( 'mediaelement' === $library )
+		$html .= wp_mediaelement_fallback( $fileurl );
+	$html .= '</audio>';
+
+	return apply_filters( 'wp_audio_shortcode', $html, $atts, $audio, $post_id, $library );
+}
+add_shortcode( 'audio', apply_filters( 'wp_audio_shortcode_handler', 'wp_audio_shortcode' ) );
+
+/**
+ * Return a filtered list of WP-supported video formats
+ *
+ * @since 3.6.0
+ * @return array
+ */
+function wp_get_video_extensions() {
+	return apply_filters( 'wp_video_extensions', array( 'mp4', 'm4v', 'webm', 'ogv', 'wmv', 'flv' ) );
+}
+
+/**
+ * The Video shortcode.
+ *
+ * This implements the functionality of the Video Shortcode for displaying
+ * WordPress mp4s in a post.
+ *
+ * @since 3.6.0
+ *
+ * @param array $attr Attributes of the shortcode.
+ * @return string HTML content to display video.
+ */
+function wp_video_shortcode( $attr ) {
+	global $content_width;
+	$post_id = get_post() ? get_the_ID() : 0;
+
+	static $instances = 0;
+	$instances++;
+
+	$video = null;
+
+	$default_types = wp_get_video_extensions();
+	$defaults_atts = array(
+		'src'      => '',
+		'poster'   => '',
+		'loop'     => '',
+		'autoplay' => '',
+		'preload'  => 'metadata',
+		'height'   => 360,
+		'width'    => empty( $content_width ) ? 640 : $content_width,
+	);
+
+	foreach ( $default_types as $type )
+		$defaults_atts[$type] = '';
+
+	$atts = shortcode_atts( $defaults_atts, $attr, 'video' );
+	extract( $atts );
+
+	$w = $width;
+	$h = $height;
+	if ( is_admin() && $width > 600 )
+		$w = 600;
+	elseif ( ! is_admin() && $w > $defaults_atts['width'] )
+		$w = $defaults_atts['width'];
+
+	if ( $w < $width )
+		$height = round( ( $h * $w ) / $width );
+
+	$width = $w;
+
+	$primary = false;
+	if ( ! empty( $src ) ) {
+		$type = wp_check_filetype( $src, wp_get_mime_types() );
+		if ( ! in_array( $type['ext'], $default_types ) )
+			return sprintf( '<a class="wp-embedded-video" href="%s">%s</a>', esc_url( $src ), esc_html( $src ) );
+		$primary = true;
+		array_unshift( $default_types, 'src' );
+	} else {
+		foreach ( $default_types as $ext ) {
+			if ( ! empty( $$ext ) ) {
+				$type = wp_check_filetype( $$ext, wp_get_mime_types() );
+				if ( $type['ext'] === $ext )
+					$primary = true;
+			}
+		}
+	}
+
+	if ( ! $primary ) {
+		$videos = get_attached_media( 'video', $post_id );
+		if ( empty( $videos ) )
+			return;
+
+		$video = reset( $videos );
+		$src = wp_get_attachment_url( $video->ID );
+		if ( empty( $src ) )
+			return;
+
+		array_unshift( $default_types, 'src' );
+	}
+
+	$library = apply_filters( 'wp_video_shortcode_library', 'mediaelement' );
+	if ( 'mediaelement' === $library && did_action( 'init' ) ) {
+		wp_enqueue_style( 'wp-mediaelement' );
+		wp_enqueue_script( 'wp-mediaelement' );
+	}
+
+	$atts = array(
+		'class'    => apply_filters( 'wp_video_shortcode_class', 'wp-video-shortcode' ),
+		'id'       => sprintf( 'video-%d-%d', $post_id, $instances ),
+		'width'    => absint( $width ),
+		'height'   => absint( $height ),
+		'poster'   => esc_url( $poster ),
+		'loop'     => $loop,
+		'autoplay' => $autoplay,
+		'preload'  => $preload,
+	);
+
+	// These ones should just be omitted altogether if they are blank
+	foreach ( array( 'poster', 'loop', 'autoplay', 'preload' ) as $a ) {
+		if ( empty( $atts[$a] ) )
+			unset( $atts[$a] );
+	}
+
+	$attr_strings = array();
+	foreach ( $atts as $k => $v ) {
+		$attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
+	}
+
+	$html = '';
+	if ( 'mediaelement' === $library && 1 === $instances )
+		$html .= "<!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->\n";
+	$html .= sprintf( '<video %s controls="controls">', join( ' ', $attr_strings ) );
+
+	$fileurl = '';
+	$source = '<source type="%s" src="%s" />';
+	foreach ( $default_types as $fallback ) {
+		if ( ! empty( $$fallback ) ) {
+			if ( empty( $fileurl ) )
+				$fileurl = $$fallback;
+			$type = wp_check_filetype( $$fallback, wp_get_mime_types() );
+			// m4v sometimes shows up as video/mpeg which collides with mp4
+			if ( 'm4v' === $type['ext'] )
+				$type['type'] = 'video/m4v';
+			$html .= sprintf( $source, $type['type'], esc_url( $$fallback ) );
+		}
+	}
+	if ( 'mediaelement' === $library )
+		$html .= wp_mediaelement_fallback( $fileurl );
+	$html .= '</video>';
+
+	$html = sprintf( '<div style="width: %dpx; max-width: 100%%;">%s</div>', $width, $html );
+	return apply_filters( 'wp_video_shortcode', $html, $atts, $video, $post_id, $library );
+}
+add_shortcode( 'video', apply_filters( 'wp_video_shortcode_handler', 'wp_video_shortcode' ) );
+
 /**
  * Display previous image link that has the same post parent.
  *
@@ -1051,7 +1341,7 @@ function wp_oembed_add_provider( $format, $provider, $regex = false ) {
 /**
  * Removes an oEmbed provider.
  *
- * @since 3.5
+ * @since 3.5.0
  * @see WP_oEmbed
  *
  * @uses _wp_oembed_get_object()
@@ -1083,6 +1373,8 @@ function wp_maybe_load_embeds() {
 	if ( ! apply_filters( 'load_default_embeds', true ) )
 		return;
 	wp_embed_register_handler( 'googlevideo', '#http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i', 'wp_embed_handler_googlevideo' );
+	wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 );
+	wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 );
 }
 
 /**
@@ -1110,12 +1402,49 @@ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Audio embed handler callback.
+ *
+ * @since 3.6.0
+ *
+ * @param array $matches The regex matches from the provided regex when calling {@link 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 ) );
+	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 {@link 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 ) );
+	return apply_filters( 'wp_embed_handler_video', $video, $attr, $url, $rawattr );
+}
+
+/**
+ * Converts a shorthand byte value to an integer byte value.
  *
  * @since 2.3.0
  *
- * @param unknown_type $size
- * @return unknown
+ * @param string $size A shorthand byte value.
+ * @return int An integer byte value.
  */
 function wp_convert_hr_to_bytes( $size ) {
 	$size  = strtolower( $size );
@@ -1130,27 +1459,11 @@ function wp_convert_hr_to_bytes( $size ) {
 }
 
 /**
- * {@internal Missing Short Description}}
- *
- * @since 2.3.0
- *
- * @param unknown_type $bytes
- * @return unknown
- */
-function wp_convert_bytes_to_hr( $bytes ) {
-	$units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' );
-	$log   = log( $bytes, 1024 );
-	$power = (int) $log;
-	$size  = pow( 1024, $log - $power );
-	return $size . $units[$power];
-}
-
-/**
- * {@internal Missing Short Description}}
+ * Determine the maximum upload size allowed in php.ini.
  *
  * @since 2.5.0
  *
- * @return unknown
+ * @return int Allowed upload size.
  */
 function wp_max_upload_size() {
 	$u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
@@ -1173,7 +1486,7 @@ function wp_get_image_editor( $path, $args = array() ) {
 	$args['path'] = $path;
 
 	if ( ! isset( $args['mime_type'] ) ) {
-		$file_info  = wp_check_filetype( $args['path'] );
+		$file_info = wp_check_filetype( $args['path'] );
 
 		// If $file_info['type'] is false, then we let the editor attempt to
 		// figure out the file type, rather than forcing a failure based on extension.
@@ -1202,7 +1515,7 @@ function wp_get_image_editor( $path, $args = array() ) {
  * @since 3.5.0
  * @access public
  *
- * @param string|array $args Array of requirements.  Accepts { 'mime_type'=>string, 'methods'=>{string, string, ...} }
+ * @param string|array $args Array of requirements. Accepts { 'mime_type'=>string, 'methods'=>{string, string, ...} }
  * @return boolean true if an eligible editor is found; false otherwise
  */
 function wp_image_editor_supports( $args = array() ) {
@@ -1335,7 +1648,7 @@ function wp_prepare_attachment_for_js( $attachment ) {
 	$response = array(
 		'id'          => $attachment->ID,
 		'title'       => $attachment->post_title,
-		'filename'    => basename( $attachment->guid ),
+		'filename'    => wp_basename( $attachment->guid ),
 		'url'         => $attachment_url,
 		'link'        => get_attachment_link( $attachment->ID ),
 		'alt'         => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
@@ -1412,14 +1725,25 @@ function wp_prepare_attachment_for_js( $attachment ) {
 			}
 		}
 
-		$sizes['full'] = array(
-			'height'      => $meta['height'],
-			'width'       => $meta['width'],
-			'url'         => $attachment_url,
-			'orientation' => $meta['height'] > $meta['width'] ? 'portrait' : 'landscape',
-		);
+		$sizes['full'] = array( 'url' => $attachment_url );
+
+		if ( isset( $meta['height'], $meta['width'] ) ) {
+			$sizes['full']['height'] = $meta['height'];
+			$sizes['full']['width'] = $meta['width'];
+			$sizes['full']['orientation'] = $meta['height'] > $meta['width'] ? 'portrait' : 'landscape';
+		}
 
 		$response = array_merge( $response, array( 'sizes' => $sizes ), $sizes['full'] );
+	} elseif ( $meta && 'video' === $type ) {
+		if ( isset( $meta['width'] ) )
+			$response['width'] = (int) $meta['width'];
+		if ( isset( $meta['height'] ) )
+			$response['height'] = (int) $meta['height'];
+	}
+
+	if ( $meta && ( 'audio' === $type || 'video' === $type ) ) {
+		if ( isset( $meta['length_formatted'] ) )
+			$response['fileLength'] = $meta['length_formatted'];
 	}
 
 	if ( function_exists('get_compat_media_markup') )
@@ -1476,6 +1800,7 @@ function wp_enqueue_media( $args = array() ) {
 			'id' => 0,
 		),
 		'defaultProps' => $props,
+		'embedExts'    => array_merge( wp_get_audio_extensions(), wp_get_video_extensions() ),
 	);
 
 	$post = null;
@@ -1558,3 +1883,147 @@ function wp_enqueue_media( $args = array() ) {
 
 	do_action( 'wp_enqueue_media' );
 }
+
+/**
+ * Retrieve media attached to the passed post
+ *
+ * @since 3.6.0
+ *
+ * @param string $type (Mime) type of media desired
+ * @param mixed $post Post ID or object
+ * @return array Found attachments
+ */
+function get_attached_media( $type, $post = 0 ) {
+	if ( ! $post = get_post( $post ) )
+		return array();
+
+	$args = array(
+		'post_parent' => $post->ID,
+		'post_type' => 'attachment',
+		'post_mime_type' => $type,
+		'posts_per_page' => -1,
+		'orderby' => 'menu_order',
+		'order' => 'ASC',
+	);
+
+	$args = apply_filters( 'get_attached_media_args', $args, $type, $post );
+
+	$children = get_children( $args );
+
+	return (array) apply_filters( 'get_attached_media', $children, $type, $post );
+}
+
+/**
+ * Check the content blob for an <audio>, <video> <object>, <embed>, or <iframe>
+ *
+ * @since 3.6.0
+ *
+ * @param string $content A string which might contain media data.
+ * @param array $types array of media types: 'audio', 'video', 'object', 'embed', or 'iframe'
+ * @return array A list of found HTML media embeds
+ */
+function get_media_embedded_in_content( $content, $types = null ) {
+	$html = array();
+	$allowed_media_types = array( 'audio', 'video', 'object', 'embed', 'iframe' );
+	if ( ! empty( $types ) ) {
+		if ( ! is_array( $types ) )
+			$types = array( $types );
+		$allowed_media_types = array_intersect( $allowed_media_types, $types );
+	}
+
+	foreach ( $allowed_media_types as $tag ) {
+		if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) {
+			$html[] = $matches[0];
+		}
+	}
+
+	return $html;
+}
+
+/**
+ * Retrieve galleries from the passed post's content
+ *
+ * @since 3.6.0
+ *
+ * @param mixed $post Optional. Post ID or object.
+ * @param boolean $html Whether to return HTML or data in the array
+ * @return array A list of arrays, each containing gallery data and srcs parsed
+ *		from the expanded shortcode
+ */
+function get_post_galleries( $post, $html = true ) {
+	if ( ! $post = get_post( $post ) )
+		return array();
+
+	if ( ! has_shortcode( $post->post_content, 'gallery' ) )
+		return array();
+
+	$galleries = array();
+	if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $post->post_content, $matches, PREG_SET_ORDER ) ) {
+		foreach ( $matches as $shortcode ) {
+			if ( 'gallery' === $shortcode[2] ) {
+				$srcs = array();
+				$count = 1;
+
+				$gallery = do_shortcode_tag( $shortcode );
+				if ( $html ) {
+					$galleries[] = $gallery;
+				} else {
+					preg_match_all( '#src=([\'"])(.+?)\1#is', $gallery, $src, PREG_SET_ORDER );
+					if ( ! empty( $src ) ) {
+						foreach ( $src as $s )
+							$srcs[] = $s[2];
+					}
+
+					$data = shortcode_parse_atts( $shortcode[3] );
+					$data['src'] = array_values( array_unique( $srcs ) );
+					$galleries[] = $data;
+				}
+			}
+		}
+	}
+
+	return apply_filters( 'get_post_galleries', $galleries, $post );
+}
+
+/**
+ * Check a specified post's content for gallery and, if present, return the first
+ *
+ * @since 3.6.0
+ *
+ * @param mixed $post Optional. Post ID or object.
+ * @param boolean $html Whether to return HTML or data
+ * @return string|array Gallery data and srcs parsed from the expanded shortcode
+ */
+function get_post_gallery( $post = 0, $html = true ) {
+	$galleries = get_post_galleries( $post, $html );
+	$gallery = reset( $galleries );
+
+	return apply_filters( 'get_post_gallery', $gallery, $post, $galleries );
+}
+
+/**
+ * Retrieve the image srcs from galleries from a post's content, if present
+ *
+ * @since 3.6.0
+ *
+ * @param mixed $post Optional. Post ID or object.
+ * @return array A list of lists, each containing image srcs parsed
+ *		from an expanded shortcode
+ */
+function get_post_galleries_images( $post = 0 ) {
+	$galleries = get_post_galleries( $post, false );
+	return wp_list_pluck( $galleries, 'src' );
+}
+
+/**
+ * Check a post's content for galleries and return the image srcs for the first found gallery
+ *
+ * @since 3.6.0
+ *
+ * @param mixed $post Optional. Post ID or object.
+ * @return array A list of a gallery's image srcs in order
+ */
+function get_post_gallery_images( $post = 0 ) {
+	$gallery = get_post_gallery( $post, false );
+	return empty( $gallery['src'] ) ? array() : $gallery['src'];
+}
diff --git a/wp-includes/meta.php b/wp-includes/meta.php
index 9db1de30c..22b03157a 100644
--- a/wp-includes/meta.php
+++ b/wp-includes/meta.php
@@ -26,7 +26,7 @@
  * @param bool $unique Optional, default is false. Whether the specified metadata key should be
  * 		unique for the object. If true, and the object already has a value for the specified
  * 		metadata key, no change will be made
- * @return bool The meta ID on successful update, false on failure.
+ * @return int|bool The meta ID on successful update, false on failure.
  */
 function add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique = false) {
 	if ( !$meta_type || !$meta_key )
@@ -40,11 +40,11 @@ function add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique =
 
 	global $wpdb;
 
-	$column = esc_sql($meta_type . '_id');
+	$column = sanitize_key($meta_type . '_id');
 
 	// expected_slashed ($meta_key)
-	$meta_key = stripslashes($meta_key);
-	$meta_value = stripslashes_deep($meta_value);
+	$meta_key = wp_unslash($meta_key);
+	$meta_value = wp_unslash($meta_value);
 	$meta_value = sanitize_meta( $meta_key, $meta_value, $meta_type );
 
 	$check = apply_filters( "add_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $unique );
@@ -110,13 +110,13 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v
 
 	global $wpdb;
 
-	$column = esc_sql($meta_type . '_id');
+	$column = sanitize_key($meta_type . '_id');
 	$id_column = 'user' == $meta_type ? 'umeta_id' : 'meta_id';
 
 	// expected_slashed ($meta_key)
-	$meta_key = stripslashes($meta_key);
+	$meta_key = wp_unslash($meta_key);
 	$passed_value = $meta_value;
-	$meta_value = stripslashes_deep($meta_value);
+	$meta_value = wp_unslash($meta_value);
 	$meta_value = sanitize_meta( $meta_key, $meta_value, $meta_type );
 
 	$check = apply_filters( "update_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $prev_value );
@@ -193,11 +193,11 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $d
 
 	global $wpdb;
 
-	$type_column = esc_sql($meta_type . '_id');
+	$type_column = sanitize_key($meta_type . '_id');
 	$id_column = 'user' == $meta_type ? 'umeta_id' : 'meta_id';
 	// expected_slashed ($meta_key)
-	$meta_key = stripslashes($meta_key);
-	$meta_value = stripslashes_deep($meta_value);
+	$meta_key = wp_unslash($meta_key);
+	$meta_value = wp_unslash($meta_value);
 
 	$check = apply_filters( "delete_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $delete_all );
 	if ( null !== $check )
@@ -397,7 +397,7 @@ function update_metadata_by_mid( $meta_type, $meta_id, $meta_value, $meta_key =
 	if ( ! $table = _get_meta_table( $meta_type ) )
 		return false;
 
-	$column = esc_sql($meta_type . '_id');
+	$column = sanitize_key($meta_type . '_id');
 	$id_column = 'user' == $meta_type ? 'umeta_id' : 'meta_id';
 
 	// Fetch the meta and go on if it's found.
@@ -478,7 +478,7 @@ function delete_metadata_by_mid( $meta_type, $meta_id ) {
 		return false;
 
 	// object and id columns
-	$column = esc_sql($meta_type . '_id');
+	$column = sanitize_key($meta_type . '_id');
 	$id_column = 'user' == $meta_type ? 'umeta_id' : 'meta_id';
 
 	// Fetch the meta and go on if it's found.
@@ -528,7 +528,7 @@ function update_meta_cache($meta_type, $object_ids) {
 	if ( ! $table = _get_meta_table($meta_type) )
 		return false;
 
-	$column = esc_sql($meta_type . '_id');
+	$column = sanitize_key($meta_type . '_id');
 
 	global $wpdb;
 
@@ -678,7 +678,7 @@ class WP_Meta_Query {
 		}
 
 		// WP_Query sets 'meta_value' = '' by default
-		if ( isset( $qv[ 'meta_value' ] ) && '' !== $qv[ 'meta_value' ] )
+		if ( isset( $qv[ 'meta_value' ] ) && '' !== $qv[ 'meta_value' ] && ( ! is_array( $qv[ 'meta_value' ] ) || $qv[ 'meta_value' ] ) )
 			$meta_query[0]['value'] = $qv[ 'meta_value' ];
 
 		if ( !empty( $qv['meta_query'] ) && is_array( $qv['meta_query'] ) ) {
@@ -706,7 +706,7 @@ class WP_Meta_Query {
 		if ( ! $meta_table = _get_meta_table( $type ) )
 			return false;
 
-		$meta_id_column = esc_sql( $type . '_id' );
+		$meta_id_column = sanitize_key( $type . '_id' );
 
 		$join = array();
 		$where = array();
@@ -714,6 +714,14 @@ class WP_Meta_Query {
 		$key_only_queries = array();
 		$queries = array();
 
+		// Split out the queries with empty arrays as value
+		foreach ( $this->queries as $k => $q ) {
+			if ( isset( $q['value'] ) && is_array( $q['value'] ) && empty( $q['value'] ) ) {
+				$key_only_queries[$k] = $q;
+				unset( $this->queries[$k] );
+			}
+		}		
+		
 		// Split out the meta_key only queries (we can only do this for OR)
 		if ( 'OR' == $this->relation ) {
 			foreach ( $this->queries as $k => $q ) {
diff --git a/wp-includes/ms-blogs.php b/wp-includes/ms-blogs.php
index a1f70a40b..95ddedb7f 100644
--- a/wp-includes/ms-blogs.php
+++ b/wp-includes/ms-blogs.php
@@ -43,14 +43,12 @@ function get_blogaddress_by_id( $blog_id ) {
  * @return string
  */
 function get_blogaddress_by_name( $blogname ) {
-	global $current_site;
-
 	if ( is_subdomain_install() ) {
 		if ( $blogname == 'main' )
 			$blogname = 'www';
 		$url = rtrim( network_home_url(), '/' );
 		if ( !empty( $blogname ) )
-			$url = preg_replace( '|^([^\.]+://)|', '$1' . $blogname . '.', $url );
+			$url = preg_replace( '|^([^\.]+://)|', "\${1}" . $blogname . '.', $url );
 	} else {
 		$url = network_home_url( $blogname );
 	}
@@ -84,7 +82,7 @@ function get_blogaddress_by_domain( $domain, $path ) {
 }
 
 /**
- * Given a blog's (subdomain or directory) slug, retrieve it's id.
+ * Given a blog's (subdomain or directory) slug, retrieve its id.
  *
  * @since MU
  *
@@ -254,6 +252,16 @@ function get_blog_details( $fields = null, $get_all = true ) {
 function refresh_blog_details( $blog_id ) {
 	$blog_id = (int) $blog_id;
 	$details = get_blog_details( $blog_id, false );
+	if ( ! $details ) {
+		// Make sure clean_blog_cache() gets the blog ID
+		// when the blog has been previously cached as
+		// non-existent.
+		$details = (object) array(
+			'blog_id' => $blog_id,
+			'domain' => null,
+			'path' => null
+		);
+	}
 
 	clean_blog_cache( $details );
 
@@ -461,7 +469,7 @@ function delete_blog_option( $id, $option ) {
  * @param int $id The blog id
  * @param string $option The option key
  * @param mixed $value The option value
- * @return bool True on success, false on failrue.
+ * @return bool True on success, false on failure.
  */
 function update_blog_option( $id, $option, $value, $deprecated = null ) {
 	$id = (int) $id;
@@ -687,6 +695,8 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
 		( $value == 1 ) ? do_action( 'archive_blog', $blog_id ) : do_action( 'unarchive_blog', $blog_id );
 	elseif ( 'deleted' == $pref )
 		( $value == 1 ) ? do_action( 'make_delete_blog', $blog_id ) : do_action( 'make_undelete_blog', $blog_id );
+	elseif ( 'public' == $pref )
+		do_action( 'update_blog_public', $blog_id, $value ); // Moved here from update_blog_public().
 
 	return $value;
 }
diff --git a/wp-includes/ms-default-filters.php b/wp-includes/ms-default-filters.php
index 34dc151c4..c4c223a4f 100644
--- a/wp-includes/ms-default-filters.php
+++ b/wp-includes/ms-default-filters.php
@@ -63,4 +63,7 @@ remove_filter( 'option_siteurl', '_config_wp_siteurl' );
 remove_filter( 'option_home',    '_config_wp_home'    );
 
 // If the network upgrade hasn't run yet, assume ms-files.php rewriting is used.
-add_filter( 'default_site_option_ms_files_rewriting', '__return_true' );
\ No newline at end of file
+add_filter( 'default_site_option_ms_files_rewriting', '__return_true' );
+
+// Whitelist multisite domains for HTTP requests
+add_filter( 'http_request_host_is_external', 'ms_allowed_http_request_hosts', 20, 2 );
diff --git a/wp-includes/ms-deprecated.php b/wp-includes/ms-deprecated.php
index 9b9c43f9d..9c6cad456 100644
--- a/wp-includes/ms-deprecated.php
+++ b/wp-includes/ms-deprecated.php
@@ -270,3 +270,32 @@ function wpmu_admin_redirect_add_updated_param( $url = '' ) {
 	}
 	return $url;
 }
+
+/**
+ * Get a numeric user ID from either an email address or a login.
+ *
+ * A numeric string is considered to be an existing user ID
+ * and is simply returned as such.
+ *
+ * @since MU
+ * @deprecated 3.6.0
+ * @deprecated Use get_user_by()
+ * @uses get_user_by()
+ *
+ * @param string $string Either an email address or a login.
+ * @return int
+ */
+function get_user_id_from_string( $string ) {
+	_deprecated_function( __FUNCTION__, '3.6', 'get_user_by()' );
+
+	if ( is_email( $string ) )
+		$user = get_user_by( 'email', $string );
+	elseif ( is_numeric( $string ) )
+		return $string;
+	else
+		$user = get_user_by( 'login', $string );
+
+	if ( $user )
+		return $user->ID;
+	return 0;
+}
diff --git a/wp-includes/ms-files.php b/wp-includes/ms-files.php
index 100ba2c6d..de6d15dbd 100644
--- a/wp-includes/ms-files.php
+++ b/wp-includes/ms-files.php
@@ -57,7 +57,7 @@ header( "Last-Modified: $last_modified GMT" );
 header( 'ETag: ' . $etag );
 header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 100000000 ) . ' GMT' );
 
-// Support for Conditional GET
+// Support for Conditional GET - use stripslashes to avoid formatting.php dependency
 $client_etag = isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) ? stripslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) : false;
 
 if( ! isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) )
diff --git a/wp-includes/ms-functions.php b/wp-includes/ms-functions.php
index 0f6794b55..1037a9f38 100644
--- a/wp-includes/ms-functions.php
+++ b/wp-includes/ms-functions.php
@@ -279,9 +279,6 @@ function remove_user_from_blog($user_id, $blog_id = '', $reassign = '') {
  * @return int The ID of the newly created blog
  */
 function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
-	$domain			= addslashes( $domain );
-	$weblog_title	= addslashes( $weblog_title );
-
 	if ( empty($path) )
 		$path = '/';
 
@@ -463,9 +460,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
 		$errors->add( 'user_name', __( 'Sorry, usernames may not contain the character &#8220;_&#8221;!' ) );
 
 	// all numeric?
-	$match = array();
-	preg_match( '/[0-9]*/', $user_name, $match );
-	if ( $match[0] == $user_name )
+	if ( preg_match( '/^[0-9]*$/', $user_name ) )
 		$errors->add('user_name', __('Sorry, usernames must have letters too!'));
 
 	if ( !is_email( $user_email ) )
@@ -497,9 +492,6 @@ function wpmu_validate_user_signup($user_name, $user_email) {
 			$wpdb->delete( $wpdb->signups, array( 'user_login' => $user_name ) );
 		else
 			$errors->add('user_name', __('That username is currently reserved but may be available in a couple of days.'));
-
-		if ( $signup->active == 0 && $signup->user_email == $user_email )
-			$errors->add('user_email_used', __('username and email used'));
 	}
 
 	$signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE user_email = %s", $user_email) );
@@ -570,7 +562,7 @@ 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 )
+	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.
@@ -578,14 +570,12 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
 		$errors->add( 'blogname', __( 'Sorry, you may not use that site name.' ) );
 
 	// all numeric?
-	$match = array();
-	preg_match( '/[0-9]*/', $blogname, $match );
-	if ( $match[0] == $blogname )
+	if ( preg_match( '/^[0-9]*$/', $blogname ) )
 		$errors->add('blogname', __('Sorry, site names must have letters too!'));
 
 	$blogname = apply_filters( 'newblogname', $blogname );
 
-	$blog_title = stripslashes(  $blog_title );
+	$blog_title = wp_unslash(  $blog_title );
 
 	if ( empty( $blog_title ) )
 		$errors->add('blog_title', __( 'Please enter a site title.' ) );
@@ -639,9 +629,6 @@ function wpmu_signup_blog($domain, $path, $title, $user, $user_email, $meta = ''
 
 	$key = substr( md5( time() . rand() . $domain ), 0, 16 );
 	$meta = serialize($meta);
-	$domain = $wpdb->escape($domain);
-	$path = $wpdb->escape($path);
-	$title = $wpdb->escape($title);
 
 	$wpdb->insert( $wpdb->signups, array(
 		'domain' => $domain,
@@ -820,7 +807,6 @@ function wpmu_signup_user_notification($user, $user_email, $key, $meta = '') {
  * @uses wp_generate_password()
  * @uses wpmu_welcome_user_notification()
  * @uses add_user_to_blog()
- * @uses add_new_user_to_blog()
  * @uses wpmu_create_user()
  * @uses wpmu_create_blog()
  * @uses wpmu_welcome_notification()
@@ -844,14 +830,12 @@ function wpmu_activate_signup($key) {
 	}
 
 	$meta = maybe_unserialize($signup->meta);
-	$user_login = $wpdb->escape($signup->user_login);
-	$user_email = $wpdb->escape($signup->user_email);
 	$password = wp_generate_password( 12, false );
 
-	$user_id = username_exists($user_login);
+	$user_id = username_exists($signup->user_login);
 
 	if ( ! $user_id )
-		$user_id = wpmu_create_user($user_login, $password, $user_email);
+		$user_id = wpmu_create_user($signup->user_login, $password, $signup->user_email);
 	else
 		$user_already_exists = true;
 
@@ -866,11 +850,9 @@ 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);
-
-		add_new_user_to_blog( $user_id, $user_email, $meta );
-		do_action('wpmu_activate_user', $user_id, $password, $meta);
-		return array('user_id' => $user_id, 'password' => $password, 'meta' => $meta);
+		wpmu_welcome_user_notification( $user_id, $password, $meta );
+		do_action( 'wpmu_activate_user', $user_id, $password, $meta );
+		return array( 'user_id' => $user_id, 'password' => $password, 'meta' => $meta );
 	}
 
 	$blog_id = wpmu_create_blog( $signup->domain, $signup->path, $signup->title, $user_id, $meta, $wpdb->siteid );
@@ -909,15 +891,17 @@ function wpmu_activate_signup($key) {
  * @param string $email The new user's email address.
  * @return mixed Returns false on failure, or int $user_id on success
  */
-function wpmu_create_user( $user_name, $password, $email) {
+function wpmu_create_user( $user_name, $password, $email ) {
 	$user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
 
 	$user_id = wp_create_user( $user_name, $password, $email );
-	if ( is_wp_error($user_id) )
+	if ( is_wp_error( $user_id ) )
 		return false;
 
+	$user = new WP_User( $user_id );
+
 	// Newly created users have no roles or caps until they are added to a blog.
-	delete_user_option( $user_id, 'capabilities' );
+	delete_user_option( $user_id, $user->cap_key );
 	delete_user_option( $user_id, 'user_level' );
 
 	do_action( 'wpmu_new_user', $user_id );
@@ -1028,7 +1012,7 @@ function newblog_notify_siteadmin( $blog_id, $deprecated = '' ) {
 URL: %2$s
 Remote IP: %3$s
 
-Disable these notifications: %4$s' ), $blogname, $siteurl, $_SERVER['REMOTE_ADDR'], $options_site_url);
+Disable these notifications: %4$s' ), $blogname, $siteurl, wp_unslash( $_SERVER['REMOTE_ADDR'] ), $options_site_url);
 	$msg = apply_filters( 'newblog_notify_siteadmin', $msg );
 
 	wp_mail( $email, sprintf( __( 'New Site Registration: %s' ), $siteurl ), $msg );
@@ -1062,7 +1046,7 @@ function newuser_notify_siteadmin( $user_id ) {
 	$msg = sprintf(__('New User: %1$s
 Remote IP: %2$s
 
-Disable these notifications: %3$s'), $user->user_login, $_SERVER['REMOTE_ADDR'], $options_site_url);
+Disable these notifications: %3$s'), $user->user_login, wp_unslash( $_SERVER['REMOTE_ADDR'] ), $options_site_url);
 
 	$msg = apply_filters( 'newuser_notify_siteadmin', $msg, $user );
 	wp_mail( $email, sprintf(__('New User Registration: %s'), $user->user_login), $msg );
@@ -1111,8 +1095,9 @@ function insert_blog($domain, $path, $site_id) {
 	if ( ! $result )
 		return false;
 
-	refresh_blog_details($wpdb->insert_id);
-	return $wpdb->insert_id;
+	$blog_id = $wpdb->insert_id;
+	refresh_blog_details( $blog_id );
+	return $blog_id;
 }
 
 /**
@@ -1160,7 +1145,7 @@ function install_blog($blog_id, $blog_title = '') {
 	else
 		update_option( 'upload_path', get_blog_option( $current_site->blog_id, 'upload_path' ) );
 
-	update_option( 'blogname', stripslashes( $blog_title ) );
+	update_option( 'blogname', wp_unslash( $blog_title ) );
 	update_option( 'admin_email', '' );
 
 	// remove all perms
@@ -1217,9 +1202,9 @@ function wpmu_welcome_notification($blog_id, $user_id, $password, $title, $meta
 	if ( !apply_filters('wpmu_welcome_notification', $blog_id, $user_id, $password, $title, $meta) )
 		return false;
 
-	$welcome_email = stripslashes( get_site_option( 'welcome_email' ) );
+	$welcome_email = get_site_option( 'welcome_email' );
 	if ( $welcome_email == false )
-		$welcome_email = stripslashes( __( 'Dear User,
+		$welcome_email = __( 'Dear User,
 
 Your new SITE_NAME site has been successfully set up at:
 BLOG_URL
@@ -1231,7 +1216,7 @@ Log in here: BLOG_URLwp-login.php
 
 We hope you enjoy your new site. Thanks!
 
---The Team @ SITE_NAME' ) );
+--The Team @ SITE_NAME' );
 
 	$url = get_blogaddress_by_id($blog_id);
 	$user = get_userdata( $user_id );
@@ -1255,7 +1240,7 @@ We hope you enjoy your new site. Thanks!
 	if ( empty( $current_site->site_name ) )
 		$current_site->site_name = 'WordPress';
 
-	$subject = apply_filters( 'update_welcome_subject', sprintf(__('New %1$s Site: %2$s'), $current_site->site_name, stripslashes( $title ) ) );
+	$subject = apply_filters( 'update_welcome_subject', sprintf(__('New %1$s Site: %2$s'), $current_site->site_name, wp_unslash( $title ) ) );
 	wp_mail($user->user_email, $subject, $message, $message_headers);
 	return true;
 }
@@ -1323,32 +1308,6 @@ function get_current_site() {
 	return $current_site;
 }
 
-/**
- * Get a numeric user ID from either an email address or a login.
- *
- * @since MU
- * @uses is_email()
- *
- * @param string $string
- * @return int
- */
-function get_user_id_from_string( $string ) {
-	$user_id = 0;
-	if ( is_email( $string ) ) {
-		$user = get_user_by('email', $string);
-		if ( $user )
-			$user_id = $user->ID;
-	} elseif ( is_numeric( $string ) ) {
-		$user_id = $string;
-	} else {
-		$user = get_user_by('login', $string);
-		if ( $user )
-			$user_id = $user->ID;
-	}
-
-	return $user_id;
-}
-
 /**
  * Get a user's most recent post.
  *
@@ -1510,7 +1469,7 @@ function update_posts_count( $deprecated = '' ) {
 function wpmu_log_new_registrations( $blog_id, $user_id ) {
 	global $wpdb;
 	$user = get_userdata( (int) $user_id );
-	$wpdb->insert( $wpdb->registration_log, array('email' => $user->user_email, 'IP' => preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] ), 'blog_id' => $blog_id, 'date_registered' => current_time('mysql')) );
+	$wpdb->insert( $wpdb->registration_log, array('email' => $user->user_email, 'IP' => preg_replace( '/[^0-9., ]/', '', wp_unslash( $_SERVER['REMOTE_ADDR'] ) ), 'blog_id' => $blog_id, 'date_registered' => current_time('mysql')) );
 }
 
 /**
@@ -1709,13 +1668,17 @@ function add_existing_user_to_blog( $details = false ) {
 /**
  * Add a newly created user to the appropriate blog
  *
+ * To add a user in general, use add_user_to_blog(). This function
+ * is specifically hooked into the wpmu_activate_user action.
+ *
  * @since MU
+ * @see add_user_to_blog()
  *
  * @param int $user_id
- * @param string $email
+ * @param mixed $password Ignored.
  * @param array $meta
  */
-function add_new_user_to_blog( $user_id, $email, $meta ) {
+function add_new_user_to_blog( $user_id, $password, $meta ) {
 	global $current_site;
 	if ( !empty( $meta[ 'add_to_blog' ] ) ) {
 		$blog_id = $meta[ 'add_to_blog' ];
@@ -1737,24 +1700,21 @@ function fix_phpmailer_messageid( $phpmailer ) {
 }
 
 /**
- * Check to see whether a user is marked as a spammer, based on username
+ * Check to see whether a user is marked as a spammer, based on user login.
  *
  * @since MU
- * @uses get_current_user_id()
- * @uses get_user_id_from_string()
+ * @uses get_user_by()
  *
- * @param string $username
+ * @param string $user_login Optional. Defaults to current user.
  * @return bool
  */
-function is_user_spammy( $username = 0 ) {
-	if ( $username == 0 ) {
-		$user_id = get_current_user_id();
-	} else {
-		$user_id = get_user_id_from_string( $username );
-	}
-	$u = get_userdata( $user_id );
+function is_user_spammy( $user_login = null ) {
+	if ( $user_login )
+		$user = get_user_by( 'login', $user_login );
+	else
+		$user = wp_get_current_user();
 
-	return ( isset( $u->spam ) && $u->spam == 1 );
+	return $user && isset( $user->spam ) && 1 == $user->spam;
 }
 
 /**
@@ -1770,9 +1730,7 @@ function is_user_spammy( $username = 0 ) {
  * @return bool
  */
 function update_blog_public( $old_value, $value ) {
-	global $wpdb;
-	do_action('update_blog_public');
-	update_blog_status( $wpdb->blogid, 'public', (int) $value );
+	update_blog_status( get_current_blog_id(), 'public', (int) $value );
 }
 add_action('update_option_blog_public', 'update_blog_public', 10, 2);
 
@@ -2013,4 +1971,24 @@ function upload_size_limit_filter( $size ) {
 		return min( $size, $fileupload_maxk );
 
 	return min( $size, $fileupload_maxk, get_upload_space_available() );
-}
\ No newline at end of file
+}
+
+/**
+ * Whether or not we have a large network.
+ *
+ * The default criteria for a large network is either more than 10,000 users or more than 10,000 sites.
+ * Plugins can alter this criteria using the 'wp_is_large_network' filter.
+ *
+ * @since 3.3.0
+ * @param string $using 'sites or 'users'. Default is 'sites'.
+ * @return bool True if the network meets the criteria for large. False otherwise.
+ */
+function wp_is_large_network( $using = 'sites' ) {
+	if ( 'users' == $using ) {
+		$count = get_user_count();
+		return apply_filters( 'wp_is_large_network', $count > 10000, 'users', $count );
+	}
+
+	$count = get_blog_count();
+	return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count );
+}
diff --git a/wp-includes/ms-load.php b/wp-includes/ms-load.php
index 6a26b9cf0..55659a282 100644
--- a/wp-includes/ms-load.php
+++ b/wp-includes/ms-load.php
@@ -69,7 +69,7 @@ function wp_get_active_network_plugins() {
  * @return bool|string Returns true on success, or drop-in file to include.
  */
 function ms_site_check() {
-	global $wpdb;
+	global $wpdb, $current_site;
 
 	$blog = get_blog_details();
 
@@ -240,7 +240,7 @@ function ms_not_installed() {
 		die( $msg );
 	$msg .= '<p>' . __( 'If your site does not display, please contact the owner of this network.' ) . '';
 	$msg .= ' ' . __( 'If you are the owner of this network please check that MySQL is running properly and all tables are error free.' ) . '</p>';
-	if ( false && !$wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) )
+	if ( ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) )
 		$msg .= '<p>' . sprintf( __( '<strong>Database tables are missing.</strong> This means that MySQL is not running, WordPress was not installed properly, or someone deleted <code>%s</code>. You really should look at your database now.' ), $wpdb->site ) . '</p>';
 	else
 		$msg .= '<p>' . sprintf( __( '<strong>Could not find site <code>%1$s</code>.</strong> Searched for table <code>%2$s</code> in database <code>%3$s</code>. Is that right?' ), rtrim( $domain . $path, '/' ), $wpdb->blogs, DB_NAME ) . '</p>';
diff --git a/wp-includes/nav-menu-template.php b/wp-includes/nav-menu-template.php
index df5612d22..0ac14c328 100644
--- a/wp-includes/nav-menu-template.php
+++ b/wp-includes/nav-menu-template.php
@@ -80,10 +80,21 @@ class Walker_Nav_Menu extends Walker {
 
 		$output .= $indent . '<li' . $id . $value . $class_names .'>';
 
-		$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
-		$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
-		$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
-		$attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
+		$atts = array();
+		$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
+		$atts['target'] = ! empty( $item->target )     ? $item->target     : '';
+		$atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
+		$atts['href']   = ! empty( $item->url )        ? $item->url        : '';
+
+		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );
+
+		$attributes = '';
+		foreach ( $atts as $attr => $value ) {
+			if ( ! empty( $value ) ) {
+				$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
+				$attributes .= ' ' . $attr . '="' . $value . '"';
+			}
+		}
 
 		$item_output = $args->before;
 		$item_output .= '<a'. $attributes .'>';
@@ -168,17 +179,17 @@ function wp_nav_menu( $args = array() ) {
 
 	/*
 	 * If no menu was found:
-	 *  - Fallback (if one was specified), or bail.
+	 *  - Fall back (if one was specified), or bail.
 	 *
 	 * If no menu items were found:
-	 *  - Fallback, but only if no theme location was specified.
+	 *  - Fall back, but only if no theme location was specified.
 	 *  - Otherwise, bail.
 	 */
 	if ( ( !$menu || is_wp_error($menu) || ( isset($menu_items) && empty($menu_items) && !$args->theme_location ) )
 		&& $args->fallback_cb && is_callable( $args->fallback_cb ) )
 			return call_user_func( $args->fallback_cb, (array) $args );
 
-	if ( !$menu || is_wp_error( $menu ) || empty( $menu_items ) )
+	if ( ! $menu || is_wp_error( $menu ) )
 		return false;
 
 	$nav_menu = $items = '';
@@ -228,6 +239,10 @@ function wp_nav_menu( $args = array() ) {
 	$items = apply_filters( 'wp_nav_menu_items', $items, $args );
 	$items = apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args );
 
+	// Don't print any markup if there are no items at this point.
+	if ( empty( $items ) )
+		return false;
+
 	$nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );
 	unset( $items );
 
@@ -251,7 +266,7 @@ function wp_nav_menu( $args = array() ) {
  * @param array $menu_items The current menu item objects to which to add the class property information.
  */
 function _wp_menu_item_classes_by_context( &$menu_items ) {
-	global $wp_query;
+	global $wp_query, $wp_rewrite;
 
 	$queried_object = $wp_query->get_queried_object();
 	$queried_object_id = (int) $wp_query->queried_object_id;
@@ -367,7 +382,7 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
 			$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;
 			$item_url = untrailingslashit( $raw_item_url );
-			$_indexless_current = untrailingslashit( preg_replace( '/index.php$/', '', $current_url ) );
+			$_indexless_current = untrailingslashit( preg_replace( '/' . preg_quote( $wp_rewrite->index, '/' ) . '$/', '', $current_url ) );
 
 			if ( $raw_item_url && in_array( $item_url, array( $current_url, $_indexless_current, $_root_relative_current ) ) ) {
 				$classes[] = 'current-menu-item';
diff --git a/wp-includes/nav-menu.php b/wp-includes/nav-menu.php
index 7a5da9e20..794f4b2d1 100644
--- a/wp-includes/nav-menu.php
+++ b/wp-includes/nav-menu.php
@@ -127,7 +127,8 @@ function get_registered_nav_menus() {
  */
 
 function get_nav_menu_locations() {
-	return get_theme_mod( 'nav_menu_locations' );
+	$locations = get_theme_mod( 'nav_menu_locations' );
+	return ( is_array( $locations ) ) ? $locations : array();
 }
 
 /**
@@ -188,6 +189,14 @@ function wp_delete_nav_menu( $menu ) {
 
 	$result = wp_delete_term( $menu->term_id, 'nav_menu' );
 
+	// Remove this menu from any locations.
+	$locations = get_theme_mod( 'nav_menu_locations' );
+	foreach ( (array) $locations as $location => $menu_id ) {
+		if ( $menu_id == $menu->term_id )
+			$locations[ $location ] = 0;
+	}
+	set_theme_mod( 'nav_menu_locations', $locations );
+
 	if ( $result && !is_wp_error($result) )
 		do_action( 'wp_delete_nav_menu', $menu->term_id );
 
@@ -327,13 +336,12 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
 			$original_title = $original_object->post_title;
 		}
 
-		if ( empty( $args['menu-item-title'] ) || $args['menu-item-title'] == $original_title ) {
+		if ( $args['menu-item-title'] == $original_title )
 			$args['menu-item-title'] = '';
 
-			// hack to get wp to create a post object when too many properties are empty
-			if ( empty( $args['menu-item-description'] ) )
-				$args['menu-item-description'] = ' ';
-		}
+		// hack to get wp to create a post object when too many properties are empty
+		if ( '' ==  $args['menu-item-title'] && '' == $args['menu-item-description'] )
+			$args['menu-item-description'] = ' ';
 	}
 
 	// Populate the menu item object
@@ -633,6 +641,9 @@ function wp_setup_nav_menu_item( $menu_item ) {
 			$menu_item->object = $object->name;
 			$menu_item->type_label = $object->labels->singular_name;
 
+			if ( '' === $menu_item->post_title )
+				$menu_item->post_title = sprintf( __( '#%d (no title)' ), $menu_item->ID );
+
 			$menu_item->title = $menu_item->post_title;
 			$menu_item->url = get_permalink( $menu_item->ID );
 			$menu_item->target = '';
diff --git a/wp-includes/option.php b/wp-includes/option.php
index 722d1f30d..3df89c2c2 100644
--- a/wp-includes/option.php
+++ b/wp-includes/option.php
@@ -104,8 +104,7 @@ function get_option( $option, $default = false ) {
  * @param string $option Option name.
  */
 function wp_protect_special_option( $option ) {
-	$protected = array( 'alloptions', 'notoptions' );
-	if ( in_array( $option, $protected ) )
+	if ( 'alloptions' === $option || 'notoptions' === $option )
 		wp_die( sprintf( __( '%s is a protected WP option and may not be modified' ), esc_html( $option ) ) );
 }
 
@@ -248,10 +247,10 @@ function update_option( $option, $newvalue ) {
 	if ( ! defined( 'WP_INSTALLING' ) ) {
 		$alloptions = wp_load_alloptions();
 		if ( isset( $alloptions[$option] ) ) {
-			$alloptions[$option] = $_newvalue;
+			$alloptions[$option] = $newvalue;
 			wp_cache_set( 'alloptions', $alloptions, 'options' );
 		} else {
-			wp_cache_set( $option, $_newvalue, 'options' );
+			wp_cache_set( $option, $newvalue, 'options' );
 		}
 	}
 
@@ -360,6 +359,10 @@ function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' )
 function delete_option( $option ) {
 	global $wpdb;
 
+	$option = trim( $option );
+	if ( empty( $option ) )
+		return false;
+
 	wp_protect_special_option( $option );
 
 	// Get the ID, if no ID then return
@@ -512,8 +515,8 @@ function set_transient( $transient, $value, $expiration = 0 ) {
 		}
 	}
 	if ( $result ) {
-		do_action( 'set_transient_' . $transient );
-		do_action( 'setted_transient', $transient );
+		do_action( 'set_transient_' . $transient, $value, $expiration );
+		do_action( 'setted_transient', $transient, $value, $expiration );
 	}
 	return $result;
 }
@@ -1049,8 +1052,8 @@ function set_site_transient( $transient, $value, $expiration = 0 ) {
 		}
 	}
 	if ( $result ) {
-		do_action( 'set_site_transient_' . $transient );
-		do_action( 'setted_site_transient', $transient );
+		do_action( 'set_site_transient_' . $transient, $value, $expiration );
+		do_action( 'setted_site_transient', $transient, $value, $expiration );
 	}
 	return $result;
 }
diff --git a/wp-includes/pluggable-deprecated.php b/wp-includes/pluggable-deprecated.php
index 69e78f5f9..02733b2b0 100644
--- a/wp-includes/pluggable-deprecated.php
+++ b/wp-includes/pluggable-deprecated.php
@@ -177,16 +177,16 @@ endif;
  *
  * @since 2.2.0
  * @deprecated 3.5.0
- * @link http://wordpress.org/extend/plugins/atom-publishing-protocol/
+ * @link http://wordpress.org/plugins/atom-publishing-protocol/
  */
 if ( ! class_exists( 'wp_atom_server' ) ) {
 	class wp_atom_server {
 		public function __call( $name, $arguments ) {
-			_deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Platform plugin' );
+			_deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Protocol plugin' );
 		}
 
 		public static function __callStatic( $name, $arguments ) {
-			_deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Platform plugin' );
+			_deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Protocol plugin' );
 		}
 	}
 }
\ No newline at end of file
diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php
index 83afefab8..acfa2ddd7 100644
--- a/wp-includes/pluggable.php
+++ b/wp-includes/pluggable.php
@@ -448,12 +448,10 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array()
 
 	// Send!
 	try {
-		$phpmailer->Send();
+		return $phpmailer->Send();
 	} catch ( phpmailerException $e ) {
 		return false;
 	}
-
-	return true;
 }
 endif;
 
@@ -651,9 +649,9 @@ if ( !function_exists('wp_set_auth_cookie') ) :
  */
 function wp_set_auth_cookie($user_id, $remember = false, $secure = '') {
 	if ( $remember ) {
-		$expiration = $expire = time() + apply_filters('auth_cookie_expiration', 1209600, $user_id, $remember);
+		$expiration = $expire = time() + apply_filters('auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember);
 	} else {
-		$expiration = time() + apply_filters('auth_cookie_expiration', 172800, $user_id, $remember);
+		$expiration = time() + apply_filters('auth_cookie_expiration', 2 * DAY_IN_SECONDS, $user_id, $remember);
 		$expire = 0;
 	}
 
@@ -816,7 +814,8 @@ function check_admin_referer($action = -1, $query_arg = '_wpnonce') {
 	}
 	do_action('check_admin_referer', $action, $result);
 	return $result;
-}endif;
+}
+endif;
 
 if ( !function_exists('check_ajax_referer') ) :
 /**
@@ -998,6 +997,10 @@ function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
 	if ( $post->post_author == get_current_user_id() )
 		return false;
 
+	// The post author is no longer a member of the blog
+	if ( ! user_can( $post->post_author, 'read_post', $post->ID ) )
+		return false;
+
 	// If there's no email to send the comment to
 	if ( '' == $author->user_email )
 		return false;
@@ -1042,11 +1045,14 @@ function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
 	}
 	$notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
 	$notify_message .= sprintf( __('Permalink: %s'), get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment_id ) . "\r\n";
-	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_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";
+	}
 
 	$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
 
@@ -1192,27 +1198,24 @@ if ( !function_exists('wp_new_user_notification') ) :
 function wp_new_user_notification($user_id, $plaintext_pass = '') {
 	$user = get_userdata( $user_id );
 
-	$user_login = stripslashes($user->user_login);
-	$user_email = stripslashes($user->user_email);
-
 	// 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);
 
 	$message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
-	$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
-	$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
+	$message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
+	$message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n";
 
 	@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);
 
 	if ( empty($plaintext_pass) )
 		return;
 
-	$message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
+	$message  = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
 	$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
 	$message .= wp_login_url() . "\r\n";
 
-	wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
+	wp_mail($user->user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
 
 }
 endif;
@@ -1563,7 +1566,7 @@ if ( !function_exists('wp_set_password') ) :
 function wp_set_password( $password, $user_id ) {
 	global $wpdb;
 
-	$hash = wp_hash_password($password);
+	$hash = wp_hash_password( trim( $password ) );
 	$wpdb->update($wpdb->users, array('user_pass' => $hash, 'user_activation_key' => ''), array('ID' => $user_id) );
 
 	wp_cache_delete($user_id, 'users');
@@ -1708,16 +1711,20 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
 
 	$left_lines  = explode("\n", $left_string);
 	$right_lines = explode("\n", $right_string);
-
 	$text_diff = new Text_Diff($left_lines, $right_lines);
-	$renderer  = new WP_Text_Diff_Renderer_Table();
+	$renderer  = new WP_Text_Diff_Renderer_Table( $args );
 	$diff = $renderer->render($text_diff);
 
 	if ( !$diff )
 		return '';
 
 	$r  = "<table class='diff'>\n";
-	$r .= "<col class='ltype' /><col class='content' /><col class='ltype' /><col class='content' />";
+
+	if ( ! empty( $args[ 'show_split_view' ] ) ) {
+		$r .= "<col class='content diffsplit left' /><col class='content diffsplit middle' /><col class='content diffsplit right' />";
+	} else {
+		$r .= "<col class='content' />";
+	}
 
 	if ( $args['title'] || $args['title_left'] || $args['title_right'] )
 		$r .= "<thead>";
@@ -1738,3 +1745,4 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
 	return $r;
 }
 endif;
+
diff --git a/wp-includes/plugin.php b/wp-includes/plugin.php
index 7e3870803..c2aebf28a 100644
--- a/wp-includes/plugin.php
+++ b/wp-includes/plugin.php
@@ -45,7 +45,7 @@
  *
  * <strong>Note:</strong> the function will return true no matter if the
  * function was hooked fails or not. There are no checks for whether the
- * function exists beforehand and no checks to whether the <tt>$function_to_add
+ * function exists beforehand and no checks to whether the <tt>$function_to_add</tt>
  * is even a string. It is up to you to take care and this is done for
  * optimization purposes, so everything is as quick as possible.
  *
@@ -604,12 +604,13 @@ function plugin_dir_url( $file ) {
  * Set the activation hook for a plugin.
  *
  * When a plugin is activated, the action 'activate_PLUGINNAME' hook is
- * activated. In the name of this hook, PLUGINNAME is replaced with the name of
- * the plugin, including the optional subdirectory. For example, when the plugin
- * is located in wp-content/plugin/sampleplugin/sample.php, then the name of
- * this hook will become 'activate_sampleplugin/sample.php'. When the plugin
- * consists of only one file and is (as by default) located at
- * wp-content/plugin/sample.php the name of this hook will be
+ * called. In the name of this hook, PLUGINNAME is replaced with the name
+ * of the plugin, including the optional subdirectory. For example, when the
+ * plugin is located in wp-content/plugins/sampleplugin/sample.php, then
+ * the name of this hook will become 'activate_sampleplugin/sample.php'.
+ *
+ * When the plugin consists of only one file and is (as by default) located at
+ * wp-content/plugins/sample.php the name of this hook will be
  * 'activate_sample.php'.
  *
  * @package WordPress
@@ -628,21 +629,21 @@ function register_activation_hook($file, $function) {
  * Set the deactivation hook for a plugin.
  *
  * When a plugin is deactivated, the action 'deactivate_PLUGINNAME' hook is
- * deactivated. In the name of this hook, PLUGINNAME is replaced with the name
+ * called. In the name of this hook, PLUGINNAME is replaced with the name
  * of the plugin, including the optional subdirectory. For example, when the
- * plugin is located in wp-content/plugin/sampleplugin/sample.php, then
- * the name of this hook will become 'activate_sampleplugin/sample.php'.
+ * plugin is located in wp-content/plugins/sampleplugin/sample.php, then
+ * the name of this hook will become 'deactivate_sampleplugin/sample.php'.
  *
  * When the plugin consists of only one file and is (as by default) located at
- * wp-content/plugin/sample.php the name of this hook will be
- * 'activate_sample.php'.
+ * wp-content/plugins/sample.php the name of this hook will be
+ * 'deactivate_sample.php'.
  *
  * @package WordPress
  * @subpackage Plugin
  * @since 2.0
  *
  * @param string $file The filename of the plugin including the path.
- * @param callback $function the function hooked to the 'activate_PLUGIN' action.
+ * @param callback $function the function hooked to the 'deactivate_PLUGIN' action.
  */
 function register_deactivation_hook($file, $function) {
 	$file = plugin_basename($file);
@@ -784,6 +785,6 @@ function _wp_filter_build_unique_id($tag, $function, $priority) {
 		}
 	} else if ( is_string($function[0]) ) {
 		// Static Calling
-		return $function[0].$function[1];
+		return $function[0] . '::' . $function[1];
 	}
 }
diff --git a/wp-includes/pomo/translations.php b/wp-includes/pomo/translations.php
index 856e38aa1..106b6da16 100644
--- a/wp-includes/pomo/translations.php
+++ b/wp-includes/pomo/translations.php
@@ -57,7 +57,7 @@ class Translations {
 		$this->headers[$header] = $value;
 	}
 
-	function set_headers(&$headers) {
+	function set_headers($headers) {
 		foreach($headers as $header => $value) {
 			$this->set_header($header, $value);
 		}
@@ -242,7 +242,7 @@ class NOOP_Translations {
 	function set_header($header, $value) {
 	}
 
-	function set_headers(&$headers) {
+	function set_headers($headers) {
 	}
 
 	function get_header($header) {
diff --git a/wp-includes/post-formats.php b/wp-includes/post-formats.php
new file mode 100644
index 000000000..a13de3eaa
--- /dev/null
+++ b/wp-includes/post-formats.php
@@ -0,0 +1,243 @@
+<?php
+/**
+ * Post format functions.
+ *
+ * @package WordPress
+ * @subpackage Post
+ */
+
+/**
+ * Retrieve the format slug for a post
+ *
+ * @since 3.1.0
+ *
+ * @param int|object $post Post ID or post object. Optional, default is the current post from the loop.
+ * @return mixed The format if successful. False otherwise.
+ */
+function get_post_format( $post = null ) {
+	if ( ! $post = get_post( $post ) )
+		return false;
+
+	if ( ! post_type_supports( $post->post_type, 'post-formats' ) )
+		return false;
+
+	$_format = get_the_terms( $post->ID, 'post_format' );
+
+	if ( empty( $_format ) )
+		return false;
+
+	$format = array_shift( $_format );
+
+	return str_replace('post-format-', '', $format->slug );
+}
+
+/**
+ * Check if a post has a particular format
+ *
+ * @since 3.1.0
+ *
+ * @uses has_term()
+ *
+ * @param string|array $format The format or formats to check.
+ * @param object|int   $post   The post to check. If not supplied, defaults to the current post if used in the loop.
+ * @return bool True if the post has the format, false otherwise.
+ */
+function has_post_format( $format, $post = null ) {
+	if ( ! is_array( $format ) )
+		$format = array( $format );
+
+	$prefixed = array();
+	foreach( $format as $single ) {
+		$prefixed[] = 'post-format-' . sanitize_key( $single );
+	}
+
+	return has_term( $prefixed, 'post_format', $post );
+}
+
+/**
+ * Assign a format to a post
+ *
+ * @since 3.1.0
+ *
+ * @param int|object $post The post for which to assign a format.
+ * @param string $format A format to assign. Use an empty string or array to remove all formats from the post.
+ * @return mixed WP_Error on error. Array of affected term IDs on success.
+ */
+function set_post_format( $post, $format ) {
+	$post = get_post( $post );
+
+	if ( empty( $post ) )
+		return new WP_Error( 'invalid_post', __( 'Invalid post' ) );
+
+	if ( ! empty( $format ) ) {
+		$format = sanitize_key( $format );
+		if ( 'standard' === $format || ! in_array( $format, get_post_format_slugs() ) )
+			$format = '';
+		else
+			$format = 'post-format-' . $format;
+	}
+
+	return wp_set_post_terms( $post->ID, $format, 'post_format' );
+}
+
+/**
+ * Returns an array of post format slugs to their translated and pretty display versions
+ *
+ * @since 3.1.0
+ *
+ * @return array The array of translated post format names.
+ */
+function get_post_format_strings() {
+	$strings = array(
+		'standard' => _x( 'Standard', 'Post format' ), // Special case. any value that evals to false will be considered standard
+		'aside'    => _x( 'Aside',    'Post format' ),
+		'chat'     => _x( 'Chat',     'Post format' ),
+		'gallery'  => _x( 'Gallery',  'Post format' ),
+		'link'     => _x( 'Link',     'Post format' ),
+		'image'    => _x( 'Image',    'Post format' ),
+		'quote'    => _x( 'Quote',    'Post format' ),
+		'status'   => _x( 'Status',   'Post format' ),
+		'video'    => _x( 'Video',    'Post format' ),
+		'audio'    => _x( 'Audio',    'Post format' ),
+	);
+	return $strings;
+}
+
+/**
+ * Retrieves an array of post format slugs.
+ *
+ * @since 3.1.0
+ *
+ * @uses get_post_format_strings()
+ *
+ * @return array The array of post format slugs.
+ */
+function get_post_format_slugs() {
+	$slugs = array_keys( get_post_format_strings() );
+	return array_combine( $slugs, $slugs );
+}
+
+/**
+ * Returns a pretty, translated version of a post format slug
+ *
+ * @since 3.1.0
+ *
+ * @uses get_post_format_strings()
+ *
+ * @param string $slug A post format slug.
+ * @return string The translated post format name.
+ */
+function get_post_format_string( $slug ) {
+	$strings = get_post_format_strings();
+	if ( !$slug )
+		return $strings['standard'];
+	else
+		return ( isset( $strings[$slug] ) ) ? $strings[$slug] : '';
+}
+
+/**
+ * Returns a link to a post format index.
+ *
+ * @since 3.1.0
+ *
+ * @param string $format The post format slug.
+ * @return string The post format term link.
+ */
+function get_post_format_link( $format ) {
+	$term = get_term_by('slug', 'post-format-' . $format, 'post_format' );
+	if ( ! $term || is_wp_error( $term ) )
+		return false;
+	return get_term_link( $term );
+}
+
+/**
+ * Filters the request to allow for the format prefix.
+ *
+ * @access private
+ * @since 3.1.0
+ */
+function _post_format_request( $qvs ) {
+	if ( ! isset( $qvs['post_format'] ) )
+		return $qvs;
+	$slugs = get_post_format_slugs();
+	if ( isset( $slugs[ $qvs['post_format'] ] ) )
+		$qvs['post_format'] = 'post-format-' . $slugs[ $qvs['post_format'] ];
+	$tax = get_taxonomy( 'post_format' );
+	if ( ! is_admin() )
+		$qvs['post_type'] = $tax->object_type;
+	return $qvs;
+}
+add_filter( 'request', '_post_format_request' );
+
+/**
+ * Filters the post format term link to remove the format prefix.
+ *
+ * @access private
+ * @since 3.1.0
+ */
+function _post_format_link( $link, $term, $taxonomy ) {
+	global $wp_rewrite;
+	if ( 'post_format' != $taxonomy )
+		return $link;
+	if ( $wp_rewrite->get_extra_permastruct( $taxonomy ) ) {
+		return str_replace( "/{$term->slug}", '/' . str_replace( 'post-format-', '', $term->slug ), $link );
+	} else {
+		$link = remove_query_arg( 'post_format', $link );
+		return add_query_arg( 'post_format', str_replace( 'post-format-', '', $term->slug ), $link );
+	}
+}
+add_filter( 'term_link', '_post_format_link', 10, 3 );
+
+/**
+ * Remove the post format prefix from the name property of the term object created by get_term().
+ *
+ * @access private
+ * @since 3.1.0
+ */
+function _post_format_get_term( $term ) {
+	if ( isset( $term->slug ) ) {
+		$term->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
+	}
+	return $term;
+}
+add_filter( 'get_post_format', '_post_format_get_term' );
+
+/**
+ * Remove the post format prefix from the name property of the term objects created by get_terms().
+ *
+ * @access private
+ * @since 3.1.0
+ */
+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 ) {
+				$terms[$order] = get_post_format_string( str_replace( 'post-format-', '', $name ) );
+			}
+		} else {
+			foreach ( (array) $terms as $order => $term ) {
+				if ( isset( $term->taxonomy ) && 'post_format' == $term->taxonomy ) {
+					$terms[$order]->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
+				}
+			}
+		}
+	}
+	return $terms;
+}
+add_filter( 'get_terms', '_post_format_get_terms', 10, 3 );
+
+/**
+ * Remove the post format prefix from the name property of the term objects created by wp_get_object_terms().
+ *
+ * @access private
+ * @since 3.1.0
+ */
+function _post_format_wp_get_object_terms( $terms ) {
+	foreach ( (array) $terms as $order => $term ) {
+		if ( isset( $term->taxonomy ) && 'post_format' == $term->taxonomy ) {
+			$terms[$order]->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
+		}
+	}
+	return $terms;
+}
+add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' );
diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php
index d51d00953..03302eab6 100644
--- a/wp-includes/post-template.php
+++ b/wp-includes/post-template.php
@@ -69,15 +69,15 @@ function the_title($before = '', $after = '', $echo = true) {
  * @return string|null Null on failure or display. String when echo is false.
  */
 function the_title_attribute( $args = '' ) {
-	$title = get_the_title();
+	$defaults = array('before' => '', 'after' =>  '', 'echo' => true, 'post' => get_post() );
+	$r = wp_parse_args($args, $defaults);
+	extract( $r, EXTR_SKIP );
+
+	$title = get_the_title( $post );
 
 	if ( strlen($title) == 0 )
 		return;
 
-	$defaults = array('before' => '', 'after' =>  '', 'echo' => true);
-	$r = wp_parse_args($args, $defaults);
-	extract( $r, EXTR_SKIP );
-
 	$title = $before . $title . $after;
 	$title = esc_attr(strip_tags($title));
 
@@ -96,7 +96,7 @@ function the_title_attribute( $args = '' ) {
  *
  * @since 0.71
  *
- * @param mixed $post Optional. Post ID or object.
+ * @param int|object $post Optional. Post ID or object.
  * @return string
  */
 function get_the_title( $post = 0 ) {
@@ -159,12 +159,12 @@ function get_the_guid( $id = 0 ) {
  * @since 0.71
  *
  * @param string $more_link_text Optional. Content for when there is more text.
- * @param bool $stripteaser 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.
  */
-function the_content($more_link_text = null, $stripteaser = false) {
-	$content = get_the_content($more_link_text, $stripteaser);
-	$content = apply_filters('the_content', $content);
-	$content = str_replace(']]>', ']]&gt;', $content);
+function the_content( $more_link_text = null, $strip_teaser = false) {
+	$content = get_the_content( $more_link_text, $strip_teaser );
+	$content = apply_filters( 'the_content', $content );
+	$content = str_replace( ']]>', ']]&gt;', $content );
 	echo $content;
 }
 
@@ -177,52 +177,57 @@ function the_content($more_link_text = null, $stripteaser = false) {
  * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
  * @return string
  */
-function get_the_content( $more_link_text = null, $stripteaser = false ) {
-	global $more, $page, $pages, $multipage, $preview;
+function get_the_content( $more_link_text = null, $strip_teaser = false ) {
+	global $page, $more, $preview, $pages, $multipage;
 
 	$post = get_post();
 
 	if ( null === $more_link_text )
-		$more_link_text = __( '(more...)' );
+		$more_link_text = __( '(more&hellip;)' );
 
 	$output = '';
-	$hasTeaser = false;
+	$has_teaser = false;
 
 	// If post password required and it doesn't match the cookie.
-	if ( post_password_required() )
-		return get_the_password_form();
+	if ( post_password_required( $post ) )
+		return get_the_password_form( $post );
 
-	if ( $page > count($pages) ) // if the requested page doesn't exist
-		$page = count($pages); // give them the highest numbered page that DOES exist
+	if ( $page > count( $pages ) ) // if the requested page doesn't exist
+		$page = count( $pages ); // give them the highest numbered page that DOES exist
 
-	$content = $pages[$page-1];
-	if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
-		$content = explode($matches[0], $content, 2);
-		if ( !empty($matches[1]) && !empty($more_link_text) )
-			$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
+	$content = $pages[$page - 1];
+	if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
+		$content = explode( $matches[0], $content, 2 );
+		if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
+			$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
 
-		$hasTeaser = true;
+		$has_teaser = true;
 	} else {
-		$content = array($content);
+		$content = array( $content );
 	}
-	if ( (false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
-		$stripteaser = true;
+
+	if ( false !== strpos( $post->post_content, '<!--noteaser-->' ) && ( ! $multipage || $page == 1 ) )
+		$strip_teaser = true;
+
 	$teaser = $content[0];
-	if ( $more && $stripteaser && $hasTeaser )
+
+	if ( $more && $strip_teaser && $has_teaser )
 		$teaser = '';
+
 	$output .= $teaser;
-	if ( count($content) > 1 ) {
+
+	if ( count( $content ) > 1 ) {
 		if ( $more ) {
 			$output .= '<span id="more-' . $post->ID . '"></span>' . $content[1];
 		} else {
-			if ( ! empty($more_link_text) )
+			if ( ! empty( $more_link_text ) )
 				$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text );
-			$output = force_balance_tags($output);
+			$output = force_balance_tags( $output );
 		}
-
 	}
+
 	if ( $preview ) // preview fix for javascript bug with foreign languages
-		$output =	preg_replace_callback('/\%u([0-9A-F]{4})/', '_convert_urlencoded_to_entities', $output);
+		$output =	preg_replace_callback( '/\%u([0-9A-F]{4})/', '_convert_urlencoded_to_entities', $output );
 
 	return $output;
 }
@@ -563,7 +568,7 @@ function get_body_class( $class = '' ) {
  *
  * @since 2.7.0
  *
- * @param int|object $post An optional post. Global $post used if not provided.
+ * @param int|WP_Post $post An optional post. Global $post used if not provided.
  * @return bool false if a password is not required or the correct password cookie is present, true otherwise.
  */
 function post_password_required( $post = null ) {
@@ -578,7 +583,7 @@ function post_password_required( $post = null ) {
 	require_once ABSPATH . 'wp-includes/class-phpass.php';
 	$hasher = new PasswordHash( 8, true );
 
-	$hash = stripslashes( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
+	$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
 	if ( 0 !== strpos( $hash, '$P$B' ) )
 		return true;
 
@@ -599,15 +604,6 @@ function post_password_required( $post = null ) {
  * Quicktag one or more times). This tag must be within The Loop.
  *
  * The defaults for overwriting are:
- * 'next_or_number' - Default is 'number' (string). Indicates whether page
- *      numbers should be used. Valid values are number and next.
- * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
- *      of the bookmark.
- * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
- *      previous page, if available.
- * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
- *      the parameter string will be replaced with the page number, so Page %
- *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
  * 'before' - Default is '<p> Pages:' (string). The html or text to prepend to
  *      each bookmarks.
  * 'after' - Default is '</p>' (string). The html or text to append to each
@@ -618,20 +614,36 @@ function post_password_required( $post = null ) {
  * 'link_after' - Default is '' (string). The html or text to append to each
  *      Pages link inside the <a> tag. Also appended to the current item, which
  *      is not linked.
+ * 'next_or_number' - Default is 'number' (string). Indicates whether page
+ *      numbers should be used. Valid values are number and next.
+ * 'separator' - Default is ' ' (string). Text used between pagination links.
+ * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
+ *      of the bookmark.
+ * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
+ *      previous page, if available.
+ * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
+ *      the parameter string will be replaced with the page number, so Page %
+ *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
+ * 'echo' - Default is 1 (integer). When not 0, this triggers the HTML to be
+ *      echoed and then returned.
  *
  * @since 1.2.0
- * @access private
  *
  * @param string|array $args Optional. Overwrite the defaults.
  * @return string Formatted output in HTML.
  */
-function wp_link_pages($args = '') {
+function wp_link_pages( $args = '' ) {
 	$defaults = array(
-		'before' => '<p>' . __('Pages:'), 'after' => '</p>',
-		'link_before' => '', 'link_after' => '',
-		'next_or_number' => 'number', 'nextpagelink' => __('Next page'),
-		'previouspagelink' => __('Previous page'), 'pagelink' => '%',
-		'echo' => 1
+		'before'           => '<p>' . __( 'Pages:' ),
+		'after'            => '</p>',
+		'link_before'      => '',
+		'link_after'       => '',
+		'next_or_number'   => 'number',
+		'separator'        => ' ',
+		'nextpagelink'     => __( 'Next page' ),
+		'previouspagelink' => __( 'Previous page' ),
+		'pagelink'         => '%',
+		'echo'             => 1
 	);
 
 	$r = wp_parse_args( $args, $defaults );
@@ -644,35 +656,34 @@ function wp_link_pages($args = '') {
 	if ( $multipage ) {
 		if ( 'number' == $next_or_number ) {
 			$output .= $before;
-			for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
-				$j = str_replace('%',$i,$pagelink);
-				$output .= ' ';
-				if ( ($i != $page) || ((!$more) && ($page==1)) ) {
-					$output .= _wp_link_page($i);
-				}
-				$output .= $link_before . $j . $link_after;
-				if ( ($i != $page) || ((!$more) && ($page==1)) )
-					$output .= '</a>';
+			for ( $i = 1; $i <= $numpages; $i++ ) {
+				$link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after;
+				if ( $i != $page || ! $more && 1 == $page )
+					$link = _wp_link_page( $i ) . $link . '</a>';
+				$link = apply_filters( 'wp_link_pages_link', $link, $i );
+				$output .= $separator . $link;
 			}
 			$output .= $after;
-		} else {
-			if ( $more ) {
-				$output .= $before;
-				$i = $page - 1;
-				if ( $i && $more ) {
-					$output .= _wp_link_page($i);
-					$output .= $link_before. $previouspagelink . $link_after . '</a>';
-				}
-				$i = $page + 1;
-				if ( $i <= $numpages && $more ) {
-					$output .= _wp_link_page($i);
-					$output .= $link_before. $nextpagelink . $link_after . '</a>';
-				}
-				$output .= $after;
+		} elseif ( $more ) {
+			$output .= $before;
+			$i = $page - 1;
+			if ( $i ) {
+				$link = _wp_link_page( $i ) . $link_before . $previouspagelink . $link_after . '</a>';
+				$link = apply_filters( 'wp_link_pages_link', $link, $i );
+				$output .= $separator . $link;
 			}
+			$i = $page + 1;
+			if ( $i <= $numpages ) {
+				$link = _wp_link_page( $i ) . $link_before . $nextpagelink . $link_after . '</a>';
+				$link = apply_filters( 'wp_link_pages_link', $link, $i );
+				$output .= $separator . $link;
+			}
+			$output .= $after;
 		}
 	}
 
+	$output = apply_filters( 'wp_link_pages', $output, $args );
+
 	if ( $echo )
 		echo $output;
 
@@ -1023,7 +1034,7 @@ class Walker_Page extends Walker {
 	 * @param int $current_page Page ID.
 	 * @param array $args
 	 */
-	function start_el( &$output, $page, $depth, $args, $current_page = 0 ) {
+	function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
 		if ( $depth )
 			$indent = str_repeat("\t", $depth);
 		else
@@ -1045,6 +1056,9 @@ class Walker_Page extends Walker {
 
 		$css_class = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
 
+		if ( '' === $page->post_title )
+			$page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
+
 		$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_permalink($page->ID) . '">' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a>';
 
 		if ( !empty($show_date) ) {
@@ -1105,7 +1119,7 @@ class Walker_PageDropdown extends Walker {
 	 * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
 	 * @param int $id
 	 */
-	function start_el(&$output, $page, $depth, $args, $id = 0) {
+	function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) {
 		$pad = str_repeat('&nbsp;', $depth * 3);
 
 		$output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
@@ -1213,11 +1227,11 @@ function prepend_attachment($content) {
  *
  * @since 1.0.0
  * @uses apply_filters() Calls 'the_password_form' filter on output.
- *
+ * @param int|WP_Post $post Optional. A post id or post object. Defaults to the current post when in The Loop, undefined otherwise.
  * @return string HTML content for password form for password protected post.
  */
-function get_the_password_form() {
-	$post = get_post();
+function get_the_password_form( $post = 0 ) {
+	$post = get_post( $post );
 	$label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
 	$output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
 	<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
@@ -1238,7 +1252,7 @@ function get_the_password_form() {
  * @uses $wp_query
  *
  * @param string $template The specific template name if specific matching is required.
- * @return bool False on failure, true if success.
+ * @return bool True on success, false on failure.
  */
 function is_page_template( $template = '' ) {
 	if ( ! is_page() )
@@ -1263,13 +1277,13 @@ function is_page_template( $template = '' ) {
  *
  * @since 3.4.0
  *
- * @param int $post_id The page ID to check. Defaults to the current post, when used in the loop.
+ * @param int $post_id Optional. The page ID to check. Defaults to the current post, when used in the loop.
  * @return string|bool Page template filename. Returns an empty string when the default page template
  * 	is in use. Returns false if the post is not a page.
  */
 function get_page_template_slug( $post_id = null ) {
 	$post = get_post( $post_id );
-	if ( 'page' != $post->post_type )
+	if ( ! $post || 'page' != $post->post_type )
 		return false;
 	$template = get_post_meta( $post->ID, '_wp_page_template', true );
 	if ( ! $template || 'default' == $template )
@@ -1300,9 +1314,9 @@ function wp_post_revision_title( $revision, $link = true ) {
 	/* translators: revision date format, see http://php.net/date */
 	$datef = _x( 'j F, Y @ G:i', 'revision date format');
 	/* translators: 1: date */
-	$autosavef = __( '%1$s [Autosave]' );
+	$autosavef = _x( '%1$s [Autosave]', 'post revision title extra' );
 	/* translators: 1: date */
-	$currentf  = __( '%1$s [Current Revision]' );
+	$currentf  = _x( '%1$s [Current Revision]', 'post revision title extra' );
 
 	$date = date_i18n( $datef, strtotime( $revision->post_modified ) );
 	if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) )
@@ -1316,145 +1330,129 @@ function wp_post_revision_title( $revision, $link = true ) {
 	return $date;
 }
 
+/**
+ * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ * @since 3.6.0
+ *
+ * @uses date_i18n()
+ *
+ * @param int|object $revision Revision ID or revision object.
+ * @param bool $link Optional, default is true. Link to revisions's page?
+ * @return string gravatar, user, i18n formatted datetimestamp or localized 'Current Revision'.
+ */
+function wp_post_revision_title_expanded( $revision, $link = true ) {
+	if ( !$revision = get_post( $revision ) )
+		return $revision;
+
+	if ( !in_array( $revision->post_type, array( 'post', 'page', 'revision' ) ) )
+		return false;
+
+	$author = get_the_author_meta( 'display_name', $revision->post_author );
+	/* translators: revision date format, see http://php.net/date */
+	$datef = _x( 'j F, Y @ G:i:s', 'revision date format');
+
+	$gravatar = get_avatar( $revision->post_author, 24 );
+
+	$date = date_i18n( $datef, strtotime( $revision->post_modified ) );
+	if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) )
+		$date = "<a href='$link'>$date</a>";
+
+	$revision_date_author = sprintf(
+		/* translators: post revision title: 1: author avatar, 2: author name, 3: time ago, 4: date */
+		_x( '%1$s %2$s, %3$s ago (%4$s)', 'post revision title' ),
+		$gravatar,
+		$author,
+		human_time_diff( strtotime( $revision->post_modified ), current_time( 'timestamp' ) ),
+		$date
+	);
+
+	$autosavef = __( '%1$s [Autosave]' );
+	$currentf  = __( '%1$s [Current Revision]' );
+
+	if ( !wp_is_post_revision( $revision ) )
+		$revision_date_author = sprintf( $currentf, $revision_date_author );
+	elseif ( wp_is_post_autosave( $revision ) )
+		$revision_date_author = sprintf( $autosavef, $revision_date_author );
+
+	return $revision_date_author;
+}
+
 /**
  * Display list of a post's revisions.
  *
  * Can output either a UL with edit links or a TABLE with diff interface, and
  * restore action links.
  *
- * Second argument controls parameters:
- *   (bool)   parent : include the parent (the "Current Revision") in the list.
- *   (string) format : 'list' or 'form-table'. 'list' outputs UL, 'form-table'
- *                     outputs TABLE with UI.
- *   (int)    right  : what revision is currently being viewed - used in
- *                     form-table format.
- *   (int)    left   : what revision is currently being diffed against right -
- *                     used in form-table format.
- *
  * @package WordPress
  * @subpackage Post_Revisions
  * @since 2.6.0
  *
  * @uses wp_get_post_revisions()
- * @uses wp_post_revision_title()
+ * @uses wp_post_revision_title_expanded()
  * @uses get_edit_post_link()
  * @uses get_the_author_meta()
  *
- * @todo split into two functions (list, form-table) ?
- *
  * @param int|object $post_id Post ID or post object.
- * @param string|array $args See description {@link wp_parse_args()}.
+ * @param string $type 'all' (default), 'revision' or 'autosave'
  * @return null
  */
-function wp_list_post_revisions( $post_id = 0, $args = null ) {
-	if ( !$post = get_post( $post_id ) )
+function wp_list_post_revisions( $post_id = 0, $type = 'all' ) {
+	if ( ! $post = get_post( $post_id ) )
 		return;
 
-	$defaults = array( 'parent' => false, 'right' => false, 'left' => false, 'format' => 'list', 'type' => 'all' );
-	extract( wp_parse_args( $args, $defaults ), EXTR_SKIP );
-
-	switch ( $type ) {
-		case 'autosave' :
-			if ( !$autosave = wp_get_post_autosave( $post->ID ) )
-				return;
-			$revisions = array( $autosave );
-			break;
-		case 'revision' : // just revisions - remove autosave later
-		case 'all' :
-		default :
-			if ( !$revisions = wp_get_post_revisions( $post->ID ) )
-				return;
-			break;
+	// $args array with (parent, format, right, left, type) deprecated since 3.6
+	if ( is_array( $type ) ) {
+		$type = ! empty( $type['type'] ) ? $type['type']  : $type;
+		_deprecated_argument( __FUNCTION__, '3.6' );
 	}
 
-	/* translators: post revision: 1: when, 2: author name */
-	$titlef = _x( '%1$s by %2$s', 'post revision' );
-
-	if ( $parent )
-		array_unshift( $revisions, $post );
+	if ( ! $revisions = wp_get_post_revisions( $post->ID ) )
+		return;
 
-	$rows = $right_checked = '';
-	$class = false;
-	$can_edit_post = current_user_can( 'edit_post', $post->ID );
+	$rows = '';
 	foreach ( $revisions as $revision ) {
-		if ( !current_user_can( 'read_post', $revision->ID ) )
-			continue;
-		if ( 'revision' === $type && wp_is_post_autosave( $revision ) )
+		if ( ! current_user_can( 'read_post', $revision->ID ) )
 			continue;
 
-		$date = wp_post_revision_title( $revision );
-		$name = get_the_author_meta( 'display_name', $revision->post_author );
-
-		if ( 'form-table' == $format ) {
-			if ( $left )
-				$left_checked = $left == $revision->ID ? ' checked="checked"' : '';
-			else
-				$left_checked = $right_checked ? ' checked="checked"' : ''; // [sic] (the next one)
-			$right_checked = $right == $revision->ID ? ' checked="checked"' : '';
-
-			$class = $class ? '' : " class='alternate'";
+		$is_autosave = wp_is_post_autosave( $revision );
+		if ( ( 'revision' === $type && $is_autosave ) || ( 'autosave' === $type && ! $is_autosave ) )
+			continue;
 
-			if ( $post->ID != $revision->ID && $can_edit_post )
-				$actions = '<a href="' . wp_nonce_url( add_query_arg( array( 'revision' => $revision->ID, 'action' => 'restore' ) ), "restore-post_$post->ID|$revision->ID" ) . '">' . __( 'Restore' ) . '</a>';
-			else
-				$actions = '';
-
-			$rows .= "<tr$class>\n";
-			$rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='left' value='$revision->ID'$left_checked /></th>\n";
-			$rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='right' value='$revision->ID'$right_checked /></th>\n";
-			$rows .= "\t<td>$date</td>\n";
-			$rows .= "\t<td>$name</td>\n";
-			$rows .= "\t<td class='action-links'>$actions</td>\n";
-			$rows .= "</tr>\n";
-		} else {
-			$title = sprintf( $titlef, $date, $name );
-			$rows .= "\t<li>$title</li>\n";
-		}
+		$rows .= "\t<li>" . wp_post_revision_title_expanded( $revision ) . "</li>\n";
 	}
 
-	if ( 'form-table' == $format ) : ?>
-
-<form action="revision.php" method="get">
-
-<div class="tablenav">
-	<div class="alignleft">
-		<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
-		<input type="hidden" name="action" value="diff" />
-		<input type="hidden" name="post_type" value="<?php echo esc_attr($post->post_type); ?>" />
-	</div>
-</div>
-
-<br class="clear" />
-
-<table class="widefat post-revisions" cellspacing="0" id="post-revisions">
-	<col />
-	<col />
-	<col style="width: 33%" />
-	<col style="width: 33%" />
-	<col style="width: 33%" />
-<thead>
-<tr>
-	<th scope="col"><?php /* translators: column name in revisions */ _ex( 'Old', 'revisions column name' ); ?></th>
-	<th scope="col"><?php /* translators: column name in revisions */ _ex( 'New', 'revisions column name' ); ?></th>
-	<th scope="col"><?php /* translators: column name in revisions */ _ex( 'Date Created', 'revisions column name' ); ?></th>
-	<th scope="col"><?php _e( 'Author' ); ?></th>
-	<th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
-</tr>
-</thead>
-<tbody>
-
-<?php echo $rows; ?>
-
-</tbody>
-</table>
-
-</form>
-
-<?php
-	else :
-		echo "<ul class='post-revisions'>\n";
-		echo $rows;
+	echo "<div class='hide-if-js'><p>" . __( 'JavaScript must be enabled to use this feature.' ) . "</p></div>\n";
+
+	echo "<ul class='post-revisions hide-if-no-js'>\n";
+	echo $rows;
+
+	// if the post was previously restored from a revision
+	// show the restore event details
+	if ( $restored_from_meta = get_post_meta( $post->ID, '_post_restored_from', true ) ) {
+		$author = get_user_by( 'id', $restored_from_meta[ 'restored_by_user' ] );
+		/* translators: revision date format, see http://php.net/date */
+		$datef = _x( 'j F, Y @ G:i:s', 'revision date format');
+		$date = date_i18n( $datef, strtotime( $restored_from_meta[ 'restored_time' ] ) );
+		$time_diff = human_time_diff( $restored_from_meta[ 'restored_time' ] ) ;
+		?>
+		<hr />
+		<div id="revisions-meta-restored">
+			<?php
+			printf(
+				/* translators: restored revision details: 1: gravatar image, 2: author name, 3: time ago, 4: date */
+				__( 'Previously restored by %1$s %2$s, %3$s ago (%4$s)' ),
+				get_avatar( $author->ID, 24 ),
+				$author->display_name,
+				$time_diff,
+				$date
+			);
+			?>
+		</div>
+		<?php
 		echo "</ul>";
-	endif;
+	}
 
 }
diff --git a/wp-includes/post-thumbnail-template.php b/wp-includes/post-thumbnail-template.php
index 16952d03c..dda0e34a1 100644
--- a/wp-includes/post-thumbnail-template.php
+++ b/wp-includes/post-thumbnail-template.php
@@ -39,7 +39,7 @@ function get_post_thumbnail_id( $post_id = null ) {
  *
  * @since 2.9.0
  *
- * @param int $size Optional. Image size. Defaults to 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, $crop_flag );.
+ * @param string|array $size Optional. Image size. Defaults to 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, $crop_flag );.
  * @param string|array $attr Optional. Query string or array of attributes.
  */
 function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
diff --git a/wp-includes/post.php b/wp-includes/post.php
index 870bec7a6..c8888c6ed 100644
--- a/wp-includes/post.php
+++ b/wp-includes/post.php
@@ -203,7 +203,7 @@ function get_attached_file( $attachment_id, $unfiltered = false ) {
  *
  * @param int $attachment_id Attachment ID
  * @param string $file File path for the attachment
- * @return bool False on failure, true on success.
+ * @return bool True on success, false on failure.
  */
 function update_attached_file( $attachment_id, $file ) {
 	if ( !get_post( $attachment_id ) )
@@ -360,7 +360,7 @@ function get_extended($post) {
 		$more_text = '';
 	}
 
-	// Strip leading and trailing whitespace
+	// ` leading and trailing whitespace
 	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
 	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
 	$more_text = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $more_text);
@@ -567,6 +567,17 @@ final class WP_Post {
 	 */
 	public $filter;
 
+	/**
+	 * Private variable used by post formats to cache parsed content.
+	 *
+	 * @since 3.6.0
+	 *
+	 * @var array
+	 * @access private
+	 */
+	public $format_content;
+
+
 	public static function get_instance( $post_id ) {
 		global $wpdb;
 
@@ -713,10 +724,10 @@ function get_post_ancestors( $post ) {
  * @since 2.3.0
  * @uses sanitize_post_field() See for possible $context values.
  *
- * @param string $field Post field name
- * @param id $post Post ID
- * @param string $context Optional. How to filter the field. Default is display.
- * @return bool|string False on failure or returns the value in post field
+ * @param string $field Post field name.
+ * @param int|object $post Post ID or post object.
+ * @param string $context Optional. How to filter the field. Default is 'display'.
+ * @return string The value of the post field on success, empty string on failure.
  */
 function get_post_field( $field, $post, $context = 'display' ) {
 	$post = get_post( $post );
@@ -738,8 +749,8 @@ function get_post_field( $field, $post, $context = 'display' ) {
  *
  * @since 2.0.0
  *
- * @param int $ID Optional. Post ID.
- * @return bool|string False on failure or returns the mime type
+ * @param int $ID Optional. Post ID. Default is the current post from the loop.
+ * @return string|bool The mime type on success, false on failure.
  */
 function get_post_mime_type($ID = '') {
 	$post = get_post($ID);
@@ -750,71 +761,6 @@ function get_post_mime_type($ID = '') {
 	return false;
 }
 
-/**
- * Retrieve the format slug for a post
- *
- * @since 3.1.0
- *
- * @param int|object $post A post
- *
- * @return mixed The format if successful. False if no format is set. WP_Error if errors.
- */
-function get_post_format( $post = null ) {
-	$post = get_post($post);
-
-	if ( ! post_type_supports( $post->post_type, 'post-formats' ) )
-		return false;
-
-	$_format = get_the_terms( $post->ID, 'post_format' );
-
-	if ( empty( $_format ) )
-		return false;
-
-	$format = array_shift( $_format );
-
-	return ( str_replace('post-format-', '', $format->slug ) );
-}
-
-/**
- * Check if a post has a particular format
- *
- * @since 3.1.0
- * @uses has_term()
- *
- * @param string $format The format to check for
- * @param object|id $post The post to check. If not supplied, defaults to the current post if used in the loop.
- * @return bool True if the post has the format, false otherwise.
- */
-function has_post_format( $format, $post = null ) {
-	return has_term('post-format-' . sanitize_key($format), 'post_format', $post);
-}
-
-/**
- * Assign a format to a post
- *
- * @since 3.1.0
- *
- * @param int|object $post The post for which to assign a format
- * @param string $format  A format to assign. Use an empty string or array to remove all formats from the post.
- * @return mixed WP_Error on error. Array of affected term IDs on success.
- */
-function set_post_format( $post, $format ) {
-	$post = get_post($post);
-
-	if ( empty($post) )
-		return new WP_Error('invalid_post', __('Invalid post'));
-
-	if ( !empty($format) ) {
-		$format = sanitize_key($format);
-		if ( 'standard' == $format || !in_array( $format, array_keys( get_post_format_slugs() ) ) )
-			$format = '';
-		else
-			$format = 'post-format-' . $format;
-	}
-
-	return wp_set_post_terms($post->ID, $format, 'post_format');
-}
-
 /**
  * Retrieve the post status based on the Post ID.
  *
@@ -823,8 +769,8 @@ function set_post_format( $post, $format ) {
  *
  * @since 2.0.0
  *
- * @param int $ID Post ID
- * @return string|bool Post status or false on failure.
+ * @param int $ID Optional. Post ID. Default is the current post from the loop.
+ * @return string|bool Post status on success, false on failure.
  */
 function get_post_status($ID = '') {
 	$post = get_post($ID);
@@ -858,7 +804,7 @@ function get_post_status($ID = '') {
  *
  * @return array List of post statuses.
  */
-function get_post_statuses( ) {
+function get_post_statuses() {
 	$status = array(
 		'draft'			=> __('Draft'),
 		'pending'		=> __('Pending Review'),
@@ -879,7 +825,7 @@ function get_post_statuses( ) {
  *
  * @return array List of page statuses.
  */
-function get_page_statuses( ) {
+function get_page_statuses() {
 	$status = array(
 		'draft'			=> __('Draft'),
 		'private'		=> __('Private'),
@@ -1063,10 +1009,8 @@ function post_type_exists( $post_type ) {
  *
  * @since 2.1.0
  *
- * @uses $post The Loop current post global
- *
- * @param mixed $post Optional. Post object or post ID.
- * @return bool|string post type or false on failure.
+ * @param int|object $post Optional. Post ID or post object. Default is the current post from the loop.
+ * @return string|bool Post type on success, false on failure.
  */
 function get_post_type( $post = null ) {
 	if ( $post = get_post( $post ) )
@@ -1139,7 +1083,7 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
  *     * While the default settings of exclude_from_search, publicly_queryable, show_ui, and show_in_nav_menus are
  *       inherited from public, each does not rely on this relationship and controls a very specific intention.
  * - exclude_from_search - Whether to exclude posts with this post type from front end search results.
- *     * If not set, the the opposite of public's current value is used.
+ *     * If not set, the opposite of public's current value is used.
  * - publicly_queryable - Whether queries can be performed on the front end for the post type as part of parse_request().
  *     * ?post_type={post_type_key}
  *     * ?{post_type_key}={single_post_slug}
@@ -1594,11 +1538,8 @@ function add_post_type_support( $post_type, $feature ) {
 function remove_post_type_support( $post_type, $feature ) {
 	global $_wp_post_type_features;
 
-	if ( !isset($_wp_post_type_features[$post_type]) )
-		return;
-
-	if ( isset($_wp_post_type_features[$post_type][$feature]) )
-		unset($_wp_post_type_features[$post_type][$feature]);
+	if ( isset( $_wp_post_type_features[$post_type][$feature] ) )
+		unset( $_wp_post_type_features[$post_type][$feature] );
 }
 
 /**
@@ -1630,17 +1571,7 @@ function get_all_post_type_supports( $post_type ) {
 function post_type_supports( $post_type, $feature ) {
 	global $_wp_post_type_features;
 
-	if ( !isset( $_wp_post_type_features[$post_type][$feature] ) )
-		return false;
-
-	// If no args passed then no extra checks need be performed
-	if ( func_num_args() <= 2 )
-		return true;
-
-	// @todo Allow pluggable arg checking
-	//$args = array_slice( func_get_args(), 2 );
-
-	return true;
+	return ( isset( $_wp_post_type_features[$post_type][$feature] ) );
 }
 
 /**
@@ -1742,7 +1673,7 @@ function get_posts($args = null) {
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Metadata value.
  * @param bool $unique Optional, default is false. Whether the same key should not be added.
- * @return bool False for failure. True for success.
+ * @return int|bool Meta ID on success, false on failure.
  */
 function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
 	// make sure meta is added to the post, not a revision
@@ -1766,7 +1697,7 @@ function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
  * @param int $post_id post ID
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Optional. Metadata value.
- * @return bool False for failure. True for success.
+ * @return bool True on success, false on failure.
  */
 function delete_post_meta($post_id, $meta_key, $meta_value = '') {
 	// make sure meta is added to the post, not a revision
@@ -1809,7 +1740,7 @@ function get_post_meta($post_id, $key = '', $single = false) {
  * @param string $meta_key Metadata key.
  * @param mixed $meta_value Metadata value.
  * @param mixed $prev_value Optional. Previous value to check before removing.
- * @return bool False on failure, true if success.
+ * @return bool True on success, false on failure.
  */
 function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '') {
 	// make sure meta is added to the post, not a revision
@@ -2170,7 +2101,7 @@ function wp_count_attachments( $mime_type = '' ) {
 	$and = wp_post_mime_type_where( $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 );
 
-	$stats = array( );
+	$stats = array();
 	foreach( (array) $count as $row ) {
 		$stats[$row['post_mime_type']] = $row['num_posts'];
 	}
@@ -2458,7 +2389,7 @@ function wp_untrash_post($post_id = 0) {
  * @uses do_action() on 'trash_post_comments' before trashing
  * @uses do_action() on 'trashed_post_comments' after trashing
  *
- * @param int $post Post ID or object.
+ * @param int|object $post Post ID or object.
  * @return mixed False on failure
  */
 function wp_trash_post_comments($post = null) {
@@ -2499,7 +2430,7 @@ function wp_trash_post_comments($post = null) {
  * @uses do_action() on 'untrash_post_comments' before trashing
  * @uses do_action() on 'untrashed_post_comments' after trashing
  *
- * @param int $post Post ID or object.
+ * @param int|object $post Post ID or object.
  * @return mixed False on failure
  */
 function wp_untrash_post_comments($post = null) {
@@ -2662,7 +2593,7 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) {
  *
  * If the $postarr parameter has 'ID' set to a value, then post will be updated.
  *
- * You can set the post date manually, but setting the values for 'post_date'
+ * You can set the post date manually, by setting the values for 'post_date'
  * and 'post_date_gmt' keys. You can close the comments or open the comments by
  * setting the value for 'comment_status' key.
  *
@@ -2713,9 +2644,21 @@ function wp_insert_post($postarr, $wp_error = false) {
 	extract($postarr, EXTR_SKIP);
 
 	// Are we updating or creating?
+	$post_ID = 0;
 	$update = false;
-	if ( !empty($ID) ) {
+	if ( ! empty( $ID ) ) {
 		$update = true;
+
+		// Get the post ID and GUID
+		$post_ID = $ID;
+		$post_before = get_post( $post_ID );
+		if ( is_null( $post_before ) ) {
+			if ( $wp_error )
+				return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
+			return 0;
+		}
+
+		$guid = get_post_field( 'guid', $post_ID );
 		$previous_status = get_post_field('post_status', $ID);
 	} else {
 		$previous_status = 'new';
@@ -2723,6 +2666,7 @@ function wp_insert_post($postarr, $wp_error = false) {
 
 	$maybe_empty = ! $post_content && ! $post_title && ! $post_excerpt && post_type_supports( $post_type, 'editor' )
 		&& post_type_supports( $post_type, 'title' ) && post_type_supports( $post_type, 'excerpt' );
+
 	if ( apply_filters( 'wp_insert_post_empty_content', $maybe_empty, $postarr ) ) {
 		if ( $wp_error )
 			return new WP_Error( 'empty_content', __( 'Content, title, and excerpt are empty.' ) );
@@ -2751,15 +2695,6 @@ function wp_insert_post($postarr, $wp_error = false) {
 	if ( empty($post_author) )
 		$post_author = $user_ID;
 
-	$post_ID = 0;
-
-	// Get the post ID and GUID
-	if ( $update ) {
-		$post_ID = (int) $ID;
-		$guid = get_post_field( 'guid', $post_ID );
-		$post_before = get_post($post_ID);
-	}
-
 	// Don't allow contributors to set the post slug for pending review posts
 	if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
 		$post_name = '';
@@ -2859,11 +2794,11 @@ function wp_insert_post($postarr, $wp_error = false) {
 	// expected_slashed (everything!)
 	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) );
 	$data = apply_filters('wp_insert_post_data', $data, $postarr);
-	$data = stripslashes_deep( $data );
+	$data = wp_unslash( $data );
 	$where = array( 'ID' => $post_ID );
 
 	if ( $update ) {
-		do_action( 'pre_post_update', $post_ID );
+		do_action( 'pre_post_update', $post_ID, $data );
 		if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
 			if ( $wp_error )
 				return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
@@ -2872,7 +2807,7 @@ function wp_insert_post($postarr, $wp_error = false) {
 		}
 	} else {
 		if ( isset($post_mime_type) )
-			$data['post_mime_type'] = stripslashes( $post_mime_type ); // This isn't in the update
+			$data['post_mime_type'] = wp_unslash( $post_mime_type ); // This isn't in the update
 		// If there is a suggested ID, use it if not already present
 		if ( !empty($import_id) ) {
 			$import_id = (int) $import_id;
@@ -2966,14 +2901,20 @@ function wp_update_post( $postarr = array(), $wp_error = false ) {
 	if ( is_object($postarr) ) {
 		// non-escaped post was passed
 		$postarr = get_object_vars($postarr);
-		$postarr = add_magic_quotes($postarr);
+		$postarr = wp_slash($postarr);
 	}
 
 	// First, get all of the original fields
 	$post = get_post($postarr['ID'], ARRAY_A);
 
+	if ( is_null( $post ) ) {
+		if ( $wp_error )
+			return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
+		return 0;
+	}
+
 	// Escape data pulled from DB.
-	$post = add_magic_quotes($post);
+	$post = wp_slash($post);
 
 	// Passed post category list overwrites existing category list if not empty.
 	if ( isset($postarr['post_category']) && is_array($postarr['post_category'])
@@ -3010,7 +2951,7 @@ function wp_update_post( $postarr = array(), $wp_error = false ) {
  * @uses $wpdb
  * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data.
  *
- * @param mixed $post Post ID or object.
+ * @param int|object $post Post ID or object.
  */
 function wp_publish_post( $post ) {
 	global $wpdb;
@@ -3081,7 +3022,7 @@ function check_and_publish_future_post($post_id) {
  * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix)
  */
 function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent ) {
-	if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
+	if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) || ( 'inherit' == $post_status && 'revision' == $post_type ) )
 		return $slug;
 
 	global $wpdb, $wp_rewrite;
@@ -3101,8 +3042,8 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 		if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) {
 			$suffix = 2;
 			do {
-				$alt_post_name = substr ($slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
-				$post_name_check = $wpdb->get_var( $wpdb->prepare($check_sql, $alt_post_name, $post_ID ) );
+				$alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
+				$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID ) );
 				$suffix++;
 			} while ( $post_name_check );
 			$slug = $alt_post_name;
@@ -3118,7 +3059,7 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 		if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug )  || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) {
 			$suffix = 2;
 			do {
-				$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
+				$alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
 				$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID, $post_parent ) );
 				$suffix++;
 			} while ( $post_name_check );
@@ -3132,7 +3073,7 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 		if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) {
 			$suffix = 2;
 			do {
-				$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
+				$alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
 				$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID ) );
 				$suffix++;
 			} while ( $post_name_check );
@@ -3143,6 +3084,29 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 	return apply_filters( 'wp_unique_post_slug', $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug );
 }
 
+/**
+ * Truncates a post slug.
+ *
+ * @since 3.6.0
+ * @access private
+ * @uses utf8_uri_encode() Makes sure UTF-8 characters are properly cut and encoded.
+ *
+ * @param string $slug The slug to truncate.
+ * @param int $length Max length of the slug.
+ * @return string The truncated slug.
+ */
+function _truncate_post_slug( $slug, $length = 200 ) {
+	if ( strlen( $slug ) > $length ) {
+		$decoded_slug = urldecode( $slug );
+		if ( $decoded_slug === $slug )
+			$slug = substr( $slug, 0, $length );
+		else
+			$slug = utf8_uri_encode( $decoded_slug, $length );
+	}
+
+	return rtrim( $slug, '-' );
+}
+
 /**
  * Adds tags to a post.
  *
@@ -3296,7 +3260,7 @@ function add_ping($post_id, $uri) {
 	$new = implode("\n", $pung);
 	$new = apply_filters('add_ping', $new);
 	// expected_slashed ($new)
-	$new = stripslashes($new);
+	$new = wp_unslash($new);
 	return $wpdb->update( $wpdb->posts, array( 'pinged' => $new ), array( 'ID' => $post_id ) );
 }
 
@@ -3383,13 +3347,13 @@ function trackback_url_list($tb_list, $post_id) {
 		$excerpt = strip_tags($post_excerpt ? $post_excerpt : $post_content);
 
 		if (strlen($excerpt) > 255) {
-			$excerpt = substr($excerpt,0,252) . '...';
+			$excerpt = substr($excerpt,0,252) . '&hellip;';
 		}
 
 		$trackback_urls = explode(',', $tb_list);
 		foreach( (array) $trackback_urls as $tb_url) {
 			$tb_url = trim($tb_url);
-			trackback($tb_url, stripslashes($post_title), $excerpt, $post_id);
+			trackback($tb_url, wp_unslash($post_title), $excerpt, $post_id);
 		}
 	}
 }
@@ -3453,12 +3417,11 @@ function get_page_by_path($page_path, $output = OBJECT, $post_type = 'page') {
 	$page_path = str_replace('%2F', '/', $page_path);
 	$page_path = str_replace('%20', ' ', $page_path);
 	$parts = explode( '/', trim( $page_path, '/' ) );
-	$parts = array_map( 'esc_sql', $parts );
+	$parts = esc_sql( $parts );
 	$parts = array_map( 'sanitize_title_for_query', $parts );
 
 	$in_string = "'". implode( "','", $parts ) . "'";
-	$post_type_sql = $post_type;
-	$wpdb->escape_by_ref( $post_type_sql );
+	$post_type_sql = esc_sql( $post_type );
 	$pages = $wpdb->get_results( "SELECT ID, post_name, post_parent, post_type FROM $wpdb->posts WHERE post_name IN ($in_string) AND (post_type = '$post_type_sql' OR post_type = 'attachment')", OBJECT_K );
 
 	$revparts = array_reverse( $parts );
@@ -3646,15 +3609,20 @@ function get_pages($args = '') {
 	if ( array_diff( $post_status, get_post_stati() ) )
 		return $pages;
 
-	$cache = array();
+	// $args can be whatever, only use the args defined in defaults to compute the key
 	$key = md5( serialize( compact(array_keys($defaults)) ) );
-	if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
-		if ( is_array($cache) && isset( $cache[ $key ] ) && is_array( $cache[ $key ] ) ) {
-			// Convert to WP_Post instances
-			$pages = array_map( 'get_post', $cache[ $key ] );
-			$pages = apply_filters( 'get_pages', $pages, $r );
-			return $pages;
-		}
+	$last_changed = wp_cache_get( 'last_changed', 'posts' );
+	if ( ! $last_changed ) {
+		$last_changed = microtime();
+		wp_cache_set( 'last_changed', $last_changed, 'posts' );
+	}
+
+	$cache_key = "get_pages:$key:$last_changed";
+	if ( $cache = wp_cache_get( $cache_key, 'posts' ) ) {
+		// Convert to WP_Post instances
+		$pages = array_map( 'get_post', $cache );
+		$pages = apply_filters('get_pages', $pages, $r);
+		return $pages;
 	}
 
 	if ( !is_array($cache) )
@@ -3724,15 +3692,15 @@ function get_pages($args = '') {
 
 	$join = '';
 	$where = "$exclusions $inclusions ";
-	if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
+	if ( '' !== $meta_key || '' !== $meta_value ) {
 		$join = " LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";
 
 		// meta_key and meta_value might be slashed
-		$meta_key = stripslashes($meta_key);
-		$meta_value = stripslashes($meta_value);
-		if ( ! empty( $meta_key ) )
+		$meta_key = wp_unslash($meta_key);
+		$meta_value = wp_unslash($meta_value);
+		if ( '' !== $meta_key )
 			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s", $meta_key);
-		if ( ! empty( $meta_value ) )
+		if ( '' !== $meta_value )
 			$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s", $meta_value);
 
 	}
@@ -3824,8 +3792,11 @@ function get_pages($args = '') {
 		}
 	}
 
-	$cache[ $key ] = $pages;
-	wp_cache_set( 'get_pages', $cache, 'posts' );
+	$page_structure = array();
+	foreach ( $pages as $page )
+		$page_structure[] = $page->ID;
+
+	wp_cache_set( $cache_key, $page_structure, 'posts' );
 
 	// Convert to WP_Post instances
 	$pages = array_map( 'get_post', $pages );
@@ -3905,7 +3876,7 @@ function wp_insert_attachment($object, $file = false, $parent = 0) {
 	global $wpdb, $user_ID;
 
 	$defaults = array('post_status' => 'inherit', 'post_type' => 'post', 'post_author' => $user_ID,
-		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
+		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0, 'post_title' => '',
 		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
 		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0, 'context' => '');
 
@@ -3996,7 +3967,7 @@ function wp_insert_attachment($object, $file = false, $parent = 0) {
 
 	// expected_slashed (everything!)
 	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );
-	$data = stripslashes_deep( $data );
+	$data = wp_unslash( $data );
 
 	if ( $update ) {
 		$wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );
@@ -4632,7 +4603,7 @@ function update_post_cache( &$posts ) {
  *
  * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
  *
- * @param object|int $post The post object or ID to remove from the cache
+ * @param int|object $post Post ID or object to remove from the cache
  */
 function clean_post_cache( $post ) {
 	global $_wp_suspend_cache_invalidation, $wpdb;
@@ -4660,6 +4631,8 @@ function clean_post_cache( $post ) {
 		wp_cache_delete( 'all_page_ids', 'posts' );
 		do_action( 'clean_page_cache', $post->ID );
 	}
+
+	wp_cache_set( 'last_changed', microtime(), 'posts' );
 }
 
 /**
@@ -4820,7 +4793,7 @@ function _transition_post_status($new_status, $old_status, $post) {
  *   wp_transition_post_status() and the default filter for _future_post_hook().
  * @param object $post Object type containing the post information
  */
-function _future_post_hook( $deprecated = '', $post ) {
+function _future_post_hook( $deprecated, $post ) {
 	wp_clear_scheduled_hook( 'publish_future_post', array( $post->ID ) );
 	wp_schedule_single_event( strtotime( get_gmt_from_date( $post->post_date ) . ' GMT') , 'publish_future_post', array( $post->ID ) );
 }
@@ -4830,15 +4803,12 @@ function _future_post_hook( $deprecated = '', $post ) {
  *
  * @since 2.3.0
  * @access private
- * @uses $wpdb
- * @uses XMLRPC_REQUEST constant.
- * @uses do_action() Calls 'xmlprc_publish_post' on post ID if XMLRPC_REQUEST is defined.
+ * @uses XMLRPC_REQUEST and WP_IMPORTING constants.
+ * @uses do_action() Calls 'xmlrpc_publish_post' on post ID if XMLRPC_REQUEST is defined.
  *
  * @param int $post_id The ID in the database table of the post being published
  */
 function _publish_post_hook($post_id) {
-	global $wpdb;
-
 	if ( defined('XMLRPC_REQUEST') )
 		do_action('xmlrpc_publish_post', $post_id);
 
@@ -4852,405 +4822,6 @@ function _publish_post_hook($post_id) {
 	wp_schedule_single_event(time(), 'do_pings');
 }
 
-/**
- * Determines which fields of posts are to be saved in revisions.
- *
- * Does two things. If passed a post *array*, it will return a post array ready
- * to be inserted into the posts table as a post revision. Otherwise, returns
- * an array whose keys are the post fields to be saved for post revisions.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- * @access private
- * @uses apply_filters() Calls '_wp_post_revision_fields' on 'title', 'content' and 'excerpt' 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?
- * @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 ) {
-	static $fields = false;
-
-	if ( !$fields ) {
-		// Allow these to be versioned
-		$fields = array(
-			'post_title' => __( 'Title' ),
-			'post_content' => __( 'Content' ),
-			'post_excerpt' => __( 'Excerpt' ),
-		);
-
-		// Runs only once
-		$fields = apply_filters( '_wp_post_revision_fields', $fields );
-
-		// WP uses these internally either in versioning or elsewhere - they cannot be versioned
-		foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect )
-			unset( $fields[$protect] );
-	}
-
-	if ( !is_array($post) )
-		return $fields;
-
-	$return = array();
-	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field )
-		$return[$field] = $post[$field];
-
-	$return['post_parent']   = $post['ID'];
-	$return['post_status']   = 'inherit';
-	$return['post_type']     = 'revision';
-	$return['post_name']     = $autosave ? "$post[ID]-autosave" : "$post[ID]-revision";
-	$return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
-	$return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
-
-	return $return;
-}
-
-/**
- * Saves an already existing post as a post revision.
- *
- * Typically used immediately prior to post updates.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses _wp_put_post_revision()
- *
- * @param int $post_id The ID of the post to save as a revision.
- * @return mixed Null or 0 if error, new revision ID, if success.
- */
-function wp_save_post_revision( $post_id ) {
-	// We do autosaves manually with wp_create_post_autosave()
-	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
-		return;
-
-	// WP_POST_REVISIONS = 0, false
-	if ( ! WP_POST_REVISIONS )
-		return;
-
-	if ( !$post = get_post( $post_id, ARRAY_A ) )
-		return;
-
-	if ( 'auto-draft' == $post['post_status'] )
-		return;
-
-	if ( !post_type_supports($post['post_type'], 'revisions') )
-		return;
-
-	$return = _wp_put_post_revision( $post );
-
-	// WP_POST_REVISIONS = true (default), -1
-	if ( !is_numeric( WP_POST_REVISIONS ) || WP_POST_REVISIONS < 0 )
-		return $return;
-
-	// all revisions and (possibly) one autosave
-	$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );
-
-	// WP_POST_REVISIONS = (int) (# of autosaves to save)
-	$delete = count($revisions) - WP_POST_REVISIONS;
-
-	if ( $delete < 1 )
-		return $return;
-
-	$revisions = array_slice( $revisions, 0, $delete );
-
-	for ( $i = 0; isset($revisions[$i]); $i++ ) {
-		if ( false !== strpos( $revisions[$i]->post_name, 'autosave' ) )
-			continue;
-		wp_delete_post_revision( $revisions[$i]->ID );
-	}
-
-	return $return;
-}
-
-/**
- * Retrieve the autosaved data of the specified post.
- *
- * Returns a post object containing the information that was autosaved for the
- * specified post.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int $post_id The post ID.
- * @return object|bool The autosaved data or false on failure or when no autosave exists.
- */
-function wp_get_post_autosave( $post_id ) {
-
-	if ( !$post = get_post( $post_id ) )
-		return false;
-
-	$q = array(
-		'name' => "{$post->ID}-autosave",
-		'post_parent' => $post->ID,
-		'post_type' => 'revision',
-		'post_status' => 'inherit'
-	);
-
-	// Use WP_Query so that the result gets cached
-	$autosave_query = new WP_Query;
-
-	add_action( 'parse_query', '_wp_get_post_autosave_hack' );
-	$autosave = $autosave_query->query( $q );
-	remove_action( 'parse_query', '_wp_get_post_autosave_hack' );
-
-	if ( $autosave && is_array($autosave) && is_object($autosave[0]) )
-		return $autosave[0];
-
-	return false;
-}
-
-/**
- * Internally used to hack WP_Query into submission.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param object $query WP_Query object
- */
-function _wp_get_post_autosave_hack( $query ) {
-	$query->is_single = false;
-}
-
-/**
- * Determines if the specified post is a revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int|object $post Post ID or post object.
- * @return bool|int False if not a revision, ID of revision's parent otherwise.
- */
-function wp_is_post_revision( $post ) {
-	if ( !$post = wp_get_post_revision( $post ) )
-		return false;
-	return (int) $post->post_parent;
-}
-
-/**
- * Determines if the specified post is an autosave.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @param int|object $post Post ID or post object.
- * @return bool|int False if not a revision, ID of autosave's parent otherwise
- */
-function wp_is_post_autosave( $post ) {
-	if ( !$post = wp_get_post_revision( $post ) )
-		return false;
-	if ( "{$post->post_parent}-autosave" !== $post->post_name )
-		return false;
-	return (int) $post->post_parent;
-}
-
-/**
- * Inserts post data into the posts table as a post revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_insert_post()
- *
- * @param int|object|array $post Post ID, post object OR post array.
- * @param bool $autosave Optional. Is the revision an autosave?
- * @return mixed Null or 0 if error, new revision ID if success.
- */
-function _wp_put_post_revision( $post = null, $autosave = false ) {
-	if ( is_object($post) )
-		$post = get_object_vars( $post );
-	elseif ( !is_array($post) )
-		$post = get_post($post, ARRAY_A);
-	if ( !$post || empty($post['ID']) )
-		return;
-
-	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
-		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
-
-	$post = _wp_post_revision_fields( $post, $autosave );
-	$post = add_magic_quotes($post); //since data is from db
-
-	$revision_id = wp_insert_post( $post );
-	if ( is_wp_error($revision_id) )
-		return $revision_id;
-
-	if ( $revision_id )
-		do_action( '_wp_put_post_revision', $revision_id );
-	return $revision_id;
-}
-
-/**
- * Gets a post revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses get_post()
- *
- * @param int|object $post Post ID or post object
- * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
- * @param string $filter Optional sanitation filter. @see sanitize_post()
- * @return mixed Null if error or post object if success
- */
-function wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
-	$null = null;
-	if ( !$revision = get_post( $post, OBJECT, $filter ) )
-		return $revision;
-	if ( 'revision' !== $revision->post_type )
-		return $null;
-
-	if ( $output == OBJECT ) {
-		return $revision;
-	} elseif ( $output == ARRAY_A ) {
-		$_revision = get_object_vars($revision);
-		return $_revision;
-	} elseif ( $output == ARRAY_N ) {
-		$_revision = array_values(get_object_vars($revision));
-		return $_revision;
-	}
-
-	return $revision;
-}
-
-/**
- * Restores a post to the specified revision.
- *
- * Can restore a past revision using all fields of the post revision, or only selected fields.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_get_post_revision()
- * @uses wp_update_post()
- * @uses do_action() Calls 'wp_restore_post_revision' on post ID and revision ID if wp_update_post()
- *  is successful.
- *
- * @param int|object $revision_id Revision ID or revision object.
- * @param array $fields Optional. What fields to restore from. Defaults to all.
- * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
- */
-function wp_restore_post_revision( $revision_id, $fields = null ) {
-	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
-		return $revision;
-
-	if ( !is_array( $fields ) )
-		$fields = array_keys( _wp_post_revision_fields() );
-
-	$update = array();
-	foreach( array_intersect( array_keys( $revision ), $fields ) as $field )
-		$update[$field] = $revision[$field];
-
-	if ( !$update )
-		return false;
-
-	$update['ID'] = $revision['post_parent'];
-
-	$update = add_magic_quotes( $update ); //since data is from db
-
-	$post_id = wp_update_post( $update );
-	if ( is_wp_error( $post_id ) )
-		return $post_id;
-
-	if ( $post_id )
-		do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
-
-	return $post_id;
-}
-
-/**
- * Deletes a revision.
- *
- * Deletes the row from the posts table corresponding to the specified revision.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses wp_get_post_revision()
- * @uses wp_delete_post()
- *
- * @param int|object $revision_id Revision ID or revision object.
- * @return mixed Null or WP_Error if error, deleted post if success.
- */
-function wp_delete_post_revision( $revision_id ) {
-	if ( !$revision = wp_get_post_revision( $revision_id ) )
-		return $revision;
-
-	$delete = wp_delete_post( $revision->ID );
-	if ( is_wp_error( $delete ) )
-		return $delete;
-
-	if ( $delete )
-		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
-
-	return $delete;
-}
-
-/**
- * Returns all revisions of specified post.
- *
- * @package WordPress
- * @subpackage Post_Revisions
- * @since 2.6.0
- *
- * @uses get_children()
- *
- * @param int|object $post_id Post ID or post object
- * @return array empty if no revisions
- */
-function wp_get_post_revisions( $post_id = 0, $args = null ) {
-	if ( ! WP_POST_REVISIONS )
-		return array();
-	if ( ( !$post = get_post( $post_id ) ) || empty( $post->ID ) )
-		return array();
-
-	$defaults = array( 'order' => 'DESC', 'orderby' => 'date' );
-	$args = wp_parse_args( $args, $defaults );
-	$args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) );
-
-	if ( !$revisions = get_children( $args ) )
-		return array();
-	return $revisions;
-}
-
-function _set_preview($post) {
-
-	if ( ! is_object($post) )
-		return $post;
-
-	$preview = wp_get_post_autosave($post->ID);
-
-	if ( ! is_object($preview) )
-		return $post;
-
-	$preview = sanitize_post($preview);
-
-	$post->post_content = $preview->post_content;
-	$post->post_title = $preview->post_title;
-	$post->post_excerpt = $preview->post_excerpt;
-
-	return $post;
-}
-
-function _show_post_preview() {
-
-	if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
-		$id = (int) $_GET['preview_id'];
-
-		if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )
-			wp_die( __('You do not have permission to preview drafts.') );
-
-		add_filter('the_preview', '_set_preview');
-	}
-}
-
 /**
  * Returns the post's parent's post_ID
  *
@@ -5310,57 +4881,6 @@ function wp_check_post_hierarchy_for_loops( $post_parent, $post_ID ) {
 	return $post_parent;
 }
 
-/**
- * Returns an array of post format slugs to their translated and pretty display versions
- *
- * @since 3.1.0
- *
- * @return array The array of translations
- */
-function get_post_format_strings() {
-	$strings = array(
-		'standard' => _x( 'Standard', 'Post format' ), // Special case. any value that evals to false will be considered standard
-		'aside'    => _x( 'Aside',    'Post format' ),
-		'chat'     => _x( 'Chat',     'Post format' ),
-		'gallery'  => _x( 'Gallery',  'Post format' ),
-		'link'     => _x( 'Link',     'Post format' ),
-		'image'    => _x( 'Image',    'Post format' ),
-		'quote'    => _x( 'Quote',    'Post format' ),
-		'status'   => _x( 'Status',   'Post format' ),
-		'video'    => _x( 'Video',    'Post format' ),
-		'audio'    => _x( 'Audio',    'Post format' ),
-	);
-	return $strings;
-}
-
-/**
- * Retrieves an array of post format slugs.
- *
- * @since 3.1.0
- *
- * @return array The array of post format slugs.
- */
-function get_post_format_slugs() {
-	$slugs = array_keys( get_post_format_strings() );
-	return array_combine( $slugs, $slugs );
-}
-
-/**
- * Returns a pretty, translated version of a post format slug
- *
- * @since 3.1.0
- *
- * @param string $slug A post format slug
- * @return string The translated post format name
- */
-function get_post_format_string( $slug ) {
-	$strings = get_post_format_strings();
-	if ( !$slug )
-		return $strings['standard'];
-	else
-		return ( isset( $strings[$slug] ) ) ? $strings[$slug] : '';
-}
-
 /**
  * Sets a post thumbnail.
  *
@@ -5397,21 +4917,6 @@ function delete_post_thumbnail( $post ) {
 	return false;
 }
 
-/**
- * Returns a link to a post format index.
- *
- * @since 3.1.0
- *
- * @param string $format Post format
- * @return string Link
- */
-function get_post_format_link( $format ) {
-	$term = get_term_by('slug', 'post-format-' . $format, 'post_format' );
-	if ( ! $term || is_wp_error( $term ) )
-		return false;
-	return get_term_link( $term );
-}
-
 /**
  * Deletes auto-drafts for new posts that are > 7 days old
  *
@@ -5426,98 +4931,6 @@ function wp_delete_auto_drafts() {
 		wp_delete_post( $delete, true ); // Force delete
 }
 
-/**
- * Filters the request to allow for the format prefix.
- *
- * @access private
- * @since 3.1.0
- */
-function _post_format_request( $qvs ) {
-	if ( ! isset( $qvs['post_format'] ) )
-		return $qvs;
-	$slugs = get_post_format_slugs();
-	if ( isset( $slugs[ $qvs['post_format'] ] ) )
-		$qvs['post_format'] = 'post-format-' . $slugs[ $qvs['post_format'] ];
-	$tax = get_taxonomy( 'post_format' );
-	if ( ! is_admin() )
-		$qvs['post_type'] = $tax->object_type;
-	return $qvs;
-}
-add_filter( 'request', '_post_format_request' );
-
-/**
- * Filters the post format term link to remove the format prefix.
- *
- * @access private
- * @since 3.1.0
- */
-function _post_format_link( $link, $term, $taxonomy ) {
-	global $wp_rewrite;
-	if ( 'post_format' != $taxonomy )
-		return $link;
-	if ( $wp_rewrite->get_extra_permastruct( $taxonomy ) ) {
-		return str_replace( "/{$term->slug}", '/' . str_replace( 'post-format-', '', $term->slug ), $link );
-	} else {
-		$link = remove_query_arg( 'post_format', $link );
-		return add_query_arg( 'post_format', str_replace( 'post-format-', '', $term->slug ), $link );
-	}
-}
-add_filter( 'term_link', '_post_format_link', 10, 3 );
-
-/**
- * Remove the post format prefix from the name property of the term object created by get_term().
- *
- * @access private
- * @since 3.1.0
- */
-function _post_format_get_term( $term ) {
-	if ( isset( $term->slug ) ) {
-		$term->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
-	}
-	return $term;
-}
-add_filter( 'get_post_format', '_post_format_get_term' );
-
-/**
- * Remove the post format prefix from the name property of the term objects created by get_terms().
- *
- * @access private
- * @since 3.1.0
- */
-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 ) {
-				$terms[$order] = get_post_format_string( str_replace( 'post-format-', '', $name ) );
-			}
-		} else {
-			foreach ( (array) $terms as $order => $term ) {
-				if ( isset( $term->taxonomy ) && 'post_format' == $term->taxonomy ) {
-					$terms[$order]->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
-				}
-			}
-		}
-	}
-	return $terms;
-}
-add_filter( 'get_terms', '_post_format_get_terms', 10, 3 );
-
-/**
- * Remove the post format prefix from the name property of the term objects created by wp_get_object_terms().
- *
- * @access private
- * @since 3.1.0
- */
-function _post_format_wp_get_object_terms( $terms ) {
-	foreach ( (array) $terms as $order => $term ) {
-		if ( isset( $term->taxonomy ) && 'post_format' == $term->taxonomy ) {
-			$terms[$order]->name = get_post_format_string( str_replace( 'post-format-', '', $term->slug ) );
-		}
-	}
-	return $terms;
-}
-add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' );
-
 /**
  * Update the custom taxonomies' term counts when a post's status is changed. For example, default posts term counts (for custom taxonomies) don't include private / draft posts.
  *
diff --git a/wp-includes/query.php b/wp-includes/query.php
index 443d0bb74..04286aa51 100644
--- a/wp-includes/query.php
+++ b/wp-includes/query.php
@@ -2,8 +2,8 @@
 /**
  * WordPress Query API
  *
- * The query API attempts to get which part of WordPress to the user is on. It
- * also provides functionality to getting URL query information.
+ * The query API attempts to get which part of WordPress the user is on. It
+ * also provides functionality for getting URL query information.
  *
  * @link http://codex.wordpress.org/The_Loop More information on The Loop.
  *
@@ -1406,8 +1406,8 @@ class WP_Query {
 				$array[$key] = '';
 		}
 
-		$array_keys = array('category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in',
-			'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and');
+		$array_keys = array( 'category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in',
+			'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'post_parent__in', 'post_parent__not_in' );
 
 		foreach ( $array_keys as $key ) {
 			if ( !isset($array[$key]) )
@@ -2079,7 +2079,7 @@ class WP_Query {
 		if ( $q['day'] )
 			$where .= " AND DAYOFMONTH($wpdb->posts.post_date)='" . $q['day'] . "'";
 
-		// If we've got a post_type AND its not "any" post_type.
+		// If we've got a post_type AND it's not "any" post_type.
 		if ( !empty($q['post_type']) && 'any' != $q['post_type'] ) {
 			foreach ( (array)$q['post_type'] as $_post_type ) {
 				$ptype_obj = get_post_type_object($_post_type);
@@ -2168,8 +2168,15 @@ class WP_Query {
 			$where .= " AND {$wpdb->posts}.ID NOT IN ($post__not_in)";
 		}
 
-		if ( is_numeric($q['post_parent']) )
+		if ( is_numeric( $q['post_parent'] ) ) {
 			$where .= $wpdb->prepare( " AND $wpdb->posts.post_parent = %d ", $q['post_parent'] );
+		} elseif ( $q['post_parent__in'] ) {
+			$post_parent__in = implode( ',', array_map( 'absint', $q['post_parent__in'] ) );
+			$where .= " AND {$wpdb->posts}.post_parent IN ($post_parent__in)";
+		} elseif ( $q['post_parent__not_in'] ) {
+			$post_parent__not_in = implode( ',',  array_map( 'absint', $q['post_parent__not_in'] ) );
+			$where .= " AND {$wpdb->posts}.post_parent NOT IN ($post_parent__not_in)";
+		}
 
 		if ( $q['page_id'] ) {
 			if  ( ('page' != get_option('show_on_front') ) || ( $q['page_id'] != get_option('page_for_posts') ) ) {
@@ -2230,6 +2237,8 @@ class WP_Query {
 				}
 				if ( ! $post_type )
 					$post_type = 'any';
+				elseif ( count( $post_type ) == 1 )
+					$post_type = $post_type[0];
 
 				$post_status_join = true;
 			} elseif ( in_array('attachment', (array) $post_type) ) {
@@ -2256,25 +2265,30 @@ class WP_Query {
 				}
 
 				$cat_query = wp_list_filter( $tax_query_in_and, array( 'taxonomy' => 'category' ) );
-				if ( !empty( $cat_query ) ) {
+				if ( ! empty( $cat_query ) ) {
 					$cat_query = reset( $cat_query );
-					$the_cat = get_term_by( $cat_query['field'], $cat_query['terms'][0], 'category' );
-					if ( $the_cat ) {
-						$this->set( 'cat', $the_cat->term_id );
-						$this->set( 'category_name', $the_cat->slug );
+
+					if ( ! empty( $cat_query['terms'][0] ) ) {
+						$the_cat = get_term_by( $cat_query['field'], $cat_query['terms'][0], 'category' );
+						if ( $the_cat ) {
+							$this->set( 'cat', $the_cat->term_id );
+							$this->set( 'category_name', $the_cat->slug );
+						}
+						unset( $the_cat );
 					}
-					unset( $the_cat );
 				}
 				unset( $cat_query );
 
 				$tag_query = wp_list_filter( $tax_query_in_and, array( 'taxonomy' => 'post_tag' ) );
-				if ( !empty( $tag_query ) ) {
+				if ( ! empty( $tag_query ) ) {
 					$tag_query = reset( $tag_query );
-					$the_tag = get_term_by( $tag_query['field'], $tag_query['terms'][0], 'post_tag' );
-					if ( $the_tag ) {
-						$this->set( 'tag_id', $the_tag->term_id );
+
+					if ( ! empty( $tag_query['terms'][0] ) ) {
+						$the_tag = get_term_by( $tag_query['field'], $tag_query['terms'][0], 'post_tag' );
+						if ( $the_tag )
+							$this->set( 'tag_id', $the_tag->term_id );
+						unset( $the_tag );
 					}
-					unset( $the_tag );
 				}
 				unset( $tag_query );
 			}
@@ -2343,6 +2357,8 @@ class WP_Query {
 			$orderby = '';
 		} elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) {
 			$orderby = "FIELD( {$wpdb->posts}.ID, $post__in )";
+		} elseif ( $q['orderby'] == 'post_parent__in' && ! empty( $post_parent__in ) ) {
+			$orderby = "FIELD( {$wpdb->posts}.post_parent, $post_parent__in )";
 		} else {
 			// Used to filter values
 			$allowed_keys = array('name', 'author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count');
@@ -2394,9 +2410,11 @@ class WP_Query {
 				$orderby .= " {$q['order']}";
 		}
 
-		if ( is_array( $post_type ) ) {
+		if ( is_array( $post_type ) && count( $post_type ) > 1 ) {
 			$post_type_cap = 'multiple_post_type';
 		} else {
+			if ( is_array( $post_type ) )
+				$post_type = reset( $post_type );
 			$post_type_object = get_post_type_object( $post_type );
 			if ( empty( $post_type_object ) )
 				$post_type_cap = $post_type;
@@ -2422,14 +2440,13 @@ class WP_Query {
 			$post_type_object = get_post_type_object ( 'post' );
 		}
 
+		$edit_cap = 'edit_post';
+		$read_cap = 'read_post';
+
 		if ( ! empty( $post_type_object ) ) {
-			$edit_cap = $post_type_object->cap->edit_post;
-			$read_cap = $post_type_object->cap->read_post;
 			$edit_others_cap = $post_type_object->cap->edit_others_posts;
 			$read_private_cap = $post_type_object->cap->read_private_posts;
 		} else {
-			$edit_cap = 'edit_' . $post_type_cap;
-			$read_cap = 'read_' . $post_type_cap;
 			$edit_others_cap = 'edit_others_' . $post_type_cap . 's';
 			$read_private_cap = 'read_private_' . $post_type_cap . 's';
 		}
@@ -2800,7 +2817,7 @@ class WP_Query {
 	function set_found_posts( $q, $limits ) {
 		global $wpdb;
 
-		// Bail if posts is an empty array. Continue if posts is an empty string
+		// Bail if posts is an empty array. Continue if posts is an empty string,
 		// null, or false to accommodate caching plugins that fill posts later.
 		if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) )
 			return;
@@ -3622,7 +3639,7 @@ function wp_old_slug_redirect() {
  * @uses do_action_ref_array() Calls 'the_post'
  * @return bool True when finished.
  */
-function setup_postdata($post) {
+function setup_postdata( $post ) {
 	global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;
 
 	$id = (int) $post->ID;
@@ -3632,24 +3649,28 @@ function setup_postdata($post) {
 	$currentday = mysql2date('d.m.y', $post->post_date, false);
 	$currentmonth = mysql2date('m', $post->post_date, false);
 	$numpages = 1;
+	$multipage = 0;
 	$page = get_query_var('page');
-	if ( !$page )
+	if ( ! $page )
 		$page = 1;
 	if ( is_single() || is_page() || is_feed() )
 		$more = 1;
 	$content = $post->post_content;
-	if ( strpos( $content, '<!--nextpage-->' ) ) {
+	if ( false !== strpos( $content, '<!--nextpage-->' ) ) {
 		if ( $page > 1 )
 			$more = 1;
-		$multipage = 1;
-		$content = str_replace("\n<!--nextpage-->\n", '<!--nextpage-->', $content);
-		$content = str_replace("\n<!--nextpage-->", '<!--nextpage-->', $content);
-		$content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content);
+		$content = str_replace( "\n<!--nextpage-->\n", '<!--nextpage-->', $content );
+		$content = str_replace( "\n<!--nextpage-->", '<!--nextpage-->', $content );
+		$content = str_replace( "<!--nextpage-->\n", '<!--nextpage-->', $content );
+		// Ignore nextpage at the beginning of the content.
+		if ( 0 === strpos( $content, '<!--nextpage-->' ) )
+			$content = substr( $content, 15 );
 		$pages = explode('<!--nextpage-->', $content);
 		$numpages = count($pages);
+		if ( $numpages > 1 )
+			$multipage = 1;
 	} else {
 		$pages = array( $post->post_content );
-		$multipage = 0;
 	}
 
 	do_action_ref_array('the_post', array(&$post));
diff --git a/wp-includes/revision.php b/wp-includes/revision.php
new file mode 100644
index 000000000..5f441d3f5
--- /dev/null
+++ b/wp-includes/revision.php
@@ -0,0 +1,603 @@
+<?php
+/**
+ * Post revision functions.
+ *
+ * @package WordPress
+ * @subpackage Post_Revisions
+ */
+
+/**
+ * Determines which fields of posts are to be saved in revisions.
+ *
+ * Does two things. If passed a post *array*, it will return a post array ready
+ * to be inserted into the posts table as a post revision. Otherwise, returns
+ * an array whose keys are the post fields to be saved for post revisions.
+ *
+ * @since 2.6.0
+ * @access private
+ *
+ * @uses apply_filters() Calls '_wp_post_revision_fields' on 'title', 'content' and 'excerpt' 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?
+ * @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 ) {
+	static $fields = false;
+
+	if ( !$fields ) {
+		// Allow these to be versioned
+		$fields = array(
+			'post_title' => __( 'Title' ),
+			'post_content' => __( 'Content' ),
+			'post_excerpt' => __( 'Excerpt' ),
+		);
+
+		// Runs only once
+		$fields = apply_filters( '_wp_post_revision_fields', $fields );
+
+		// WP uses these internally either in versioning or elsewhere - they cannot be versioned
+		foreach ( array( 'ID', 'post_name', 'post_parent', 'post_date', 'post_date_gmt', 'post_status', 'post_type', 'comment_count', 'post_author' ) as $protect )
+			unset( $fields[$protect] );
+	}
+
+	if ( !is_array($post) )
+		return $fields;
+
+	$return = array();
+	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field )
+		$return[$field] = $post[$field];
+
+	$return['post_parent']   = $post['ID'];
+	$return['post_status']   = 'inherit';
+	$return['post_type']     = 'revision';
+	$return['post_name']     = $autosave ? "$post[ID]-autosave-v1" : "$post[ID]-revision-v1"; // "1" is the revisioning system version
+	$return['post_date']     = isset($post['post_modified']) ? $post['post_modified'] : '';
+	$return['post_date_gmt'] = isset($post['post_modified_gmt']) ? $post['post_modified_gmt'] : '';
+
+	return $return;
+}
+
+/**
+ * Saves an already existing post as a post revision.
+ *
+ * Typically used immediately after post updates.
+ * Adds a copy of the current post as a revision, so latest revision always matches current post
+ *
+ * @since 2.6.0
+ *
+ * @uses _wp_put_post_revision()
+ *
+ * @param int $post_id The ID of the post to save as a revision.
+ * @return mixed Null or 0 if error, new revision ID, if success.
+ */
+function wp_save_post_revision( $post_id ) {
+	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
+		return;
+
+	if ( ! $post = get_post( $post_id ) )
+		return;
+
+	if ( ! post_type_supports( $post->post_type, 'revisions' ) )
+		return;
+
+	if ( 'auto-draft' == $post->post_status )
+		return;
+
+	if ( ! wp_revisions_enabled( $post ) )
+		return;
+
+	// Compare the proposed update with the last stored revision verifying that
+	// they are different, unless a plugin tells us to always save regardless.
+	// If no previous revisions, save one
+	if ( $revisions = wp_get_post_revisions( $post_id ) ) {
+		// grab the last revision, but not an autosave
+		foreach ( $revisions as $revision ) {
+			if ( false !== strpos( $revision->post_name, "{$revision->post_parent}-revision" ) ) {
+				$last_revision = $revision;
+				break;
+			}
+		}
+
+		if ( isset( $last_revision ) && apply_filters( 'wp_save_post_revision_check_for_changes', true, $last_revision, $post ) ) {
+			$post_has_changed = false;
+
+			foreach ( array_keys( _wp_post_revision_fields() ) as $field ) {
+				if ( normalize_whitespace( $post->$field ) != normalize_whitespace( $last_revision->$field ) ) {
+					$post_has_changed = true;
+					break;
+				}
+			}
+			//don't save revision if post unchanged
+			if( ! $post_has_changed )
+				return;
+		}
+	}
+
+	$return = _wp_put_post_revision( $post );
+
+	$revisions_to_keep = wp_revisions_to_keep( $post );
+
+	if ( $revisions_to_keep < 0 )
+		return $return;
+
+	// all revisions and autosaves
+	$revisions = wp_get_post_revisions( $post_id, array( 'order' => 'ASC' ) );
+
+	$delete = count($revisions) - $revisions_to_keep;
+
+	if ( $delete < 1 )
+		return $return;
+
+	$revisions = array_slice( $revisions, 0, $delete );
+
+	for ( $i = 0; isset( $revisions[$i] ); $i++ ) {
+		if ( false !== strpos( $revisions[ $i ]->post_name, 'autosave' ) )
+			continue;
+
+		wp_delete_post_revision( $revisions[ $i ]->ID );
+	}
+
+	return $return;
+}
+
+/**
+ * Retrieve the autosaved data of the specified post.
+ *
+ * Returns a post object containing the information that was autosaved for the
+ * specified post. If the optional $user_id is passed, returns the autosave for that user
+ * otherwise returns the latest autosave.
+ *
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revisions()
+ *
+ * @param int $post_id The post ID.
+ * @param int $user_id optional The post author ID.
+ * @return object|bool The autosaved data or false on failure or when no autosave exists.
+ */
+function wp_get_post_autosave( $post_id, $user_id = 0 ) {
+	$revisions = wp_get_post_revisions( $post_id, array( 'check_enabled' => false ) );
+
+	foreach ( $revisions as $revision ) {
+		if ( false !== strpos( $revision->post_name, "{$post_id}-autosave" ) ) {
+			if ( $user_id && $user_id != $revision->post_author )
+				continue;
+
+			return $revision;
+			break;
+		}
+	}
+
+	return false;
+}
+
+/**
+ * Determines if the specified post is a revision.
+ *
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of revision's parent otherwise.
+ */
+function wp_is_post_revision( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+
+	return (int) $post->post_parent;
+}
+
+/**
+ * Determines if the specified post is an autosave.
+ *
+ * @since 2.6.0
+ *
+ * @param int|object $post Post ID or post object.
+ * @return bool|int False if not a revision, ID of autosave's parent otherwise
+ */
+function wp_is_post_autosave( $post ) {
+	if ( !$post = wp_get_post_revision( $post ) )
+		return false;
+
+	if ( false !== strpos( $post->post_name, "{$post->post_parent}-autosave" ) )
+		return (int) $post->post_parent;
+
+	return false;
+}
+
+/**
+ * Inserts post data into the posts table as a post revision.
+ *
+ * @since 2.6.0
+ * @access private
+ *
+ * @uses wp_insert_post()
+ *
+ * @param int|object|array $post Post ID, post object OR post array.
+ * @param bool $autosave Optional. Is the revision an autosave?
+ * @return mixed Null or 0 if error, new revision ID if success.
+ */
+function _wp_put_post_revision( $post = null, $autosave = false ) {
+	if ( is_object($post) )
+		$post = get_object_vars( $post );
+	elseif ( !is_array($post) )
+		$post = get_post($post, ARRAY_A);
+
+	if ( !$post || empty($post['ID']) )
+		return;
+
+	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
+		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
+
+	$post_id = $post['ID'];
+	$post = _wp_post_revision_fields( $post, $autosave );
+	$post = wp_slash($post); //since data is from db
+
+	$revision_id = wp_insert_post( $post );
+	if ( is_wp_error($revision_id) )
+		return $revision_id;
+
+	if ( $revision_id )
+		do_action( '_wp_put_post_revision', $revision_id );
+
+	return $revision_id;
+}
+
+/**
+ * Gets a post revision.
+ *
+ * @since 2.6.0
+ *
+ * @uses get_post()
+ *
+ * @param int|object $post The post ID or object.
+ * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
+ * @param string $filter Optional sanitation filter. @see sanitize_post().
+ * @return mixed Null if error or post object if success.
+ */
+function wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
+	$null = null;
+	if ( !$revision = get_post( $post, OBJECT, $filter ) )
+		return $revision;
+	if ( 'revision' !== $revision->post_type )
+		return $null;
+
+	if ( $output == OBJECT ) {
+		return $revision;
+	} elseif ( $output == ARRAY_A ) {
+		$_revision = get_object_vars($revision);
+		return $_revision;
+	} elseif ( $output == ARRAY_N ) {
+		$_revision = array_values(get_object_vars($revision));
+		return $_revision;
+	}
+
+	return $revision;
+}
+
+/**
+ * Restores a post to the specified revision.
+ *
+ * Can restore a past revision using all fields of the post revision, or only selected fields.
+ *
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_update_post()
+ * @uses do_action() Calls 'wp_restore_post_revision' on post ID and revision ID if wp_update_post()
+ *  is successful.
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @param array $fields Optional. What fields to restore from. Defaults to all.
+ * @return mixed Null if error, false if no fields to restore, (int) post ID if success.
+ */
+function wp_restore_post_revision( $revision_id, $fields = null ) {
+	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
+		return $revision;
+
+	if ( !is_array( $fields ) )
+		$fields = array_keys( _wp_post_revision_fields() );
+
+	$update = array();
+	foreach( array_intersect( array_keys( $revision ), $fields ) as $field ) {
+		$update[$field] = $revision[$field];
+	}
+
+	if ( !$update )
+		return false;
+
+	$update['ID'] = $revision['post_parent'];
+
+	$update = wp_slash( $update ); //since data is from db
+
+	$post_id = wp_update_post( $update );
+	if ( ! $post_id || is_wp_error( $post_id ) )
+		return $post_id;
+
+	// Add restore from details
+	$restore_details = array(
+		'restored_revision_id' => $revision_id,
+		'restored_by_user'     => get_current_user_id(),
+		'restored_time'        => time()
+	);
+	update_post_meta( $post_id, '_post_restored_from', $restore_details );
+
+	// Update last edit user
+	update_post_meta( $post_id, '_edit_last', get_current_user_id() );
+
+	do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
+
+	return $post_id;
+}
+
+/**
+ * Deletes a revision.
+ *
+ * Deletes the row from the posts table corresponding to the specified revision.
+ *
+ * @since 2.6.0
+ *
+ * @uses wp_get_post_revision()
+ * @uses wp_delete_post()
+ *
+ * @param int|object $revision_id Revision ID or revision object.
+ * @return mixed Null or WP_Error if error, deleted post if success.
+ */
+function wp_delete_post_revision( $revision_id ) {
+	if ( !$revision = wp_get_post_revision( $revision_id ) )
+		return $revision;
+
+	$delete = wp_delete_post( $revision->ID );
+	if ( is_wp_error( $delete ) )
+		return $delete;
+
+	if ( $delete )
+		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
+
+	return $delete;
+}
+
+/**
+ * Returns all revisions of specified post.
+ *
+ * @since 2.6.0
+ *
+ * @uses get_children()
+ *
+ * @param int|object $post_id Post ID or post object
+ * @return array An array of revisions, or an empty array if none.
+ */
+function wp_get_post_revisions( $post_id = 0, $args = null ) {
+	$post = get_post( $post_id );
+	if ( ! $post || empty( $post->ID ) )
+		return array();
+
+	$defaults = array( 'order' => 'DESC', 'orderby' => 'date', 'check_enabled' => true );
+	$args = wp_parse_args( $args, $defaults );
+
+	if ( $args['check_enabled'] && ! wp_revisions_enabled( $post ) )
+		return array();
+
+	$args = array_merge( $args, array( 'post_parent' => $post->ID, 'post_type' => 'revision', 'post_status' => 'inherit' ) );
+
+	if ( ! $revisions = get_children( $args ) )
+		return array();
+
+	return $revisions;
+}
+
+/**
+ * Determine if revisions are enabled for a given post.
+ *
+ * @since 3.6.0
+ *
+ * @uses wp_revisions_to_keep()
+ *
+ * @param object $post The post object.
+ * @return bool True if number of revisions to keep isn't zero, false otherwise.
+ */
+function wp_revisions_enabled( $post ) {
+	return wp_revisions_to_keep( $post ) != 0;
+}
+
+/**
+ * Determine how many revisions to retain for a given post.
+ * By default, an infinite number of revisions are stored if a post type supports revisions.
+ *
+ * @since 3.6.0
+ *
+ * @uses post_type_supports()
+ * @uses apply_filters() Calls 'wp_revisions_to_keep' hook on the number of revisions.
+ *
+ * @param object $post The post object.
+ * @return int The number of revisions to keep.
+ */
+function wp_revisions_to_keep( $post ) {
+	$num = WP_POST_REVISIONS;
+
+	if ( true === $num )
+		$num = -1;
+	else
+		$num = intval( $num );
+
+	if ( ! post_type_supports( $post->post_type, 'revisions' ) )
+		$num = 0;
+
+	return (int) apply_filters( 'wp_revisions_to_keep', $num, $post );
+}
+
+/**
+ * Sets up the post object for preview based on the post autosave.
+ *
+ * @since 2.7.0
+ * @access private
+ */
+function _set_preview($post) {
+
+	if ( ! is_object($post) )
+		return $post;
+
+	$preview = wp_get_post_autosave($post->ID);
+
+	if ( ! is_object($preview) )
+		return $post;
+
+	$preview = sanitize_post($preview);
+
+	$post->post_content = $preview->post_content;
+	$post->post_title = $preview->post_title;
+	$post->post_excerpt = $preview->post_excerpt;
+
+	add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 );
+
+	return $post;
+}
+
+/**
+ * Filters the latest content for preview from the post autosave.
+ *
+ * @since 2.7.0
+ * @access private
+ */
+function _show_post_preview() {
+
+	if ( isset($_GET['preview_id']) && isset($_GET['preview_nonce']) ) {
+		$id = (int) $_GET['preview_id'];
+
+		if ( false == wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $id ) )
+			wp_die( __('You do not have permission to preview drafts.') );
+
+		add_filter('the_preview', '_set_preview');
+	}
+}
+
+/**
+ * Filters terms lookup to set the post format.
+ *
+ * @since 3.6.0
+ * @access private
+ */
+function _wp_preview_terms_filter( $terms, $post_id, $taxonomy ) {
+	if ( ! $post = get_post() )
+		return $terms;
+
+	if ( empty( $_REQUEST['post_format'] ) || $post->ID != $post_id || 'post_format' != $taxonomy || 'revision' == $post->post_type )
+		return $terms;
+
+	if ( 'standard' == $_REQUEST['post_format'] )
+		$terms = array();
+	elseif ( $term = get_term_by( 'slug', 'post-format-' . sanitize_key( $_REQUEST['post_format'] ), 'post_format' ) )
+		$terms = array( $term ); // Can only have one post format
+
+	return $terms;
+}
+
+/**
+ * Gets the post revision version.
+ *
+ * @since 3.6.0
+ * @access private
+*/
+function _wp_get_post_revision_version( $revision ) {
+	if ( is_object( $revision ) )
+		$revision = get_object_vars( $revision );
+	elseif ( !is_array( $revision ) )
+		return false;
+
+	if ( preg_match( '/^\d+-(?:autosave|revision)-v(\d+)$/', $revision['post_name'], $matches ) )
+		return (int) $matches[1];
+
+	return 0;
+}
+
+/**
+ * Upgrade the revisions author, add the current post as a revision and set the revisions version to 1
+ *
+ * @since 3.6.0
+ * @access private
+ *
+ * @uses wp_get_post_revisions()
+ *
+ * @param object $post Post object
+ * @param array $revisions Current revisions of the post
+ * @return bool true if the revisions were upgraded, false if problems
+ */
+function _wp_upgrade_revisions_of_post( $post, $revisions ) {
+	global $wpdb;
+
+	// Add post option exclusively
+	$lock = "revision-upgrade-{$post->ID}";
+	$now = time();
+	$result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, 'no') /* LOCK */", $lock, $now ) );
+	if ( ! $result ) {
+		// If we couldn't get a lock, see how old the previous lock is
+		$locked = get_option( $lock );
+		if ( ! $locked ) {
+			// Can't write to the lock, and can't read the lock.
+			// Something broken has happened
+			return false;
+		}
+
+		if ( $locked > $now - 3600 ) {
+			// Lock is not too old: some other process may be upgrading this post.  Bail.
+			return false;
+		}
+
+		// Lock is too old - update it (below) and continue
+	}
+
+	// If we could get a lock, re-"add" the option to fire all the correct filters.
+	update_option( $lock, $now );
+
+	reset( $revisions );
+	$add_last = true;
+
+	do {
+		$this_revision = current( $revisions );
+		$prev_revision = next( $revisions );
+
+		$this_revision_version = _wp_get_post_revision_version( $this_revision );
+
+		// Something terrible happened
+		if ( false === $this_revision_version )
+			continue;
+
+		// 1 is the latest revision version, so we're already up to date.
+		// No need to add a copy of the post as latest revision.
+		if ( 0 < $this_revision_version ) {
+			$add_last = false;
+			continue;
+		}
+
+		// Always update the revision version
+		$update = array(
+			'post_name' => preg_replace( '/^(\d+-(?:autosave|revision))[\d-]*$/', '$1-v1', $this_revision->post_name ),
+		);
+
+		// If this revision is the oldest revision of the post, i.e. no $prev_revision,
+		// the correct post_author is probably $post->post_author, but that's only a good guess.
+		// Update the revision version only and Leave the author as-is.
+		if ( $prev_revision ) {
+			$prev_revision_version = _wp_get_post_revision_version( $prev_revision );
+
+			// If the previous revision is already up to date, it no longer has the information we need :(
+			if ( $prev_revision_version < 1 )
+				$update['post_author'] = $prev_revision->post_author;
+		}
+
+		// Upgrade this revision
+		$result = $wpdb->update( $wpdb->posts, $update, array( 'ID' => $this_revision->ID ) );
+
+		if ( $result )
+			wp_cache_delete( $this_revision->ID, 'posts' );
+
+	} while ( $prev_revision );
+
+	delete_option( $lock );
+
+	// Add a copy of the post as latest revision.
+	if ( $add_last )
+		wp_save_post_revision( $post->ID );
+
+	return true;
+}
diff --git a/wp-includes/rewrite.php b/wp-includes/rewrite.php
index 486922a3d..88237e06c 100644
--- a/wp-includes/rewrite.php
+++ b/wp-includes/rewrite.php
@@ -89,7 +89,7 @@ function add_feed($feedname, $function) {
 		$wp_rewrite->feeds[] = $feedname;
 	$hook = 'do_feed_' . $feedname;
 	// Remove default function hook
-	remove_action($hook, $hook, 10, 1);
+	remove_action($hook, $hook);
 	add_action($hook, $function, 10, 1);
 	return $hook;
 }
@@ -315,7 +315,7 @@ function url_to_postid($url) {
 
 	// Strip 'index.php/' if we're not using path info permalinks
 	if ( !$wp_rewrite->using_index_permalinks() )
-		$url = str_replace('index.php/', '', $url);
+		$url = str_replace( $wp_rewrite->index . '/', '', $url );
 
 	if ( false !== strpos($url, home_url()) ) {
 		// Chop off http://domain.com
@@ -1552,7 +1552,7 @@ class WP_Rewrite {
 		$root_rewrite = apply_filters('root_rewrite_rules', $root_rewrite);
 
 		// Comments
-		$comments_rewrite = $this->generate_rewrite_rules($this->root . $this->comments_base, EP_COMMENTS, true, true, true, false);
+		$comments_rewrite = $this->generate_rewrite_rules($this->root . $this->comments_base, EP_COMMENTS, false, true, true, false);
 		$comments_rewrite = apply_filters('comments_rewrite_rules', $comments_rewrite);
 
 		// Search
diff --git a/wp-includes/rss.php b/wp-includes/rss.php
index 3b8e4de94..cd08ec99e 100644
--- a/wp-includes/rss.php
+++ b/wp-includes/rss.php
@@ -422,7 +422,7 @@ function fetch_rss ($url) {
 	else {
 		// Flow
 		// 1. check cache
-		// 2. if there is a hit, make sure its fresh
+		// 2. if there is a hit, make sure it's fresh
 		// 3. if cached obj fails freshness check, fetch remote
 		// 4. if remote fails, return stale object, or error
 
@@ -536,7 +536,7 @@ endif;
  * @return Snoopy style response
  */
 function _fetch_remote_file($url, $headers = "" ) {
-	$resp = wp_remote_request($url, array('headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT, 'reject_unsafe_urls' => true ));
+	$resp = wp_safe_remote_request( $url, array( 'headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT ) );
 	if ( is_wp_error($resp) ) {
 		$error = array_shift($resp->errors);
 
diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php
index 027f9d627..35d8b3555 100644
--- a/wp-includes/script-loader.php
+++ b/wp-includes/script-loader.php
@@ -75,9 +75,6 @@ function wp_default_scripts( &$scripts ) {
 
 	$scripts->add( 'quicktags', "/wp-includes/js/quicktags$suffix.js", array(), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'quicktags', 'quicktagsL10n', array(
-		'wordLookup' => __('Enter a word to look up:'),
-		'dictionaryLookup' => esc_attr(__('Dictionary lookup')),
-		'lookup' => esc_attr(__('lookup')),
 		'closeAllOpenTags' => esc_attr(__('Close all open tags')),
 		'closeTags' => esc_attr(__('close tags')),
 		'enterURL' => __('Enter the URL'),
@@ -108,6 +105,17 @@ function wp_default_scripts( &$scripts ) {
 
 	$scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), false, 1 );
 
+	$scripts->add( 'heartbeat', "/wp-includes/js/heartbeat$suffix.js", array('jquery'), false, 1 );
+	did_action( 'init' ) && $scripts->localize( 'heartbeat', 'heartbeatSettings',
+		apply_filters( 'heartbeat_settings', array() )
+	);
+
+	$scripts->add( 'wp-auth-check', "/wp-includes/js/wp-auth-check$suffix.js", array('heartbeat'), false, 1 );
+	did_action( 'init' ) && $scripts->localize( 'wp-auth-check', 'authcheckL10n', array(
+		'beforeunload' => __('Your session has expired. You can log in again from this page or go to the login page.'),
+		'interval' => apply_filters( 'wp_auth_check_interval', 3 * MINUTE_IN_SECONDS ),
+	) );
+
 	$scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array( 'wp-ajax-response', 'jquery-color' ), false, 1 );
 
 	// WordPress no longer uses or bundles Prototype or script.aculo.us. These are now pulled from an external source.
@@ -124,51 +132,54 @@ function wp_default_scripts( &$scripts ) {
 	// not used in core, replaced by Jcrop.js
 	$scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop') );
 
-	$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );
+	// jQuery
+	$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.10.2' );
+	$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.10.2' );
+	$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.2.1' );
 
 	// full jQuery UI
-	$scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.ui.effect.min.js', array('jquery'), '1.9.2', 1 );
-
-	$scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js', array('jquery-effects-core'), '1.9.2', 1 );
-
-	$scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position', 'jquery-ui-menu'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-menu', '/wp-includes/js/jquery/ui/jquery.ui.menu.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-spinner', '/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-button' ), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-tooltip', '/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.9.2', 1 );
-	$scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.9.2', 1 );
+	$scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.ui.effect.min.js', array('jquery'), '1.10.3', 1 );
+
+	$scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js', array('jquery-effects-core'), '1.10.3', 1 );
+
+	$scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position', 'jquery-ui-menu'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-menu', '/wp-includes/js/jquery/ui/jquery.ui.menu.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-spinner', '/wp-includes/js/jquery/ui/jquery.ui.spinner.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-button' ), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-tooltip', '/wp-includes/js/jquery/ui/jquery.ui.tooltip.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.10.3', 1 );
+	$scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.10.3', 1 );
 
 	// deprecated, not used in core, most functionality is included in jQuery 1.3
 	$scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array('jquery'), '2.73', 1 );
 
 	// jQuery plugins
-	$scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color.min.js", array('jquery'), '2.1.0', 1 );
+	$scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color.min.js", array('jquery'), '2.1.1', 1 );
 	$scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 );
 	$scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 );
 	$scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 );
@@ -226,14 +237,14 @@ function wp_default_scripts( &$scripts ) {
 		'error_uploading' => __('&#8220;%s&#8221; has failed to upload.')
 	);
 
-	$scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', array(), '1.5.5' );
-	$scripts->add( 'plupload-html5', '/wp-includes/js/plupload/plupload.html5.js', array('plupload'), '1.5.5' );
-	$scripts->add( 'plupload-flash', '/wp-includes/js/plupload/plupload.flash.js', array('plupload'), '1.5.5' );
-	$scripts->add( 'plupload-silverlight', '/wp-includes/js/plupload/plupload.silverlight.js', array('plupload'), '1.5.5' );
-	$scripts->add( 'plupload-html4', '/wp-includes/js/plupload/plupload.html4.js', array('plupload'), '1.5.5' );
+	$scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', array(), '1.5.7' );
+	$scripts->add( 'plupload-html5', '/wp-includes/js/plupload/plupload.html5.js', array('plupload'), '1.5.7' );
+	$scripts->add( 'plupload-flash', '/wp-includes/js/plupload/plupload.flash.js', array('plupload'), '1.5.7' );
+	$scripts->add( 'plupload-silverlight', '/wp-includes/js/plupload/plupload.silverlight.js', array('plupload'), '1.5.7' );
+	$scripts->add( 'plupload-html4', '/wp-includes/js/plupload/plupload.html4.js', array('plupload'), '1.5.7' );
 
 	// cannot use the plupload.full.js, as it loads browserplus init JS from Yahoo
-	$scripts->add( 'plupload-all', false, array('plupload', 'plupload-html5', 'plupload-flash', 'plupload-silverlight', 'plupload-html4'), '1.5.5' );
+	$scripts->add( 'plupload-all', false, array('plupload', 'plupload-html5', 'plupload-flash', 'plupload-silverlight', 'plupload-html4'), '1.5.7' );
 
 	$scripts->add( 'plupload-handlers', "/wp-includes/js/plupload/handlers$suffix.js", array('plupload-all', 'jquery') );
 	did_action( 'init' ) && $scripts->localize( 'plupload-handlers', 'pluploadL10n', $uploader_l10n );
@@ -254,11 +265,47 @@ function wp_default_scripts( &$scripts ) {
 
 	$scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2011-02-23');
 
-	$scripts->add( 'underscore', '/wp-includes/js/underscore.min.js', array(), '1.4.0', 1 );
-	$scripts->add( 'backbone', '/wp-includes/js/backbone.min.js', array('underscore','jquery'), '0.9.2', 1 );
+	$scripts->add( 'underscore', '/wp-includes/js/underscore.min.js', array(), '1.4.4', 1 );
+	$scripts->add( 'backbone', '/wp-includes/js/backbone.min.js', array('underscore','jquery'), '1.0.0', 1 );
+
+	$scripts->add( 'wp-util', "/wp-includes/js/wp-util$suffix.js", array('underscore', 'jquery'), false, 1 );
+	did_action( 'init' ) && $scripts->localize( 'wp-util', '_wpUtilSettings', array(
+		'ajax' => array(
+			'url' => admin_url( 'admin-ajax.php', 'relative' ),
+		),
+	) );
+
+	$scripts->add( 'wp-backbone', "/wp-includes/js/wp-backbone$suffix.js", array('backbone', 'wp-util'), false, 1 );
+
+	$scripts->add( 'revisions', "/wp-admin/js/revisions$suffix.js", array( 'wp-backbone', 'jquery-ui-slider', 'hoverIntent' ), false, 1 );
 
 	$scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.8', 1 );
 
+	$scripts->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelement-and-player.min.js", array('jquery'), '2.13.0', 1 );
+	did_action( 'init' ) && $scripts->localize( 'mediaelement', 'mejsL10n', array(
+		'language' => get_bloginfo( 'language' ),
+		'strings'  => array(
+			'Close'               => __( 'Close' ),
+			'Fullscreen'          => __( 'Fullscreen' ),
+			'Download File'       => __( 'Download File' ),
+			'Download Video'      => __( 'Download Video' ),
+			'Play/Pause'          => __( 'Play/Pause' ),
+			'Mute Toggle'         => __( 'Mute Toggle' ),
+			'None'                => __( 'None' ),
+			'Turn off Fullscreen' => __( 'Turn off Fullscreen' ),
+			'Go Fullscreen'       => __( 'Go Fullscreen' ),
+			'Unmute'              => __( 'Unmute' ),
+			'Mute'                => __( 'Mute' ),
+			'Captions/Subtitles'  => __( 'Captions/Subtitles' )
+		),
+	) );
+
+
+	$scripts->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement.js", array('mediaelement'), false, 1 );
+	did_action( 'init' ) && $scripts->localize( 'wp-mediaelement', '_wpmejsSettings', array(
+		'pluginPath' => includes_url( 'js/mediaelement/', 'relative' ),
+	) );
+
 	$scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'password-strength-meter', 'pwsL10n', array(
 		'empty' => __('Strength indicator'),
@@ -298,7 +345,7 @@ function wp_default_scripts( &$scripts ) {
 
 	$scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox', 'shortcode' ), false, 1 );
 
-	$scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), 'r6', 1 );
+	$scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), 'r7', 1 );
 
 	$scripts->add( 'customize-base',     "/wp-includes/js/customize-base$suffix.js",     array( 'jquery', 'json2' ), false, 1 );
 	$scripts->add( 'customize-loader',   "/wp-includes/js/customize-loader$suffix.js",   array( 'customize-base' ), false, 1 );
@@ -316,8 +363,10 @@ function wp_default_scripts( &$scripts ) {
 		'allowedFiles' => __( 'Allowed Files' ),
 	) );
 
+	$scripts->add( 'accordion', "/wp-admin/js/accordion$suffix.js", array( 'jquery' ), false, 1 );
+
 	$scripts->add( 'shortcode', "/wp-includes/js/shortcode$suffix.js", array( 'underscore' ), false, 1 );
-	$scripts->add( 'media-models', "/wp-includes/js/media-models$suffix.js", array( 'backbone', 'jquery' ), false, 1 );
+	$scripts->add( 'media-models', "/wp-includes/js/media-models$suffix.js", array( 'wp-backbone' ), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'media-models', '_wpMediaModelsL10n', array(
 		'settings' => array(
 			'ajaxurl' => admin_url( 'admin-ajax.php', 'relative' ),
@@ -339,16 +388,12 @@ function wp_default_scripts( &$scripts ) {
 			'how' => __('Separate multiple categories with commas.')
 		) );
 
-		$scripts->add( 'admin-categories', "/wp-admin/js/categories$suffix.js", array('wp-lists'), false, 1 );
-
 		$scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), false, 1 );
 		did_action( 'init' ) && $scripts->localize( 'admin-tags', 'tagsl10n', array(
 			'noPerm' => __('You do not have permission to do that.'),
 			'broken' => __('An unidentified error has occurred.')
 		));
 
-		$scripts->add( 'admin-custom-fields', "/wp-admin/js/custom-fields$suffix.js", array('wp-lists'), false, 1 );
-
 		$scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'quicktags', 'jquery-query'), false, 1 );
 		did_action( 'init' ) && $scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
 			'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
@@ -361,13 +406,15 @@ function wp_default_scripts( &$scripts ) {
 
 		$scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), false, 1 );
 
-		$scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), false, 1 );
+		$scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox', 'heartbeat'), false, 1 );
 		did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array(
 			'ok' => __('OK'),
 			'cancel' => __('Cancel'),
 			'publishOn' => __('Publish on:'),
 			'publishOnFuture' =>  __('Schedule for:'),
 			'publishOnPast' => __('Published on:'),
+			/* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */
+			'dateFormat' => __('%1$s %2$s, %3$s @ %4$s : %5$s'),
 			'showcomm' => __('Show more comments'),
 			'endcomm' => __('No more comments found.'),
 			'publish' => __('Publish'),
@@ -401,7 +448,7 @@ function wp_default_scripts( &$scripts ) {
 		// @todo: Core no longer uses theme-preview.js. Remove?
 		$scripts->add( 'theme-preview', "/wp-admin/js/theme-preview$suffix.js", array( 'thickbox', 'jquery' ), false, 1 );
 
-		$scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest' ), false, 1 );
+		$scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest', 'heartbeat' ), false, 1 );
 		did_action( 'init' ) && $scripts->localize( 'inline-edit-post', 'inlineEditL10n', array(
 			'error' => __('Error while saving the changes.'),
 			'ntdeltitle' => __('Remove From Bulk Edit'),
@@ -522,6 +569,10 @@ function wp_default_styles( &$styles ) {
 	$styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'ie' ) );
 	$styles->add( 'media-views', "/wp-includes/css/media-views$suffix.css", array( 'buttons' ) );
 	$styles->add( 'buttons', "/wp-includes/css/buttons$suffix.css" );
+	$styles->add( 'wp-auth-check', "/wp-includes/css/wp-auth-check$suffix.css" );
+
+	$styles->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelementplayer.min.css", array(), '2.13.0' );
+	$styles->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement.css", array( 'mediaelement' ) );
 
 	foreach ( $rtl_styles as $rtl_style ) {
 		$styles->add_data( $rtl_style, 'rtl', true );
@@ -567,7 +618,8 @@ function wp_just_in_time_script_localization() {
 	wp_localize_script( 'autosave', 'autosaveL10n', array(
 		'autosaveInterval' => AUTOSAVE_INTERVAL,
 		'savingText' => __('Saving Draft&#8230;'),
-		'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
+		'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
+		'blog_id' => get_current_blog_id(),
 	) );
 
 }
diff --git a/wp-includes/shortcodes.php b/wp-includes/shortcodes.php
index 2dfc27745..a40959491 100644
--- a/wp-includes/shortcodes.php
+++ b/wp-includes/shortcodes.php
@@ -127,6 +127,43 @@ function remove_all_shortcodes() {
 	$shortcode_tags = array();
 }
 
+/**
+ * Whether a registered shortcode exists named $tag
+ *
+ * @since 3.6.0
+ *
+ * @global array $shortcode_tags
+ * @param string $tag
+ * @return boolean
+ */
+function shortcode_exists( $tag ) {
+	global $shortcode_tags;
+	return array_key_exists( $tag, $shortcode_tags );
+}
+
+/**
+ * Whether the passed content contains the specified shortcode
+ *
+ * @since 3.6.0
+ *
+ * @global array $shortcode_tags
+ * @param string $tag
+ * @return boolean
+ */
+function has_shortcode( $content, $tag ) {
+	if ( shortcode_exists( $tag ) ) {
+		preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER );
+		if ( empty( $matches ) )
+			return false;
+
+		foreach ( $matches as $shortcode ) {
+			if ( $tag === $shortcode[2] )
+				return true;
+		}
+	}
+	return false;
+}
+
 /**
  * Search content for shortcodes and filter shortcodes through their hooks.
  *
@@ -289,9 +326,10 @@ function shortcode_parse_atts($text) {
  *
  * @param array $pairs Entire list of supported attributes and their defaults.
  * @param array $atts User defined attributes in shortcode tag.
+ * @param string $shortcode Optional. The name of the shortcode, provided for context to enable filtering
  * @return array Combined and filtered attribute list.
  */
-function shortcode_atts($pairs, $atts) {
+function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
 	$atts = (array)$atts;
 	$out = array();
 	foreach($pairs as $name => $default) {
@@ -300,6 +338,10 @@ function shortcode_atts($pairs, $atts) {
 		else
 			$out[$name] = $default;
 	}
+
+	if ( $shortcode )
+		$out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
+
 	return $out;
 }
 
diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php
index 1932bab38..ecca35fc0 100644
--- a/wp-includes/taxonomy.php
+++ b/wp-includes/taxonomy.php
@@ -317,18 +317,19 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
 	if ( ! is_array($wp_taxonomies) )
 		$wp_taxonomies = array();
 
-	$defaults = array(	'hierarchical' => false,
-						'update_count_callback' => '',
-						'rewrite' => true,
-						'query_var' => $taxonomy,
-						'public' => true,
-						'show_ui' => null,
-						'show_tagcloud' => null,
-						'_builtin' => false,
-						'labels' => array(),
-						'capabilities' => array(),
-						'show_in_nav_menus' => null,
-					);
+	$defaults = array(
+		'hierarchical' => false,
+		'update_count_callback' => '',
+		'rewrite' => true,
+		'query_var' => $taxonomy,
+		'public' => true,
+		'show_ui' => null,
+		'show_tagcloud' => null,
+		'_builtin' => false,
+		'labels' => array(),
+		'capabilities' => array(),
+		'show_in_nav_menus' => null,
+	);
 	$args = wp_parse_args($args, $defaults);
 
 	if ( strlen( $taxonomy ) > 32 )
@@ -411,6 +412,7 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
  * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
  * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
  * - 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 - This string isn't used on hierarchical taxonomies. Default is "No tags found", used in the meta box.
  *
  * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
  *
@@ -423,6 +425,9 @@ function get_taxonomy_labels( $tax ) {
 	if ( isset( $tax->helps ) && empty( $tax->labels['separate_items_with_commas'] ) )
 		$tax->labels['separate_items_with_commas'] = $tax->helps;
 
+	if ( isset( $tax->no_tagcloud ) && empty( $tax->labels['not_found'] ) )
+		$tax->labels['not_found'] = $tax->no_tagcloud;
+
 	$nohier_vs_hier_defaults = array(
 		'name' => array( _x( 'Tags', 'taxonomy general name' ), _x( 'Categories', 'taxonomy general name' ) ),
 		'singular_name' => array( _x( 'Tag', 'taxonomy singular name' ), _x( 'Category', 'taxonomy singular name' ) ),
@@ -439,6 +444,7 @@ function get_taxonomy_labels( $tax ) {
 		'separate_items_with_commas' => array( __( 'Separate tags with commas' ), null ),
 		'add_or_remove_items' => array( __( 'Add or remove tags' ), null ),
 		'choose_from_most_used' => array( __( 'Choose from the most used tags' ), null ),
+		'not_found' => array( __( 'No tags found.' ), null ),
 	);
 	$nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
 
@@ -785,7 +791,7 @@ class WP_Tax_Query {
 		if ( $query['field'] == $resulting_field )
 			return;
 
-		$resulting_field = esc_sql( $resulting_field );
+		$resulting_field = sanitize_key( $resulting_field );
 
 		switch ( $query['field'] ) {
 			case 'slug':
@@ -954,7 +960,7 @@ function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw
 			return false;
 	} else if ( 'name' == $field ) {
 		// Assume already escaped
-		$value = stripslashes($value);
+		$value = wp_unslash($value);
 		$field = 't.name';
 	} else {
 		$term = get_term( (int) $value, $taxonomy, $output, $filter);
@@ -1240,10 +1246,10 @@ 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( compact(array_keys($defaults)) ) . serialize( $taxonomies ) . $filter_key );
-	$last_changed = wp_cache_get('last_changed', 'terms');
-	if ( !$last_changed ) {
-		$last_changed = time();
-		wp_cache_set('last_changed', $last_changed, 'terms');
+	$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' );
@@ -1346,7 +1352,7 @@ function get_terms($taxonomies, $args = '') {
 		$where .= ' AND tt.count > 0';
 
 	// don't limit the query results when we have to descend the family tree
-	if ( ! empty($number) && ! $hierarchical && empty( $child_of ) && '' === $parent ) {
+	if ( $number && ! $hierarchical && ! $child_of && '' === $parent ) {
 		if ( $offset )
 			$limits = 'LIMIT ' . $offset . ',' . $number;
 		else
@@ -1451,9 +1457,8 @@ function get_terms($taxonomies, $args = '') {
 		$terms = $_terms;
 	}
 
-	if ( 0 < $number && intval(@count($terms)) > $number ) {
-		$terms = array_slice($terms, $offset, $number);
-	}
+	if ( $number && is_array( $terms ) && count( $terms ) > $number )
+		$terms = array_slice( $terms, $offset, $number );
 
 	wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
 
@@ -1494,7 +1499,7 @@ function term_exists($term, $taxonomy = '', $parent = 0) {
 			return $wpdb->get_var( $wpdb->prepare( $select . $where, $term ) );
 	}
 
-	$term = trim( stripslashes( $term ) );
+	$term = trim( wp_unslash( $term ) );
 
 	if ( '' === $slug = sanitize_title($term) )
 		return 0;
@@ -1712,26 +1717,21 @@ function wp_count_terms( $taxonomy, $args = array() ) {
  * @package WordPress
  * @subpackage Taxonomy
  * @since 2.3.0
- * @uses $wpdb
+ * @uses wp_remove_object_terms()
  *
  * @param int $object_id The term Object Id that refers to the term
  * @param string|array $taxonomies List of Taxonomy Names or single Taxonomy name.
  */
 function wp_delete_object_term_relationships( $object_id, $taxonomies ) {
-	global $wpdb;
-
 	$object_id = (int) $object_id;
 
 	if ( !is_array($taxonomies) )
 		$taxonomies = array($taxonomies);
 
 	foreach ( (array) $taxonomies as $taxonomy ) {
-		$tt_ids = wp_get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids'));
-		$in_tt_ids = "'" . implode("', '", $tt_ids) . "'";
-		do_action( 'delete_term_relationships', $object_id, $tt_ids );
-		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id) );
-		do_action( 'deleted_term_relationships', $object_id, $tt_ids );
-		wp_update_term_count($tt_ids, $taxonomy);
+		$term_ids = wp_get_object_terms( $object_id, $taxonomy, array( 'fields' => 'ids' ) );
+		$term_ids = array_map( 'intval', $term_ids );
+		wp_remove_object_terms( $object_id, $term_ids, $taxonomy );
 	}
 }
 
@@ -1752,8 +1752,8 @@ function wp_delete_object_term_relationships( $object_id, $taxonomies ) {
  *
  * @uses $wpdb
  * @uses do_action() Calls both 'delete_term' and 'delete_$taxonomy' action
- *	hooks, passing term object, term id. 'delete_term' gets an additional
- *	parameter with the $taxonomy parameter.
+ *	hooks, passing term ID, term taxonomy ID, and deleted term object. 'delete_term'
+ *	also gets taxonomy as the third parameter.
  *
  * @param int $term Term ID
  * @param string $taxonomy Taxonomy Name
@@ -2062,8 +2062,8 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) {
 	extract($args, EXTR_SKIP);
 
 	// expected_slashed ($name)
-	$name = stripslashes($name);
-	$description = stripslashes($description);
+	$name = wp_unslash($name);
+	$description = wp_unslash($description);
 
 	if ( empty($slug) )
 		$slug = sanitize_title($name);
@@ -2158,7 +2158,7 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) {
  * @package WordPress
  * @subpackage Taxonomy
  * @since 2.3.0
- * @uses $wpdb
+ * @uses wp_remove_object_terms()
  *
  * @param int $object_id The object to relate to.
  * @param array|int|string $terms The slug or id of the term, will replace all existing
@@ -2215,13 +2215,17 @@ function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
 		wp_update_term_count( $new_tt_ids, $taxonomy );
 
 	if ( ! $append ) {
-		$delete_terms = array_diff($old_tt_ids, $tt_ids);
-		if ( $delete_terms ) {
-			$in_delete_terms = "'" . implode("', '", $delete_terms) . "'";
-			do_action( 'delete_term_relationships', $object_id, $delete_terms );
-			$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_delete_terms)", $object_id) );
-			do_action( 'deleted_term_relationships', $object_id, $delete_terms );
-			wp_update_term_count($delete_terms, $taxonomy);
+		$delete_tt_ids = array_diff( $old_tt_ids, $tt_ids );
+
+		if ( $delete_tt_ids ) {
+			$in_delete_tt_ids = "'" . implode( "', '", $delete_tt_ids ) . "'";
+			$delete_term_ids = $wpdb->get_col( $wpdb->prepare( "SELECT tt.term_id FROM $wpdb->term_taxonomy AS tt WHERE tt.taxonomy = %s AND tt.term_taxonomy_id IN ($in_delete_tt_ids)", $taxonomy ) );
+			$delete_term_ids = array_map( 'intval', $delete_term_ids );
+
+			$remove = wp_remove_object_terms( $object_id, $delete_term_ids, $taxonomy );
+			if ( is_wp_error( $remove ) ) {
+				return $remove;
+			}
 		}
 	}
 
@@ -2244,6 +2248,86 @@ function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
 	return $tt_ids;
 }
 
+/**
+ * Add term(s) associated with a given object.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 3.6
+ * @uses wp_set_object_terms()
+ *
+ * @param int $object_id The ID of the object to which the terms will be added.
+ * @param array|int|string $terms The slug(s) or ID(s) of the term(s) to add.
+ * @param array|string $taxonomy Taxonomy name.
+ * @return array|WP_Error Affected Term IDs
+ */
+function wp_add_object_terms( $object_id, $terms, $taxonomy ) {
+	return wp_set_object_terms( $object_id, $terms, $taxonomy, true );
+}
+
+/**
+ * Remove term(s) associated with a given object.
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 3.6
+ * @uses $wpdb
+ *
+ * @uses apply_filters() Calls 'delete_term_relationships' hook with object_id and tt_ids as parameters.
+ * @uses apply_filters() Calls 'deleted_term_relationships' hook with object_id and tt_ids as parameters.
+ *
+ * @param int $object_id The ID of the object from which the terms will be removed.
+ * @param array|int|string $terms The slug(s) or ID(s) of the term(s) to remove.
+ * @param array|string $taxonomy Taxonomy name.
+ * @return bool|WP_Error True on success, false or WP_Error on failure.
+ */
+function wp_remove_object_terms( $object_id, $terms, $taxonomy ) {
+	global $wpdb;
+
+	$object_id = (int) $object_id;
+
+	if ( ! taxonomy_exists( $taxonomy ) ) {
+		return new WP_Error( 'invalid_taxonomy', __( 'Invalid Taxonomy' ) );
+	}
+
+	if ( ! is_array( $terms ) ) {
+		$terms = array( $terms );
+	}
+
+	$tt_ids = array();
+
+	foreach ( (array) $terms as $term ) {
+		if ( ! strlen( trim( $term ) ) ) {
+			continue;
+		}
+
+		if ( ! $term_info = term_exists( $term, $taxonomy ) ) {
+			// Skip if a non-existent term ID is passed.
+			if ( is_int( $term ) ) {
+				continue;
+			}
+		}
+
+		if ( is_wp_error( $term_info ) ) {
+			return $term_info;
+		}
+
+		$tt_ids[] = $term_info['term_taxonomy_id'];
+	}
+
+	if ( $tt_ids ) {
+		$in_tt_ids = "'" . implode( "', '", $tt_ids ) . "'";
+		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 ) );
+		do_action( 'deleted_term_relationships', $object_id, $tt_ids );
+		wp_update_term_count( $tt_ids, $taxonomy );
+
+		return (bool) $deleted;
+	}
+
+	return false;
+}
+
 /**
  * Will make slug unique, if it isn't already.
  *
@@ -2361,7 +2445,7 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) {
 		return $term;
 
 	// Escape data pulled from DB.
-	$term = add_magic_quotes($term);
+	$term = wp_slash($term);
 
 	// Merge old and new args with new args overwriting old ones.
 	$args = array_merge($term, $args);
@@ -2372,8 +2456,8 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) {
 	extract($args, EXTR_SKIP);
 
 	// expected_slashed ($name)
-	$name = stripslashes($name);
-	$description = stripslashes($description);
+	$name = wp_unslash($name);
+	$description = wp_unslash($description);
 
 	if ( '' == trim($name) )
 		return new WP_Error('empty_term_name', __('A name is required for this term'));
@@ -2632,7 +2716,7 @@ function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
 		do_action('clean_term_cache', $ids, $taxonomy);
 	}
 
-	wp_cache_set('last_changed', time(), 'terms');
+	wp_cache_set( 'last_changed', microtime(), 'terms' );
 }
 
 /**
diff --git a/wp-includes/template.php b/wp-includes/template.php
index 99d004687..5bee8ad52 100644
--- a/wp-includes/template.php
+++ b/wp-includes/template.php
@@ -96,8 +96,8 @@ function get_author_template() {
 /**
  * Retrieve path of category template in current or parent template.
  *
- * Works by first retrieving the current slug for example 'category-default.php' and then
- * trying category ID, for example 'category-1.php' and will finally fallback to category.php
+ * Works by first retrieving the current slug, for example 'category-default.php', and then
+ * trying category ID, for example 'category-1.php', and will finally fall back to category.php
  * template, if those files don't exist.
  *
  * @since 1.5.0
@@ -122,8 +122,8 @@ function get_category_template() {
 /**
  * Retrieve path of tag template in current or parent template.
  *
- * Works by first retrieving the current tag name, for example 'tag-wordpress.php' and then
- * trying tag ID, for example 'tag-1.php' and will finally fallback to tag.php
+ * Works by first retrieving the current tag name, for example 'tag-wordpress.php', and then
+ * trying tag ID, for example 'tag-1.php', and will finally fall back to tag.php
  * template, if those files don't exist.
  *
  * @since 2.3.0
@@ -191,7 +191,7 @@ function get_date_template() {
 /**
  * Retrieve path of home template in current or parent template.
  *
- * This is the template used for the page containing the blog posts
+ * This is the template used for the page containing the blog posts.
  *
  * Attempts to locate 'home.php' first before falling back to 'index.php'.
  *
@@ -225,9 +225,9 @@ function get_front_page_template() {
 /**
  * Retrieve path of page template in current or parent template.
  *
- * Will first look for the specifically assigned page template
- * The will search for 'page-{slug}.php' followed by 'page-id.php'
- * and finally 'page.php'
+ * Will first look for the specifically assigned page template.
+ * Then will search for 'page-{slug}.php', followed by 'page-{id}.php',
+ * and finally 'page.php'.
  *
  * @since 1.5.0
  *
diff --git a/wp-includes/theme.php b/wp-includes/theme.php
index d8c241977..a1dec2634 100644
--- a/wp-includes/theme.php
+++ b/wp-includes/theme.php
@@ -340,7 +340,7 @@ function search_theme_directories( $force = false ) {
 
 	// Set up maybe-relative, maybe-absolute array of theme directories.
 	// We always want to return absolute, but we need to cache relative
-	// use in for get_theme_root().
+	// to use in get_theme_root().
 	foreach ( $wp_theme_directories as $theme_root ) {
 		if ( 0 === strpos( $theme_root, WP_CONTENT_DIR ) )
 			$relative_theme_roots[ str_replace( WP_CONTENT_DIR, '', $theme_root ) ] = $theme_root;
@@ -544,7 +544,7 @@ function locale_stylesheet() {
 /**
  * Start preview theme output buffer.
  *
- * Will only preform task if the user has permissions and template and preview
+ * Will only perform task if the user has permissions and template and preview
  * query variables exist.
  *
  * @since 2.6.0
@@ -631,7 +631,7 @@ function preview_theme_ob_filter( $content ) {
  */
 function preview_theme_ob_filter_callback( $matches ) {
 	if ( strpos($matches[4], 'onclick') !== false )
-		$matches[4] = preg_replace('#onclick=([\'"]).*?(?<!\\\)\\1#i', '', $matches[4]); //Strip out any onclicks from rest of <a>. (?<!\\\) means to ignore the '" if its escaped by \  to prevent breaking mid-attribute.
+		$matches[4] = preg_replace('#onclick=([\'"]).*?(?<!\\\)\\1#i', '', $matches[4]); //Strip out any onclicks from rest of <a>. (?<!\\\) means to ignore the '" if it's escaped by \  to prevent breaking mid-attribute.
 	if (
 		( false !== strpos($matches[3], '/wp-admin/') )
 	||
@@ -981,12 +981,12 @@ function is_random_header_image( $type = 'any' ) {
 }
 
 /**
- * Display header image path.
+ * Display header image URL.
  *
  * @since 2.1.0
  */
 function header_image() {
-	echo get_header_image();
+	echo esc_url( get_header_image() );
 }
 
 /**
@@ -1013,8 +1013,10 @@ function get_uploaded_header_images() {
 		$header_images[$header_index]['attachment_id'] =  $header->ID;
 		$header_images[$header_index]['url'] =  $url;
 		$header_images[$header_index]['thumbnail_url'] =  $url;
-		$header_images[$header_index]['width'] = $header_data['width'];
-		$header_images[$header_index]['height'] = $header_data['height'];
+		if ( isset( $header_data['width'] ) )
+			$header_images[$header_index]['width'] = $header_data['width'];
+		if ( isset( $header_data['height'] ) )
+			$header_images[$header_index]['height'] = $header_data['height'];
 	}
 
 	return $header_images;
@@ -1489,7 +1491,7 @@ function _remove_theme_support( $feature ) {
 
 	switch ( $feature ) {
 		case 'custom-header' :
-			if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) )
+			if ( ! did_action( 'wp_loaded' ) )
 				break;
 			$support = get_theme_support( 'custom-header' );
 			if ( $support[0]['wp-head-callback'] )
@@ -1499,7 +1501,7 @@ function _remove_theme_support( $feature ) {
 			break;
 
 		case 'custom-background' :
-			if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) )
+			if ( ! did_action( 'wp_loaded' ) )
 				break;
 			$support = get_theme_support( 'custom-background' );
 			remove_action( 'wp_head', $support[0]['wp-head-callback'] );
diff --git a/wp-includes/update.php b/wp-includes/update.php
index b6205063f..61d163aaf 100644
--- a/wp-includes/update.php
+++ b/wp-includes/update.php
@@ -51,13 +51,13 @@ function wp_version_check() {
 	else
 		$mysql_version = 'N/A';
 
-	if ( is_multisite( ) ) {
-		$user_count = get_user_count( );
-		$num_blogs = get_blog_count( );
-		$wp_install = network_site_url( );
+	if ( is_multisite() ) {
+		$user_count = get_user_count();
+		$num_blogs = get_blog_count();
+		$wp_install = network_site_url();
 		$multisite_enabled = 1;
 	} else {
-		$user_count = count_users( );
+		$user_count = count_users();
 		$user_count = $user_count['total_users'];
 		$multisite_enabled = 0;
 		$num_blogs = 1;
@@ -274,7 +274,7 @@ function wp_update_themes() {
 			$timeout = 12 * HOUR_IN_SECONDS;
 	}
 
-	$time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time( ) - $last_update->last_checked );
+	$time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked );
 
 	if ( $time_not_changed ) {
 		$theme_changed = false;
@@ -313,7 +313,7 @@ function wp_update_themes() {
 		return false;
 
 	$new_update = new stdClass;
-	$new_update->last_checked = time( );
+	$new_update->last_checked = time();
 	$new_update->checked = $checked;
 
 	$response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
@@ -404,9 +404,9 @@ function _maybe_update_plugins() {
  * @since 2.7.0
  * @access private
  */
-function _maybe_update_themes( ) {
+function _maybe_update_themes() {
 	$current = get_site_transient( 'update_themes' );
-	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time( ) - $current->last_checked ) )
+	if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) )
 		return;
 
 	wp_update_themes();
diff --git a/wp-includes/user.php b/wp-includes/user.php
index 57f1ec94f..bc583a578 100644
--- a/wp-includes/user.php
+++ b/wp-includes/user.php
@@ -87,18 +87,18 @@ 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" title="Password Lost and Found">Lost your password</a>?'), wp_lostpassword_url()));
+		return new WP_Error( 'invalid_username', sprintf( __( '<strong>ERROR</strong>: Invalid username. <a href="%s" title="Password Lost and Found">Lost your password</a>?' ), wp_lostpassword_url() ) );
 
 	if ( is_multisite() ) {
 		// Is user marked as spam?
-		if ( 1 == $user->spam)
-			return new WP_Error('invalid_username', __('<strong>ERROR</strong>: Your account has been marked as a spammer.'));
+		if ( 1 == $user->spam )
+			return new WP_Error( 'spammer_account', __( '<strong>ERROR</strong>: Your account has been marked as a spammer.' ) );
 
 		// Is a user's blog marked as spam?
-		if ( !is_super_admin( $user->ID ) && isset($user->primary_blog) ) {
+		if ( !is_super_admin( $user->ID ) && isset( $user->primary_blog ) ) {
 			$details = get_blog_details( $user->primary_blog );
 			if ( is_object( $details ) && $details->spam == 1 )
-				return new WP_Error('blog_suspended', __('Site Suspended.'));
+				return new WP_Error( 'blog_suspended', __( 'Site Suspended.' ) );
 		}
 	}
 
@@ -276,11 +276,6 @@ function update_user_option( $user_id, $option_name, $newvalue, $global = false
 	if ( !$global )
 		$option_name = $wpdb->prefix . $option_name;
 
-	// For backward compatibility. See differences between update_user_meta() and deprecated update_usermeta().
-	// http://core.trac.wordpress.org/ticket/13088
-	if ( is_null( $newvalue ) || is_scalar( $newvalue ) && empty( $newvalue ) )
-		return delete_user_meta( $user_id, $option_name );
-
 	return update_user_meta( $user_id, $option_name, $newvalue );
 }
 
@@ -397,8 +392,10 @@ class WP_User_Query {
 			$qv['fields'] = array_unique( $qv['fields'] );
 
 			$this->query_fields = array();
-			foreach ( $qv['fields'] as $field )
-				$this->query_fields[] = $wpdb->users . '.' . esc_sql( $field );
+			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.*";
@@ -474,12 +471,14 @@ class WP_User_Query {
 					$search_columns = array('user_email');
 				elseif ( is_numeric($search) )
 					$search_columns = array('user_login', 'ID');
-				elseif ( preg_match('|^https?://|', $search) && ! ( is_multisite() && function_exists( 'wp_is_large_network' ) && wp_is_large_network( 'users' ) ) )
+				elseif ( preg_match('|^https?://|', $search) && ! ( is_multisite() && wp_is_large_network( 'users' ) ) )
 					$search_columns = array('user_url');
 				else
 					$search_columns = array('user_login', 'user_nicename');
 			}
 
+			$search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this );
+
 			$this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
 		}
 
@@ -794,7 +793,7 @@ function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Metadata value.
  * @param bool $unique Optional, default is false. Whether the same key should not be added.
- * @return bool False for failure. True for success.
+ * @return int|bool Meta ID on success, false on failure.
  */
 function add_user_meta($user_id, $meta_key, $meta_value, $unique = false) {
 	return add_metadata('user', $user_id, $meta_key, $meta_value, $unique);
@@ -814,7 +813,7 @@ function add_user_meta($user_id, $meta_key, $meta_value, $unique = false) {
  * @param int $user_id user ID
  * @param string $meta_key Metadata name.
  * @param mixed $meta_value Optional. Metadata value.
- * @return bool False for failure. True for success.
+ * @return bool True on success, false on failure.
  */
 function delete_user_meta($user_id, $meta_key, $meta_value = '') {
 	return delete_metadata('user', $user_id, $meta_key, $meta_value);
@@ -853,7 +852,7 @@ function get_user_meta($user_id, $key = '', $single = false) {
  * @param string $meta_key Metadata key.
  * @param mixed $meta_value Metadata value.
  * @param mixed $prev_value Optional. Previous value to check before removing.
- * @return bool False on failure, true if success.
+ * @return bool True on success, false on failure.
  */
 function update_user_meta($user_id, $meta_key, $meta_value, $prev_value = '') {
 	return update_metadata('user', $user_id, $meta_key, $meta_value, $prev_value);
@@ -1032,7 +1031,7 @@ function wp_dropdown_users( $args = '' ) {
 	extract( $r, EXTR_SKIP );
 
 	$query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order', 'who' ) );
-	$query_args['fields'] = array( 'ID', $show );
+	$query_args['fields'] = array( 'ID', 'user_login', $show );
 	$users = get_users( $query_args );
 
 	$output = '';
@@ -1390,7 +1389,7 @@ function wp_insert_user( $userdata ) {
 	}
 
 	$data = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' );
-	$data = stripslashes_deep( $data );
+	$data = wp_unslash( $data );
 
 	if ( $update ) {
 		$wpdb->update( $wpdb->users, $data, compact( 'ID' ) );
@@ -1429,9 +1428,6 @@ function wp_insert_user( $userdata ) {
  * It is possible to update a user's password by specifying the 'user_pass'
  * value in the $userdata parameter array.
  *
- * If $userdata does not contain an 'ID' key, then a new user will be created
- * and the new user's ID will be returned.
- *
  * If current user's password is being updated, then the cookies will be
  * cleared.
  *
@@ -1453,7 +1449,7 @@ function wp_update_user($userdata) {
 	// First, get all of the original fields
 	$user_obj = get_userdata( $ID );
 	if ( ! $user_obj )
-		return new WP_Error( 'invalid_user_id', __( 'Invalid user ID' ) );
+		return new WP_Error( 'invalid_user_id', __( 'Invalid user ID.' ) );
 
 	$user = $user_obj->to_array();
 
@@ -1504,8 +1500,8 @@ function wp_update_user($userdata) {
  * @return int The new user's ID.
  */
 function wp_create_user($username, $password, $email = '') {
-	$user_login = esc_sql( $username );
-	$user_email = esc_sql( $email    );
+	$user_login = wp_slash( $username );
+	$user_email = wp_slash( $email    );
 	$user_pass = $password;
 
 	$userdata = compact('user_login', 'user_email', 'user_pass');
@@ -1527,7 +1523,9 @@ function _get_additional_user_keys( $user ) {
 }
 
 /**
- * Set up the default contact methods.
+ * Set up the contact methods.
+ *
+ * Default contact methods were removed in 3.6. A filter dictates contact methods.
  *
  * @since 2.9.0
  * @access private
@@ -1536,10 +1534,13 @@ function _get_additional_user_keys( $user ) {
  * @return array $user_contactmethods Array of contact methods and their labels.
  */
 function _wp_get_user_contactmethods( $user = null ) {
-	$user_contactmethods = array(
-		'aim' => __('AIM'),
-		'yim' => __('Yahoo IM'),
-		'jabber' => __('Jabber / Google Talk')
-	);
+	$user_contactmethods = array();
+	if ( get_site_option( 'initial_db_version' ) < 23588 ) {
+		$user_contactmethods = array(
+			'aim'    => __( 'AIM' ),
+			'yim'    => __( 'Yahoo IM' ),
+			'jabber' => __( 'Jabber / Google Talk' )
+		);
+	}
 	return apply_filters( 'user_contactmethods', $user_contactmethods, $user );
 }
diff --git a/wp-includes/vars.php b/wp-includes/vars.php
index 23e0e5804..f55cdbd9f 100644
--- a/wp-includes/vars.php
+++ b/wp-includes/vars.php
@@ -93,10 +93,10 @@ $is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos(
 $is_IIS = !$is_apache && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false);
 
 /**
- * Whether the server software is IIS 7.X
+ * Whether the server software is IIS 7.X or greater
  * @global bool $is_iis7
  */
-$is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false);
+$is_iis7 = $is_IIS && intval( substr( $_SERVER['SERVER_SOFTWARE'], strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/' ) + 14 ) ) >= 7;
 
 /**
  * Test if the current browser runs on a mobile device (smart phone, tablet, etc.)
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 8a1b9570f..d26f9421b 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -4,21 +4,21 @@
  *
  * @global string $wp_version
  */
-$wp_version = '3.5.2';
+$wp_version = '3.6';
 
 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 22442;
+$wp_db_version = 24448;
 
 /**
  * Holds the TinyMCE version
  *
  * @global string $tinymce_version
  */
-$tinymce_version = '358-24486';
+$tinymce_version = '358-24485';
 
 /**
  * Holds the required PHP version
diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php
index 2277fad19..d6f213a1d 100644
--- a/wp-includes/widgets.php
+++ b/wp-includes/widgets.php
@@ -70,13 +70,6 @@ class WP_Widget {
 
 	// Functions you'll need to call.
 
-	/**
-	 * PHP4 constructor
-	 */
-	function WP_Widget( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
-		WP_Widget::__construct( $id_base, $name, $widget_options, $control_options );
-	}
-
 	/**
 	 * PHP5 constructor
 	 *
@@ -90,7 +83,7 @@ class WP_Widget {
 	 *	 - width: required if more than 250px
 	 *	 - height: currently not used but may be needed in the future
 	 */
-	function __construct( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
+	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;
@@ -98,6 +91,13 @@ class WP_Widget {
 		$this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
 	}
 
+	/**
+	 * PHP4 constructor
+	 */
+	function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) {
+		WP_Widget::__construct( $id_base, $name, $widget_options, $control_options );
+	}
+
 	/**
 	 * Constructs name attributes for use in form() fields
 	 *
@@ -509,34 +509,45 @@ function register_sidebars($number = 1, $args = array()) {
 /**
  * Builds the definition for a single sidebar and returns the ID.
  *
- * The $args parameter takes either a string or an array with 'name' and 'id'
- * contained in either usage. It will be noted that the values will be applied
- * to all sidebars, so if creating more than one, it will be advised to allow
- * for WordPress to create the defaults for you.
- *
- * Example for string would be <code>'name=whatever;id=whatever1'</code> and for
- * the array it would be <code>array(
- *    'name' => 'whatever',
- *    'id' => 'whatever1')</code>.
- *
- * name - The name of the sidebar, which presumably the title which will be
- *     displayed.
- * id - The unique identifier by which the sidebar will be called by.
- * before_widget - The content that will prepended to the widgets when they are
- *     displayed.
- * after_widget - The content that will be appended to the widgets when they are
- *     displayed.
- * before_title - The content that will be prepended to the title when displayed.
- * after_title - the content that will be appended to the title when displayed.
- *
- * <em>Content</em> is assumed to be HTML and should be formatted as such, but
- * doesn't have to be.
+ * Accepts either a string or an array and then parses that against a set
+ * of default arguments for the new sidebar. WordPress will automatically
+ * generate a sidebar ID and name based on the current number of registered
+ * sidebars if those arguments are not included.
+ *
+ * When allowing for automatic generation of the name and ID parameters, keep
+ * in mind that the incrementor for your sidebar can change over time depending
+ * on what other plugins and themes are installed.
+ *
+ * If theme support for 'widgets' has not yet been added when this function is
+ * called, it will be automatically enabled through the use of add_theme_support()
+ *
+ * Arguments passed as a string should be separated by '&':
+ *
+ *     e.g. 'name=Sidebar&id=my_prefix_sidebar'
+ *
+ * The same arguments passed as an array:
+ *
+ *     array(
+ *         'name' => 'Sidebar',
+ *         'id'   => 'my_prefix_sidebar',
+ *     )
+ *
+ * Arguments:
+ *     name          - The name or title of the sidebar displayed in the admin dashboard.
+ *     id            - The unique identifier by which the sidebar will be called.
+ *     before_widget - HTML content that will be prepended to each widget's HTML output
+ *                     when assigned to this sidebar.
+ *     after_widget  - HTML content that will be appended to each widget's HTML output
+ *                     when assigned to this sidebar.
+ *     before_title  - HTML content that will be prepended to the sidebar title when displayed.
+ *     after_title   - HTML content that will be appended to the sidebar title when displayed.
  *
  * @since 2.2.0
  * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID.
+ * @uses add_theme_support() to ensure widget support has been added.
  *
- * @param string|array $args Builds Sidebar based off of 'name' and 'id' values
- * @return string The sidebar id that was added.
+ * @param string|array $args Arguments for the sidebar being registered.
+ * @return string Sidebar ID added to $wp_registered_sidebars global.
  */
 function register_sidebar($args = array()) {
 	global $wp_registered_sidebars;
diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php
index 4fc829fb6..2398002e3 100644
--- a/wp-includes/wp-db.php
+++ b/wp-includes/wp-db.php
@@ -441,15 +441,6 @@ class wpdb {
 	 */
 	var $collate;
 
-	/**
-	 * Whether to use mysql_real_escape_string
-	 *
-	 * @since 2.8.0
-	 * @access public
-	 * @var bool
-	 */
-	var $real_escape = false;
-
 	/**
 	 * Database Username
 	 *
@@ -536,7 +527,7 @@ class wpdb {
 	function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {
 		register_shutdown_function( array( $this, '__destruct' ) );
 
-		if ( WP_DEBUG )
+		if ( WP_DEBUG && WP_DEBUG_DISPLAY )
 			$this->show_errors();
 
 		$this->init_charset();
@@ -640,15 +631,14 @@ class wpdb {
 	 * @param string   $charset The character set (optional)
 	 * @param string   $collate The collation (optional)
 	 */
-	function set_charset($dbh, $charset = null, $collate = null) {
-		if ( !isset($charset) )
+	function set_charset( $dbh, $charset = null, $collate = null ) {
+		if ( ! isset( $charset ) )
 			$charset = $this->charset;
-		if ( !isset($collate) )
+		if ( ! isset( $collate ) )
 			$collate = $this->collate;
-		if ( $this->has_cap( 'collation', $dbh ) && !empty( $charset ) ) {
-			if ( function_exists( 'mysql_set_charset' ) && $this->has_cap( 'set_charset', $dbh ) ) {
+		if ( $this->has_cap( 'collation' ) && ! empty( $charset ) ) {
+			if ( function_exists( 'mysql_set_charset' ) && $this->has_cap( 'set_charset' ) ) {
 				mysql_set_charset( $charset, $dbh );
-				$this->real_escape = true;
 			} else {
 				$query = $this->prepare( 'SET NAMES %s', $charset );
 				if ( ! empty( $collate ) )
@@ -856,24 +846,29 @@ class wpdb {
 	}
 
 	/**
-	 * Weak escape, using addslashes()
+	 * Do not use, deprecated.
+	 *
+	 * Use esc_sql() or wpdb::prepare() instead.
 	 *
-	 * @see addslashes()
 	 * @since 2.8.0
+	 * @deprecated 3.6.0
+	 * @see wpdb::prepare
+	 * @see esc_sql()
 	 * @access private
 	 *
 	 * @param string $string
 	 * @return string
 	 */
 	function _weak_escape( $string ) {
+		if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) )
+			_deprecated_function( __METHOD__, '3.6', 'wpdb::prepare() or esc_sql()' );
 		return addslashes( $string );
 	}
 
 	/**
-	 * Real escape, using mysql_real_escape_string() or addslashes()
+	 * Real escape, using mysql_real_escape_string()
 	 *
 	 * @see mysql_real_escape_string()
-	 * @see addslashes()
 	 * @since 2.8.0
 	 * @access private
 	 *
@@ -881,16 +876,17 @@ class wpdb {
 	 * @return string escaped
 	 */
 	function _real_escape( $string ) {
-		if ( $this->dbh && $this->real_escape )
+		if ( $this->dbh )
 			return mysql_real_escape_string( $string, $this->dbh );
-		else
-			return addslashes( $string );
+
+		$class = get_class( $this );
+		_doing_it_wrong( $class, "$class must set a database connection for use with escaping.", E_USER_NOTICE );
+		return addslashes( $string );
 	}
 
 	/**
 	 * Escape data. Works on arrays.
 	 *
-	 * @uses wpdb::_escape()
 	 * @uses wpdb::_real_escape()
 	 * @since  2.8.0
 	 * @access private
@@ -900,7 +896,7 @@ class wpdb {
 	 */
 	function _escape( $data ) {
 		if ( is_array( $data ) ) {
-			foreach ( (array) $data as $k => $v ) {
+			foreach ( $data as $k => $v ) {
 				if ( is_array($v) )
 					$data[$k] = $this->_escape( $v );
 				else
@@ -914,24 +910,30 @@ class wpdb {
 	}
 
 	/**
-	 * Escapes content for insertion into the database using addslashes(), for security.
+	 * Do not use, deprecated.
 	 *
-	 * Works on arrays.
+	 * Use esc_sql() or wpdb::prepare() instead.
 	 *
 	 * @since 0.71
-	 * @param string|array $data to escape
-	 * @return string|array escaped as query safe string
+	 * @deprecated 3.6.0
+	 * @see wpdb::prepare()
+	 * @see esc_sql()
+	 *
+	 * @param mixed $data
+	 * @return mixed
 	 */
 	function escape( $data ) {
+		if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) )
+			_deprecated_function( __METHOD__, '3.6', 'wpdb::prepare() or esc_sql()' );
 		if ( is_array( $data ) ) {
-			foreach ( (array) $data as $k => $v ) {
+			foreach ( $data as $k => $v ) {
 				if ( is_array( $v ) )
-					$data[$k] = $this->escape( $v );
+					$data[$k] = $this->escape( $v, 'recursive' );
 				else
-					$data[$k] = $this->_weak_escape( $v );
+					$data[$k] = $this->_weak_escape( $v, 'internal' );
 			}
 		} else {
-			$data = $this->_weak_escape( $data );
+			$data = $this->_weak_escape( $data, 'internal' );
 		}
 
 		return $data;
@@ -987,13 +989,10 @@ class wpdb {
 	 * @return null|false|string Sanitized query string, null if there is no query, false if there is an error and string
 	 * 	if there was something to prepare
 	 */
-	function prepare( $query, $args = null ) {
+	function prepare( $query, $args ) {
 		if ( is_null( $query ) )
 			return;
 
-		if ( func_num_args() < 2 )
-			_doing_it_wrong( 'wpdb::prepare', 'wpdb::prepare() requires at least two arguments.', '3.5' );
-
 		$args = func_get_args();
 		array_shift( $args );
 		// If args were passed as an array (as in vsprintf), move them up
@@ -1205,6 +1204,10 @@ class wpdb {
 
 		// If there is an error then take note of it..
 		if ( $this->last_error = mysql_error( $this->dbh ) ) {
+			// Clear insert_id on a subsequent failed insert.
+			if ( $this->insert_id && preg_match( '/^\s*(insert|replace)\s/i', $query ) )
+				$this->insert_id = 0;
+
 			$this->print_error();
 			return false;
 		}
@@ -1693,12 +1696,12 @@ class wpdb {
 	}
 
 	/**
-	 * Determine if a database supports a particular feature
+	 * Determine if a database supports a particular feature.
 	 *
 	 * @since 2.7.0
-	 * @see   wpdb::db_version()
+	 * @see wpdb::db_version()
 	 *
-	 * @param string $db_cap the feature
+	 * @param string $db_cap The feature to check for.
 	 * @return bool
 	 */
 	function has_cap( $db_cap ) {
@@ -1706,11 +1709,11 @@ class wpdb {
 
 		switch ( strtolower( $db_cap ) ) {
 			case 'collation' :    // @since 2.5.0
-			case 'group_concat' : // @since 2.7
-			case 'subqueries' :   // @since 2.7
+			case 'group_concat' : // @since 2.7.0
+			case 'subqueries' :   // @since 2.7.0
 				return version_compare( $version, '4.1', '>=' );
 			case 'set_charset' :
-				return version_compare($version, '5.0.7', '>=');
+				return version_compare( $version, '5.0.7', '>=' );
 		};
 
 		return false;
diff --git a/wp-includes/wp-diff.php b/wp-includes/wp-diff.php
index 65dd00743..62f4162fa 100644
--- a/wp-includes/wp-diff.php
+++ b/wp-includes/wp-diff.php
@@ -59,6 +59,15 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 */
 	var $inline_diff_renderer = 'WP_Text_Diff_Renderer_inline';
 
+	/**
+	 * Should we show the split view or not
+	 *
+	 * @var string
+	 * @access protected
+	 * @since 3.6.0
+	 */
+	var $_show_split_view = true;
+
 	/**
 	 * Constructor - Call parent constructor with params array.
 	 *
@@ -70,6 +79,8 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 */
 	function __construct( $params = array() ) {
 		parent::__construct( $params );
+		if ( isset( $params[ 'show_split_view' ] ) )
+			$this->_show_split_view = $params[ 'show_split_view' ];
 	}
 
 	/**
@@ -98,7 +109,8 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 * @return string
 	 */
 	function addedLine( $line ) {
-		return "<td>+</td><td class='diff-addedline'>{$line}</td>";
+		return "<td class='diff-addedline'>{$line}</td>";
+
 	}
 
 	/**
@@ -108,7 +120,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 * @return string
 	 */
 	function deletedLine( $line ) {
-		return "<td>-</td><td class='diff-deletedline'>{$line}</td>";
+		return "<td class='diff-deletedline'>{$line}</td>";
 	}
 
 	/**
@@ -118,7 +130,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 * @return string
 	 */
 	function contextLine( $line ) {
-		return "<td> </td><td class='diff-context'>{$line}</td>";
+		return "<td class='diff-context'>{$line}</td>";
 	}
 
 	/**
@@ -127,7 +139,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 	 * @return string
 	 */
 	function emptyLine() {
-		return '<td colspan="2">&nbsp;</td>';
+		return '<td>&nbsp;</td>';
 	}
 
 	/**
@@ -143,7 +155,11 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 		foreach ($lines as $line) {
 			if ( $encode )
 				$line = htmlspecialchars( $line );
-			$r .= '<tr>' . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
+			if ( $this->_show_split_view ) {
+				$r .= '<tr>' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
+			} else {
+				$r .= '<tr>' . $this->addedLine( $line ) . "</tr>\n";
+			}
 		}
 		return $r;
 	}
@@ -161,7 +177,12 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 		foreach ($lines as $line) {
 			if ( $encode )
 				$line = htmlspecialchars( $line );
-			$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . "</tr>\n";
+			if ( $this->_show_split_view ) {
+				$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "</tr>\n";
+			} else {
+				$r .= '<tr>' . $this->deletedLine( $line ) . "</tr>\n";
+			}
+
 		}
 		return $r;
 	}
@@ -179,8 +200,11 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 		foreach ($lines as $line) {
 			if ( $encode )
 				$line = htmlspecialchars( $line );
-			$r .= '<tr>' .
-				$this->contextLine( $line ) . $this->contextLine( $line ) . "</tr>\n";
+			if (  $this->_show_split_view ) {
+				$r .= '<tr>' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line )  . "</tr>\n";
+			} else {
+				$r .= '<tr>' . $this->contextLine( $line ) . "</tr>\n";
+			}
 		}
 		return $r;
 	}
@@ -264,7 +288,11 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 			} elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row.
 				$r .= $this->_deleted( array($orig_line), false );
 			} else { // A true changed row.
-				$r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n";
+				if ( $this->_show_split_view ) {
+					$r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->emptyLine() . $this->addedLine( $final_line ) . "</tr>\n";
+				} else {
+					$r .= '<tr>' . $this->deletedLine( $orig_line ) . "</tr><tr>" . $this->addedLine( $final_line ) . "</tr>\n";
+				}
 			}
 		}
 
diff --git a/wp-login.php b/wp-login.php
index 209341fa6..532ffd970 100644
--- a/wp-login.php
+++ b/wp-login.php
@@ -65,7 +65,16 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') {
 	wp_admin_css( 'colors-fresh', true );
 
 	if ( wp_is_mobile() ) { ?>
-		<meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /><?php
+		<meta name="viewport" content="width=320, initial-scale=0.9, maximum-scale=1.0, user-scalable=0" /><?php
+	}
+
+	// Remove all stored post data on logging out.
+	// This could be added by add_action('login_head'...) like wp_shake_js()
+	// but maybe better if it's not removable by plugins
+	if ( 'loggedout' == $wp_error->get_error_code() ) {
+		?>
+		<script>if("sessionStorage" in window){try{for(var key in sessionStorage){if(key.indexOf("wp-autosave-")!=-1){sessionStorage.removeItem(key)}}}catch(e){}};</script>
+		<?php
 	}
 
 	do_action( 'login_enqueue_scripts' );
@@ -82,16 +91,23 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') {
 	$login_header_url   = apply_filters( 'login_headerurl',   $login_header_url   );
 	$login_header_title = apply_filters( 'login_headertitle', $login_header_title );
 
-	// Don't allow interim logins to navigate away from the page.
-	if ( $interim_login )
-		$login_header_url = '#';
-
 	$classes = array( 'login-action-' . $action, 'wp-core-ui' );
 	if ( wp_is_mobile() )
 		$classes[] = 'mobile';
 	if ( is_rtl() )
 		$classes[] = 'rtl';
+	if ( $interim_login ) {
+		$classes[] = 'interim-login';
+		?>
+		<style type="text/css">html{background-color: transparent;}</style>
+		<?php
+
+		if ( 'success' ===  $interim_login )
+			$classes[] = 'interim-login-success';
+	}
+
 	$classes = apply_filters( 'login_body_class', $classes, $action );
+
 	?>
 	</head>
 	<body class="login <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
@@ -248,7 +264,7 @@ function retrieve_password() {
 	$message = apply_filters('retrieve_password_message', $message, $key);
 
 	if ( $message && !wp_mail($user_email, $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 e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function.') );
 
 	return true;
 }
@@ -338,7 +354,7 @@ function register_new_user( $user_login, $user_email ) {
 	$user_pass = wp_generate_password( 12, false);
 	$user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email );
 	if ( ! $user_id ) {
-		$errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) );
+		$errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn&#8217;t register you&hellip; please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) );
 		return $errors;
 	}
 
@@ -386,6 +402,8 @@ do_action( 'login_init' );
 do_action( 'login_form_' . $action );
 
 $http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
+$interim_login = isset($_REQUEST['interim-login']);
+
 switch ($action) {
 
 case 'postpass' :
@@ -393,7 +411,7 @@ case 'postpass' :
 	$hasher = new PasswordHash( 8, true );
 
 	// 10 days
-	setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( stripslashes( $_POST['post_password'] ) ), time() + 10 * DAY_IN_SECONDS, COOKIEPATH );
+	setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + 10 * DAY_IN_SECONDS, COOKIEPATH );
 
 	wp_safe_redirect( wp_get_referer() );
 	exit();
@@ -428,7 +446,7 @@ case 'retrievepassword' :
 	do_action('lost_password');
 	login_header(__('Lost Password'), '<p class="message">' . __('Please enter your username or email address. You will receive a link to create a new password via email.') . '</p>', $errors);
 
-	$user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : '';
+	$user_login = isset($_POST['user_login']) ? wp_unslash($_POST['user_login']) : '';
 
 ?>
 
@@ -445,7 +463,7 @@ case 'retrievepassword' :
 <p id="nav">
 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e('Log in') ?></a>
 <?php if ( get_option( 'users_can_register' ) ) : ?>
- | <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a>
+ | <?php echo apply_filters( 'register', sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) ) ); ?>
 <?php endif; ?>
 </p>
 
@@ -482,7 +500,7 @@ case 'rp' :
 	login_header(__('Reset Password'), '<p class="message reset-pass">' . __('Enter your new password below.') . '</p>', $errors );
 
 ?>
-<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( site_url( 'wp-login.php?action=resetpass&key=' . urlencode( $_GET['key'] ) . '&login=' . urlencode( $_GET['login'] ), 'login_post' ) ); ?>" method="post">
+<form name="resetpassform" id="resetpassform" action="<?php echo esc_url( site_url( 'wp-login.php?action=resetpass&key=' . urlencode( $_GET['key'] ) . '&login=' . urlencode( $_GET['login'] ), 'login_post' ) ); ?>" method="post" autocomplete="off">
 	<input type="hidden" id="user_login" value="<?php echo esc_attr( $_GET['login'] ); ?>" autocomplete="off" />
 
 	<p>
@@ -504,7 +522,7 @@ case 'rp' :
 <p id="nav">
 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a>
 <?php if ( get_option( 'users_can_register' ) ) : ?>
- | <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a>
+ | <?php echo apply_filters( 'register', sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) ) ); ?>
 <?php endif; ?>
 </p>
 
@@ -544,11 +562,11 @@ case 'register' :
 <form name="registerform" id="registerform" action="<?php echo esc_url( site_url('wp-login.php?action=register', 'login_post') ); ?>" method="post">
 	<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(stripslashes($user_login)); ?>" size="20" /></label>
+		<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 />
-		<input type="text" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" /></label>
+		<input type="text" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(wp_unslash($user_email)); ?>" size="25" /></label>
 	</p>
 <?php do_action('register_form'); ?>
 	<p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p>
@@ -569,7 +587,6 @@ break;
 case 'login' :
 default:
 	$secure_cookie = '';
-	$interim_login = isset($_REQUEST['interim-login']);
 	$customize_login = isset( $_REQUEST['customize-login'] );
 	if ( $customize_login )
 		wp_enqueue_script( 'customize-base' );
@@ -609,13 +626,8 @@ default:
 	if ( !is_wp_error($user) && !$reauth ) {
 		if ( $interim_login ) {
 			$message = '<p class="message">' . __('You have logged in successfully.') . '</p>';
+			$interim_login = 'success';
 			login_header( '', $message ); ?>
-
-			<?php if ( ! $customize_login ) : ?>
-			<script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script>
-			<p class="alignright">
-			<input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p>
-			<?php endif; ?>
 			</div>
 			<?php do_action( 'login_footer' ); ?>
 			<?php if ( $customize_login ) : ?>
@@ -647,21 +659,26 @@ default:
 	if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
 		$errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
 
-	// Some parts of this script use the main login form to display a message
-	if		( isset($_GET['loggedout']) && true == $_GET['loggedout'] )
-		$errors->add('loggedout', __('You are now logged out.'), 'message');
-	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');
-	elseif	( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] )
-		$errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
-	elseif	( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] )
-		$errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
-	elseif	( $interim_login )
-		$errors->add('expired', __('Your session has expired. Please log-in again.'), 'message');
-	elseif ( strpos( $redirect_to, 'about.php?updated' ) )
-		$errors->add('updated', __( '<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness.' ), 'message' );
+	if ( $interim_login ) {
+		if ( ! $errors->get_error_code() )
+			$errors->add('expired', __('Session expired. Please log in again. You will not move away from this page.'), 'message');
+	} else {
+		// Some parts of this script use the main login form to display a message
+		if		( isset($_GET['loggedout']) && true == $_GET['loggedout'] )
+			$errors->add('loggedout', __('You are now logged out.'), 'message');
+		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');
+		elseif	( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] )
+			$errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
+		elseif	( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] )
+			$errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
+		elseif ( strpos( $redirect_to, 'about.php?updated' ) )
+			$errors->add('updated', __( '<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness.' ), 'message' );
+	}
+
+	$errors = apply_filters( 'wp_login_errors', $errors, $redirect_to );
 
 	// Clear any stale cookies.
 	if ( $reauth )
@@ -670,7 +687,7 @@ default:
 	login_header(__('Log In'), '', $errors);
 
 	if ( isset($_POST['log']) )
-		$user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(stripslashes($_POST['log'])) : '';
+		$user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(wp_unslash($_POST['log'])) : '';
 	$rememberme = ! empty( $_POST['rememberme'] );
 ?>
 
@@ -699,14 +716,13 @@ default:
 	</p>
 </form>
 
-<?php if ( !$interim_login ) { ?>
+<?php if ( ! $interim_login ) { ?>
 <p id="nav">
-<?php if ( isset($_GET['checkemail']) && in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?>
-<?php elseif ( get_option('users_can_register') ) : ?>
-<a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a> |
-<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ); ?>"><?php _e( 'Lost your password?' ); ?></a>
-<?php else : ?>
-<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ); ?>"><?php _e( 'Lost your password?' ); ?></a>
+<?php if ( ! isset( $_GET['checkemail'] ) || ! in_array( $_GET['checkemail'], array( 'confirm', 'newpass' ) ) ) : ?>
+	<?php if ( get_option( 'users_can_register' ) ) : ?>
+		<?php echo apply_filters( 'register', sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) ) ); ?> |
+	<?php endif; ?>
+	<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ); ?>"><?php _e( 'Lost your password?' ); ?></a>
 <?php endif; ?>
 </p>
 <?php } ?>
@@ -735,6 +751,17 @@ d.select();
 wp_attempt_focus();
 <?php } ?>
 if(typeof wpOnload=='function')wpOnload();
+<?php if ( $interim_login ) { ?>
+(function(){
+try {
+	var i, links = document.getElementsByTagName('a');
+	for ( i in links ) {
+		if ( links[i].href )
+			links[i].target = '_blank';
+	}
+} catch(e){}
+}());
+<?php } ?>
 </script>
 
 <?php
diff --git a/wp-mail.php b/wp-mail.php
index 5685b3acf..27290b111 100644
--- a/wp-mail.php
+++ b/wp-mail.php
@@ -202,7 +202,7 @@ for ( $i = 1; $i <= $count; $i++ ) {
 	$post_category = array(get_option('default_email_category'));
 
 	$post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
-	$post_data = add_magic_quotes($post_data);
+	$post_data = wp_slash($post_data);
 
 	$post_ID = wp_insert_post($post_data);
 	if ( is_wp_error( $post_ID ) )
diff --git a/wp-settings.php b/wp-settings.php
index 65485a841..1094749e3 100644
--- a/wp-settings.php
+++ b/wp-settings.php
@@ -23,7 +23,7 @@ require( ABSPATH . WPINC . '/default-constants.php' );
 require( ABSPATH . WPINC . '/version.php' );
 
 // Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, WP_CONTENT_DIR and WP_CACHE.
-wp_initial_constants( );
+wp_initial_constants();
 
 // Check for the required PHP version and for the MySQL extension or a database drop-in.
 wp_check_php_mysql_versions();
@@ -117,6 +117,8 @@ require( ABSPATH . WPINC . '/link-template.php' );
 require( ABSPATH . WPINC . '/author-template.php' );
 require( ABSPATH . WPINC . '/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 . '/category-template.php' );
@@ -152,7 +154,7 @@ if ( is_multisite() ) {
 
 // Define constants that rely on the API to obtain the default value.
 // Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in.
-wp_plugin_directory_constants( );
+wp_plugin_directory_constants();
 
 // Load must-use plugins.
 foreach ( wp_get_mu_plugins() as $mu_plugin ) {
@@ -174,10 +176,10 @@ if ( is_multisite() )
 	ms_cookie_constants(  );
 
 // Define constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies().
-wp_cookie_constants( );
+wp_cookie_constants();
 
 // Define and enforce our SSL constants
-wp_ssl_constants( );
+wp_ssl_constants();
 
 // Create common globals.
 require( ABSPATH . WPINC . '/vars.php' );
@@ -209,7 +211,7 @@ if ( WP_CACHE && function_exists( 'wp_cache_postload' ) )
 do_action( 'plugins_loaded' );
 
 // Define constants which affect functionality if not already defined.
-wp_functionality_constants( );
+wp_functionality_constants();
 
 // Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
 wp_magic_quotes();
diff --git a/wp-signup.php b/wp-signup.php
index 7d35d8659..9dd2c3da9 100644
--- a/wp-signup.php
+++ b/wp-signup.php
@@ -12,6 +12,11 @@ if ( is_array( get_site_option( 'illegal_names' )) && isset( $_GET[ 'new' ] ) &&
 	die();
 }
 
+/**
+ * Prints signup_header via wp_head
+ *
+ * @since MU
+ */
 function do_signup_header() {
 	do_action( 'signup_header' );
 }
@@ -30,6 +35,11 @@ if ( !is_main_site() ) {
 // Fix for page title
 $wp_query->is_404 = false;
 
+/**
+ * Prints styles for front-end Multisite signup pages
+ *
+ * @since MU
+ */
 function wpmu_signup_stylesheet() {
 	?>
 	<style type="text/css">
@@ -58,6 +68,15 @@ do_action( 'before_signup_form' );
 <div id="content" class="widecolumn">
 <div class="mu_register">
 <?php
+/**
+ * Generates and displays the Signup and Create Site forms
+ *
+ * @since MU
+ *
+ * @param string $blogname The new site name
+ * @param string $blog_title The new site title
+ * @param array $errors
+ */
 function show_blog_form($blogname = '', $blog_title = '', $errors = '') {
 	global $current_site;
 	// Blog name
@@ -112,6 +131,15 @@ function show_blog_form($blogname = '', $blog_title = '', $errors = '') {
 	do_action('signup_blogform', $errors);
 }
 
+/**
+ * Validate the new site signup
+ *
+ * @since MU
+ *
+ * @uses wp_get_current_user() to retrieve the current user
+ * @uses wpmu_validate_blog_signup() to validate new site signup for the current user
+ * @return array Contains the new site data and error messages.
+ */
 function validate_blog_form() {
 	$user = '';
 	if ( is_user_logged_in() )
@@ -120,6 +148,15 @@ function validate_blog_form() {
 	return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user);
 }
 
+/**
+ * Display user registration form
+ *
+ * @since MU
+ *
+ * @param string $user_name The entered username
+ * @param string $user_email The entered email address
+ * @param array $errors
+ */
 function show_user_form($user_name = '', $user_email = '', $errors = '') {
 	// User name
 	echo '<label for="user_name">' . __('Username:') . '</label>';
@@ -142,10 +179,28 @@ function show_user_form($user_name = '', $user_email = '', $errors = '') {
 	do_action( 'signup_extra_fields', $errors );
 }
 
+/**
+ * Validate user signup name and email
+ *
+ * @since MU
+ *
+ * @uses wpmu_validate_user_signup() to retrieve an array of user data
+ * @return array Contains username, email, and error messages.
+ */
 function validate_user_form() {
 	return wpmu_validate_user_signup($_POST['user_name'], $_POST['user_email']);
 }
 
+/**
+ * Allow returning users to sign up for another site
+ *
+ * @since MU
+ *
+ * @uses wp_get_current_user() to get the current user
+ * @param string $blogname The new site name
+ * @param string $blog_title The new blog title
+ * @param array $errors
+ */
 function signup_another_blog($blogname = '', $blog_title = '', $errors = '') {
 	global $current_site;
 	$current_user = wp_get_current_user();
@@ -191,6 +246,16 @@ function signup_another_blog($blogname = '', $blog_title = '', $errors = '') {
 	<?php
 }
 
+/**
+ * Validate a new blog signup
+ *
+ * @since MU
+ *
+ * @uses wp_get_current_user() to retrieve the current user
+ * @uses wpmu_create_blog() to add a new site
+ * @uses confirm_another_blog_signup() to confirm the user's new site signup
+ * @return bool True if blog signup was validated, false if error
+ */
 function validate_another_blog_signup() {
 	global $wpdb, $blogname, $blog_title, $errors, $domain, $path;
 	$current_user = wp_get_current_user();
@@ -214,7 +279,18 @@ function validate_another_blog_signup() {
 	return true;
 }
 
-function confirm_another_blog_signup($domain, $path, $blog_title, $user_name, $user_email = '', $meta = '') {
+/**
+ * Confirm a new site signup
+ *
+ * @since MU
+ *
+ * @param string $domain The domain URL
+ * @param string $path The site root path
+ * @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()
+ */
+function confirm_another_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = array() ) {
 	?>
 	<h2><?php printf( __( 'The site %s is yours.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
 	<p>
@@ -224,6 +300,17 @@ function confirm_another_blog_signup($domain, $path, $blog_title, $user_name, $u
 	do_action( 'signup_finished' );
 }
 
+/**
+ * Setup the new user signup process
+ *
+ * @since MU
+ *
+ * @uses apply_filters() filter $filtered_results
+ * @uses show_user_form() to display the user registration form
+ * @param string $user_name The username
+ * @param string $user_email The user's email
+ * @param array $errors
+ */
 function signup_user($user_name = '', $user_email = '', $errors = '') {
 	global $current_site, $active_signup;
 
@@ -265,6 +352,16 @@ function signup_user($user_name = '', $user_email = '', $errors = '') {
 	<?php
 }
 
+/**
+ * Validate the new user signup
+ *
+ * @since MU
+ *
+ * @uses validate_user_form() to retrieve an array of the user data
+ * @uses wpmu_signup_user() to signup the new user
+ * @uses confirm_user_signup() to confirm the new user signup
+ * @return bool True if new user signup was validated, false if error
+ */
 function validate_user_signup() {
 	$result = validate_user_form();
 	extract($result);
@@ -285,6 +382,14 @@ function validate_user_signup() {
 	return true;
 }
 
+/**
+ * New user signup confirmation
+ *
+ * @since MU
+ *
+ * @param string $user_name The username
+ * @param string $user_email The user's email address
+ */
 function confirm_user_signup($user_name, $user_email) {
 	?>
 	<h2><?php printf( __( '%s is your new username' ), $user_name) ?></h2>
@@ -295,6 +400,19 @@ function confirm_user_signup($user_name, $user_email) {
 	do_action( 'signup_finished' );
 }
 
+/**
+ * Setup the new site signup
+ *
+ * @since MU
+ *
+ * @uses apply_filters() to filter $filtered_results
+ * @uses show_blog_form() to display the blog signup form
+ * @param string $user_name The username
+ * @param string $user_email The user's email address
+ * @param string $blogname The site name
+ * @param string $blog_title The site title
+ * @param array $errors
+ */
 function signup_blog($user_name = '', $user_email = '', $blogname = '', $blog_title = '', $errors = '') {
 	if ( !is_wp_error($errors) )
 		$errors = new WP_Error();
@@ -321,6 +439,18 @@ function signup_blog($user_name = '', $user_email = '', $blogname = '', $blog_ti
 	<?php
 }
 
+/**
+ * Validate new site signup
+ *
+ * @since MU
+ *
+ * @uses wpmu_validate_user_signup() to retrieve an array of the new user data and errors
+ * @uses wpmu_validate_blog_signup() to retrieve an array of the new site data and errors
+ * @uses apply_filters() to make signup $meta filterable
+ * @uses signup_user() to signup a new user
+ * @uses signup_blog() to signup a the new user to a new site
+ * @return bool True if the site signup was validated, false if error
+ */
 function validate_blog_signup() {
 	// Re-validate user info.
 	$result = wpmu_validate_user_signup($_POST['user_name'], $_POST['user_email']);
@@ -348,7 +478,19 @@ function validate_blog_signup() {
 	return true;
 }
 
-function confirm_blog_signup($domain, $path, $blog_title, $user_name = '', $user_email = '', $meta) {
+/**
+ * New site signup confirmation
+ *
+ * @since MU
+ *
+ * @param string $domain The domain URL
+ * @param string $path The site root path
+ * @param string $blog_title The new site title
+ * @param string $user_name The user's 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()
+ */
+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>
 
@@ -361,7 +503,7 @@ function confirm_blog_signup($domain, $path, $blog_title, $user_name = '', $user
 		<ul id="noemail-tips">
 			<li><p><strong><?php _e( 'Wait a little longer. Sometimes delivery of email can be delayed by processes outside of our control.' ) ?></strong></p></li>
 			<li><p><?php _e( 'Check the junk or spam folder of your email client. Sometime emails wind up there by mistake.' ) ?></p></li>
-			<li><?php printf( __( 'Have you entered your email correctly?  You have entered %s, if it&#8217;s incorrect, you will not receive your email.' ), $user_email ) ?></li>
+			<li><?php printf( __( 'Have you entered your email correctly? You have entered %s, if it&#8217;s incorrect, you will not receive your email.' ), $user_email ) ?></li>
 		</ul>
 	</p>
 	<?php
@@ -427,9 +569,9 @@ 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 );
+					printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist, but you can create it now!' ) . '</em></p>', $newblog );
 				else
-					printf( __( '<p><em>The site you were looking for, <strong>%s</strong>, does not exist.</em></p>' ), $newblog );
+					printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist.' ) . '</em></p>', $newblog );
 			}
 			break;
 	}
diff --git a/wp-trackback.php b/wp-trackback.php
index 06e47507b..8b41505f2 100644
--- a/wp-trackback.php
+++ b/wp-trackback.php
@@ -11,7 +11,7 @@ if (empty($wp)) {
 }
 
 /**
- * trackback_response() - Respond with error or success XML message
+ * trackback_response() - Respond with an error or success XML message
  *
  * @param int|bool $error Whether there was an error
  * @param string $error_message Error message if an error occurred
@@ -45,9 +45,9 @@ $tb_url  = isset($_POST['url'])     ? $_POST['url']     : '';
 $charset = isset($_POST['charset']) ? $_POST['charset'] : '';
 
 // These three are stripslashed here so that they can be properly escaped after mb_convert_encoding()
-$title     = isset($_POST['title'])     ? stripslashes($_POST['title'])      : '';
-$excerpt   = isset($_POST['excerpt'])   ? stripslashes($_POST['excerpt'])    : '';
-$blog_name = isset($_POST['blog_name']) ? stripslashes($_POST['blog_name'])  : '';
+$title     = isset($_POST['title'])     ? wp_unslash($_POST['title'])      : '';
+$excerpt   = isset($_POST['excerpt'])   ? wp_unslash($_POST['excerpt'])    : '';
+$blog_name = isset($_POST['blog_name']) ? wp_unslash($_POST['blog_name'])  : '';
 
 if ($charset)
 	$charset = str_replace( array(',', ' '), '', strtoupper( trim($charset) ) );
@@ -65,9 +65,9 @@ if ( function_exists('mb_convert_encoding') ) { // For international trackbacks
 }
 
 // Now that mb_convert_encoding() has been given a swing, we need to escape these three
-$title     = $wpdb->escape($title);
-$excerpt   = $wpdb->escape($excerpt);
-$blog_name = $wpdb->escape($blog_name);
+$title     = wp_slash($title);
+$excerpt   = wp_slash($excerpt);
+$blog_name = wp_slash($blog_name);
 
 if ( is_single() || is_page() )
 	$tb_id = $posts[0]->ID;
@@ -87,8 +87,8 @@ if ( !empty($tb_url) && !empty($title) ) {
 	if ( !pings_open($tb_id) )
 		trackback_response(1, 'Sorry, trackbacks are closed for this item.');
 
-	$title =  wp_html_excerpt( $title, 250 ).'...';
-	$excerpt = wp_html_excerpt( $excerpt, 252 ).'...';
+	$title =  wp_html_excerpt( $title, 250, '&#8230;' );
+	$excerpt = wp_html_excerpt( $excerpt, 252, '&#8230;' );
 
 	$comment_post_ID = (int) $tb_id;
 	$comment_author = $blog_name;
diff --git a/xmlrpc.php b/xmlrpc.php
index 1998e4a8b..59674df72 100644
--- a/xmlrpc.php
+++ b/xmlrpc.php
@@ -6,7 +6,7 @@
  */
 
 /**
- * Whether this is a XMLRPC Request
+ * Whether this is an XML-RPC Request
  *
  * @var bool
  */
@@ -55,7 +55,7 @@ include_once(ABSPATH . WPINC . '/class-IXR.php');
 include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
 
 /**
- * Posts submitted via the xmlrpc interface get that title
+ * Posts submitted via the XML-RPC interface get that title
  * @name post_default_title
  * @var string
  */
-- 
GitLab