stump-cli 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +3 -16
- data/Rakefile +2 -0
- data/bin/stump-cli +58 -0
- data/lib/stump-cli/version.rb +3 -0
- data/lib/stump.rb +5 -0
- data/lib/wp/Movefile-example +62 -0
- data/lib/wp/README.md +25 -0
- data/lib/wp/index.php +17 -0
- data/lib/wp/license.txt +385 -0
- data/lib/wp/readme.html +96 -0
- data/lib/wp/wp-activate.php +131 -0
- data/lib/wp/wp-admin/about.php +193 -0
- data/lib/wp/wp-admin/admin-ajax.php +98 -0
- data/lib/wp/wp-admin/admin-footer.php +99 -0
- data/lib/wp/wp-admin/admin-functions.php +15 -0
- data/lib/wp/wp-admin/admin-header.php +243 -0
- data/lib/wp/wp-admin/admin-post.php +71 -0
- data/lib/wp/wp-admin/admin.php +347 -0
- data/lib/wp/wp-admin/async-upload.php +114 -0
- data/lib/wp/wp-admin/comment.php +299 -0
- data/lib/wp/wp-admin/credits.php +192 -0
- data/lib/wp/wp-admin/css/about-rtl.css +446 -0
- data/lib/wp/wp-admin/css/about.css +446 -0
- data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
- data/lib/wp/wp-admin/css/admin-menu.css +917 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/color-picker.css +127 -0
- data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
- data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
- data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
- data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
- data/lib/wp/wp-admin/css/common.css +3212 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-controls.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
- data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
- data/lib/wp/wp-admin/css/dashboard.css +1116 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
- data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
- data/lib/wp/wp-admin/css/edit.css +1501 -0
- data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
- data/lib/wp/wp-admin/css/farbtastic.css +41 -0
- data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
- data/lib/wp/wp-admin/css/forms.css +992 -0
- data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
- data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/ie.css +785 -0
- data/lib/wp/wp-admin/css/ie.min.css +1 -0
- data/lib/wp/wp-admin/css/install-rtl.css +389 -0
- data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/install.css +389 -0
- data/lib/wp/wp-admin/css/install.min.css +1 -0
- data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
- data/lib/wp/wp-admin/css/l10n.css +101 -0
- data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
- data/lib/wp/wp-admin/css/list-tables.css +1875 -0
- data/lib/wp/wp-admin/css/login-rtl.css +269 -0
- data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/login.css +269 -0
- data/lib/wp/wp-admin/css/login.min.css +1 -0
- data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
- data/lib/wp/wp-admin/css/media.css +1196 -0
- data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
- data/lib/wp/wp-admin/css/nav-menus.css +857 -0
- data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
- data/lib/wp/wp-admin/css/press-this.css +458 -0
- data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
- data/lib/wp/wp-admin/css/revisions.css +574 -0
- data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
- data/lib/wp/wp-admin/css/themes.css +1732 -0
- data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
- data/lib/wp/wp-admin/css/widgets.css +577 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/wp-admin.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
- data/lib/wp/wp-admin/custom-background.php +482 -0
- data/lib/wp/wp-admin/custom-header.php +1366 -0
- data/lib/wp/wp-admin/customize.php +278 -0
- data/lib/wp/wp-admin/edit-comments.php +254 -0
- data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
- data/lib/wp/wp-admin/edit-form-comment.php +160 -0
- data/lib/wp/wp-admin/edit-link-form.php +150 -0
- data/lib/wp/wp-admin/edit-tag-form.php +204 -0
- data/lib/wp/wp-admin/edit-tags.php +591 -0
- data/lib/wp/wp-admin/edit.php +330 -0
- data/lib/wp/wp-admin/export.php +243 -0
- data/lib/wp/wp-admin/freedoms.php +57 -0
- data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-center.png +0 -0
- data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-left.png +0 -0
- data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-none.png +0 -0
- data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-right.png +0 -0
- data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
- data/lib/wp/wp-admin/images/arrows.png +0 -0
- data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
- data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
- data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
- data/lib/wp/wp-admin/images/date-button.gif +0 -0
- data/lib/wp/wp-admin/images/generic.png +0 -0
- data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
- data/lib/wp/wp-admin/images/icons32.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
- data/lib/wp/wp-admin/images/list-2x.png +0 -0
- data/lib/wp/wp-admin/images/list.png +0 -0
- data/lib/wp/wp-admin/images/loading.gif +0 -0
- data/lib/wp/wp-admin/images/marker.png +0 -0
- data/lib/wp/wp-admin/images/mask.png +0 -0
- data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
- data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
- data/lib/wp/wp-admin/images/media-button.png +0 -0
- data/lib/wp/wp-admin/images/menu-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs.png +0 -0
- data/lib/wp/wp-admin/images/menu.png +0 -0
- data/lib/wp/wp-admin/images/no.png +0 -0
- data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32.png +0 -0
- data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
- data/lib/wp/wp-admin/images/resize.gif +0 -0
- data/lib/wp/wp-admin/images/se.png +0 -0
- data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
- data/lib/wp/wp-admin/images/sort.gif +0 -0
- data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-admin/images/spinner.gif +0 -0
- data/lib/wp/wp-admin/images/stars-2x.png +0 -0
- data/lib/wp/wp-admin/images/stars.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
- data/lib/wp/wp-admin/images/wheel.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
- data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
- data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
- data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
- data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
- data/lib/wp/wp-admin/images/xit.gif +0 -0
- data/lib/wp/wp-admin/images/yes.png +0 -0
- data/lib/wp/wp-admin/import.php +132 -0
- data/lib/wp/wp-admin/includes/admin.php +74 -0
- data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
- data/lib/wp/wp-admin/includes/bookmark.php +305 -0
- data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
- data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
- data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
- data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
- data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
- data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
- data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
- data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
- data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
- data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
- data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
- data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
- data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
- data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
- data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
- data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/comment.php +171 -0
- data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
- data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
- data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
- data/lib/wp/wp-admin/includes/export.php +508 -0
- data/lib/wp/wp-admin/includes/file.php +1152 -0
- data/lib/wp/wp-admin/includes/image-edit.php +828 -0
- data/lib/wp/wp-admin/includes/image.php +598 -0
- data/lib/wp/wp-admin/includes/import.php +206 -0
- data/lib/wp/wp-admin/includes/list-table.php +113 -0
- data/lib/wp/wp-admin/includes/media.php +3012 -0
- data/lib/wp/wp-admin/includes/menu.php +322 -0
- data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
- data/lib/wp/wp-admin/includes/misc.php +845 -0
- data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
- data/lib/wp/wp-admin/includes/ms.php +814 -0
- data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
- data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
- data/lib/wp/wp-admin/includes/plugin.php +1899 -0
- data/lib/wp/wp-admin/includes/post.php +1661 -0
- data/lib/wp/wp-admin/includes/revision.php +228 -0
- data/lib/wp/wp-admin/includes/schema.php +1038 -0
- data/lib/wp/wp-admin/includes/screen.php +1179 -0
- data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
- data/lib/wp/wp-admin/includes/template.php +2157 -0
- data/lib/wp/wp-admin/includes/theme-install.php +205 -0
- data/lib/wp/wp-admin/includes/theme.php +474 -0
- data/lib/wp/wp-admin/includes/translation-install.php +240 -0
- data/lib/wp/wp-admin/includes/update-core.php +1186 -0
- data/lib/wp/wp-admin/includes/update.php +432 -0
- data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
- data/lib/wp/wp-admin/includes/user.php +442 -0
- data/lib/wp/wp-admin/includes/widgets.php +245 -0
- data/lib/wp/wp-admin/index.php +131 -0
- data/lib/wp/wp-admin/install-helper.php +199 -0
- data/lib/wp/wp-admin/install.php +305 -0
- data/lib/wp/wp-admin/js/accordion.js +143 -0
- data/lib/wp/wp-admin/js/accordion.min.js +1 -0
- data/lib/wp/wp-admin/js/color-picker.js +155 -0
- data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
- data/lib/wp/wp-admin/js/comment.js +50 -0
- data/lib/wp/wp-admin/js/comment.min.js +1 -0
- data/lib/wp/wp-admin/js/common.js +804 -0
- data/lib/wp/wp-admin/js/common.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-background.js +75 -0
- data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-header.js +61 -0
- data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
- data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
- data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
- data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/dashboard.js +190 -0
- data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
- data/lib/wp/wp-admin/js/edit-comments.js +625 -0
- data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
- data/lib/wp/wp-admin/js/editor-expand.js +705 -0
- data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
- data/lib/wp/wp-admin/js/editor.js +324 -0
- data/lib/wp/wp-admin/js/editor.min.js +1 -0
- data/lib/wp/wp-admin/js/farbtastic.js +276 -0
- data/lib/wp/wp-admin/js/gallery.js +237 -0
- data/lib/wp/wp-admin/js/gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/image-edit.js +633 -0
- data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
- data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
- data/lib/wp/wp-admin/js/iris.min.js +4 -0
- data/lib/wp/wp-admin/js/language-chooser.js +26 -0
- data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
- data/lib/wp/wp-admin/js/link.js +69 -0
- data/lib/wp/wp-admin/js/link.min.js +1 -0
- data/lib/wp/wp-admin/js/media-gallery.js +26 -0
- data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/media-upload.js +69 -0
- data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
- data/lib/wp/wp-admin/js/media.js +111 -0
- data/lib/wp/wp-admin/js/media.min.js +1 -0
- data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
- data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
- data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
- data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
- data/lib/wp/wp-admin/js/plugin-install.js +76 -0
- data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
- data/lib/wp/wp-admin/js/post.js +1094 -0
- data/lib/wp/wp-admin/js/post.min.js +1 -0
- data/lib/wp/wp-admin/js/postbox.js +199 -0
- data/lib/wp/wp-admin/js/postbox.min.js +1 -0
- data/lib/wp/wp-admin/js/revisions.js +1110 -0
- data/lib/wp/wp-admin/js/revisions.min.js +1 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
- data/lib/wp/wp-admin/js/svg-painter.js +240 -0
- data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
- data/lib/wp/wp-admin/js/tags.js +72 -0
- data/lib/wp/wp-admin/js/tags.min.js +1 -0
- data/lib/wp/wp-admin/js/theme.js +1691 -0
- data/lib/wp/wp-admin/js/theme.min.js +1 -0
- data/lib/wp/wp-admin/js/updates.js +65 -0
- data/lib/wp/wp-admin/js/updates.min.js +1 -0
- data/lib/wp/wp-admin/js/user-profile.js +127 -0
- data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
- data/lib/wp/wp-admin/js/user-suggest.js +30 -0
- data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
- data/lib/wp/wp-admin/js/widgets.js +494 -0
- data/lib/wp/wp-admin/js/widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/word-count.js +44 -0
- data/lib/wp/wp-admin/js/word-count.min.js +1 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
- data/lib/wp/wp-admin/js/xfn.js +17 -0
- data/lib/wp/wp-admin/js/xfn.min.js +1 -0
- data/lib/wp/wp-admin/link-add.php +29 -0
- data/lib/wp/wp-admin/link-manager.php +99 -0
- data/lib/wp/wp-admin/link-parse-opml.php +84 -0
- data/lib/wp/wp-admin/link.php +117 -0
- data/lib/wp/wp-admin/load-scripts.php +162 -0
- data/lib/wp/wp-admin/load-styles.php +153 -0
- data/lib/wp/wp-admin/maint/repair.php +124 -0
- data/lib/wp/wp-admin/media-new.php +84 -0
- data/lib/wp/wp-admin/media-upload.php +100 -0
- data/lib/wp/wp-admin/media.php +146 -0
- data/lib/wp/wp-admin/menu-header.php +227 -0
- data/lib/wp/wp-admin/menu.php +255 -0
- data/lib/wp/wp-admin/moderation.php +12 -0
- data/lib/wp/wp-admin/ms-admin.php +13 -0
- data/lib/wp/wp-admin/ms-delete-site.php +91 -0
- data/lib/wp/wp-admin/ms-edit.php +13 -0
- data/lib/wp/wp-admin/ms-options.php +12 -0
- data/lib/wp/wp-admin/ms-sites.php +13 -0
- data/lib/wp/wp-admin/ms-themes.php +13 -0
- data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
- data/lib/wp/wp-admin/ms-users.php +13 -0
- data/lib/wp/wp-admin/my-sites.php +145 -0
- data/lib/wp/wp-admin/nav-menus.php +798 -0
- data/lib/wp/wp-admin/network.php +561 -0
- data/lib/wp/wp-admin/network/about.php +16 -0
- data/lib/wp/wp-admin/network/admin.php +32 -0
- data/lib/wp/wp-admin/network/credits.php +16 -0
- data/lib/wp/wp-admin/network/edit.php +42 -0
- data/lib/wp/wp-admin/network/freedoms.php +16 -0
- data/lib/wp/wp-admin/network/index.php +79 -0
- data/lib/wp/wp-admin/network/menu.php +63 -0
- data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
- data/lib/wp/wp-admin/network/plugin-install.php +19 -0
- data/lib/wp/wp-admin/network/plugins.php +16 -0
- data/lib/wp/wp-admin/network/profile.php +16 -0
- data/lib/wp/wp-admin/network/settings.php +347 -0
- data/lib/wp/wp-admin/network/setup.php +16 -0
- data/lib/wp/wp-admin/network/site-info.php +178 -0
- data/lib/wp/wp-admin/network/site-new.php +153 -0
- data/lib/wp/wp-admin/network/site-settings.php +173 -0
- data/lib/wp/wp-admin/network/site-themes.php +185 -0
- data/lib/wp/wp-admin/network/site-users.php +319 -0
- data/lib/wp/wp-admin/network/sites.php +275 -0
- data/lib/wp/wp-admin/network/theme-editor.php +16 -0
- data/lib/wp/wp-admin/network/theme-install.php +19 -0
- data/lib/wp/wp-admin/network/themes.php +291 -0
- data/lib/wp/wp-admin/network/update-core.php +16 -0
- data/lib/wp/wp-admin/network/update.php +19 -0
- data/lib/wp/wp-admin/network/upgrade.php +120 -0
- data/lib/wp/wp-admin/network/user-edit.php +16 -0
- data/lib/wp/wp-admin/network/user-new.php +106 -0
- data/lib/wp/wp-admin/network/users.php +296 -0
- data/lib/wp/wp-admin/options-discussion.php +273 -0
- data/lib/wp/wp-admin/options-general.php +355 -0
- data/lib/wp/wp-admin/options-head.php +18 -0
- data/lib/wp/wp-admin/options-media.php +136 -0
- data/lib/wp/wp-admin/options-permalink.php +289 -0
- data/lib/wp/wp-admin/options-reading.php +184 -0
- data/lib/wp/wp-admin/options-writing.php +194 -0
- data/lib/wp/wp-admin/options.php +265 -0
- data/lib/wp/wp-admin/plugin-editor.php +279 -0
- data/lib/wp/wp-admin/plugin-install.php +134 -0
- data/lib/wp/wp-admin/plugins.php +474 -0
- data/lib/wp/wp-admin/post-new.php +74 -0
- data/lib/wp/wp-admin/post.php +318 -0
- data/lib/wp/wp-admin/press-this.php +691 -0
- data/lib/wp/wp-admin/profile.php +18 -0
- data/lib/wp/wp-admin/revision.php +221 -0
- data/lib/wp/wp-admin/setup-config.php +345 -0
- data/lib/wp/wp-admin/theme-editor.php +243 -0
- data/lib/wp/wp-admin/theme-install.php +278 -0
- data/lib/wp/wp-admin/themes.php +374 -0
- data/lib/wp/wp-admin/tools.php +75 -0
- data/lib/wp/wp-admin/update-core.php +653 -0
- data/lib/wp/wp-admin/update.php +272 -0
- data/lib/wp/wp-admin/upgrade-functions.php +12 -0
- data/lib/wp/wp-admin/upgrade.php +116 -0
- data/lib/wp/wp-admin/upload.php +292 -0
- data/lib/wp/wp-admin/user-edit.php +557 -0
- data/lib/wp/wp-admin/user-new.php +439 -0
- data/lib/wp/wp-admin/user/about.php +13 -0
- data/lib/wp/wp-admin/user/admin.php +32 -0
- data/lib/wp/wp-admin/user/credits.php +13 -0
- data/lib/wp/wp-admin/user/freedoms.php +13 -0
- data/lib/wp/wp-admin/user/index.php +12 -0
- data/lib/wp/wp-admin/user/menu.php +22 -0
- data/lib/wp/wp-admin/user/profile.php +12 -0
- data/lib/wp/wp-admin/user/user-edit.php +12 -0
- data/lib/wp/wp-admin/users.php +460 -0
- data/lib/wp/wp-admin/widgets.php +442 -0
- data/lib/wp/wp-blog-header.php +18 -0
- data/lib/wp/wp-comments-post.php +164 -0
- data/lib/wp/wp-config-sample.php +80 -0
- data/lib/wp/wp-content/index.php +2 -0
- data/lib/wp/wp-content/plugins/hello.php +82 -0
- data/lib/wp/wp-content/plugins/index.php +2 -0
- data/lib/wp/wp-content/themes/index.php +2 -0
- data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
- data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
- data/lib/wp/wp-content/themes/stump/404.php +13 -0
- data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
- data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
- data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
- data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
- data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
- data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
- data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/base.php +36 -0
- data/lib/wp/wp-content/themes/stump/functions.php +19 -0
- data/lib/wp/wp-content/themes/stump/index.php +21 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
- data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
- data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
- data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
- data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
- data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
- data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
- data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
- data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
- data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
- data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
- data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
- data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
- data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
- data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
- data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
- data/lib/wp/wp-content/themes/stump/package.json +32 -0
- data/lib/wp/wp-content/themes/stump/page.php +2 -0
- data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/stump/single.php +1 -0
- data/lib/wp/wp-content/themes/stump/style.css +11 -0
- data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
- data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
- data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
- data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
- data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
- data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
- data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
- data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
- data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
- data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
- data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
- data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
- data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
- data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
- data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
- data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
- data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
- data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
- data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
- data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
- data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
- data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
- data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
- data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
- data/lib/wp/wp-cron.php +115 -0
- data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
- data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
- data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
- data/lib/wp/wp-includes/ID3/license.txt +29 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
- data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
- data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
- data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
- data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
- data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
- data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
- data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
- data/lib/wp/wp-includes/ID3/readme.txt +604 -0
- data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
- data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
- data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
- data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
- data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
- data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
- data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
- data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
- data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
- data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
- data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
- data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
- data/lib/wp/wp-includes/SimplePie/File.php +292 -0
- data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
- data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
- data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
- data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
- data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
- data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
- data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
- data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
- data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
- data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
- data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
- data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
- data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
- data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
- data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
- data/lib/wp/wp-includes/Text/Diff.php +450 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
- data/lib/wp/wp-includes/admin-bar.php +870 -0
- data/lib/wp/wp-includes/atomlib.php +352 -0
- data/lib/wp/wp-includes/author-template.php +471 -0
- data/lib/wp/wp-includes/bookmark-template.php +298 -0
- data/lib/wp/wp-includes/bookmark.php +416 -0
- data/lib/wp/wp-includes/cache.php +704 -0
- data/lib/wp/wp-includes/canonical.php +586 -0
- data/lib/wp/wp-includes/capabilities.php +1539 -0
- data/lib/wp/wp-includes/category-template.php +1407 -0
- data/lib/wp/wp-includes/category.php +343 -0
- data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
- data/lib/wp/wp-includes/class-IXR.php +1100 -0
- data/lib/wp/wp-includes/class-feed.php +140 -0
- data/lib/wp/wp-includes/class-http.php +2245 -0
- data/lib/wp/wp-includes/class-json.php +936 -0
- data/lib/wp/wp-includes/class-oembed.php +579 -0
- data/lib/wp/wp-includes/class-phpass.php +260 -0
- data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
- data/lib/wp/wp-includes/class-pop3.php +652 -0
- data/lib/wp/wp-includes/class-simplepie.php +3119 -0
- data/lib/wp/wp-includes/class-smtp.php +943 -0
- data/lib/wp/wp-includes/class-snoopy.php +1256 -0
- data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
- data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
- data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
- data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
- data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
- data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
- data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
- data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
- data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
- data/lib/wp/wp-includes/class-wp-embed.php +373 -0
- data/lib/wp/wp-includes/class-wp-error.php +276 -0
- data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
- data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
- data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
- data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
- data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
- data/lib/wp/wp-includes/class-wp-walker.php +471 -0
- data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
- data/lib/wp/wp-includes/class-wp.php +782 -0
- data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
- data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
- data/lib/wp/wp-includes/class.wp-styles.php +210 -0
- data/lib/wp/wp-includes/comment-template.php +2286 -0
- data/lib/wp/wp-includes/comment.php +2606 -0
- data/lib/wp/wp-includes/compat.php +125 -0
- data/lib/wp/wp-includes/cron.php +469 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
- data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons.css +364 -0
- data/lib/wp/wp-includes/css/buttons.min.css +1 -0
- data/lib/wp/wp-includes/css/dashicons.css +893 -0
- data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
- data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
- data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/editor.css +1993 -0
- data/lib/wp/wp-includes/css/editor.min.css +1 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
- data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
- data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/media-views.css +2568 -0
- data/lib/wp/wp-includes/css/media-views.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
- data/lib/wp/wp-includes/date.php +475 -0
- data/lib/wp/wp-includes/default-constants.php +323 -0
- data/lib/wp/wp-includes/default-filters.php +307 -0
- data/lib/wp/wp-includes/default-widgets.php +1423 -0
- data/lib/wp/wp-includes/deprecated.php +3501 -0
- data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
- data/lib/wp/wp-includes/feed-atom.php +87 -0
- data/lib/wp/wp-includes/feed-rdf.php +81 -0
- data/lib/wp/wp-includes/feed-rss.php +46 -0
- data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
- data/lib/wp/wp-includes/feed-rss2.php +115 -0
- data/lib/wp/wp-includes/feed.php +659 -0
- data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
- data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
- data/lib/wp/wp-includes/formatting.php +4006 -0
- data/lib/wp/wp-includes/functions.php +4631 -0
- data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
- data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
- data/lib/wp/wp-includes/general-template.php +2982 -0
- data/lib/wp/wp-includes/http.php +551 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
- data/lib/wp/wp-includes/images/blank.gif +0 -0
- data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
- data/lib/wp/wp-includes/images/crystal/code.png +0 -0
- data/lib/wp/wp-includes/images/crystal/default.png +0 -0
- data/lib/wp/wp-includes/images/crystal/document.png +0 -0
- data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
- data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/crystal/text.png +0 -0
- data/lib/wp/wp-includes/images/crystal/video.png +0 -0
- data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
- data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
- data/lib/wp/wp-includes/images/media/archive.png +0 -0
- data/lib/wp/wp-includes/images/media/audio.png +0 -0
- data/lib/wp/wp-includes/images/media/code.png +0 -0
- data/lib/wp/wp-includes/images/media/default.png +0 -0
- data/lib/wp/wp-includes/images/media/document.png +0 -0
- data/lib/wp/wp-includes/images/media/interactive.png +0 -0
- data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/media/text.png +0 -0
- data/lib/wp/wp-includes/images/media/video.png +0 -0
- data/lib/wp/wp-includes/images/rss-2x.png +0 -0
- data/lib/wp/wp-includes/images/rss.png +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
- data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-includes/images/spinner.gif +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
- data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
- data/lib/wp/wp-includes/images/wpicons.png +0 -0
- data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
- data/lib/wp/wp-includes/images/wpspin.gif +0 -0
- data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
- data/lib/wp/wp-includes/images/xit.gif +0 -0
- data/lib/wp/wp-includes/js/admin-bar.js +365 -0
- data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
- data/lib/wp/wp-includes/js/autosave.js +589 -0
- data/lib/wp/wp-includes/js/autosave.min.js +1 -0
- data/lib/wp/wp-includes/js/backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/colorpicker.js +707 -0
- data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
- data/lib/wp/wp-includes/js/comment-reply.js +47 -0
- data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
- data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
- data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
- data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
- data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
- data/lib/wp/wp-includes/js/customize-base.js +617 -0
- data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-loader.js +246 -0
- data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-models.js +247 -0
- data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview.js +154 -0
- data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-views.js +231 -0
- data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
- data/lib/wp/wp-includes/js/heartbeat.js +738 -0
- data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
- data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
- data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
- data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
- data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
- data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
- data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
- data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
- data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
- data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
- data/lib/wp/wp-includes/js/json2.js +480 -0
- data/lib/wp/wp-includes/js/json2.min.js +1 -0
- data/lib/wp/wp-includes/js/masonry.min.js +1 -0
- data/lib/wp/wp-includes/js/mce-view.js +829 -0
- data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
- data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
- data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
- data/lib/wp/wp-includes/js/media-editor.js +1114 -0
- data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
- data/lib/wp/wp-includes/js/media-grid.js +732 -0
- data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
- data/lib/wp/wp-includes/js/media-models.js +1362 -0
- data/lib/wp/wp-includes/js/media-models.min.js +1 -0
- data/lib/wp/wp-includes/js/media-views.js +7484 -0
- data/lib/wp/wp-includes/js/media-views.min.js +3 -0
- data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
- data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
- data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
- data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
- data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
- data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
- data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
- data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
- data/lib/wp/wp-includes/js/quicktags.js +652 -0
- data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
- data/lib/wp/wp-includes/js/shortcode.js +356 -0
- data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
- data/lib/wp/wp-includes/js/swfobject.js +4 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
- data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
- data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
- data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
- data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
- data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
- data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
- data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
- data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
- data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
- data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
- data/lib/wp/wp-includes/js/tw-sack.js +193 -0
- data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
- data/lib/wp/wp-includes/js/underscore.min.js +1 -0
- data/lib/wp/wp-includes/js/utils.js +197 -0
- data/lib/wp/wp-includes/js/utils.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
- data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
- data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-lists.js +469 -0
- data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
- data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-util.js +106 -0
- data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
- data/lib/wp/wp-includes/js/wpdialog.js +19 -0
- data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
- data/lib/wp/wp-includes/js/wplink.js +615 -0
- data/lib/wp/wp-includes/js/wplink.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
- data/lib/wp/wp-includes/kses.php +1526 -0
- data/lib/wp/wp-includes/l10n.php +908 -0
- data/lib/wp/wp-includes/link-template.php +3141 -0
- data/lib/wp/wp-includes/load.php +828 -0
- data/lib/wp/wp-includes/locale.php +368 -0
- data/lib/wp/wp-includes/media-template.php +1235 -0
- data/lib/wp/wp-includes/media.php +3329 -0
- data/lib/wp/wp-includes/meta.php +1221 -0
- data/lib/wp/wp-includes/ms-blogs.php +939 -0
- data/lib/wp/wp-includes/ms-default-constants.php +153 -0
- data/lib/wp/wp-includes/ms-default-filters.php +82 -0
- data/lib/wp/wp-includes/ms-deprecated.php +347 -0
- data/lib/wp/wp-includes/ms-files.php +82 -0
- data/lib/wp/wp-includes/ms-functions.php +2476 -0
- data/lib/wp/wp-includes/ms-load.php +458 -0
- data/lib/wp/wp-includes/ms-settings.php +213 -0
- data/lib/wp/wp-includes/nav-menu-template.php +678 -0
- data/lib/wp/wp-includes/nav-menu.php +895 -0
- data/lib/wp/wp-includes/option.php +1440 -0
- data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
- data/lib/wp/wp-includes/pluggable.php +2283 -0
- data/lib/wp/wp-includes/plugin.php +920 -0
- data/lib/wp/wp-includes/pomo/entry.php +78 -0
- data/lib/wp/wp-includes/pomo/mo.php +262 -0
- data/lib/wp/wp-includes/pomo/po.php +384 -0
- data/lib/wp/wp-includes/pomo/streams.php +209 -0
- data/lib/wp/wp-includes/pomo/translations.php +275 -0
- data/lib/wp/wp-includes/post-formats.php +243 -0
- data/lib/wp/wp-includes/post-template.php +1766 -0
- data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
- data/lib/wp/wp-includes/post.php +5842 -0
- data/lib/wp/wp-includes/query.php +4666 -0
- data/lib/wp/wp-includes/registration-functions.php +7 -0
- data/lib/wp/wp-includes/registration.php +7 -0
- data/lib/wp/wp-includes/revision.php +657 -0
- data/lib/wp/wp-includes/rewrite.php +2180 -0
- data/lib/wp/wp-includes/rss-functions.php +9 -0
- data/lib/wp/wp-includes/rss.php +936 -0
- data/lib/wp/wp-includes/script-loader.php +1045 -0
- data/lib/wp/wp-includes/session.php +430 -0
- data/lib/wp/wp-includes/shortcodes.php +410 -0
- data/lib/wp/wp-includes/taxonomy.php +4006 -0
- data/lib/wp/wp-includes/template-loader.php +76 -0
- data/lib/wp/wp-includes/template.php +505 -0
- data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
- data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
- data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
- data/lib/wp/wp-includes/theme-compat/header.php +49 -0
- data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
- data/lib/wp/wp-includes/theme.php +2014 -0
- data/lib/wp/wp-includes/update.php +674 -0
- data/lib/wp/wp-includes/user.php +2292 -0
- data/lib/wp/wp-includes/vars.php +144 -0
- data/lib/wp/wp-includes/version.php +35 -0
- data/lib/wp/wp-includes/widgets.php +1514 -0
- data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
- data/lib/wp/wp-includes/wp-db.php +2190 -0
- data/lib/wp/wp-includes/wp-diff.php +523 -0
- data/lib/wp/wp-links-opml.php +80 -0
- data/lib/wp/wp-load.php +73 -0
- data/lib/wp/wp-login.php +952 -0
- data/lib/wp/wp-mail.php +260 -0
- data/lib/wp/wp-settings.php +374 -0
- data/lib/wp/wp-signup.php +749 -0
- data/lib/wp/wp-trackback.php +127 -0
- data/lib/wp/xmlrpc.php +101 -0
- data/stump-cli.gemspec +26 -0
- metadata +1332 -4
Binary file
|
@@ -0,0 +1,250 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata></metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="dashiconsregular" horiz-adv-x="2000" >
|
7
|
+
<font-face units-per-em="2000" ascent="2000" descent="0" />
|
8
|
+
<missing-glyph horiz-adv-x="500" />
|
9
|
+
<glyph unicode=" " horiz-adv-x="1000" />
|
10
|
+
<glyph unicode=" " />
|
11
|
+
<glyph unicode=" " horiz-adv-x="1000" />
|
12
|
+
<glyph unicode=" " />
|
13
|
+
<glyph unicode=" " horiz-adv-x="666" />
|
14
|
+
<glyph unicode=" " horiz-adv-x="500" />
|
15
|
+
<glyph unicode=" " horiz-adv-x="333" />
|
16
|
+
<glyph unicode=" " horiz-adv-x="333" />
|
17
|
+
<glyph unicode=" " horiz-adv-x="250" />
|
18
|
+
<glyph unicode=" " horiz-adv-x="400" />
|
19
|
+
<glyph unicode=" " horiz-adv-x="111" />
|
20
|
+
<glyph unicode=" " horiz-adv-x="400" />
|
21
|
+
<glyph unicode=" " horiz-adv-x="500" />
|
22
|
+
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
|
23
|
+
<glyph unicode="" d="M1448 894l-707 707l150 150q25 28 85 34.5t134 -11t132 -55.5q45 -30 126.5 -97t164.5 -113q43 -24 73 -38t76.5 -30.5t87.5 -23t95.5 -6t112.5 12.5zM1377 823l-707 707l-177 -177q-29 -29 -29 -70.5t29 -70.5l106 -106q29 -29 29 -71t-29 -71q-27 -27 -61.5 -54 t-86 -63t-73.5 -52q-66 -49 -101 -84q-52 -52 -92 -108.5t-64 -113t-20.5 -108.5t39.5 -88t88 -39.5t108.5 20.5t113 63.5t108.5 91.5q34 34 85 102q13 17 51 72t64 88.5t54 60.5q29 29 70.5 29t70.5 -29l106 -106q29 -29 70.5 -29t70.5 29z" />
|
24
|
+
<glyph unicode="" d="M500 1800h900q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-200l-500 -500v500h-200q-82 0 -141 59t-59 141v700q0 82 59 141t141 59z" />
|
25
|
+
<glyph unicode="" d="M1600 1150l153 -153l-106 -106l-647 647l-647 -647l-106 106l753 753l400 -400v200h200v-400zM1000 1396l600 -599v-597h-1200v597zM1200 300v500h-400v-500h400z" />
|
26
|
+
<glyph unicode="" d="M1774 1724q126 -127 126 -305t-126 -305l-153 -152q-82 -82 -195 -110.5t-219 1.5l262 261l76 77l76 76q63 63 63 152t-63 152q-63 64 -152 64t-152 -64l-77 -76l-338 -338q-29 106 -0.5 219t110.5 195l152 153q127 126 305.5 126t304.5 -126zM859 657l534 534 q31 31 31 76t-31 76q-34 32 -78 31t-75 -31l-533 -534q-31 -31 -31 -76t31 -76q34 -32 78 -31t74 31zM783 428l414 415q30 -106 1.5 -219t-110.5 -195l-152 -153q-127 -126 -305 -126t-305 126q-126 126 -126 305t126 305l153 152q82 82 195 110.5t219 -0.5l-414 -415 q-64 -63 -64 -152t64 -153q63 -63 152 -63t152 63z" />
|
27
|
+
<glyph unicode="" d="M1300 900v700q0 41 -29.5 70.5t-70.5 29.5h-167l-133 200h-400l-133 -200h-167q-41 0 -70.5 -29.5t-29.5 -70.5v-700q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5zM700 1550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z M1400 1400h500v-1050q0 -104 -73 -177t-177 -73t-177 73t-73 177t73 177t177 73q23 0 50 -5v505h-300v300zM1000 595v105h200v-350q0 -104 -73 -177t-177 -73t-177 73t-73 177t73 177t177 73q23 0 50 -5z" />
|
28
|
+
<glyph unicode="" d="M600 500v1300h1000v-1300h-1000zM500 400h800v-200h-1000v1300h200v-1100z" />
|
29
|
+
<glyph unicode="" d="M1311 1564l-324 -324l-187 187l324 324q26 26 72 16.5t84 -48.5q39 -38 48 -83.5t-17 -71.5zM511 1387l91 112l901 -901l-119 -84q-50 -50 -167.5 -83t-214.5 -33h-388l-124 -124q-44 -44 -106 -44t-106 44q-44 43 -44 105.5t44 106.5l124 124v388q0 96 30.5 218 t78.5 171zM1237 990l324 324q25 26 71 17t84 -48q39 -38 48 -83.5t-17 -71.5l-324 -325z" />
|
30
|
+
<glyph unicode="" d="M1668 1023q-99 -99 -236 -125t-259 26l-541 -652q-74 -74 -179 -74t-179 74t-74 179t74 178l652 542q-52 122 -26 259t125 236q94 94 224 122t248 -16l-289 -289l282 -282l286 287q41 -117 13 -244.5t-121 -220.5zM381 379q30 -29 72 -29t71 29q30 30 30 72t-30 71 q-29 30 -71 30t-72 -30q-29 -29 -29 -71t29 -72z" />
|
31
|
+
<glyph unicode="" d="M1800 400v1200q0 41 -29.5 70.5t-70.5 29.5h-1300q-41 0 -70.5 -29.5t-29.5 -70.5v-1200q0 -41 29.5 -70.5t70.5 -29.5h1300q41 0 70.5 29.5t29.5 70.5zM800 900h100q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5 t-35.5 14.5t-14.5 35.5v150h-100q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h100v550q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-550zM1300 1100h-100q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h100v150q0 21 14.5 35.5t35.5 14.5t35.5 -14.5 t14.5 -35.5v-150h100q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-550q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v550z" />
|
32
|
+
<glyph unicode="" d="M1044 1698l182 182l636 -635l-183 -182q-78 52 -175 42.5t-166 -78.5l-75 -75q-68 -69 -77.5 -165.5t42.5 -175.5l-183 -182l-241 241l-280 -279q-54 -54 -203.5 -155t-176.5 -74t74 177.5t154 203.5l279 279l-241 242l183 182q78 -52 175 -42.5t165 78.5l75 75 q69 68 78.5 165t-42.5 176z" />
|
33
|
+
<glyph unicode="" d="M1000 1075q-46 0 -86.5 19t-67.5 49.5t-49 67t-34.5 73t-21 67t-11.5 49.5l-3 19q-6 55 -3 108.5t24.5 103t53 87t82.5 60t113 22.5q103 0 171 -59t91 -144t9 -178q-1 -7 -3 -19.5t-10.5 -48t-20.5 -68t-33.5 -72.5t-48 -68.5t-66.5 -48t-86 -19.5zM1000 833l272 182 q116 0 221.5 -67t168 -172t62.5 -214v-249q-15 -5 -41.5 -12.5t-109 -27t-164.5 -34.5t-195 -27t-214 -12q-102 0 -214.5 11.5t-199.5 28t-159.5 33.5t-111.5 29l-39 11v249q0 112 58 215t162.5 168t226.5 65z" />
|
34
|
+
<glyph unicode="" d="M1800 800h-218q-26 -107 -81 -193l154 -154l-210 -210l-154 154q-88 -55 -191 -79v-218h-300v218q-103 24 -191 79l-154 -154l-212 212l154 154q-55 88 -79 191h-218v297h217q23 101 80 194l-154 154l210 210l154 -154q85 54 193 81v218h300v-218q103 -24 191 -79 l154 154l212 -212l-154 -154q57 -93 80 -194h217v-297zM950 650q124 0 212 88t88 212t-88 212t-212 88t-212 -88t-88 -212t88 -212t212 -88z" />
|
35
|
+
<glyph unicode="" d="M1695 1742q96 -96 130.5 -225t0 -257.5t-130.5 -224.5q-112 -112 -267.5 -138.5t-291.5 37.5l-187 -331l-299 -31l-150 -372h-300l-100 200l795 769q-71 139 -46.5 298.5t139.5 274.5q96 96 225 130.5t257.5 0t224.5 -130.5zM1444 1363q55 0 94 39t39 95q0 55 -39 94 t-94 39t-94 -39t-39 -94t39 -94.5t94 -39.5z" />
|
36
|
+
<glyph unicode="" d="M1000 1700q154 0 290.5 -63t234.5 -175l-171 -195q-62 82 -155 130t-199 48q-157 0 -277.5 -98t-154.5 -247h232l-350 -400l-350 400h208q24 168 121 305t247.5 216t323.5 79zM1000 296q-155 0 -291 63t-234 175l171 195q62 -82 155 -130t199 -48q157 0 277.5 98 t154.5 247h-232l350 400l350 -400h-208q-18 -126 -79.5 -236.5t-152.5 -190.5t-210.5 -126.5t-249.5 -46.5z" />
|
37
|
+
<glyph unicode="" d="M1800 600v1000q0 41 -29.5 70.5t-70.5 29.5h-1400q-41 0 -70.5 -29.5t-29.5 -70.5v-1000q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1000 1400q169 0 323 -79t277 -221q-123 -142 -277 -221t-323 -79t-323 79t-277 221q123 142 277 221t323 79z M1200 1100q0 82 -59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59t141 59t59 141zM1400 300h300v-100h-1400v100h300v100h800v-100z" />
|
38
|
+
<glyph unicode="" d="M1900 400v1300q0 41 -29.5 70.5t-70.5 29.5h-1500q-41 0 -70.5 -29.5t-29.5 -70.5v-1300q0 -41 29.5 -70.5t70.5 -29.5h1500q41 0 70.5 29.5t29.5 70.5zM400 1600h1300v-400h-1300v400zM500 1500v-200h300v200h-300zM900 1500v-200h300v200h-300zM1300 1500v-200h300v200 h-300zM450 1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM600 1000h400v-100h-400v100zM1200 1000h500v-500h-500v500zM450 800q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5 t14.5 35.5t35.5 14.5zM600 800h400v-100h-400v100zM1300 800v-200h300v200h-300zM450 600q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM600 600h400v-100h-400v100z" />
|
39
|
+
<glyph unicode="" d="M500 1800h1000q82 0 141 -59t59 -141v-800q0 -82 -59 -141t-141 -59h-200l-500 -500v500h-300q-82 0 -141 59t-59 141v800q0 82 59 141t141 59zM1350 950l-250 250l250 250l-100 100l-250 -250l-250 250l-100 -100l250 -250l-250 -250l100 -100l250 250l250 -250z" />
|
40
|
+
<glyph unicode="" d="M1000 1000l-746 298l46 -1098h-200l48 1141l-148 59l1000 400l1000 -400zM1000 1500q-41 0 -70.5 -14.5t-29.5 -35.5t29.5 -35.5t70.5 -14.5t70.5 14.5t29.5 35.5t-29.5 35.5t-70.5 14.5zM1000 900l557 223q112 -149 136 -330q-52 7 -93 7q-188 0 -347.5 -92.5 t-252.5 -248.5q-93 156 -252.5 248.5t-347.5 92.5q-40 0 -93 -7q24 181 136 330z" />
|
41
|
+
<glyph unicode="" d="M1689 1880l141 -141q29 -29 29 -70.5t-29 -70.5l-430 -431v-967h-1100v1500h1067l180 180q30 29 71.5 29.5t70.5 -29.5zM1123 1032l537 536l-142 142l-536 -537l-71 -212z" />
|
42
|
+
<glyph unicode="" d="M2000 1000q0 163 -50.5 315.5t-143 275.5t-215.5 215.5t-275.5 143t-315.5 50.5t-315.5 -50.5t-275.5 -143t-215.5 -215.5t-143 -275.5t-50.5 -315.5t50.5 -315.5t143 -275.5t215.5 -215.5t275.5 -143t315.5 -50.5t315.5 50.5t275.5 143t215.5 215.5t143 275.5 t50.5 315.5zM1000 1899q183 0 349.5 -71t287 -191.5t191.5 -287t71 -349.5t-71 -349.5t-191.5 -287t-287 -191.5t-349.5 -71t-349.5 71t-287 191.5t-191.5 287t-71 349.5t71 349.5t191.5 287t287 191.5t349.5 71zM801 518l-305 821l105 8q20 2 27 27.5t-2.5 49t-30.5 22.5 q-129 -10 -213 -10q-33 0 -52 1q110 166 287 263t383 97q154 0 293.5 -55t247.5 -154q-52 7 -98.5 -30.5t-46.5 -111.5q0 -29 11.5 -61.5t22.5 -52.5t37 -61q5 -8 8 -13q50 -87 50 -221q0 -60 -31.5 -172t-63.5 -194l-32 -82l-271 750q21 1 40 5t27 8l8 3q20 2 27.5 29.5 t-2.5 53.5t-30 25q-130 -11 -214 -11q-35 0 -87.5 3l-87.5 5l-36 3q-20 1 -30 -25.5t-2.5 -54t27.5 -28.5l84 -8l112 -304zM1403 303l261 697q3 7 7 19.5t15 53.5t15.5 82t8 105t-6.5 121q94 -170 94 -381q0 -219 -106.5 -405t-287.5 -292zM268 1323l382 -1048 q-202 99 -324.5 294.5t-122.5 430.5q0 179 65 323zM1013 870l229 -625q-117 -42 -242 -42q-103 0 -206 30z" />
|
43
|
+
<glyph unicode="" d="M300 1900h1400v-1800h-1400v1800zM1400 1500v100h-800v-100h800zM1400 1200v100h-800v-100h800zM1400 900v100h-800v-100h800zM1200 600v100h-600v-100h600z" />
|
44
|
+
<glyph unicode="" d="M854 726q0 130 -72 222q-50 63 -136.5 82t-159.5 3q-25 143 78 303.5t264 241.5l-163 228q-98 -47 -188.5 -114t-169.5 -157t-133.5 -192.5t-79.5 -227t-9 -252.5q26 -211 139.5 -337t283.5 -126q151 0 248 88q98 88 98 238zM1797 726q0 130 -72 222q-50 63 -136.5 82 t-159.5 3q-25 143 78 303.5t264 241.5l-163 228q-98 -47 -188.5 -114t-169.5 -157t-133.5 -192.5t-79.5 -227t-9 -252.5q26 -211 139.5 -337t283.5 -126q151 0 248 88q98 88 98 238z" />
|
45
|
+
<glyph unicode="" d="M100 1900h1800v-1200l-600 -600h-1200v1800zM400 1600v-100h1200v100h-1200zM400 1200v-100h1200v100h-1200zM1000 700v100h-600v-100h600zM1200 300l500 500h-500v-500z" />
|
46
|
+
<glyph unicode="" d="M1100 1400h-82q-81 0 -149.5 -71t-68.5 -145v-184l-300 -300v300h-200q-82 0 -141 59t-59 141v500q0 82 59 141t141 59h600q82 0 141 -59t59 -141v-300zM1100 1300h600q82 0 141 -59t59 -141v-500q0 -82 -59 -141t-141 -59h-200v-300l-300 300h-100q-82 0 -141 59 t-59 141v500q0 82 59 141t141 59z" />
|
47
|
+
<glyph unicode="" d="M200 1900h1600q41 0 70.5 -29.5t29.5 -70.5v-1600l-1800 2v1598q0 41 29.5 70.5t70.5 29.5zM600 1800l-200 -300h100l200 300h-100zM1000 1800h-100l-200 -300h100zM1300 1800h-100l-200 -300h100zM1600 1800h-100l-200 -300h100zM1700 400v1000h-1400v-1000h1400z M800 1300l600 -400l-600 -400v800z" />
|
48
|
+
<glyph unicode="" d="M699 1692l1102 200q40 6 69.5 -25.5t29.5 -74.5v-200v-1042q0 -145 -102.5 -247.5t-247.5 -102.5t-247.5 102.5t-102.5 247.5t102.5 247.5t247.5 102.5q73 0 150 -35v627l-900 -200v-892q-18 -128 -118 -214t-232 -86q-145 0 -247.5 102.5t-102.5 247.5t102.5 247.5 t247.5 102.5q73 0 150 -35v827q0 40 28 66.5t71 33.5z" />
|
49
|
+
<glyph unicode="" d="M225 1900h1550q52 0 88.5 -36.5t36.5 -88.5v-1550q0 -52 -36.5 -88.5t-88.5 -36.5h-1550q-52 0 -88.5 36.5t-36.5 88.5v1550q0 52 36.5 88.5t88.5 36.5zM1700 300v1400h-1400v-1400h1400zM1000 1400q0 82 -59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59t141 59 t59 141zM1300 900q0 8 0.5 21t3 54t7.5 81t15.5 94t25 100.5t37.5 93.5t52 80.5t70 54.5t89 21v-1000q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v700q41 0 79.5 -22t67.5 -57.5t55 -78t43.5 -85t30 -78t18.5 -57.5l6 -22q4 12 12 32.5t36 72t60 91 t84 72t108 32.5t107.5 -20.5t85 -50t59 -59t36.5 -50.5z" />
|
50
|
+
<glyph unicode="" d="M1500 1600h294q44 0 75 -31t31 -75v-1181q0 -45 -31 -79t-75 -34h-1588q-44 0 -75 34t-31 79v1181q0 44 31 75t75 31h294l300 200h400zM1000 500q166 0 283 117t117 283t-117 283t-283 117t-283 -117t-117 -283t117 -283t283 -117z" />
|
51
|
+
<glyph unicode="" d="M1000 1900q205 0 362 -33.5t257.5 -91t164.5 -142t90 -177.5t26 -206t-26 -206t-90 -177.5t-164.5 -142t-257.5 -91t-362 -33.5t-362 33.5t-257.5 91t-164.5 142t-90 177.5t-26 206t26 206t90 177.5t164.5 142t257.5 91t362 33.5zM550 1100q62 0 106 44t44 106t-44 106 t-106 44t-106 -44t-44 -106t44 -106t106 -44zM1000 1100q62 0 106 44t44 106t-44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44zM1450 1100q62 0 106 44t44 106t-44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44zM600 550q62 0 106 -44t44 -106t-44 -106t-106 -44 t-106 44t-44 106t44 106t106 44zM300 350q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
|
52
|
+
<glyph unicode="" d="M1700 1300v-300h-500v-500h-300v500h-500v300h500v500h300v-500h500z" />
|
53
|
+
<glyph unicode="" d="M1700 1300v300h-200v200h-300v-100h-900v-1500h1100v900h100v200h200zM1600 1500v-100h-200v-200h-100v200h-200v100h200v200h100v-200h200z" />
|
54
|
+
<glyph unicode="" d="M0 1700h2000v-1400h-2000v1400zM1900 1300v200h-1800v-200h1800zM1500 800v400h-1000v-400h1000zM400 900v200h-300v-200h300zM1900 900v200h-300v-200h300zM1900 500v200h-1800v-200h1800z" />
|
55
|
+
<glyph unicode="" d="M0 1680h2000v-1400h-2000v1400zM1900 1280v200h-1800v-200h1800zM1100 780v400h-1000v-400h1000zM1900 880v200h-700v-200h700zM1900 480v200h-1800v-200h1800z" />
|
56
|
+
<glyph unicode="" d="M0 1680h2000v-1400h-2000v1400zM1900 1280v200h-1800v-200h1800zM1900 780v400h-1000v-400h1000zM800 880v200h-700v-200h700zM1900 480v200h-1800v-200h1800z" />
|
57
|
+
<glyph unicode="" d="M0 1680h2000v-1400h-2000v1400zM1500 780v400h-1000v-400h1000z" />
|
58
|
+
<glyph unicode="" d="M800 1400l600 -403l-600 -397v800z" />
|
59
|
+
<glyph unicode="" d="M1500 1200l-403 -600l-397 600h800z" />
|
60
|
+
<glyph unicode="" d="M1300 600l-600 403l600 397v-800z" />
|
61
|
+
<glyph unicode="" d="M700 700l403 600l397 -600h-800z" />
|
62
|
+
<glyph unicode="" d="M700 700l403 600l397 -600h-800z" />
|
63
|
+
<glyph unicode="" d="M1500 1600h300v-1400h-1600v1400h300v100q0 62 44 106t106 44t106 -44t44 -106v-100h400v100q0 62 44 106t106 44t106 -44t44 -106v-100zM600 1700v-250q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v250q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5z M1300 1700v-250q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v250q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5zM1700 300v900h-1400v-900h1400zM700 400v700h-200v-700h200zM1100 400v700h-200v-700h200zM1500 400v700h-200v-700h200z" />
|
64
|
+
<glyph unicode="" d="M1439 1450l134 -94l-537 -745h-134l-302 401l134 125l235 -187z" />
|
65
|
+
<glyph unicode="" d="M1000 1784q160 0 305 -62t250 -167t167 -250t62 -305t-62 -305t-167 -250t-250 -167t-305 -62t-305 62t-250 167t-167 250t-62 305q0 213 106 393.5t286.5 285.5t391.5 105zM1200 612v776l-582 -385z" />
|
66
|
+
<glyph unicode="" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1500 700l-300 300l300 300l-200 200l-300 -300l-300 300l-200 -200 l300 -300l-300 -300l200 -200l300 300l300 -300z" />
|
67
|
+
<glyph unicode="" d="M1000 1900l-300 -600l-600 -75l413 -462l-113 -663l600 300l600 -300l-112 663l412 462l-600 75zM1000 1676l234 -469l465 -58l-318 -356l87 -515l-468 234l-468 -234l87 515l-318 356l465 58z" />
|
68
|
+
<glyph unicode="" d="M1000 1900l300 -600l600 -75l-412 -462l112 -663l-600 300l-600 -300l113 663l-413 462l600 75z" />
|
69
|
+
<glyph unicode="" d="M1100 1300h-1000l500 -700zM900 600h1000l-500 700z" />
|
70
|
+
<glyph unicode="" d="M1476 1900q134 0 229 -95.5t95 -229.5t-95 -229t-229 -95q-33 0 -70 8l-106 -106v-1053h-1100v1500h954q9 145 99 222.5t223 77.5zM1476 1351q93 0 158.5 66t65.5 158q0 93 -65.5 159t-158.5 66t-158.5 -66t-65.5 -159q0 -54 27 -103l-322 -322q-35 -35 -101.5 -133 t-48.5 -116q3 -4 10 -4q32 0 120.5 61.5t118.5 91.5l324 324q48 -23 96 -23z" />
|
71
|
+
<glyph unicode="" d="M1555 630l-219 -206l-342 365l-364 -343l-206 218l364 343l-342 364l218 206l343 -364l364 342l205 -218l-364 -343z" />
|
72
|
+
<glyph unicode="" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1000 500q136 0 251 67t182 182t67 251t-67 251t-182 182t-251 67 t-251 -67t-182 -182t-67 -251t67 -251t182 -182t251 -67z" />
|
73
|
+
<glyph unicode="" d="M1400 1100h100q41 0 70.5 -29.5t29.5 -70.5v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v700q0 41 29.5 70.5t70.5 29.5h100v300q0 166 117 283t283 117t283 -117t117 -283v-300zM1200 1100v300q0 82 -59 141t-141 59t-141 -59t-59 -141v-300 h400zM1100 400l-36 215q39 18 62.5 54.5t23.5 80.5q0 62 -44 106t-106 44t-106 -44t-44 -106q0 -44 23.5 -80.5t62.5 -54.5l-36 -215h200z" />
|
74
|
+
<glyph unicode="" d="M1600 1600h196q43 0 73.5 -30.5t30.5 -73.5v-1292q0 -43 -30.5 -73.5t-73.5 -30.5h-1292q-43 0 -73.5 30.5t-30.5 73.5v196h-196q-43 0 -73.5 30.5t-30.5 73.5v1292q0 43 30.5 73.5t73.5 30.5h1292q43 0 73.5 -30.5t30.5 -73.5v-196zM300 600h1100v1100h-1100v-1100z M800 1450q0 62 -44 106t-106 44t-106 -44t-44 -106t44 -106t106 -44t106 44t44 106zM1000 1000q2 10 6 28t18.5 70t30.5 99.5t43 105t55.5 99t67 70t79.5 28.5v-800h-900v600q56 0 97 -31t60 -75t30 -88t12 -75l1 -31q1 4 2.5 11.5t8 28t15.5 39.5t25.5 42t36 39.5t49 28 t63.5 11.5q47 0 84.5 -20.5t58 -50t34.5 -59t19 -50.5zM1700 300v1100h-100v-896q0 -43 -30.5 -73.5t-73.5 -30.5h-896v-100h1100z" />
|
75
|
+
<glyph unicode="" d="M200 100h1600q41 0 70.5 29.5t29.5 70.5v1600q0 41 -29.5 70.5t-70.5 29.5h-1600q-41 0 -70.5 -29.5t-29.5 -70.5v-1600q0 -41 29.5 -70.5t70.5 -29.5zM400 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1700 1700v-200h-1100v200h1100zM400 1300q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 1300v-200h-1100v200h1100zM400 900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5 t29.5 70.5t70.5 29.5zM1700 900v-200h-1100v200h1100zM400 500q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 500v-200h-1100v200h1100z" />
|
76
|
+
<glyph unicode="" d="M1900 200v1600q0 41 -29.5 70.5t-70.5 29.5h-1600q-41 0 -70.5 -29.5t-29.5 -70.5v-1600q0 -41 29.5 -70.5t70.5 -29.5h1600q41 0 70.5 29.5t29.5 70.5zM400 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1700 1700v-600h-1100v600h1100zM400 900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1700 900v-600h-1100v600h1100z" />
|
77
|
+
<glyph unicode="" d="M1900 800v-300h-400v-400h-300v400h-800v800h-400v300h400v400h300v-400h700l300 300l100 -100l-300 -300v-700h400zM1100 1300h-400v-400zM800 800h400v400z" />
|
78
|
+
<glyph unicode="" d="M700 1500h-195q0 137 71.5 213.5t223.5 76.5v210q-232 0 -368 -139.5t-136 -360.5h-178l262 -339zM2000 1900v-1400h-500v-500h-1400v1000h900v900h1000zM1800 1700h-600v-700h300v-300h300v1000zM1300 800h-1000v-600h1000v600z" />
|
79
|
+
<glyph unicode="" d="M1595 1500h-195l320 -339l262 339h-178q0 221 -136 360.5t-368 139.5v-210q152 0 223.5 -76.5t71.5 -213.5zM100 1900h1000v-900h900v-1000h-1400v500h-500v1400zM300 1700v-1000h300v300h300v700h-600zM800 800v-600h1000v600h-1000z" />
|
80
|
+
<glyph unicode="" d="M2000 1100v-200h-300v-800h-1400v800h-300v200h300v800h1400v-800h300zM650 1300h700l-350 400zM1700 1050h-1400v-100h1400v100zM1350 700h-700l350 -400z" />
|
81
|
+
<glyph unicode="" d="M1900 1700v-1400h-800v-300h-200v300h-800v1400h800v300h200v-300h800zM1050 300v1400h-100v-1400h100zM700 1350l-400 -350l400 -350v700zM1700 1000l-400 350v-700z" />
|
82
|
+
<glyph unicode="" d="M1723 990q79 -186 79 -390t-79 -390l-278 117q55 132 55 273q0 142 -55 272q-52 125 -150 223q-97 97 -222 150q-132 55 -273 55v-300l-600 450l600 450v-298q204 0 390 -79q182 -77 318 -215q138 -136 215 -318z" />
|
83
|
+
<glyph unicode="" d="M277 990q77 182 215 318q136 138 318 215q186 79 390 79v298l600 -450l-600 -450v300q-141 0 -273 -55q-124 -53 -222 -150q-98 -98 -150 -223q-55 -130 -55 -272q0 -141 55 -273l-278 -117q-79 186 -79 390t79 390z" />
|
84
|
+
<glyph unicode="" d="M1400 1400q0 -138 -84.5 -245t-215.5 -141v-614q0 -44 -50 -94t-100 -78l-50 -28v814q-131 34 -215.5 141t-84.5 245q0 166 117 283t283 117t283 -117t117 -283zM800 1500q0 -41 29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5t-70.5 -29.5 t-29.5 -70.5z" />
|
85
|
+
<glyph unicode="" d="M600 700h900q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v1000h-200q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-200h1300l-400 -700h-900v-100zM550 400q62 0 106 -44t44 -106 t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1450 400q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
|
86
|
+
<glyph unicode="" d="M200 1800h1600q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-1600q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1700 400v900h-1400v-900h1400zM400 1200v-100h300v100h-300zM800 1200v-300h800v300h-800zM400 800v-100h300v100 h-300zM800 800v-300h800v300h-800z" />
|
87
|
+
<glyph unicode="" d="M1485 997q133 -14 224 -113t91 -234q0 -145 -102.5 -247.5t-247.5 -102.5h-1000q-145 0 -247.5 102.5t-102.5 247.5q0 133 88 231t218 115q-6 26 -6 54q0 104 73 177t177 73q49 0 95 -19q50 99 145.5 159t209.5 60q166 0 283 -117t117 -283q0 -48 -15 -103z" />
|
88
|
+
<glyph unicode="" d="M1000 1491q294 0 536 -151t364 -399q-122 -248 -364 -399t-536 -151t-536 151t-364 399q122 248 364 399t536 151zM1235 1181q0 44 -26 78t-66 46q-17 2 -49 4q-49 -4 -83 -40.5t-34 -87.5q0 -53 38 -91t91 -38q54 0 91.5 38t37.5 91zM1000 511q244 0 449.5 121 t310.5 309q-69 123 -189 208.5t-276 126.5q109 -117 109 -276q0 -167 -118.5 -285.5t-285.5 -118.5t-285.5 118.5t-118.5 285.5q0 159 109 276q-156 -41 -276 -126.5t-189 -208.5q105 -188 310.5 -309t449.5 -121z" />
|
89
|
+
<glyph unicode="" d="M1800 300v1400q0 41 -29.5 70.5t-70.5 29.5h-1400q-41 0 -70.5 -29.5t-29.5 -70.5v-1400q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1700 300h-1400v1400h1400v-1400zM475 1600h1050q31 0 53 -22t22 -53v-125h-100v-300h100v-200h-100v-300h100v-125 q0 -31 -22 -53t-53 -22h-1050q-31 0 -53 22t-22 53v1050q0 31 22 53t53 22zM1300 1000q0 166 -117 283t-283 117t-283 -117t-117 -283t117 -283t283 -117t283 117t117 283zM900 1300l77 -115q55 -24 89 -74t34 -111q0 -82 -59 -141t-141 -59t-141 59t-59 141q0 61 34 111 t89 74z" />
|
90
|
+
<glyph unicode="" d="M1214 1582q139 -139 158 -334.5t-86 -354.5q3 -3 15.5 -14t20.5 -17q34 -27 81 -59q62 -43 66 -47q61 -45 94 -78q49 -49 84 -100q36 -50 59 -104q22 -55 18 -100q-3 -48 -36 -81t-81 -36q-49 -3 -99 19q-52 21 -104 59q-51 35 -100 84q-33 33 -77 93q-2 3 -47 66 q-32 46 -56 78q-24 30 -44 50q-154 -83 -334 -57t-310 155q-160 161 -160 389.5t160 388.5q106 106 247.5 143.5t283 0t247.5 -143.5zM1073 946q102 103 102 247.5t-102 247.5q-103 103 -248 103t-247 -103q-103 -103 -103 -247.5t103 -247.5q102 -103 247 -103t248 103z " />
|
91
|
+
<glyph unicode="" d="M900 1100v600h-600v-600h600zM1700 1100v600h-600v-600h600zM900 300v600h-600v-600h600zM1700 300v600h-600v-600h600z" />
|
92
|
+
<glyph unicode="" d="M500 600v800h1000v-800h-1000zM200 700v600h200v-600h-200zM600 1300v-600h800v600h-800zM1600 1300h200v-600h-200v600zM1300 1100v100h-600v-100h600zM1300 800v200h-600v-200h600z" />
|
93
|
+
<glyph unicode="" d="M1200 1600h300q41 0 70.5 -29.5t29.5 -70.5v-100h-1300v100q0 41 29.5 70.5t70.5 29.5h300q17 86 88.5 143t161.5 57t161.5 -57t88.5 -143zM800 1600h300q-16 43 -58.5 71.5t-91.5 28.5t-91.5 -28.5t-58.5 -71.5zM400 1300h1100v-1000q0 -41 -29.5 -70.5t-70.5 -29.5 h-900q-41 0 -70.5 29.5t-29.5 70.5v1000zM700 400v700h-100v-700h100zM1000 400v700h-100v-700h100zM1300 400v700h-100v-700h100z" />
|
94
|
+
<glyph unicode="" d="M1800 200v1600h-1600v-1600h1600zM1600 1500h-1200v100h1200v-100zM700 1300v-300h300q0 -124 -88 -212t-212 -88t-212 88t-88 212t88 212t212 88zM800 1100v200q82 0 141 -59t59 -141h-200zM1600 1200h-400v100h400v-100zM1600 900h-400v200h400v-200zM1600 700h-400 v100h400v-100zM1600 400h-1200v100h1200v-100z" />
|
95
|
+
<glyph unicode="" d="M1000 1000v700q143 0 272.5 -55.5t223 -149t149 -223t55.5 -272.5h-700zM900 1600v-700h700q0 -143 -55.5 -272.5t-149 -223t-223 -149t-272.5 -55.5t-272.5 55.5t-223 149t-149 223t-55.5 272.5t55.5 272.5t149 223t223 149t272.5 55.5z" />
|
96
|
+
<glyph unicode="" d="M1800 200v1600h-400v-1600h400zM1200 200v1100h-400v-1100h400zM600 200v800h-400v-800h400z" />
|
97
|
+
<glyph unicode="" d="M600 1600v-1300h454q207 0 326 100q120 99 120 277q0 126 -51 201q-52 76 -167 103v9q85 15 136 90t51 191q0 172 -117 250q-115 79 -374 79h-378zM857 1085v289h136q109 0 161 -32q51 -33 51 -107q0 -80 -47 -115t-151 -35h-150zM857 866h160q216 0 216 -161 q0 -91 -51 -134q-50 -43 -157 -43h-168v338z" />
|
98
|
+
<glyph unicode="" d="M1478 1400h-213l-280 -900h212l-62 -200h-675l62 200h214l280 900h-213l62 200h675z" />
|
99
|
+
<glyph unicode="" d="M550 1300q-62 0 -106 44t-44 106t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 1500h900v-100h-900v100zM550 800q-62 0 -106 44t-44 106t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 1000h900v-100h-900v100zM550 300q-62 0 -106 44t-44 106 t44 106t106 44t106 -44t44 -106t-44 -106t-106 -44zM800 500h900v-100h-900v100z" />
|
100
|
+
<glyph unicode="" d="M600 1300v400h-69l-129 -103l40 -51l46 37q12 10 30 28l-2 -42v-269h84zM800 1500h900v-100h-900v100zM677 805v70h-172v4l51 48q56 52 70 71q21 26 30 49q10 23 10 51q0 33 -16 56q-14 23 -44 37t-65 14q-29 0 -51 -6q-17 -3 -42 -15q-21 -12 -48 -35l45 -54 q24 19 45 30q21 10 45 10q23 0 35 -11q13 -12 13 -36q0 -15 -6 -30q-7 -16 -19 -33q-11 -13 -58 -62l-99 -100v-58h276zM800 1000h900v-100h-900v100zM671 605q0 46 -37 71q-37 26 -100 26q-78 0 -133 -40l40 -60q27 18 46 23q20 7 41 7q58 0 58 -46q0 -31 -22 -43t-70 -12 h-31v-66h31q51 0 75 -12q23 -12 23 -41q0 -32 -20 -47q-21 -15 -63 -15q-27 0 -57 8q-25 7 -52 20v-74q50 -22 118 -22q80 0 122 33q43 33 43 92q0 40 -26 64q-25 24 -74 30v2q40 9 65 37q23 28 23 65zM800 500h900v-100h-900v100z" />
|
101
|
+
<glyph unicode="" d="M949 678q0 113 -61 190q-43 53 -117 69.5t-136 2.5q-21 122 66.5 259t225.5 206l-139 195q-106 -51 -199.5 -129t-167.5 -179.5t-110 -231t-19 -265.5q22 -180 119.5 -287.5t242.5 -107.5q128 0 212 75q83 74 83 203zM1754 678q0 113 -61 190q-43 54 -117 70t-136 2 q-21 122 66.5 259t225.5 206l-139 195q-106 -51 -199.5 -129t-167 -179.5t-109.5 -231t-19 -265.5q22 -180 119 -287.5t242 -107.5q128 0 212 75q83 74 83 203z" />
|
102
|
+
<glyph unicode="" d="M1200 1500v200h-900v-200h900zM1700 1100v200h-1400v-200h1400zM1200 700v200h-900v-200h900zM1700 300v200h-1400v-200h1400z" />
|
103
|
+
<glyph unicode="" d="M1400 1500v200h-800v-200h800zM1700 1100v200h-1400v-200h1400zM1400 700v200h-800v-200h800zM1700 300v200h-1400v-200h1400z" />
|
104
|
+
<glyph unicode="" d="M1700 1500v200h-900v-200h900zM1700 1100v200h-1400v-200h1400zM1700 700v200h-900v-200h900zM1700 300v200h-1400v-200h1400z" />
|
105
|
+
<glyph unicode="" d="M1700 1300v400h-1400v-400h1400zM600 900v200h-300v-200h300zM1200 900v200h-400v-200h400zM1700 900v200h-300v-200h300zM1700 300v400h-1400v-400h1400z" />
|
106
|
+
<glyph unicode="" d="M1584 1724q36 0 71 -11q26 -8 64 -25l35 81q-78 39 -169 39q-86 0 -152 -37q-65 -37 -99 -108q-34 -68 -34 -163q0 -149 70 -228t202 -79q88 0 160 26v84q-32 -10 -74 -19q-38 -8 -74 -8q-89 0 -134 57q-47 54 -47 166q0 105 48 165q49 60 133 60zM650 1200h104l-224 600 h-106l-224 -600h103l58 166h229zM800 1800v-600h217q101 0 157 46q56 44 56 126q0 60 -30 95q-28 35 -93 47v4q50 9 78 44q28 37 28 88q0 78 -56 114q-54 36 -179 36h-178zM898 1552v166h85q68 0 97 -19q31 -18 31 -61q0 -46 -29 -66q-28 -20 -89 -20h-95zM564 1450h-174 l54 156q23 65 32 110l15 -52q8 -26 17 -51zM898 1473h99q64 0 98 -23q32 -23 32 -69q0 -51 -32 -75q-31 -24 -93 -24h-104v191zM400 700l500 -500l900 800l-100 100l-800 -600l-400 300z" />
|
107
|
+
<glyph unicode="" d="M600 1700l-125 -125l225 -375l-375 225l-125 -125v400h400zM1400 1700h400v-400l-125 125l-375 -225l225 375zM700 800v400h600v-400h-600zM200 700l125 -125l375 225l-225 -375l125 -125h-400v400zM1400 300l125 125l-225 375l375 -225l125 125v-400h-400z" />
|
108
|
+
<glyph unicode="" d="M1900 1800v-600h-1800v600h1800zM1800 1300v400h-1600v-400h1600zM500 1600v-200h-200v200h200zM800 1600v-200h-200v200h200zM1100 1600v-200h-200v200h200zM1400 1600v-200h-200v200h200zM1700 1600v-200h-200v200h200zM1900 1100v-900h-1800v900h1800zM1800 300v700 h-1600v-700h1600zM500 900v-200h-200v200h200zM800 900v-200h-200v200h200zM1100 900v-200h-200v200h200zM1700 900v-200h-500v200h500zM1100 600v-200h-800v200h800zM1400 600v-200h-200v200h200zM1700 600v-200h-200v200h200z" />
|
109
|
+
<glyph unicode="" d="M1400 1500h-200v-571q0 -143 -70 -220.5t-175 -77.5q-106 0 -180.5 78t-74.5 218v573h-200v-587q0 -61 12.5 -120.5t45 -121t82 -108t129 -75.5t179.5 -29t180.5 28.5t130 74t82.5 106.5t46 120.5t13 120.5v591zM1400 200v200h-900v-200h900z" />
|
110
|
+
<glyph unicode="" d="M200 1700h1600v-200h-1600v200zM200 1300h1600v-200h-1600v200zM200 900h1600v-200h-1600v200zM200 500h1600v-200h-1600v200z" />
|
111
|
+
<glyph unicode="" d="M1323 500h190l-413 1100h-200l-400 -1100h188l107 300h418zM1170 954h-319l149 486z" />
|
112
|
+
<glyph unicode="" d="M1238 1800l262 -300v-100h-1000v100l264 300h474zM1000 1500q41 0 70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM1800 300v1200q0 41 -29.5 70.5t-70.5 29.5h-154l54 -63v-237h-1200v238l55 62h-155q-41 0 -70.5 -29.5 t-29.5 -70.5v-1200q0 -41 29.5 -70.5t70.5 -29.5h1400q41 0 70.5 29.5t29.5 70.5zM1500 1100l-200 -700h-200l-100 500l-100 -500h-208l-192 700h200l100 -500l100 500h200l100 -500l100 500h200z" />
|
113
|
+
<glyph unicode="" d="M1238 1800l262 -300v-100h-1000v100l264 300h474zM1000 1500q41 0 70.5 29t29.5 71q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5q0 -42 29.5 -71t70.5 -29zM1545 1600h155q41 0 70.5 -29.5t29.5 -70.5v-1200q0 -42 -29.5 -71t-70.5 -29h-1400q-41 0 -70.5 29 t-29.5 71v1200q0 41 29.5 70.5t70.5 29.5h155l-55 -63v-237h1200v237zM1400 900v200h-800v-200h300v-500h200v500h300z" />
|
114
|
+
<glyph unicode="" d="M1429 1541l110 -111q61 -60 61 -147v-212q0 -87 -61 -147l-663 -663q-60 -61 -147 -61t-147 61l-111 110l-110 111q-61 60 -61 147v212q0 87 61 148l663 662q60 61 147 61q86 0 147 -61zM808 571l642 642q29 29 29 71t-29 72l-214 214q-29 29 -72 29q-42 0 -71 -29 l-642 -642q-29 -30 -29 -72t29 -71l214 -214q29 -29 71.5 -29t71.5 29z" />
|
115
|
+
<glyph unicode="" d="M1600 1800h-300v-100h-600v100h-300v-1500h300v100h600v-100h300v1500zM600 1700v-100h-100v100h100zM1500 1700v-100h-100v100h100zM1300 1600v-500h-600v500h600zM600 1500v-100h-100v100h100zM1500 1500v-100h-100v100h100zM600 1300v-100h-100v100h100zM1500 1300 v-100h-100v100h100zM600 1100v-100h-100v100h100zM1500 1100v-100h-100v100h100zM1300 1000v-500h-600v500h600zM600 900v-100h-100v100h100zM1500 900v-100h-100v100h100zM600 700v-100h-100v100h100zM1500 700v-100h-100v100h100zM600 500v-100h-100v100h100zM1500 500 v-100h-100v100h100z" />
|
116
|
+
<glyph unicode="" d="M1000 1460q190 0 291 -108q100 -108 100 -313q0 -192 -69 -327q-33 -62 -87.5 -111.5t-134.5 -100.5v-200h600v200h-369q146 101 212 234q74 153 74 335q0 267 -165 422q-166 155 -452 155q-287 0 -452 -157q-165 -156 -165 -420q0 -181 73 -333q62 -130 210 -236h-366 v-200h600v200q-84 55 -139 105t-85 112q-67 133 -67 322q0 206 100 313q99 108 291 108z" />
|
117
|
+
<glyph unicode="" d="M700 1600v100h-400v-100h400zM1700 1500v200h-900v-200h900zM700 1300h-200v200l-400 -350l400 -350v200h200v300zM1700 1200v200h-900v-200h900zM1500 900v200h-700v-200h700zM1700 600v200h-900v-200h900zM700 600v100h-400v-100h400zM1100 300v200h-300v-200h300z" />
|
118
|
+
<glyph unicode="" d="M300 1500v200h900v-200h-900zM1300 1600v100h400v-100h-400zM1300 1300h200v200l400 -350l-400 -350v200h-200v300zM300 1200v200h900v-200h-900zM500 900v200h700v-200h-700zM300 600v200h900v-200h-900zM1300 600v100h400v-100h-400zM900 300v200h300v-200h-300z" />
|
119
|
+
<glyph unicode="" d="M1700 1000q0 190 -94 351.5t-255 255t-351 93.5q-143 0 -272.5 -55.5t-223 -149t-149 -223t-55.5 -272.5t55.5 -272.5t149 -223t223 -149t272.5 -55.5q190 0 351 93.5t255 255t94 351.5zM1070 852h-156v43q0 56 24 98q22 39 88 89q61 43 81 71q20 26 20 62q0 37 -28 58 q-28 19 -79 19q-88 0 -200 -57l-64 128q131 74 277 74q120 0 192 -58q71 -58 71 -155q0 -66 -29 -111q-27 -45 -111 -106q-55 -40 -71 -63q-15 -22 -15 -57v-35zM923 578q-27 26 -27 73q0 50 26 75t77 25q47 0 75 -26q27 -26 27 -74q0 -47 -27 -72q-27 -27 -75 -27t-76 26z " />
|
120
|
+
<glyph unicode="" d="M1582 775q40 0 74 7q33 7 73 20v-84q-70 -26 -158 -26q-131 0 -201 79q-59 67 -68 179h-94q18 -32 18 -79q0 -80 -55 -126q-57 -45 -156 -45h-215v250h-141l93 -250h-103l-59 167h-228l-58 -167h-104l93 250h-93v100h131l93 249h106l92 -249h178v250h177q115 0 177 -41 q55 -36 55 -113q0 -52 -27 -87l-8 -9h129q8 62 31 110q36 71 98 106q64 37 151 37q93 0 169 -38l-35 -81q-26 13 -64 25q-35 11 -71 11q-83 0 -131 -59q-35 -44 -44 -111h293v-100h-295q9 -77 44 -119q45 -56 133 -56zM444 1104l-18 -54h103l-21 61q-2 5 -7.5 22t-9.5 29 q-12 41 -14 51q-14 -59 -33 -109zM897 1213v-163h119q39 3 64 18q28 19 28 66q0 42 -30 61q-30 18 -97 18h-84zM564 949v1h-173v-1h173zM1092 948l-3 2h-192v-168h104q60 0 92 23q31 24 31 74q0 46 -32 69z" />
|
121
|
+
<glyph unicode="" d="M1774 1774q126 -127 126 -305t-126 -305l-153 -152q-45 -46 -108 -77l-213 65l169 164l76 77l76 76q63 63 63 152t-63 152q-63 64 -152 64t-152 -64l-77 -76l-76 -76l-164 -169l-65 214q31 63 77 107l152 153q127 126 305.5 126t304.5 -126zM200 1600l800 -600l-600 800z M600 1800l400 -800l-200 800h-200zM200 1400l800 -400l-800 200v200zM936 631l64 69l74 -235l-138 -139q-127 -126 -305 -126t-305 126q-126 126 -126 305t126 305l139 138l235 -74l-69 -64l-152 -153q-64 -63 -64 -152t64 -152q63 -64 152 -64t152 64zM1800 400l-800 600 l600 -800zM1400 200l-400 800l200 -800h200zM1800 600l-800 400l800 -200v-200z" />
|
122
|
+
<glyph unicode="" d="M376 400h1248q176 219 176 500q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255t-63.5 -311q0 -281 176 -500zM1000 1600q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M600 1400q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1400 1400q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM863 845l337 455v-600q0 -82 -59 -141t-141 -59 t-141 59t-59 141q0 85 63 145zM400 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1600 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1100 700 q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5z" />
|
123
|
+
<glyph unicode="" d="M500 200v1500h-200v-1500h200zM600 800v800q83 28 189 28.5t214.5 -14t220.5 -29t239 -13.5t237 28v-800q-83 -35 -201 -39t-229.5 13t-239 32.5t-229.5 19.5t-201 -26z" />
|
124
|
+
<glyph unicode="" d="M300 1600h1400v-200h-1400v200zM300 1100h1400v-200h-1400v200zM300 600h1400v-200h-1400v200z" />
|
125
|
+
<glyph unicode="" d="M300 997l600 403v-800zM1100 1400l600 -403l-600 -397v800z" />
|
126
|
+
<glyph unicode="" d="M1000 1800q-163 0 -301 -80.5t-218.5 -218.5t-80.5 -301q0 -142 70 -266.5t183 -222.5q4 -3 23.5 -19.5t29.5 -25.5t30 -27.5t34.5 -33t33 -35.5t34.5 -42q133 -174 162 -271q29 97 162 271q16 21 34.5 42t33 35.5t34.5 33t30 27.5t29.5 25.5t23.5 19.5q113 98 183 222.5 t70 266.5q0 163 -80.5 301t-218.5 218.5t-301 80.5zM1000 1544q142 0 243 -101t101 -243t-101 -243t-243 -101t-243 101t-101 243t101 243t243 101z" />
|
127
|
+
<glyph unicode="" d="M1300 686l117 594q60 33 96.5 91.5t36.5 128.5q0 104 -73 177t-177 73t-177 -73t-73 -177q0 -70 36.5 -128.5t96.5 -91.5zM1300 1650q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1472 1170l328 133v-900l-488 -203l-612 203l-500 -200v900 l500 200l427 -141l173 -730z" />
|
128
|
+
<glyph unicode="" d="M400 500v300h-200v1000h1200v-300h200v-300h200v-1000h-1200v300h-200zM1100 1700q-82 0 -141 -59t-59 -141h400q0 83 -58.5 141.5t-141.5 58.5zM400 900v500h-100v-500h100zM1100 1200h400q0 83 -58.5 141.5t-141.5 58.5q-82 0 -141 -59t-59 -141zM600 600v500h-100 v-500h100zM1500 700q83 0 141.5 58.5t58.5 141.5q0 82 -59 141t-141 59t-141 -59t-59 -141q0 -83 58.5 -141.5t141.5 -58.5zM1700 300v200q-101 0 -185.5 16.5t-144.5 43t-115 58.5l-110 64t-115 58.5t-144.5 43t-185.5 16.5v-500h1000z" />
|
129
|
+
<glyph unicode="" d="M500 1700h1400v-1100h-200v-200h-200v-200h-1400v1100h200v200h200v200zM1800 700v900h-1200v-900h1200zM1500 1100q-82 0 -141 59t-59 141t59 141t141 59t141 -59t59 -141t-59 -141t-141 -59zM1600 500v100h-1100v800h-100v-900h1200zM700 1400l1000 -600h-1000v600z M1400 300v100h-1100v800h-100v-900h1200z" />
|
130
|
+
<glyph unicode="" d="M800 1500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5q0 -42 30.5 -71t69.5 -29h500q41 0 70.5 29.5t29.5 70.5zM1400 1000l400 400v-1000l-400 400v200zM1300 600v600q0 41 -29.5 70.5t-70.5 29.5h-800q-41 0 -70.5 -29.5t-29.5 -70.5v-600 q0 -41 29.5 -70.5t70.5 -29.5h800q41 0 70.5 29.5t29.5 70.5z" />
|
131
|
+
<glyph unicode="" d="M1200 700v600q0 82 -59 141t-141 59h-700q-82 0 -141 -59t-59 -141v-600q0 -82 59 -141t141 -59h700q82 0 141 59t59 141zM1300 950l600 -450v1000l-600 -450v-100z" />
|
132
|
+
<glyph unicode="" d="M1900 500v1000q0 82 -59 141t-141 59h-1300q-82 0 -141 -59t-59 -141v-1000q0 -82 59 -141t141 -59h1300q82 0 141 59t59 141zM800 600v800l600 -400z" />
|
133
|
+
<glyph unicode="" d="M1450 800q124 0 212 -88t88 -212t-88 -212t-212 -88t-212 88t-88 212q0 34 9 69l-438 230q-89 -99 -221 -99q-124 0 -212 88t-88 212t88 212t212 88q130 0 221 -99l438 230q-9 35 -9 69q0 124 88 212t212 88t212 -88t88 -212t-88 -212t-212 -88q-130 0 -221 99l-438 -230 q9 -35 9 -69t-9 -69l438 -230q89 99 221 99z" />
|
134
|
+
<glyph unicode="" d="M1800 1650q0 -46 -25.5 -83.5t-66.5 -54.5v-1311h-1509l422 673q-21 37 -21 76q0 62 44 106t106 44t106 -44t44 -106q0 -17 -5 -37l144 -63q45 50 111 50q22 0 51 -9l358 641q-59 44 -59 118q0 62 44 106t106 44q25 0 53 -10l5 9v-11q41 -17 66.5 -54.5t25.5 -83.5z M1608 301v1114l-329 -589q21 -37 21 -76q0 -62 -44 -106t-106 -44t-106 44t-44 106l1 7l-163 72q-40 -29 -88 -29q-24 0 -51 10l-320 -509h1229z" />
|
135
|
+
<glyph unicode="" d="M1800 200l1 1228q45 27 72 72.5t27 99.5q0 82 -59 141t-141 59t-141 -59t-59 -141q0 -59 31.5 -107.5t82.5 -72.5l-413 -658q-52 38 -116 38q-62 0 -112 -34t-73 -90l-214 153q14 34 14 71q0 83 -58.5 141.5t-141.5 58.5t-141.5 -58.5t-58.5 -141.5q0 -54 26.5 -99 t71.5 -72l-298 -529h1700zM1700 1700q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM500 1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM1085 700 q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
|
136
|
+
<glyph unicode="" d="M1622 1420q35 -52 23.5 -112.5t-63.5 -95.5t-112.5 -23.5t-95.5 63.5q-21 31 -55 67q-36 34 -67 55q-37 25 -77 41q-42 19 -84 26q-90 20 -182 1q-43 -9 -84 -27q-40 -16 -77 -41q-33 -22 -66 -55q-34 -34 -56 -67q-24 -36 -41 -76q-1 -2 -1 -4q-12 -30 -23 -72h-461v300 h266q9 16 12 20q42 62 91 111q51 51 111 91q63 43 128 70q71 30 141 43q151 32 302 0q70 -13 141 -43q65 -27 128 -70q60 -40 111 -91q49 -49 91 -111zM1250 1000q0 104 -73 177t-177 73t-177 -73t-73 -177t73 -177t177 -73t177 73t73 177zM378 580q-35 52 -23.5 113 t63.5 96t113 23t95 -64q21 -31 55 -67q36 -34 67 -55q37 -25 77 -41q36 -16 84 -26q87 -19 182 0q48 10 84 26q40 16 77 41q33 22 66 55q31 31 56 67q26 41 41 76q1 2 1 4q12 30 23 72h461v-300h-266q-2 -2 -5.5 -9t-6.5 -11q-42 -62 -91 -111q-51 -51 -111 -91 q-63 -43 -128 -70q-64 -27 -141 -43q-151 -32 -302 0q-77 16 -141 43q-65 27 -128 70q-60 40 -111 91q-49 49 -91 111z" />
|
137
|
+
<glyph unicode="" d="M1800 1200l-500 -400v299q-86 -2 -152.5 -9t-143.5 -26t-141 -50.5t-132.5 -85.5t-130.5 -128q22 269 199 421t501 173v306zM400 600h1100v200l200 160v-560h-1500v1100h943q-274 -48 -441 -200h-302v-700z" />
|
138
|
+
<glyph unicode="" d="M1894 1554q-75 -112 -183 -190q1 -15 1 -47q0 -147 -43 -294.5t-131 -282.5t-210 -239t-293 -166t-366 -62q-304 0 -563 165q48 -5 88 -5q255 0 455 157q-119 2 -212.5 73t-129.5 182q39 -7 69 -7q47 0 96 13q-127 26 -210.5 127t-83.5 233v4q80 -43 166 -46 q-75 51 -119 131.5t-44 174.5q0 100 50 184q138 -169 334.5 -270.5t421.5 -112.5q-10 45 -10 84q0 151 107.5 258.5t259.5 107.5q160 0 268 -116q126 26 233 89q-43 -132 -162 -202q107 11 211 57z" />
|
139
|
+
<glyph unicode="" d="M605 1800q-87 0 -148.5 -61.5t-61.5 -148.5v-908q0 -6 -1 -9q0 -209 117.5 -337.5t342.5 -134.5q2 0 7 -0.5t8 -0.5h521q86 0 148 62t62 149t-62 148.5t-148 61.5h-544q-30 0 -30 39v303h574q86 0 148 61.5t62 148.5t-62 149t-148 62h-574v206q0 87 -62 148.5t-149 61.5z " />
|
140
|
+
<glyph unicode="" d="M1492 200h308q0 214 -57.5 418t-161 376.5t-251 318t-323 247.5t-383 158.5t-424.5 56.5v-302q210 0 407 -64.5t356 -182t278.5 -274t185 -351t65.5 -401.5zM948 200h308q0 211 -84 403.5t-225.5 332t-337 222t-409.5 82.5v-302q150 0 286 -56t243 -160 q106 -104 162.5 -239t56.5 -283zM413 202q88 0 150.5 61t62.5 148q0 86 -62.5 147.5t-150.5 61.5t-150.5 -61.5t-62.5 -147.5q0 -87 62 -148t151 -61z" />
|
141
|
+
<glyph unicode="" d="M289 1800h1423q37 0 62.5 -25.5t25.5 -62.5v-1424q0 -36 -25.5 -62t-62.5 -26h-408v620h208l31 241h-239v154q0 59 25 88.5t95 29.5h128v216q-66 9 -186 9q-142 0 -226.5 -83.5t-84.5 -235.5v-178h-209v-241h209v-620h-766q-37 0 -63 26t-26 62v1424q0 37 26 62.5 t63 25.5z" />
|
142
|
+
<glyph unicode="" d="M846 200h293v730h245l37 284h-282v182q0 69 29.5 103.5t111.5 34.5h151v255q-95 11 -219 11q-167 0 -266.5 -98.5t-99.5 -277.5v-210h-246v-284h246v-730z" />
|
143
|
+
<glyph unicode="" d="M600 1500v200h-300v-200h300zM1800 500v1100h-900l-200 -200h-500v-900h1600zM1100 1300q124 0 212 -88t88 -212t-88 -212t-212 -88t-212 88t-88 212t88 212t212 88z" />
|
144
|
+
<glyph unicode="" d="M803 1554q-7 -40 -4.5 -85.5t20.5 -92t42 -84t61 -61t78 -23.5q50 0 94 36t68 89t35.5 113t-1.5 108q-16 72 -72.5 117.5t-123.5 45.5q-68 0 -124 -45.5t-73 -117.5zM390 1464q-13 -55 4 -123t61.5 -119t101.5 -51t101.5 51t61.5 119t4 123q-14 61 -62 100t-105 39 t-105 -39t-62 -100zM1276 1464q-13 -55 4 -123t61.5 -119t100.5 -51q57 0 101.5 51t61.5 119t4 123q-14 61 -62 100t-105 39t-104.5 -39t-61.5 -100zM1217 321l125 430q37 126 6 215t-122 138t-226 49q-207 0 -304 -109t-40 -293l126 -430q17 -53 79.5 -87t138.5 -34 q75 0 137.5 34t79.5 87zM607 1084q-107 -147 -42 -359l112 -379q-53 -31 -120 -31q-65 0 -117.5 28.5t-67.5 74.5l-107 365q-48 156 34 248t258 92q41 0 79 -6q-11 -11 -29 -33zM1442 1123q176 0 258.5 -92t33.5 -248l-107 -365q-15 -46 -67.5 -74.5t-117.5 -28.5 q-67 0 -120 31l111 377q67 215 -42 361q-13 18 -28 33q38 6 79 6z" />
|
145
|
+
<glyph unicode="" d="M1770 1368l141 -142l-347 -341l-142 142l84 82q-54 129 -151 231l-461 -659l-526 -470q-29 -29 -70.5 -29t-71.5 29l-120 121q-29 29 -29 70.5t29 70.5l1097 992q-231 145 -567 148q412 125 658 30q25 -10 50 -23.5t44.5 -25t45 -33t39.5 -32.5t40 -39t35.5 -37.5t37 -43 t33 -40t34.5 -44t32 -40.5z" />
|
146
|
+
<glyph unicode="" d="M855 1694q20 -7 21 -22t-11 -35.5t-30 -44.5t-32 -51.5t-19.5 -54t9 -54.5t52.5 -51q23 -17 61 -5t75 37t82.5 63.5t83.5 74t78 69t65 47.5q39 22 84.5 30t95 0t96 -47t77.5 -106q33 -72 41 -182t-14.5 -239.5t-70 -255.5t-135 -242t-200.5 -187q-117 -74 -246.5 -106 t-252.5 -20t-233.5 58.5t-198.5 132.5t-139 201q-29 66 -39.5 141t-2.5 147.5t30 147.5t57.5 142.5t79 131t95 113.5t106.5 91t113 62t113.5 27.5t108.5 -13.5zM976 1049q30 -68 126 -56q91 12 173 84q96 86 93 187q-1 34 -13 65q-26 65 -124 33q-92 -29 -176 -112 q-94 -94 -87 -171q2 -16 8 -30z" />
|
147
|
+
<glyph unicode="" d="M400 1400h600v200h-800v-1201h800v201h-600v800zM600 1200h600v300l600 -500l-600 -500v300h-600v400z" />
|
148
|
+
<glyph unicode="" d="M376 299h1248q176 221 176 501q0 162 -63.5 310.5t-170.5 255.5t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255.5t-63.5 -310.5q0 -280 176 -501zM900 1400q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71z M400 1200q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM852 860q37 37 200 124.5t307 156.5l144 69q-30 -64 -76.5 -160.5t-141 -275t-131.5 -215.5q-63 -63 -151 -63t-151 63q-62 62 -62 150.5t62 150.5zM300 700 q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM900 700q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71zM1500 700q0 41 29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5 q0 -42 -29.5 -71t-70.5 -29t-70.5 29t-29.5 71z" />
|
149
|
+
<glyph unicode="" d="M1700 1200h100v-1100h-1600v1100h100v200q0 136 67 251t182 182t251 67q105 0 200 -42q95 42 200 42q136 0 251 -67t182 -182t67 -251v-200zM500 1400v-200h200v200q0 164 102 300h-2q-124 0 -212 -88t-88 -212zM1500 1200v200q0 124 -88 212t-212 88h-2 q102 -136 102 -300v-200h200zM1000 1622q-100 -90 -100 -222v-200h200v200q0 132 -100 222z" />
|
150
|
+
<glyph unicode="" d="M446 1484l54 -230l-54 -229l201 -124l123 -201l230 54l230 -54l123 201l201 124l-54 229l54 230l-200 124l-124 201l-230 -55l-229 54l-125 -200zM1001 850q-167 0 -284 117t-117 284q0 165 117.5 282t283.5 117q165 0 282 -117t117 -282q0 -166 -117 -283.5t-282 -117.5 zM999 950q-124 0 -211.5 87.5t-87.5 212.5q0 124 87.5 212t211.5 88t212.5 -88t88.5 -212t-88 -212t-213 -88zM1383 840l-128 -224l-208 47l253 -583l140 220h250zM613 833l125 -225l213 51l-251 -579l-140 220h-250z" />
|
151
|
+
<glyph unicode="" d="M200 1800h700v-700h-700v700zM1100 1800v-700h700v700h-700zM550 1550l150 150h-300zM1200 1200v500h500v-500h-500zM450 1450l-150 150v-300zM800 1600l-150 -150l150 -150v300zM550 1350l-150 -150h300zM900 200v700h-700v-700h700zM1800 200h-700v700h700v-700z M800 800v-500h-500v500h500zM1450 650l150 150h-300zM1200 400l150 150l-150 150v-300zM1550 550l150 -150v300zM1450 450l-150 -150h300z" />
|
152
|
+
<glyph unicode="" d="M1500 1400v-200q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-1000q-82 0 -141 59t-59 141v700q0 82 59 141t141 59v200q0 136 67 251t182 182t251 67t251 -67t182 -182t67 -251zM800 1400v-200h400v200q0 82 -59 141t-141 59t-141 -59t-59 -141zM1080 375v217 q54 24 87 73.5t33 109.5q0 83 -59 141.5t-141 58.5t-141 -58.5t-59 -141.5q0 -60 33 -109.5t87 -73.5v-217h160z" />
|
153
|
+
<glyph unicode="" d="M1401 1600v-600h200v800h-1201v-800h201v600h800zM1201 1400v-600h300l-500 -600l-500 600h300v600h400z" />
|
154
|
+
<glyph unicode="" d="M800 600v600h-300l500 600l500 -600h-300v-600h-400zM600 400v600h-200v-800h1201v800h-201v-600h-800z" />
|
155
|
+
<glyph unicode="" d="M500 1300h1300v-1000h-1600v1300h700l200 -200h-700v-900h100v800z" />
|
156
|
+
<glyph unicode="" d="M1900 1000q0 183 -71.5 349.5t-192 287t-287 192t-349.5 71.5t-349.5 -71.5t-287 -192t-192 -287t-71.5 -349.5t71.5 -349.5t192 -287t287 -192t349.5 -71.5t349.5 71.5t287 192t192 287t71.5 349.5zM800 990q-378 39 -548 229q74 240 271.5 396t453.5 167 q-33 -55 -56 -126t-32 -149t12 -154.5t73 -127.5q-35 -5 -69 6t-58.5 30t-51 40t-45.5 36t-43 17.5t-44 -14.5q-88 -69 -42 -150q50 -88 228 -144q62 -20 134 -33q97 -17 164.5 -40.5t106.5 -49.5t60 -62.5t27 -71t5 -84.5q-6 -298 -406 -470q2 86 -11.5 153t-38 109 t-55 73.5t-63.5 52t-62.5 37t-54 36.5t-35.5 43q10 42 18.5 67.5t27.5 61.5t52 66t82 56zM1649 1422q31 -48 54.5 -97.5t38.5 -92.5t23 -89t11.5 -81t1.5 -75.5t-4.5 -66t-10 -58.5t-11.5 -46.5t-12 -37.5l-7 -24q-21 51 -52 95.5t-60.5 74.5t-57.5 58t-50.5 60t-32.5 66 q-39 137 169 314z" />
|
157
|
+
<glyph unicode="" d="M552 1800h743q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-100v-1300q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v1200q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5v-1200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v596h-43 q-123 0 -227 60.5t-164.5 164.5t-60.5 227t60.5 227t164.5 164.5t227 60.5zM1400 600l500 400l-500 400v-800z" />
|
158
|
+
<glyph unicode="" d="M1365 1712q145 -74 248 -198t149 -268.5t35 -305t-85 -305.5t-198 -247.5t-268 -149t-305 -35.5t-306 85q-138 71 -237 185t-149 255l164 103q34 -120 113.5 -218t194.5 -158q111 -57 234 -65.5t233 27t204.5 114.5t151.5 190t66 234t-27 233t-114.5 205t-189.5 152 t-234 65.5t-233 -27t-204.5 -114.5t-151.5 -190l188 -97l-495 -308l-39 582l178 -91q74 145 198.5 248t269 149t305 34.5t304.5 -84.5zM929 929q-29 29 -29 71q0 4 2 10t2 9h-1l97 481l97 -481l303 -319l-450 212l2 2q-13 7 -23 15z" />
|
159
|
+
<glyph unicode="" d="M400 1500h-322q-30 0 -51.5 -23.5t-17.5 -60.5l156 -999q185 736 221 913q8 36 36.5 53t61.5 17h516q-70 208 -77 231q-19 69 -78 69h-331q-28 0 -50.5 -17t-29.5 -47zM888 1500h-400q2 4 5 11t12.5 24t19.5 30t23.5 24t26.5 11h213q21 0 46 -25t40 -50zM267 375 q-49 -75 -126 -75h1573q40 0 67.5 22t35.5 61l168 844q5 35 -15 54t-47 19h-323v147q0 15 -19.5 34t-46.5 19h-376q-23 0 -45 -14.5t-32 -29.5l-10 -14l-71 -142h-441q-25 0 -45 -13.5t-24 -36.5q-159 -670 -172 -733q-17 -92 -51 -142zM1538 1300h-438q2 4 6.5 11t17.5 24 t25.5 30t30.5 24t33 11h229q20 0 37 -10.5t27.5 -25t18 -29t10.5 -25.5z" />
|
160
|
+
<glyph unicode="" d="M1100 1800h700v-700l-1000 -1000l-700 700zM1400 1200q82 0 141 59t59 141t-59 141t-141 59t-141 -59t-59 -141t59 -141t141 -59z" />
|
161
|
+
<glyph unicode="" d="M2000 1000q0 203 -79.5 388t-213.5 319t-319 213.5t-388 79.5t-388.5 -79.5t-319.5 -213.5t-213 -319t-79 -388q0 -163 50.5 -315.5t143 -275.5t215.5 -215.5t275.5 -143t315.5 -50.5q203 0 388 79t319 213t213.5 319.5t79.5 388.5zM778 463l-341 915l117 8q24 3 32 31 t-3 54.5t-35 25.5q-145 -11 -237 -11q-37 0 -58 1q121 186 318.5 294t428.5 108q172 0 327.5 -61t277.5 -173q-58 9 -111.5 -33.5t-53.5 -124.5q0 -18 4.5 -37.5t8.5 -32.5t16 -36.5t17 -31.5t22.5 -37t21.5 -35q55 -96 55 -246q0 -66 -35 -191t-70 -217l-35 -92l-303 837 q24 1 44.5 5t29.5 8l8 4q24 2 32 33t-3 60.5t-35 28.5q-144 -12 -238 -12q-39 0 -97 3t-97 6l-39 3q-24 1 -35 -29t-3 -61t32 -32l92 -8l126 -341zM1741 1000q12 32 17.5 47t16.5 60.5t14.5 85t3.5 102t-9 130.5q105 -193 105 -425q0 -245 -119 -453.5t-321 -324.5 q247 661 292 778zM610 191q-226 109 -362.5 328t-136.5 481q0 196 72 359q336 -921 427 -1168zM1013 854l258 -698q-133 -45 -271 -45q-121 0 -229 33q28 83 112.5 329.5t129.5 380.5z" />
|
162
|
+
<glyph unicode="" d="M1800 700h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200h-500v-200h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5 t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200h-500v-200h100q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 71.5v298q0 42 29.5 71.5t70.5 29.5h100v200q0 82 59 141t141 59h500v200h-100q-41 0 -70.5 29.5t-29.5 71.5 v298q0 42 29.5 71.5t70.5 29.5h400q41 0 70.5 -29.5t29.5 -71.5v-298q0 -42 -29.5 -71.5t-70.5 -29.5h-100v-200h500q82 0 141 -59t59 -141v-200z" />
|
163
|
+
<glyph unicode="" d="M1100 1300h-151q-46 0 -89.5 -19.5t-69.5 -50.5l-90 270h-287l-239 -700h169l74 200h283v-400h-500q-82 0 -141 59t-59 141v700q0 82 59 141t141 59h700q82 0 141 -59t59 -141v-200zM651 1100h-202l100 293zM1000 1200h700q82 0 141 -59t59 -141v-700q0 -82 -59 -141 t-141 -59h-700q-82 0 -141 59t-59 141v700q0 82 59 141t141 59zM1725 700v108h-317v217h-116v-217h-317v-108h128q9 -66 42 -136t86 -126q-64 -26 -131.5 -44t-99.5 -18l5 -26q5 -26 10.5 -62t4.5 -58q62 0 154 32.5t174 82.5q83 -50 177 -82.5t157 -32.5q-1 14 1 33.5 t5 38.5t6 35.5t6 27.5l2 11q-33 0 -103 18.5t-135 44.5q51 56 83.5 126t41.5 135h136zM1344 507q-76 70 -101 193h209q-26 -124 -100 -193l-4 -3q-3 2 -4 3z" />
|
164
|
+
<glyph unicode="" d="M1480 1812l334 -335q41 -44 40.5 -104t-37.5 -98l-986 -988l-686 -143l143 688q937 940 985 989q35 37 100 35t107 -44zM1143 1468l-688 -691l137 -137l682 697zM777 454l688 691l-132 132l-689 -689z" />
|
165
|
+
<glyph unicode="" d="M700 1480q83 0 141.5 -58.5t58.5 -141.5q0 -52 -28 -100q-72 20 -172 20q-44 0 -87 -5t-64 -10l-21 -5q-28 48 -28 100q0 83 58.5 141.5t141.5 58.5zM1300 1480q83 0 141.5 -58.5t58.5 -141.5q0 -52 -28 -100q-72 20 -172 20q-44 0 -87 -5t-64 -10l-21 -5q-28 48 -28 100 q0 83 58.5 141.5t141.5 58.5zM1000 110q279 0 506 162t317 426l-132 46q-76 -222 -266.5 -358t-424.5 -136t-424.5 136t-266.5 358l-132 -46q90 -264 317 -426t506 -162z" />
|
166
|
+
<glyph unicode="" d="M1500 1300v200h-1000v-200h1000zM1500 900v200h-1000v-200h1000zM1500 500v200h-1000v-200h1000z" />
|
167
|
+
<glyph unicode="" d="M1600 1700h200v-1600h-1300q-124 0 -212 88t-88 212v1200q0 124 88 212t212 88h900v-1400h-900q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5h1100v1400z" />
|
168
|
+
<glyph unicode="" d="M500 300h1300v-200h-1300q-124 0 -212 88t-88 212v1200q0 124 88 212t212 88h1300v-1400h-1300q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM700 650v1100q0 21 -14.5 35.5t-35.5 14.5t-35.5 -14.5t-14.5 -35.5v-1100q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5 t14.5 35.5z" />
|
169
|
+
<glyph unicode="" d="M1000 1800q12 -8 34.5 -21.5t96 -48t150.5 -61t192 -48t227 -21.5q0 -224 -38.5 -423t-100.5 -336.5t-136.5 -252.5t-149 -184.5t-136.5 -117.5t-101 -67l-38 -19q-9 4 -24.5 11.5t-63.5 38.5t-94 68.5t-109 103.5t-117.5 141.5t-109.5 185t-94 231t-63.5 282.5 t-24.5 338q112 0 225.5 20.5t195 50t147 59t98.5 50.5zM1000 1000h500q4 4 11 13t24 48t30 90t24 144t11 205q-20 4 -54.5 11.5t-126 30t-167 45t-150 54t-102.5 59.5v-700h-500q28 -112 90 -225.5t130 -195t132 -147t106 -98.5l42 -34v700z" />
|
170
|
+
<glyph unicode="" d="M1700 1300v200h-1400v-200h1400zM1700 900v200h-1400v-200h1400zM1700 500v200h-1400v-200h1400z" />
|
171
|
+
<glyph unicode="" d="M1000 1800q12 -8 34.5 -21.5t96 -48t150.5 -61t192 -48t227 -21.5q0 -224 -38.5 -423t-100.5 -336.5t-136.5 -252.5t-149 -184.5t-136.5 -117.5t-101 -67l-38 -19q-9 4 -24.5 11.5t-63.5 38.5t-94 68.5t-109 103.5t-117.5 141.5t-109.5 185t-94 231t-63.5 282.5 t-24.5 338q112 0 225.5 20.5t195 50t147 59t98.5 50.5z" />
|
172
|
+
<glyph unicode="" d="M1495 1354l-354 -354l354 -354l-141 -141l-354 353l-353 -353l-142 142l353 353l-353 353l142 142l353 -353l354 353z" />
|
173
|
+
<glyph unicode="" d="M1800 400h-1600v1200h1600v-1200zM705 1147q19 11 33 24q14 16 24 34q13 26 17 37q5 13 10 34l6 24q0 2 0.5 5t0.5 4q7 45 -4 90q-12 43 -46 72q-35 29 -86 29q-29 0 -56 -11q-26 -12 -41 -30q-17 -20 -27 -44t-12 -51q-1 -18 1 -55l2 -9q2 -11 6 -25q9 -30 10 -33 q6 -18 17 -37q13 -20 25 -33q15 -17 34 -25q19 -9 43 -9t43 9zM1700 1100v400h-500v-400h500zM662 1017l-138 88q-61 0 -114 -32q-53 -33 -81 -85q-29 -52 -29 -107v-125l20 -5q26 -8 55 -14q41 -10 80 -17q34 -7 100 -14q55 -6 107 -6q50 0 107 6q48 5 98 14q54 10 82 17 q16 3 34 8t20 5q13 4 21 6v125q0 55 -31 107q-32 53 -84 86q-53 33 -111 33zM1700 900v100h-500v-100h500zM1700 700v100h-500v-100h500zM1700 500v100h-1400v-100h1400z" />
|
174
|
+
<glyph unicode="" d="M1800 200h-1600v1600h1600v-1600zM805 1247q19 11 33 24q14 16 24 34q13 26 17 37q5 13 10 34l6 24q0 2 0.5 5t0.5 4q7 45 -4 90q-12 43 -46 72q-35 29 -86 29q-29 0 -56 -11q-26 -12 -41 -30q-17 -20 -27 -44t-12 -51q-1 -18 1 -55l2 -9q2 -11 6 -25q9 -30 10 -33 q6 -18 17 -37q13 -20 25 -33q15 -17 34 -25q19 -9 43 -9t43 9zM1600 1500v100h-500v-100h500zM1600 1300v100h-500v-100h500zM762 1117l-138 88q-61 0 -114 -32q-53 -33 -81 -85q-29 -52 -29 -107v-125l20 -5q26 -8 55 -14q41 -10 80 -17q34 -7 100 -14q56 -6 107 -6 q50 0 107 6q48 5 98 14q54 10 82 17q16 3 34 8t20 5q13 4 21 6v125q0 55 -31 107q-32 53 -84 86q-53 33 -111 33zM1600 1100v100h-300v-100h300zM1600 900v100h-300v-100h300zM1600 600v100h-1200v-100h1200zM1600 400v100h-1200v-100h1200z" />
|
175
|
+
<glyph unicode="" d="M730 1400l-3 19q-6 55 -3 108q3 56 25 104q22 50 52 86q33 39 83 60q52 23 113 23q103 0 171 -59q69 -60 91 -144q22 -85 9 -178l-3 -19q-1 -10 -11 -48q-7 -33 -20 -69q-13 -34 -34 -72q-18 -35 -47 -69q-25 -26 -67 -48q-39 -19 -86 -19q-46 0 -87 19q-42 21 -67 50 q-25 28 -49 66q-22 36 -34 73q-14 39 -21 67q-9 33 -12 50zM1650 776q50 -85 50 -214v-249q0 -4 -29 -13q-7 -2 -37 -10.5t-60 -16.5q-110 -24 -165 -34q-85 -15 -195 -27q-112 -12 -213 -12t-214 12q-90 8 -198 27q-44 8 -156 34q-43 10 -106 29l-27 11v249q0 134 46 215 q65 115 150 168q47 29 136 42t168 13l167 -167l-67 -133v-300l102 -108l98 108v300l-68 133l165 167q209 0 290 -52q96 -61 163 -172z" />
|
176
|
+
<glyph unicode="" d="M1000 1900q153 0 282.5 -75.5t205 -204.5t75.5 -282q0 -52 -21 -118t-50.5 -123.5t-59.5 -107.5t-51 -79l-21 -30q-25 -33 -42.5 -86t-17.5 -94v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-400q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 -17.5 94t-42.5 86q-8 11 -21.5 30.5 t-48.5 77t-61.5 110.5t-48.5 120.5t-22 119.5q0 153 75 282t204.5 204.5t282.5 75.5zM700 313v87h600v-87q0 -53 -16 -83t-59 -30h-25q0 -46 -27.5 -73t-74.5 -27h-200q-46 0 -72 26.5t-26 73.5h-25q-43 0 -59 30t-16 83z" />
|
177
|
+
<glyph unicode="" d="M1800 1100v-200h-1200l400 -400l-100 -200l-700 700l700 700l100 -200l-400 -400h1200z" />
|
178
|
+
<glyph unicode="" d="M1400 1500l-500 -500l500 -500l-100 -200l-700 700l700 700z" />
|
179
|
+
<glyph unicode="" d="M1100 200h-200v1200l-400 -400l-200 100l700 700l700 -700l-200 -100l-400 400v-1200z" />
|
180
|
+
<glyph unicode="" d="M1500 600l-500 500l-500 -500l-200 100l700 700l700 -700z" />
|
181
|
+
<glyph unicode="" d="M200 900v200h1200l-400 400l100 200l700 -700l-700 -700l-100 200l400 400h-1200z" />
|
182
|
+
<glyph unicode="" d="M600 500l500 500l-500 500l100 200l700 -700l-700 -700z" />
|
183
|
+
<glyph unicode="" d="M900 1800h200v-1200l400 400l200 -100l-700 -700l-700 700l200 100l400 -400v1200z" />
|
184
|
+
<glyph unicode="" d="M500 1400l500 -500l500 500l200 -100l-700 -700l-700 700z" />
|
185
|
+
<glyph unicode="" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1100 1400q0 41 -29.5 70.5t-70.5 29.5t-70.5 -29.5t-29.5 -70.5 t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5zM1100 500v600h-200v-600h200z" />
|
186
|
+
<glyph unicode="" d="M2000 1500v300h-2000v-300h2000zM2000 900v300h-2000v-300h2000zM2000 300v300h-2000v-300h2000z" />
|
187
|
+
<glyph unicode="" d="M1000 2000q163 0 315.5 -50.5t275.5 -143t215.5 -215.5t143 -275.5t50.5 -315.5t-50.5 -315.5t-143 -275.5t-215.5 -215.5t-275.5 -143t-315.5 -50.5t-315.5 50.5t-275.5 143t-215.5 215.5t-143 275.5t-50.5 315.5t50.5 315.5t143 275.5t215.5 215.5t275.5 143 t315.5 50.5zM1000 1950q-193 0 -369 -75t-303.5 -202.5t-202.5 -303.5t-75 -369t75 -369t202.5 -303.5t303.5 -202.5t369 -75t369 75t303.5 202.5t202.5 303.5t75 369t-75 369t-202.5 303.5t-303.5 202.5t-369 75zM1000 1850q173 0 330.5 -67t271.5 -181t181 -271.5 t67 -330.5t-67 -330.5t-181 -271.5t-271.5 -181t-330.5 -67t-330.5 67t-271.5 181t-181 271.5t-67 330.5t67 330.5t181 271.5t271.5 181t330.5 67zM1180 1679q-83 0 -155 -45q118 -28 195.5 -124t77.5 -221q0 -100 -55 -187q99 22 164 101.5t65 183.5q0 121 -85.5 206.5 t-206.5 85.5zM942 1579q-121 0 -206.5 -86t-85.5 -207t85.5 -206.5t206.5 -85.5t207 85.5t86 206.5q0 122 -85.5 207.5t-207.5 85.5zM1367 1078l-51 -59q66 -19 115 -63.5t72.5 -94t38 -96t16.5 -77.5l3 -30h128q0 76 -11 138.5t-29.5 104.5t-43 75t-51 51t-53 30.5 t-51 16.5t-43 5.5t-29.5 0.5zM1157 998l-212 -209l-212 209q-68 -4 -123 -23t-90.5 -48.5t-62.5 -67t-41 -78t-22 -81t-9.5 -76.5t-0.5 -63.5t3 -44.5l2 -16h1108q10 102 -4 184t-43 132.5t-67 88t-77.5 54.5t-73 27t-54.5 11z" />
|
188
|
+
<glyph unicode="" d="M1350 1300h-700q-62 0 -106 44t-44 106t44 106t106 44h159q-9 29 -9 50q0 62 44 106t106 44h100q62 0 106 -44t44 -106q0 -21 -9 -50h159q62 0 106 -44t44 -106t-44 -106t-106 -44zM400 1200h1200q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1200 q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM500 900h1000q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5zM700 600h600q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5h-109q9 -29 9 -50 q0 -62 -44 -106t-106 -44h-100q-62 0 -106 44t-44 106q0 21 9 50h-109q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z" />
|
189
|
+
<glyph unicode="" d="M1044 1834q-44 44 -106 44t-106 -44l-566 -566q-44 -44 -44 -106t44 -106q46 -44 107.5 -43.5t104.5 43.5l566 566q44 44 44 106t-44 106zM1327 1551q-44 44 -106.5 44t-105.5 -44l-566 -566q-44 -43 -44 -105.5t44 -106.5q46 -44 107.5 -43t104.5 43l566 566 q43 43 43 105.5t-43 106.5zM1433 879l418 -418q44 -44 44 -106t-44 -106t-106.5 -44t-105.5 44l-418 418l-177 -177q-44 -44 -106 -44t-106 44t-44 106.5t44 106.5l566 565q44 44 106 44t106 -44t44 -106t-44 -106zM500 500q0 45 -17 102.5t-41.5 107.5t-49 94t-41.5 70 l-17 26q-15 -31 -37 -80.5t-59.5 -157.5t-37.5 -162q0 -90 38.5 -145t95.5 -55h32q62 0 98 44.5t36 155.5z" />
|
190
|
+
<glyph unicode="" d="M1754 971q88 -88 88 -212.5t-88 -212.5t-212.5 -88t-212.5 88l-34 52q0 -66 -9.5 -124t-22.5 -99.5t-36.5 -79.5t-42.5 -60.5t-49.5 -47t-48 -35.5t-47.5 -28.5t-39 -23.5q-11 8 -49.5 32t-64.5 42t-63.5 58.5t-60.5 85.5t-40 118.5t-17 161.5l-34 -52 q-88 -88 -212.5 -88t-212.5 88t-88 212.5t88 212.5q102 67 210 130q-136 184 -136 411q0 47 8 100q18 -131 84 -245.5t168 -196.5q53 28 126.5 57t110.5 35h-17q-82 0 -141 59t-59 141t59 141t141 59v50q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-50h200v50 q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5v-50q82 0 141 -59t59 -141t-59 -141t-141 -59h-17q36 -6 112.5 -36.5t125.5 -55.5q102 82 168 196.5t84 245.5q8 -53 8 -100q0 -227 -136 -411q48 -28 100 -60.5t81 -50.5zM850 1362q38 0 69 30t31 70q0 41 -29.5 70.5 t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5zM1150 1562q-41 0 -70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5t70.5 29.5t29.5 70.5t-29.5 70.5t-70.5 29.5zM920 989q-19 -17 -19 -43q2 -19 16 -32.5t33 -13.5h100q19 0 33 13.5t16 32.5q0 21 -19 43 q-15 11 -30 11h-100q-15 0 -30 -11zM1200 750q0 23 -19 38q-15 12 -31 12h-300q-16 0 -31 -12q-19 -17 -19 -38t14.5 -35.5t35.5 -14.5h300q21 0 35.5 14.5t14.5 35.5zM850 500h300q21 0 35.5 14.5t14.5 35.5t-14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5 t14.5 -35.5t35.5 -14.5zM950 300h100q21 0 35.5 14.5t14.5 35.5t-14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5t14.5 -35.5t35.5 -14.5z" />
|
191
|
+
<glyph unicode="" d="M800 1900v-700h200v200q0 115 92 207.5t208 92.5v-86q91 86 200 86v-300h100q82 0 141 -59t59 -141t-59 -141t-141 -59h-100v-100v-1v-499q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v218q-51 -18 -100 -18v-200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5 t-29.5 70.5v200h-200v-200q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v200q-49 0 -100 18v-218q0 -41 -29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5v400h-100v100q0 124 88 212t212 88h200v700h100zM1300 1200q41 0 70.5 29.5t29.5 70.5t-29.5 70.5 t-70.5 29.5t-70.5 -29.5t-29.5 -70.5t29.5 -70.5t70.5 -29.5z" />
|
192
|
+
<glyph unicode="" d="M900 1700q0 92 -100 200q-40 -40 -70 -98t-30 -102q0 -37 30 -68.5t70 -31.5q41 0 70.5 30t29.5 70zM1300 1700q0 92 -100 200q-40 -40 -70 -98t-30 -102q0 -37 30 -68.5t70 -31.5q41 0 70.5 30t29.5 70zM900 1100v350q0 41 -29.5 70.5t-70.5 29.5q-42 0 -71 -30.5 t-29 -69.5v-350q0 -41 29.5 -70.5t70.5 -29.5q42 0 71 30.5t29 69.5zM1300 1100v350q0 41 -29.5 70.5t-70.5 29.5q-42 0 -71 -30.5t-29 -69.5v-350q0 -41 29.5 -70.5t70.5 -29.5q42 0 71 30.5t29 69.5zM1700 1000q0 109 -95 201t-255 145v-246q0 -62 -44 -106t-106 -44 t-106 44t-44 106v299q-8 0 -25 0.5t-25 0.5t-25 -0.5t-25 -0.5v-299q0 -62 -44 -106t-106 -44t-106 44t-44 106v246q-160 -53 -255 -145t-95 -201q0 -110 78.5 -197.5t242.5 -139.5q32 -10 108.5 -42t142.5 -51t128 -19t128 19t142.5 51.5t108.5 42.5q163 51 242 138.5 t79 197.5zM1000 457q63 0 131.5 19.5t144 50.5t112.5 41q68 19 118.5 43.5t86.5 57.5t57 59.5t50 71.5v-300q0 -109 -93.5 -201t-255 -145.5t-351.5 -53.5t-351.5 53.5t-255 145.5t-93.5 201v300q37 -58 70 -94.5t95.5 -75t149.5 -63.5q35 -10 111.5 -41t143.5 -50t130 -19z " />
|
193
|
+
<glyph unicode="" d="M875 1423q0 39 -18 92t-43.5 101t-51.5 90.5t-44 67.5l-18 26q-7 -10 -19 -27t-42 -65.5t-53 -93t-42 -98.5t-19 -93q0 -98 43 -135.5t132 -37.5t132 37.5t43 135.5zM1475 1423q0 39 -18 92t-43.5 101t-51.5 90.5t-44 67.5l-18 26q-7 -10 -19 -27t-42 -65.5t-53 -93 t-42 -98.5t-19 -93q0 -98 43 -135.5t132 -37.5t132 37.5t43 135.5zM900 300v800q0 41 -29.5 70.5t-70.5 29.5h-200q-41 0 -70.5 -29.5t-29.5 -70.5v-800q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM1500 300v800q0 41 -29.5 70.5t-70.5 29.5h-200 q-41 0 -70.5 -29.5t-29.5 -70.5v-800q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM600 900l200 100v-200l-200 -100v200zM1200 900l200 100v-200l-200 -100v200zM600 600l200 100v-200l-200 -100v200zM1200 600l200 100v-200l-200 -100v200z" />
|
194
|
+
<glyph unicode="" d="M1098 1322l452 -822q-48 -96 -142 -166t-199 -102t-209 -32t-209 32t-199 102t-142 166l450 818q-57 93 -168 146t-261 57l246 292q199 -141 297 -331q51 80 109.5 131t160.5 81l183 -286q-192 46 -369 -86zM817 960l-93 -169q71 -16 154 -16q199 0 355 95l-101 182 q-136 -83 -315 -92zM903 422q147 0 272 50t202 136l-98 176q-77 -86 -202 -136.5t-272 -50.5q-87 0 -176 21l-63 -115q152 -81 337 -81z" />
|
195
|
+
<glyph unicode="" d="M1545 1375q89 -46 127.5 -130t22.5 -181t-80 -187q-59 -83 -159.5 -134.5t-186.5 -43.5l-264 -499h-105l-265 499q-85 -12 -189.5 40t-165.5 139q-64 90 -80 187t23 181t128 129q68 34 143 31q-2 -62 7 -121q20 -129 99.5 -252t186.5 -185q-30 -86 -88 -125l201 -381v566 q-102 28 -191.5 144t-108.5 248q-20 132 16 246t124 184t210 70t210 -70t124 -184t16 -246q-19 -132 -108.5 -248t-191.5 -144v-577l207 384q-63 33 -99 130q109 61 190 185.5t101 254.5q9 59 7 122q73 2 139 -32z" />
|
196
|
+
<glyph unicode="" d="M1000 1800q84 0 197.5 -51.5t215 -125t191 -147t142.5 -124.5l54 -52v-1100h-1600v1100q20 20 55.5 54t138 120t196.5 152t210 120t200 54zM1700 328l-373 292l373 280l-43 37l-226 -130l24 431l-877 52l-46 -454l-199 95l-33 -31l373 -280l-344 -285l40 -43l631 408 l653 -415z" />
|
197
|
+
<glyph unicode="" d="M1000 1900l-300 -600l-600 -75l413 -462l-113 -663l600 300l600 -300l-112 663l412 462l-600 75zM1000 1676l234 -469l465 -58l-318 -356l87 -515l-468 234v1164z" />
|
198
|
+
<glyph unicode="" d="M400 1100h1200v-200h-1200v200z" />
|
199
|
+
<glyph unicode="" d="M925 836q88 -62 123 -128t35 -165q0 -62 -30 -119.5t-84.5 -104t-140 -74t-189.5 -27.5q-126 0 -231 31.5t-168.5 93t-63.5 140.5q0 128 130 226.5t314 98.5q14 0 40 0.5t38 0.5q-61 61 -61 126q0 43 23 86q-8 -1 -22 0.5t-20 1.5q-151 0 -247.5 97t-96.5 237 q0 87 55.5 166.5t147 128t190.5 48.5h452l-101 -100h-144q83 -87 103 -116q43 -63 43 -144q0 -135 -128 -234q-53 -42 -69.5 -67t-16.5 -62q0 -28 39.5 -70.5t79.5 -70.5zM683 1063q88 -3 139 76t36 194q-15 114 -87 195t-160 84q-88 2 -139 -75t-36 -191q15 -115 87.5 -198 t159.5 -85zM1700 1000v-100h-200v-200h-100v200h-200v100h200v200h100v-200h200zM638 290q172 0 250 63.5t78 170.5q0 22 -5 47q-4 16 -10.5 29.5t-18 27.5t-20.5 23.5t-28 24t-29.5 21.5t-36.5 25t-38 26q-56 18 -112 18q-131 2 -230 -68.5t-99 -166.5q0 -100 85.5 -170.5 t213.5 -70.5z" />
|
200
|
+
<glyph unicode="" d="M1020 1672q173 0 323.5 -79t247.5 -216t121 -305h208l-350 -400l-350 400h232q-34 149 -154.5 247t-277.5 98q-106 0 -199 -48t-155 -130l-171 195q98 112 234.5 175t290.5 63zM980 328q-130 0 -249.5 46.5t-210.5 126.5t-152.5 190.5t-79.5 236.5h-208l350 400 q59 -67 175.5 -200t174.5 -200h-232q34 -149 154.5 -247t277.5 -98q106 0 199 48t155 130l171 -195q-98 -112 -234 -175t-291 -63z" />
|
201
|
+
<glyph unicode="" d="M1389 1661l271 -272q34 -35 33.5 -84t-30.5 -80l-801 -802l-556 -116l116 558q760 763 799 803q29 30 81.5 28.5t86.5 -35.5zM1116 1382l-559 -561l111 -111l554 565zM819 559l558 560l-107 108l-559 -560z" />
|
202
|
+
<glyph unicode="" d="M387 1600h1325q188 0 188 -179v-842q0 -179 -188 -179h-1325q-188 0 -188 179v842q0 179 188 179zM1049 740l674 553q21 17 27 45.5t-14 61.5q-21 30 -56.5 33.5t-60.5 -16.5l-570 -386l-569 386q-25 20 -60.5 16.5t-56.5 -33.5q-20 -33 -14 -61.5t27 -45.5z" />
|
203
|
+
<glyph unicode="" d="M1900 550v900q0 62 -44 106t-106 44h-1401q-62 0 -106 -44t-44 -106v-900q0 -62 44 -106t106 -44h1401q62 0 106 44t44 106zM1769 1461q15 -15 17.5 -32.5t-4 -29.5t-16.5 -22l-406 -372l390 -406q26 -30 6 -51q-9 -11 -28 -12t-28 7l-437 373l-214 -195l-213 195 l-437 -373q-9 -8 -28 -7t-28 12q-20 21 6 51l390 406l-406 372q-10 10 -16.5 22t-4 29.5t17.5 32.5q40 40 95 -7l624 -504l625 504q55 47 95 7z" />
|
204
|
+
<glyph unicode="" d="M1801 882v867q0 89 -59 129.5t-141 7.5l-1201 -477q-83 -33 -141.5 -120t-58.5 -177v-866q0 -90 58.5 -130t141.5 -7l1201 477q83 33 141.5 119.5t58.5 176.5zM1658 1628l-604 -933l-665 460q-7 5 -13 12.5t-10.5 22t6.5 29.5q9 16 25.5 21.5t28.5 2.5l11 -3l630 -232 q483 634 511 670q12 15 30 20.5t43 -7.5q33 -23 7 -63z" />
|
205
|
+
<glyph unicode="" d="M1800 1000q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM723 1643l149 -373q-97 -45 -142 -142l-373 149q53 123 148 218 t218 148zM1643 1277l-373 -149q-45 97 -142 142l149 373q123 -53 218 -148t148 -218zM1000 800q-82 0 -141 59t-59 141t59 141t141 59t141 -59t59 -141t-59 -141t-141 -59zM357 723l373 149q45 -97 142 -142l-149 -373q-123 53 -218 148t-148 218zM1277 357l-149 373 q97 45 142 142l373 -149q-53 -123 -148 -218t-218 -148z" />
|
206
|
+
<glyph unicode="" d="M1000 1800q163 0 311 -63.5t255 -170.5t170.5 -255t63.5 -311t-63.5 -311t-170.5 -255t-255 -170.5t-311 -63.5t-311 63.5t-255 170.5t-170.5 255t-63.5 311t63.5 311t170.5 255t255 170.5t311 63.5zM1000 400q163 0 301 80.5t218.5 218.5t80.5 301t-80.5 301 t-218.5 218.5t-301 80.5t-301 -80.5t-218.5 -218.5t-80.5 -301t80.5 -301t218.5 -218.5t301 -80.5zM929 929q14 -10 23 -15l-2 -2l450 -212l-303 319l-97 481l-97 -481h1q0 -1 -2 -9t-2 -10q0 -42 29 -71z" />
|
207
|
+
<glyph unicode="" d="M600 1800h800q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1300 600v1000h-600v-1000h600zM800 1500h400l-400 -500v500z" />
|
208
|
+
<glyph unicode="" d="M400 1800h1200q41 0 70.5 -29.5t29.5 -70.5v-1400q0 -41 -29.5 -70.5t-70.5 -29.5h-1200q-41 0 -70.5 29.5t-29.5 70.5v1400q0 41 29.5 70.5t70.5 29.5zM1500 400v1200h-1000v-1200h1000zM600 1500h600l-600 -500v500z" />
|
209
|
+
<glyph unicode="" d="M300 1800h1400q41 0 70.5 -29.5t29.5 -70.5v-1000q0 -41 -29.5 -70.5t-70.5 -29.5h-500v-200h200q41 0 70.5 -29.5t29.5 -70.5v-100h-1000v100q0 41 29.5 70.5t70.5 29.5h200v200h-500q-41 0 -70.5 29.5t-29.5 70.5v1000q0 41 29.5 70.5t70.5 29.5zM1600 900v700h-1200 v-700h1200zM500 1500h900l-900 -400v400z" />
|
210
|
+
<glyph unicode="" d="M400 1700h1200q82 0 141 -59t59 -141v-700q0 -82 -59 -141t-141 -59h-100l-500 -500v500h-600q-82 0 -141 59t-59 141v700q0 82 59 141t141 59zM1500 1500h-1100v-100h1100v100zM1600 1200h-1200v-100h1200v100zM1300 900h-900v-100h900v100z" />
|
211
|
+
<glyph unicode="" d="M1600 1600h200v-900h-1100v-300l-500 400l500 400v-300h900v700z" />
|
212
|
+
<glyph unicode="" d="M900 1400l-400 -400l400 -400l-100 -200l-600 600l600 600zM1100 600l400 400l-400 400l100 200l600 -600l-600 -600z" />
|
213
|
+
<glyph unicode="" d="M1500 1800h-746q-124 0 -228 -60q-105 -62 -165 -165q-61 -103 -61 -227t61 -227q60 -104 165 -164q103 -61 228 -61h43v-596q0 -40 29 -71q31 -29 71 -29t71 29q30 30 30 71v1200q0 42 29 71q31 29 71 29t71 -29q29 -31 29 -71v-1200q0 -41 30 -71q31 -29 71 -29t71 29 q29 31 29 71v1300h101q40 0 70 30q30 28 30 70q0 41 -30 71q-31 29 -70 29z" />
|
214
|
+
<glyph unicode="" d="M1000 1800q162 0 310.5 -63.5t255.5 -170.5t170.5 -255.5t63.5 -310.5t-63.5 -310.5t-170.5 -255.5t-255.5 -170.5t-310.5 -63.5t-310.5 63.5t-255.5 170.5t-170.5 255.5t-63.5 310.5t63.5 310.5t170.5 255.5t255.5 170.5t310.5 63.5zM1000 250q153 0 291.5 59.5t239 160 t160 239t59.5 291.5t-59.5 291.5t-160 239t-239 160t-291.5 59.5t-291.5 -59.5t-239 -160t-160 -239t-59.5 -291.5q0 -223 122 -410q41 -61 95 -117q104 -105 242 -164t291 -59zM1000 1674q137 0 262 -53.5t215 -143.5t143.5 -215t53.5 -262t-53.5 -262t-143.5 -215 t-215 -143.5t-262 -53.5q-206 0 -374 113q78 4 151 42t126 99q20 -58 80 -100t151 -42q130 0 240.5 88t136.5 212q29 127 -28 213t-182 86q-45 0 -96 -21t-90 -52l104 479q2 14 -3.5 21.5t-18.5 3.5q-56 -15 -227 -32q-18 -2 -24.5 -17t2 -29t26.5 -13q22 1 34.5 -1 t20.5 -10.5t10 -20t-1 -34.5t-8.5 -50t-14.5 -70q-1 -3 -1 -4l-54 -243q-57 93 -186 93q-46 0 -96.5 -21t-89.5 -52q100 461 103 479q3 13 -2.5 21t-18.5 4q-42 -11 -179 -26q94 109 226.5 170.5t282.5 61.5zM441 1377h6q26 1 39.5 -3t20.5 -15.5t5.5 -32.5t-8 -54.5 t-17.5 -81.5q-1 -2 -1 -3l-101 -463q-59 130 -59 276q0 207 115 377zM853 738q-23 -104 -82.5 -172t-143.5 -68q-55 0 -89 41t-17 116l34 167q15 64 69.5 107t114.5 43q82 0 109.5 -65t4.5 -169zM1380 738q-22 -104 -82 -172t-144 -68q-55 0 -89 41t-17 116l35 167 q15 64 69 107t114 43q82 0 109.5 -65t4.5 -169z" />
|
215
|
+
<glyph unicode="" d="M1800 1700v-200h-1600v200h1600zM1200 1300v-200h-1000v200h1000zM1800 1300v-200h-400v200h400zM800 900v-200h-600v200h600zM1800 900v-200h-800v200h800zM1400 500v-200h-1200v200h1200z" />
|
216
|
+
<glyph unicode="" d="M1100 1700v-400h-1000v400h1000zM1900 1700v-400h-700v400h700zM700 1200v-300h-600v300h600zM1900 1200v-300h-1100v300h1100zM900 800v-200h-800v200h800zM1900 800v-200h-900v200h900zM600 500v-100h-500v100h500zM1100 500v-100h-400v100h400zM1400 500v-100h-200 v100h200zM1900 500v-100h-400v100h400z" />
|
217
|
+
<glyph unicode="" d="M1900 1600v-200h-1800v200h1800zM200 1300h1600v-1000h-1600v1000zM1300 1000v100h-600v-100h600z" />
|
218
|
+
<glyph unicode="" d="M1190 1961l140 -140q50 -6 123.5 1.5t127 15t113 -4t97.5 -49.5t49.5 -97.5t4 -113t-15 -127t-1.5 -123.5l140 -140q29 -29 29 -70.5t-29 -70.5l-919 -920q-30 -29 -71.5 -29t-70.5 29l-778 778q-29 29 -29 70.5t29 71.5l920 919q29 29 70.5 29t70.5 -29zM1248 1736 l-58 -58l495 -495l58 58q-24 75 -15 182q3 47 9 92q11 73 9 123.5t-26 74.5t-74.5 26t-123.5 -9q-45 -6 -92 -9q-107 -9 -182 15zM1650 1643q29 -29 29 -71t-29 -71t-71 -29t-71 29t-29 71t29 71t71 29t71 -29zM978 1607l-71 -70l637 -637l70 71zM836 1466l-70 -71l636 -636 l71 70zM695 1324l-71 -70l637 -637l70 71zM554 1183l-71 -71l636 -636l71 71zM412 1042l-71 -71l637 -637l71 71z" />
|
219
|
+
<glyph unicode="" d="M1200 1100v600q0 83 -58.5 141.5t-141.5 58.5t-141.5 -59.5t-58.5 -140.5v-600q0 -82 59 -141t141 -59q84 0 142 59.5t58 140.5zM1600 1100q0 -221 -142.5 -388t-357.5 -203v-209h200q42 0 71 -29.5t29 -70.5t-29 -70.5t-71 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5 t29.5 70.5t70.5 29.5h200v209q-214 36 -357 203t-143 388q0 41 29.5 70.5t70.5 29.5q42 0 71 -29.5t29 -70.5q0 -166 117.5 -283t282.5 -117q166 0 283 117t117 283q0 41 29.5 70.5t70.5 29.5q42 0 71 -29.5t29 -70.5z" />
|
220
|
+
<glyph unicode="" d="M1000 1740q62 0 106 -44t44 -106t-44 -106.5t-106 -44.5t-106 44.5t-44 106.5t44 106t106 44zM340 1264q0 29 165 48t330 24l165 4q660 -11 660 -76q0 -29 -112 -64t-224 -56l-111 -20l59 -306q91 -515 47 -532q-17 -7 -56.5 44t-83 128.5t-84.5 156t-68 134.5l-27 56 l-96 -193q-177 -342 -222 -326q-17 14 -13 96.5t23 209t40.5 244.5t38.5 203l17 85q-448 75 -448 140z" />
|
221
|
+
<glyph unicode="" d="M1200 1500v300q0 41 -29.5 70.5t-70.5 29.5h-200q-41 0 -70.5 -29.5t-29.5 -70.5v-300q0 -41 29.5 -70.5t70.5 -29.5h200q41 0 70.5 29.5t29.5 70.5zM1000 1800q41 0 70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5t-70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5z M1800 500v800q0 82 -59 141t-141 59h-300v-33q0 -69 -49 -118t-118 -49h-266q-69 0 -118 49t-49 118v33h-300q-82 0 -141 -59t-59 -141v-800q0 -82 59 -141t141 -59h1200q82 0 141 59t59 141zM1700 1100v-600h-1400v600h1400zM900 900q0 41 -14.5 70.5t-35.5 29.5 t-35.5 -29.5t-14.5 -70.5t14.5 -70.5t35.5 -29.5t35.5 29.5t14.5 70.5zM1200 900q0 41 -14.5 70.5t-35.5 29.5t-35.5 -29.5t-14.5 -70.5t14.5 -70.5t35.5 -29.5t35.5 29.5t14.5 70.5zM604 779q151 -79 396 -79t396 79q-16 -76 -129 -127.5t-267 -51.5t-267 51.5t-129 127.5z " />
|
222
|
+
<glyph unicode="" d="M19 1408q-22 -18 79 -142t212 -240l112 -115l79 79t184.5 185.5t249.5 256.5t232.5 247t179 206t45.5 89q-30 17 -274 -166.5t-474 -375.5l-229 -191q-4 3 -11.5 7t-32.5 18.5t-47.5 26.5t-57 30.5t-61.5 31t-61 27.5t-55 21t-43.5 10t-26.5 -5zM1542 1310l-315 -315 l-181 182l315 315q25 25 69.5 16t81.5 -47q38 -37 47 -81.5t-17 -69.5zM765 1138l88 109l876 -875l-116 -81q-49 -49 -163 -81t-208 -32h-377l-121 -121q-43 -43 -103 -43t-103 43t-43 103t43 104l121 120v376q0 94 29.5 212.5t76.5 165.5zM1470 752l315 315q25 26 69.5 17 t81.5 -47q38 -37 47 -81t-17 -69l-315 -316z" />
|
223
|
+
<glyph unicode="" d="M2000 1462l-101 -282v1q-78 28 -153 -8t-104 -114q-28 -78 7.5 -153t114.5 -103v-1l-101 -282l-1506 538l99 279q78 -28 153 7.5t103 113.5t-7.5 152.5t-113.5 102.5l102 287zM1455 1125q34 108 16.5 208.5t-87 183.5t-171.5 120q-156 55 -305.5 -16t-205.5 -226 q-34 -108 -16.5 -209t87 -184t171.5 -119q155 -55 305 16t206 226zM1199 1599q133 -48 197 -171l-4 2q-24 9 -46.5 -3.5t-31.5 -36.5q-10 -28 5 -91q9 -62 -6 -104q-9 -27 -65 -100l-74 -101l8 408l40 -11q14 -3 18 11t-10 18q-57 15 -92 28l-88 36q-7 3 -12 0t-7.5 -7.5 t-0.5 -10.5t8 -9q16 -8 34 -16l1 -163l-153 -196l8 411l40 -11q14 -3 17.5 11t-10.5 18q-56 15 -91 28q-3 1 -22 8q71 54 159 68t178 -16zM740 1381q25 73 78 127l4 -500q-72 72 -94.5 171.5t12.5 201.5zM1144 906l210 263q49 55 69 112q4 10 11 35q14 -90 -17 -177 q-33 -92 -106.5 -153.5t-166.5 -79.5zM1074 1228l2 -322q0 -4 1 -6q-60 0 -120 21q-49 18 -90 48zM1198 620l210 -75q18 -64 71 -104.5t120 -40.5h1v-300h-1600v296q83 0 141.5 58.5t58.5 141.5q0 82 -59 141t-141 59v304h105l-28 -80l428 -152q-105 -115 -105 -268 q0 -166 117 -283t283 -117t283 117t117 283q0 4 -1 10t-1 10zM545 853l148 -53q-11 -3 -10.5 -15t13.5 -13q18 -2 37 -3l56 -154l-78 -236l-131 390l41 3q9 1 12 8.5t-1 14.5t-13 7q-59 -5 -96 -5q-15 0 -23 1q19 29 45 55zM440 600q0 76 32 146l171 -470q-92 45 -147.5 132 t-55.5 192zM859 741l172 -62q12 -29 12 -61q0 -28 -28 -116l-35 -120zM1160 600q0 -98 -48.5 -181t-130.5 -130l110 318q7 20 14 46l52 -19q3 -17 3 -34zM698 255l108 314l111 -303q0 -1 0.5 -2.5t1.5 -2.5q-60 -21 -119 -21q-47 0 -102 15z" />
|
224
|
+
<glyph unicode="" d="M1000 288q240 101 420.5 265.5t283.5 355.5q97 183 106.5 349t-74.5 276q-144 181 -373 174q-99 -3 -194 -42.5t-169 -103.5q-74 64 -169 103.5t-194 42.5q-229 7 -373 -174q-84 -110 -74.5 -276t108.5 -349q101 -191 281.5 -355.5t420.5 -265.5z" />
|
225
|
+
<glyph unicode="" d="M1815 1406q66 -233 -2 -448q-31 -96 -91.5 -160.5t-138.5 -87.5q-16 -6 -40 -6q-6 -2 -18 -2q-6 -2 -22 -2h-680l222 -550q3 -18 -14 -34q-13 -16 -34 -16h-302q-21 0 -34 16q-17 17 -14 34l-100 550h-122l-2 2q-37 -4 -78 12.5t-76 49.5q-81 78 -106 188q-33 110 -2 220 q27 94 106 130l2 2l900 540q20 12 24 16q9 6 24 12q19 10 50 18q77 22 162 -4.5t160 -93.5q76 -68 135.5 -168t90.5 -218zM1557 808h-2q58 14 104 70q86 104 86 304q0 92 -28 198q-50 199 -178 324q-58 56 -123 80t-123 8q-122 -33 -170 -200q-48 -156 6 -372 q59 -212 180 -324q126 -119 248 -88zM1303 1516q30 6 62 -4q66 -28 102 -100q42 -84 42 -178q0 -44 -12 -80q-30 -81 -86 -94q-26 -8 -57.5 3.5t-56.5 36.5q-58 58 -78 150q-24 83 2 172q10 35 33 60.5t49 33.5z" />
|
226
|
+
<glyph unicode="" d="M200 1800h1600v-400h-1600v400zM200 800v400h400v-400h-400zM800 1000v200h400v-200h-400zM1400 700v500h400v-500h-400zM800 200v600h400v-600h-400zM200 200v400h400v-400h-400zM1400 200v300h400v-300h-400z" />
|
227
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1100 600v300q0 40 -29 71q-31 29 -71 29h-300q-40 0 -71 -29q-29 -31 -29 -71v-300q0 -40 29 -71q31 -29 71 -29h300q40 0 71 29q29 31 29 71zM1400 500v500l-200 -200v-100z" />
|
228
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM500 1700v-100h600v100h-600zM1200 1400h300l-300 300v-300zM500 1500v-100h600v100h-600zM1500 1200v100h-1000v-100h1000zM1500 1000v100h-1000v-100h1000zM1500 800v100h-1000v-100h1000zM1100 600v100h-600v-100h600z" />
|
229
|
+
<glyph unicode="" d="M1700 1700v200h-1500v-200h1500zM1700 1300v200h-1500v-200h1500zM1000 900v200h-800v-200h800zM1745 1096l-600 -112q-18 -2 -29 -13q-16 -13 -16 -37v-459q-31 14 -93 14q-81 0 -138 -57q-56 -56 -56 -138q0 -81 56 -137q57 -57 138 -57q73 0 129 48q56 49 65 119v495 l499 111v-348q-42 19 -83 19q-92 0 -149 -57q-57 -56 -57 -137q0 -80 57 -137t138 -57q80 0 137 57t57 137v690q0 25 -16 41q-16 18 -39 15zM800 500v200h-600v-200h600zM600 100v200h-400v-200h400z" />
|
230
|
+
<glyph unicode="" d="M1700 1700v200h-1500v-200h1500zM1700 1300v200h-1500v-200h1500zM600 900v200h-400v-200h400zM800 1100h900q41 0 70.5 -29.5t29.5 -70.5v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5zM1100 400l333 200 l-333 200v-400zM600 500v200h-400v-200h400zM600 100v200h-400v-200h400z" />
|
231
|
+
<glyph unicode="" d="M900 1400l-400 -400l400 -400l-100 -200l-600 600l600 600zM1100 600l400 400l-400 400l100 200l600 -600l-600 -600z" />
|
232
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1100 1400v300h-600v-300h600zM800 1200v100h-300v-100h300zM1100 1200v100h-200v-100h200zM1500 1200v100h-300v-100h300zM800 1000v100h-300v-100h300zM1100 1000v100h-200v-100h200zM1500 1000v100h-300v-100h300zM800 800 v100h-300v-100h300zM1100 800v100h-200v-100h200zM1500 800v100h-300v-100h300zM800 600v100h-300v-100h300zM1100 600v100h-200v-100h200zM1500 600v100h-300v-100h300zM800 400v100h-300v-100h300zM1100 400v100h-200v-100h200z" />
|
233
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1400 600v600h-800v-600h300l-100 -200h100l100 200l100 -200h100l-100 200h300zM800 900q-41 0 -70.5 29.5t-29.5 70.5t29.5 70.5t70.5 29.5t70.5 -29.5t29.5 -70.5t-29.5 -70.5t-70.5 -29.5z M1300 1100v-200h-300v200h300zM1300 800v-100h-600v100h600z" />
|
234
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM500 1700v-100h600v100h-600zM1200 1400h300l-300 300v-300zM500 1500v-100h600v100h-600zM1500 1200v100h-1000v-100h1000zM500 1100v-100h400v100h-400zM1500 800v300h-500v-300h500zM500 900v-100h400v100h-400zM1500 600 v100h-1000v-100h1000zM1200 400v100h-700v-100h700z" />
|
235
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300z" />
|
236
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM900 700l-200 200l200 200l-100 100l-300 -300l300 -300zM1200 600l300 300l-300 300l-100 -100l200 -200l-200 -200z" />
|
237
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM1300 674v517q0 17 -12 29q-10 12 -27 10q-397 -71 -425 -78q-36 -7 -36 -52v-337q-16 7 -60 7q-57 0 -96 -39q-40 -42 -40 -96q0 -55 40 -95q39 -40 96 -40q65 0 96 26q64 57 64 112v332l300 60 v-230q-87 26 -144 -31q-39 -39 -39 -95t39 -96q40 -39 108 -39q57 0 96 39q40 42 40 96z" />
|
238
|
+
<glyph unicode="" d="M1200 1800l400 -400v-1200h-1200v1600h800zM1200 1400h300l-300 300v-300zM800 1650v-200l180 100zM1100 1500l-180 -100l180 -100v200zM800 1350v-200l180 100zM1100 1200l-180 -100l180 -100v200zM800 1050v-200l180 100zM1100 900l-180 -100l180 -100v200zM950 300 q64 0 111.5 48.5t38.5 114.5q-2 17 -14.5 57t-23.5 72l-11 32l-199 110q-45 -195 -52 -271q-5 -59 42 -111t108 -52zM950 539q32 0 54 -22.5t22 -53.5q0 -32 -22 -54.5t-54 -22.5t-54 22.5t-22 54.5q0 31 22 53.5t54 22.5z" />
|
239
|
+
<glyph unicode="" d="M1580 1580q157 -158 213 -369t0 -422t-213 -369q-158 -157 -369 -213t-422 0t-369 213q-157 158 -213 369t0 422t213 369q158 157 369 213t422 0t369 -213zM1150 450v400h400v300h-400v400h-300v-400h-400v-300h400v-400h300z" />
|
240
|
+
<glyph unicode="" d="M1800 1399l-400 -299v200h-400l-500 -800h-300v200h200l500 800h500v200zM200 1500h300l115 -217l-112 -180l-103 197h-200v200zM1800 599l-400 -299v200h-500l-115 217l112 180l103 -197h400v200z" />
|
241
|
+
<glyph unicode="" d="M900 1700h800v-800l-200 100v308l-560 -559l-141 141l609 610h-408zM1200 500v300l200 200v-700h-1100v1100h800l-200 -200h-400v-700h700z" />
|
242
|
+
<glyph unicode="" d="M1575 1325l225 375v-1400l-225 375l125 125h-400v-400l125 125l375 -225h-1600l375 225l125 -125v400h-400l125 -125l-225 -375v1400l225 -375l-125 -125h400v400l-125 -125l-375 225h1600l-375 -225l-125 125v-400h400z" />
|
243
|
+
<glyph unicode="" d="M1900 1000q0 183 -71.5 349.5t-192 287t-287 192t-349.5 71.5t-349.5 -71.5t-287 -192t-192 -287t-71.5 -349.5t71.5 -349.5t192 -287t287 -192t349.5 -71.5t349.5 71.5t287 192t192 287t71.5 349.5zM1000 1740q62 0 106 -44t44 -106t-44 -106.5t-106 -44.5t-106 44.5 t-44 106.5t44 106t106 44zM340 1264q0 29 165 48t330 24l165 4q660 -11 660 -76q0 -29 -112 -64t-224 -56l-111 -20l59 -306q91 -515 47 -532q-17 -7 -56.5 44t-83 128.5t-84.5 156t-68 134.5l-27 56l-96 -193q-177 -342 -222 -326q-17 14 -13 96.5t23 209t40.5 244.5 t38.5 203l17 85q-448 75 -448 140z" />
|
244
|
+
<glyph unicode="" d="M1500 1600h300v-1500h-1600v1500h300v100q0 60 44 106q44 44 106 44t106 -44q44 -46 44 -106v-100h400v100q0 60 44 106q44 44 106 44t106 -44q44 -46 44 -106v-100zM600 1700v-250q0 -21 15 -36q14 -14 35 -14t35 14q15 15 15 36v250q0 22 -15 35q-13 15 -35 15t-35 -15 q-15 -13 -15 -35zM1300 1700v-250q0 -20 14 -36q16 -14 36 -14t36 14q14 16 14 36v250q0 21 -14 35q-15 15 -36 15t-36 -15q-14 -14 -14 -35zM1700 200v1000h-1400v-1000h1400zM700 1100v-200h-200v200h200zM900 1100h200v-200h-200v200zM1300 900v200h200v-200h-200z M700 800v-200h-200v200h200zM900 800h200v-200h-200v200zM1300 600v200h200v-200h-200zM700 500v-200h-200v200h200zM1100 300h-200v200h200v-200zM1500 300h-200v200h200v-200z" />
|
245
|
+
<glyph unicode="" d="M200 1900h1600q41 0 70.5 -29.5t29.5 -70.5v-1600q0 -41 -29.5 -70.5t-70.5 -29.5h-1600q-41 0 -70.5 29.5t-29.5 70.5v1600q0 41 29.5 70.5t70.5 29.5zM901 1101v600h-601v-600h601zM1701 1101v600h-600v-600h600zM901 300v600h-601v-600h601zM1701 300v600h-600v-600 h600z" />
|
246
|
+
<glyph unicode="" d="M100 1683v-1483h1800v1400h-1100v83q0 48 -35 83q-34 34 -83 34h-464q-49 0 -83 -34q-35 -34 -35 -83zM1000 1400v-200h-700v200h700zM1700 1400v-1000h-500v1000h500zM1000 1000v-200h-700v200h700zM1000 600v-200h-700v200h700z" />
|
247
|
+
<glyph unicode="" d="M200 157q28 -27 94 -18.5t154 38t194.5 81.5t215 113t215 131.5t194.5 136.5t154 129.5t93 109.5q36 60 23.5 137.5t-58 155t-117.5 151.5q32 21 66.5 21t64.5 -17.5t62.5 -41.5t61 -50.5t59.5 -46t58 -26.5t57 8q46 24 68.5 85.5t1.5 106.5q-12 26 -36.5 45.5 t-47.5 30.5t-64 20t-63 12t-70 7.5t-61 5.5q36 9 80 27.5t92 47t80.5 68.5t33.5 82q3 69 -66.5 131.5t-138.5 54.5q-25 -3 -47 -14t-40 -32.5t-31.5 -41t-27.5 -53t-22 -52.5t-20.5 -56.5t-17.5 -50.5q-16 223 -98 295q-55 43 -106 38t-88 -46.5t-38 -96.5q-1 -31 19 -62.5 t49 -56t60.5 -54.5t53 -57t27 -63.5t-16.5 -73.5q-78 60 -157.5 96.5t-155.5 44t-133 -26.5q-70 -45 -163 -169q168 -178 309 -272q15 -11 18.5 -29t-7.5 -33q-10 -16 -28.5 -19.5t-33.5 7.5q-138 94 -310 271q-71 -105 -134 -223q157 -158 279 -241q15 -11 18 -29t-7 -33 q-10 -16 -28.5 -19.5t-34.5 7.5q-117 80 -271 232q-143 -282 -212 -524t-5 -299z" />
|
248
|
+
<glyph horiz-adv-x="600" />
|
249
|
+
</font>
|
250
|
+
</defs></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1,4006 @@
|
|
1
|
+
<?php
|
2
|
+
/**
|
3
|
+
* Main WordPress Formatting API.
|
4
|
+
*
|
5
|
+
* Handles many functions for formatting output.
|
6
|
+
*
|
7
|
+
* @package WordPress
|
8
|
+
*/
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Replaces common plain text characters into formatted entities
|
12
|
+
*
|
13
|
+
* As an example,
|
14
|
+
* <code>
|
15
|
+
* 'cause today's effort makes it worth tomorrow's "holiday"...
|
16
|
+
* </code>
|
17
|
+
* Becomes:
|
18
|
+
* <code>
|
19
|
+
* ’cause today’s effort makes it worth tomorrow’s “holiday”…
|
20
|
+
* </code>
|
21
|
+
* Code within certain html blocks are skipped.
|
22
|
+
*
|
23
|
+
* @since 0.71
|
24
|
+
* @uses $wp_cockneyreplace Array of formatted entities for certain common phrases
|
25
|
+
*
|
26
|
+
* @param string $text The text to be formatted
|
27
|
+
* @param bool $reset Set to true for unit testing. Translated patterns will reset.
|
28
|
+
* @return string The string replaced with html entities
|
29
|
+
*/
|
30
|
+
function wptexturize($text, $reset = false) {
|
31
|
+
global $wp_cockneyreplace;
|
32
|
+
static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
|
33
|
+
$default_no_texturize_tags, $default_no_texturize_shortcodes, $run_texturize = true;
|
34
|
+
|
35
|
+
// If there's nothing to do, just stop.
|
36
|
+
if ( empty( $text ) || false === $run_texturize ) {
|
37
|
+
return $text;
|
38
|
+
}
|
39
|
+
|
40
|
+
// Set up static variables. Run once only.
|
41
|
+
if ( $reset || ! isset( $static_characters ) ) {
|
42
|
+
/**
|
43
|
+
* Filter whether to skip running wptexturize().
|
44
|
+
*
|
45
|
+
* Passing false to the filter will effectively short-circuit wptexturize().
|
46
|
+
* returning the original text passed to the function instead.
|
47
|
+
*
|
48
|
+
* The filter runs only once, the first time wptexturize() is called.
|
49
|
+
*
|
50
|
+
* @since 4.0.0
|
51
|
+
*
|
52
|
+
* @see wptexturize()
|
53
|
+
*
|
54
|
+
* @param bool $run_texturize Whether to short-circuit wptexturize().
|
55
|
+
*/
|
56
|
+
$run_texturize = apply_filters( 'run_wptexturize', $run_texturize );
|
57
|
+
if ( false === $run_texturize ) {
|
58
|
+
return $text;
|
59
|
+
}
|
60
|
+
|
61
|
+
/* translators: opening curly double quote */
|
62
|
+
$opening_quote = _x( '“', 'opening curly double quote' );
|
63
|
+
/* translators: closing curly double quote */
|
64
|
+
$closing_quote = _x( '”', 'closing curly double quote' );
|
65
|
+
|
66
|
+
/* translators: apostrophe, for example in 'cause or can't */
|
67
|
+
$apos = _x( '’', 'apostrophe' );
|
68
|
+
|
69
|
+
/* translators: prime, for example in 9' (nine feet) */
|
70
|
+
$prime = _x( '′', 'prime' );
|
71
|
+
/* translators: double prime, for example in 9" (nine inches) */
|
72
|
+
$double_prime = _x( '″', 'double prime' );
|
73
|
+
|
74
|
+
/* translators: opening curly single quote */
|
75
|
+
$opening_single_quote = _x( '‘', 'opening curly single quote' );
|
76
|
+
/* translators: closing curly single quote */
|
77
|
+
$closing_single_quote = _x( '’', 'closing curly single quote' );
|
78
|
+
|
79
|
+
/* translators: en dash */
|
80
|
+
$en_dash = _x( '–', 'en dash' );
|
81
|
+
/* translators: em dash */
|
82
|
+
$em_dash = _x( '—', 'em dash' );
|
83
|
+
|
84
|
+
$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');
|
85
|
+
$default_no_texturize_shortcodes = array('code');
|
86
|
+
|
87
|
+
// if a plugin has provided an autocorrect array, use it
|
88
|
+
if ( isset($wp_cockneyreplace) ) {
|
89
|
+
$cockney = array_keys($wp_cockneyreplace);
|
90
|
+
$cockneyreplace = array_values($wp_cockneyreplace);
|
91
|
+
} elseif ( "'" != $apos ) { // Only bother if we're doing a replacement.
|
92
|
+
$cockney = array( "'tain't", "'twere", "'twas", "'tis", "'twill", "'til", "'bout", "'nuff", "'round", "'cause" );
|
93
|
+
$cockneyreplace = array( $apos . "tain" . $apos . "t", $apos . "twere", $apos . "twas", $apos . "tis", $apos . "twill", $apos . "til", $apos . "bout", $apos . "nuff", $apos . "round", $apos . "cause" );
|
94
|
+
} else {
|
95
|
+
$cockney = $cockneyreplace = array();
|
96
|
+
}
|
97
|
+
|
98
|
+
$static_characters = array_merge( array( '...', '``', '\'\'', ' (tm)' ), $cockney );
|
99
|
+
$static_replacements = array_merge( array( '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace );
|
100
|
+
|
101
|
+
|
102
|
+
// Pattern-based replacements of characters.
|
103
|
+
// Sort the remaining patterns into several arrays for performance tuning.
|
104
|
+
$dynamic_characters = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
|
105
|
+
$dynamic_replacements = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
|
106
|
+
$dynamic = array();
|
107
|
+
$spaces = wp_spaces_regexp();
|
108
|
+
|
109
|
+
// '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation.
|
110
|
+
if ( "'" !== $apos || "'" !== $closing_single_quote ) {
|
111
|
+
$dynamic[ '/\'(\d\d)\'(?=\Z|[.,)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_single_quote;
|
112
|
+
}
|
113
|
+
if ( "'" !== $apos || '"' !== $closing_quote ) {
|
114
|
+
$dynamic[ '/\'(\d\d)"(?=\Z|[.,)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_quote;
|
115
|
+
}
|
116
|
+
|
117
|
+
// '99 '99s '99's (apostrophe) But never '9 or '99% or '999 or '99.0.
|
118
|
+
if ( "'" !== $apos ) {
|
119
|
+
$dynamic[ '/\'(?=\d\d(?:\Z|(?![%\d]|[.,]\d)))/' ] = $apos;
|
120
|
+
}
|
121
|
+
|
122
|
+
// Quoted Numbers like '0.42'
|
123
|
+
if ( "'" !== $opening_single_quote && "'" !== $closing_single_quote ) {
|
124
|
+
$dynamic[ '/(?<=\A|' . $spaces . ')\'(\d[.,\d]*)\'/' ] = $opening_single_quote . '$1' . $closing_single_quote;
|
125
|
+
}
|
126
|
+
|
127
|
+
// Single quote at start, or preceded by (, {, <, [, ", -, or spaces.
|
128
|
+
if ( "'" !== $opening_single_quote ) {
|
129
|
+
$dynamic[ '/(?<=\A|[([{"\-]|<|' . $spaces . ')\'/' ] = $opening_single_quote;
|
130
|
+
}
|
131
|
+
|
132
|
+
// Apostrophe in a word. No spaces, double apostrophes, or other punctuation.
|
133
|
+
if ( "'" !== $apos ) {
|
134
|
+
$dynamic[ '/(?<!' . $spaces . ')\'(?!\Z|[.,:;"\'(){}[\]\-]|&[lg]t;|' . $spaces . ')/' ] = $apos;
|
135
|
+
}
|
136
|
+
|
137
|
+
// 9' (prime)
|
138
|
+
if ( "'" !== $prime ) {
|
139
|
+
$dynamic[ '/(?<=\d)\'/' ] = $prime;
|
140
|
+
}
|
141
|
+
|
142
|
+
// Single quotes followed by spaces or ending punctuation.
|
143
|
+
if ( "'" !== $closing_single_quote ) {
|
144
|
+
$dynamic[ '/\'(?=\Z|[.,)}\-\]]|>|' . $spaces . ')/' ] = $closing_single_quote;
|
145
|
+
}
|
146
|
+
|
147
|
+
$dynamic_characters['apos'] = array_keys( $dynamic );
|
148
|
+
$dynamic_replacements['apos'] = array_values( $dynamic );
|
149
|
+
$dynamic = array();
|
150
|
+
|
151
|
+
// Quoted Numbers like "42"
|
152
|
+
if ( '"' !== $opening_quote && '"' !== $closing_quote ) {
|
153
|
+
$dynamic[ '/(?<=\A|' . $spaces . ')"(\d[.,\d]*)"/' ] = $opening_quote . '$1' . $closing_quote;
|
154
|
+
}
|
155
|
+
|
156
|
+
// 9" (double prime)
|
157
|
+
if ( '"' !== $double_prime ) {
|
158
|
+
$dynamic[ '/(?<=\d)"/' ] = $double_prime;
|
159
|
+
}
|
160
|
+
|
161
|
+
// Double quote at start, or preceded by (, {, <, [, -, or spaces, and not followed by spaces.
|
162
|
+
if ( '"' !== $opening_quote ) {
|
163
|
+
$dynamic[ '/(?<=\A|[([{\-]|<|' . $spaces . ')"(?!' . $spaces . ')/' ] = $opening_quote;
|
164
|
+
}
|
165
|
+
|
166
|
+
// Any remaining double quotes.
|
167
|
+
if ( '"' !== $closing_quote ) {
|
168
|
+
$dynamic[ '/"/' ] = $closing_quote;
|
169
|
+
}
|
170
|
+
|
171
|
+
$dynamic_characters['quote'] = array_keys( $dynamic );
|
172
|
+
$dynamic_replacements['quote'] = array_values( $dynamic );
|
173
|
+
$dynamic = array();
|
174
|
+
|
175
|
+
// Dashes and spaces
|
176
|
+
$dynamic[ '/---/' ] = $em_dash;
|
177
|
+
$dynamic[ '/(?<=' . $spaces . ')--(?=' . $spaces . ')/' ] = $em_dash;
|
178
|
+
$dynamic[ '/(?<!xn)--/' ] = $en_dash;
|
179
|
+
$dynamic[ '/(?<=' . $spaces . ')-(?=' . $spaces . ')/' ] = $en_dash;
|
180
|
+
|
181
|
+
$dynamic_characters['dash'] = array_keys( $dynamic );
|
182
|
+
$dynamic_replacements['dash'] = array_values( $dynamic );
|
183
|
+
}
|
184
|
+
|
185
|
+
// Must do this every time in case plugins use these filters in a context sensitive manner
|
186
|
+
/**
|
187
|
+
* Filter the list of HTML elements not to texturize.
|
188
|
+
*
|
189
|
+
* @since 2.8.0
|
190
|
+
*
|
191
|
+
* @param array $default_no_texturize_tags An array of HTML element names.
|
192
|
+
*/
|
193
|
+
$no_texturize_tags = apply_filters( 'no_texturize_tags', $default_no_texturize_tags );
|
194
|
+
/**
|
195
|
+
* Filter the list of shortcodes not to texturize.
|
196
|
+
*
|
197
|
+
* @since 2.8.0
|
198
|
+
*
|
199
|
+
* @param array $default_no_texturize_shortcodes An array of shortcode names.
|
200
|
+
*/
|
201
|
+
$no_texturize_shortcodes = apply_filters( 'no_texturize_shortcodes', $default_no_texturize_shortcodes );
|
202
|
+
|
203
|
+
$no_texturize_tags_stack = array();
|
204
|
+
$no_texturize_shortcodes_stack = array();
|
205
|
+
|
206
|
+
// Look for shortcodes and HTML elements.
|
207
|
+
|
208
|
+
$comment_regex =
|
209
|
+
'!' // Start of comment, after the <.
|
210
|
+
. '(?:' // Unroll the loop: Consume everything until --> is found.
|
211
|
+
. '-(?!->)' // Dash not followed by end of comment.
|
212
|
+
. '[^\-]*+' // Consume non-dashes.
|
213
|
+
. ')*+' // Loop possessively.
|
214
|
+
. '(?:-->)?'; // End of comment. If not found, match all input.
|
215
|
+
|
216
|
+
$shortcode_regex =
|
217
|
+
'\[' // Find start of shortcode.
|
218
|
+
. '[\/\[]?' // Shortcodes may begin with [/ or [[
|
219
|
+
. '[^\s\/\[\]]' // No whitespace before name.
|
220
|
+
. '[^\[\]]*+' // Shortcodes do not contain other shortcodes. Possessive critical.
|
221
|
+
. '\]' // Find end of shortcode.
|
222
|
+
. '\]?'; // Shortcodes may end with ]]
|
223
|
+
|
224
|
+
$regex =
|
225
|
+
'/(' // Capture the entire match.
|
226
|
+
. '<' // Find start of element.
|
227
|
+
. '(?(?=!--)' // Is this a comment?
|
228
|
+
. $comment_regex // Find end of comment.
|
229
|
+
. '|'
|
230
|
+
. '[^>]+>' // Find end of element.
|
231
|
+
. ')'
|
232
|
+
. '|'
|
233
|
+
. $shortcode_regex // Find shortcodes.
|
234
|
+
. ')/s';
|
235
|
+
|
236
|
+
$textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
|
237
|
+
|
238
|
+
foreach ( $textarr as &$curl ) {
|
239
|
+
// Only call _wptexturize_pushpop_element if $curl is a delimiter.
|
240
|
+
$first = $curl[0];
|
241
|
+
if ( '<' === $first && '<!--' === substr( $curl, 0, 4 ) ) {
|
242
|
+
// This is an HTML comment delimeter.
|
243
|
+
|
244
|
+
continue;
|
245
|
+
|
246
|
+
} elseif ( '<' === $first && '>' === substr( $curl, -1 ) ) {
|
247
|
+
// This is an HTML element delimiter.
|
248
|
+
|
249
|
+
_wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
|
250
|
+
|
251
|
+
} elseif ( '' === trim( $curl ) ) {
|
252
|
+
// This is a newline between delimiters. Performance improves when we check this.
|
253
|
+
|
254
|
+
continue;
|
255
|
+
|
256
|
+
} elseif ( '[' === $first && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
|
257
|
+
// This is a shortcode delimiter.
|
258
|
+
|
259
|
+
if ( '[[' !== substr( $curl, 0, 2 ) && ']]' !== substr( $curl, -2 ) ) {
|
260
|
+
// Looks like a normal shortcode.
|
261
|
+
_wptexturize_pushpop_element( $curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes );
|
262
|
+
} else {
|
263
|
+
// Looks like an escaped shortcode.
|
264
|
+
// Do not texturize.
|
265
|
+
// Do not push to the shortcodes stack.
|
266
|
+
continue;
|
267
|
+
}
|
268
|
+
|
269
|
+
} elseif ( empty( $no_texturize_shortcodes_stack ) && empty( $no_texturize_tags_stack ) ) {
|
270
|
+
// This is neither a delimiter, nor is this content inside of no_texturize pairs. Do texturize.
|
271
|
+
|
272
|
+
$curl = str_replace( $static_characters, $static_replacements, $curl );
|
273
|
+
|
274
|
+
if ( false !== strpos( $curl, "'" ) ) {
|
275
|
+
$curl = preg_replace( $dynamic_characters['apos'], $dynamic_replacements['apos'], $curl );
|
276
|
+
}
|
277
|
+
if ( false !== strpos( $curl, '"' ) ) {
|
278
|
+
$curl = preg_replace( $dynamic_characters['quote'], $dynamic_replacements['quote'], $curl );
|
279
|
+
}
|
280
|
+
if ( false !== strpos( $curl, '-' ) ) {
|
281
|
+
$curl = preg_replace( $dynamic_characters['dash'], $dynamic_replacements['dash'], $curl );
|
282
|
+
}
|
283
|
+
|
284
|
+
// 9x9 (times), but never 0x9999
|
285
|
+
if ( 1 === preg_match( '/(?<=\d)x-?\d/', $curl ) ) {
|
286
|
+
// Searching for a digit is 10 times more expensive than for the x, so we avoid doing this one!
|
287
|
+
$curl = preg_replace( '/\b(\d(?(?<=0)[\d\.,]+|[\d\.,]*))x(-?\d[\d\.,]*)\b/', '$1×$2', $curl );
|
288
|
+
}
|
289
|
+
}
|
290
|
+
}
|
291
|
+
$text = implode( '', $textarr );
|
292
|
+
|
293
|
+
// Replace each & with & unless it already looks like an entity.
|
294
|
+
$text = preg_replace('/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&', $text);
|
295
|
+
|
296
|
+
return $text;
|
297
|
+
}
|
298
|
+
|
299
|
+
/**
|
300
|
+
* Search for disabled element tags. Push element to stack on tag open and pop
|
301
|
+
* on tag close.
|
302
|
+
*
|
303
|
+
* Assumes first char of $text is tag opening and last char is tag closing.
|
304
|
+
* Assumes second char of $text is optionally '/' to indicate closing as in </html>.
|
305
|
+
*
|
306
|
+
* @since 2.9.0
|
307
|
+
* @access private
|
308
|
+
*
|
309
|
+
* @param string $text Text to check. Must be a tag like <html> or [shortcode].
|
310
|
+
* @param array $stack List of open tag elements.
|
311
|
+
* @param array $disabled_elements The tag names to match against. Spaces are not allowed in tag names.
|
312
|
+
*/
|
313
|
+
function _wptexturize_pushpop_element($text, &$stack, $disabled_elements) {
|
314
|
+
// Is it an opening tag or closing tag?
|
315
|
+
if ( '/' !== $text[1] ) {
|
316
|
+
$opening_tag = true;
|
317
|
+
$name_offset = 1;
|
318
|
+
} elseif ( 0 == count( $stack ) ) {
|
319
|
+
// Stack is empty. Just stop.
|
320
|
+
return;
|
321
|
+
} else {
|
322
|
+
$opening_tag = false;
|
323
|
+
$name_offset = 2;
|
324
|
+
}
|
325
|
+
|
326
|
+
// Parse out the tag name.
|
327
|
+
$space = strpos( $text, ' ' );
|
328
|
+
if ( false === $space ) {
|
329
|
+
$space = -1;
|
330
|
+
} else {
|
331
|
+
$space -= $name_offset;
|
332
|
+
}
|
333
|
+
$tag = substr( $text, $name_offset, $space );
|
334
|
+
|
335
|
+
// Handle disabled tags.
|
336
|
+
if ( in_array( $tag, $disabled_elements ) ) {
|
337
|
+
if ( $opening_tag ) {
|
338
|
+
/*
|
339
|
+
* This disables texturize until we find a closing tag of our type
|
340
|
+
* (e.g. <pre>) even if there was invalid nesting before that
|
341
|
+
*
|
342
|
+
* Example: in the case <pre>sadsadasd</code>"baba"</pre>
|
343
|
+
* "baba" won't be texturize
|
344
|
+
*/
|
345
|
+
|
346
|
+
array_push( $stack, $tag );
|
347
|
+
} elseif ( end( $stack ) == $tag ) {
|
348
|
+
array_pop( $stack );
|
349
|
+
}
|
350
|
+
}
|
351
|
+
}
|
352
|
+
|
353
|
+
/**
|
354
|
+
* Replaces double line-breaks with paragraph elements.
|
355
|
+
*
|
356
|
+
* A group of regex replaces used to identify text formatted with newlines and
|
357
|
+
* replace double line-breaks with HTML paragraph tags. The remaining
|
358
|
+
* line-breaks after conversion become <<br />> tags, unless $br is set to '0'
|
359
|
+
* or 'false'.
|
360
|
+
*
|
361
|
+
* @since 0.71
|
362
|
+
*
|
363
|
+
* @param string $pee The text which has to be formatted.
|
364
|
+
* @param bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.
|
365
|
+
* @return string Text which has been converted into correct paragraph tags.
|
366
|
+
*/
|
367
|
+
function wpautop($pee, $br = true) {
|
368
|
+
$pre_tags = array();
|
369
|
+
|
370
|
+
if ( trim($pee) === '' )
|
371
|
+
return '';
|
372
|
+
|
373
|
+
$pee = $pee . "\n"; // just to make things a little easier, pad the end
|
374
|
+
|
375
|
+
if ( strpos($pee, '<pre') !== false ) {
|
376
|
+
$pee_parts = explode( '</pre>', $pee );
|
377
|
+
$last_pee = array_pop($pee_parts);
|
378
|
+
$pee = '';
|
379
|
+
$i = 0;
|
380
|
+
|
381
|
+
foreach ( $pee_parts as $pee_part ) {
|
382
|
+
$start = strpos($pee_part, '<pre');
|
383
|
+
|
384
|
+
// Malformed html?
|
385
|
+
if ( $start === false ) {
|
386
|
+
$pee .= $pee_part;
|
387
|
+
continue;
|
388
|
+
}
|
389
|
+
|
390
|
+
$name = "<pre wp-pre-tag-$i></pre>";
|
391
|
+
$pre_tags[$name] = substr( $pee_part, $start ) . '</pre>';
|
392
|
+
|
393
|
+
$pee .= substr( $pee_part, 0, $start ) . $name;
|
394
|
+
$i++;
|
395
|
+
}
|
396
|
+
|
397
|
+
$pee .= $last_pee;
|
398
|
+
}
|
399
|
+
|
400
|
+
$pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
|
401
|
+
// Space things out a little
|
402
|
+
$allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|details|menu|summary)';
|
403
|
+
$pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
|
404
|
+
$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
|
405
|
+
$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
|
406
|
+
|
407
|
+
if ( strpos( $pee, '<option' ) !== false ) {
|
408
|
+
// no P/BR around option
|
409
|
+
$pee = preg_replace( '|\s*<option|', '<option', $pee );
|
410
|
+
$pee = preg_replace( '|</option>\s*|', '</option>', $pee );
|
411
|
+
}
|
412
|
+
|
413
|
+
if ( strpos( $pee, '</object>' ) !== false ) {
|
414
|
+
// no P/BR around param and embed
|
415
|
+
$pee = preg_replace( '|(<object[^>]*>)\s*|', '$1', $pee );
|
416
|
+
$pee = preg_replace( '|\s*</object>|', '</object>', $pee );
|
417
|
+
$pee = preg_replace( '%\s*(</?(?:param|embed)[^>]*>)\s*%', '$1', $pee );
|
418
|
+
}
|
419
|
+
|
420
|
+
if ( strpos( $pee, '<source' ) !== false || strpos( $pee, '<track' ) !== false ) {
|
421
|
+
// no P/BR around source and track
|
422
|
+
$pee = preg_replace( '%([<\[](?:audio|video)[^>\]]*[>\]])\s*%', '$1', $pee );
|
423
|
+
$pee = preg_replace( '%\s*([<\[]/(?:audio|video)[>\]])%', '$1', $pee );
|
424
|
+
$pee = preg_replace( '%\s*(<(?:source|track)[^>]*>)\s*%', '$1', $pee );
|
425
|
+
}
|
426
|
+
|
427
|
+
$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
|
428
|
+
// make paragraphs, including one at the end
|
429
|
+
$pees = preg_split('/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
|
430
|
+
$pee = '';
|
431
|
+
|
432
|
+
foreach ( $pees as $tinkle ) {
|
433
|
+
$pee .= '<p>' . trim($tinkle, "\n") . "</p>\n";
|
434
|
+
}
|
435
|
+
|
436
|
+
$pee = preg_replace('|<p>\s*</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
|
437
|
+
$pee = preg_replace('!<p>([^<]+)</(div|address|form)>!', "<p>$1</p></$2>", $pee);
|
438
|
+
$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
|
439
|
+
$pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
|
440
|
+
$pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
|
441
|
+
$pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
|
442
|
+
$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
|
443
|
+
$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
|
444
|
+
|
445
|
+
if ( $br ) {
|
446
|
+
$pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
|
447
|
+
$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
|
448
|
+
$pee = str_replace('<WPPreserveNewline />', "\n", $pee);
|
449
|
+
}
|
450
|
+
|
451
|
+
$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
|
452
|
+
$pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
|
453
|
+
$pee = preg_replace( "|\n</p>$|", '</p>', $pee );
|
454
|
+
|
455
|
+
if ( !empty($pre_tags) )
|
456
|
+
$pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee);
|
457
|
+
|
458
|
+
return $pee;
|
459
|
+
}
|
460
|
+
|
461
|
+
/**
|
462
|
+
* Newline preservation help function for wpautop
|
463
|
+
*
|
464
|
+
* @since 3.1.0
|
465
|
+
* @access private
|
466
|
+
*
|
467
|
+
* @param array $matches preg_replace_callback matches array
|
468
|
+
* @return string
|
469
|
+
*/
|
470
|
+
function _autop_newline_preservation_helper( $matches ) {
|
471
|
+
return str_replace("\n", "<WPPreserveNewline />", $matches[0]);
|
472
|
+
}
|
473
|
+
|
474
|
+
/**
|
475
|
+
* Don't auto-p wrap shortcodes that stand alone
|
476
|
+
*
|
477
|
+
* Ensures that shortcodes are not wrapped in <<p>>...<</p>>.
|
478
|
+
*
|
479
|
+
* @since 2.9.0
|
480
|
+
*
|
481
|
+
* @param string $pee The content.
|
482
|
+
* @return string The filtered content.
|
483
|
+
*/
|
484
|
+
function shortcode_unautop( $pee ) {
|
485
|
+
global $shortcode_tags;
|
486
|
+
|
487
|
+
if ( empty( $shortcode_tags ) || !is_array( $shortcode_tags ) ) {
|
488
|
+
return $pee;
|
489
|
+
}
|
490
|
+
|
491
|
+
$tagregexp = join( '|', array_map( 'preg_quote', array_keys( $shortcode_tags ) ) );
|
492
|
+
$spaces = wp_spaces_regexp();
|
493
|
+
|
494
|
+
$pattern =
|
495
|
+
'/'
|
496
|
+
. '<p>' // Opening paragraph
|
497
|
+
. '(?:' . $spaces . ')*+' // Optional leading whitespace
|
498
|
+
. '(' // 1: The shortcode
|
499
|
+
. '\\[' // Opening bracket
|
500
|
+
. "($tagregexp)" // 2: Shortcode name
|
501
|
+
. '(?![\\w-])' // Not followed by word character or hyphen
|
502
|
+
// Unroll the loop: Inside the opening shortcode tag
|
503
|
+
. '[^\\]\\/]*' // Not a closing bracket or forward slash
|
504
|
+
. '(?:'
|
505
|
+
. '\\/(?!\\])' // A forward slash not followed by a closing bracket
|
506
|
+
. '[^\\]\\/]*' // Not a closing bracket or forward slash
|
507
|
+
. ')*?'
|
508
|
+
. '(?:'
|
509
|
+
. '\\/\\]' // Self closing tag and closing bracket
|
510
|
+
. '|'
|
511
|
+
. '\\]' // Closing bracket
|
512
|
+
. '(?:' // Unroll the loop: Optionally, anything between the opening and closing shortcode tags
|
513
|
+
. '[^\\[]*+' // Not an opening bracket
|
514
|
+
. '(?:'
|
515
|
+
. '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
|
516
|
+
. '[^\\[]*+' // Not an opening bracket
|
517
|
+
. ')*+'
|
518
|
+
. '\\[\\/\\2\\]' // Closing shortcode tag
|
519
|
+
. ')?'
|
520
|
+
. ')'
|
521
|
+
. ')'
|
522
|
+
. '(?:' . $spaces . ')*+' // optional trailing whitespace
|
523
|
+
. '<\\/p>' // closing paragraph
|
524
|
+
. '/s';
|
525
|
+
|
526
|
+
return preg_replace( $pattern, '$1', $pee );
|
527
|
+
}
|
528
|
+
|
529
|
+
/**
|
530
|
+
* Checks to see if a string is utf8 encoded.
|
531
|
+
*
|
532
|
+
* NOTE: This function checks for 5-Byte sequences, UTF8
|
533
|
+
* has Bytes Sequences with a maximum length of 4.
|
534
|
+
*
|
535
|
+
* @author bmorel at ssi dot fr (modified)
|
536
|
+
* @since 1.2.1
|
537
|
+
*
|
538
|
+
* @param string $str The string to be checked
|
539
|
+
* @return bool True if $str fits a UTF-8 model, false otherwise.
|
540
|
+
*/
|
541
|
+
function seems_utf8($str) {
|
542
|
+
mbstring_binary_safe_encoding();
|
543
|
+
$length = strlen($str);
|
544
|
+
reset_mbstring_encoding();
|
545
|
+
for ($i=0; $i < $length; $i++) {
|
546
|
+
$c = ord($str[$i]);
|
547
|
+
if ($c < 0x80) $n = 0; # 0bbbbbbb
|
548
|
+
elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
|
549
|
+
elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
|
550
|
+
elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
|
551
|
+
elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
|
552
|
+
elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
|
553
|
+
else return false; # Does not match any model
|
554
|
+
for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
|
555
|
+
if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
|
556
|
+
return false;
|
557
|
+
}
|
558
|
+
}
|
559
|
+
return true;
|
560
|
+
}
|
561
|
+
|
562
|
+
/**
|
563
|
+
* Converts a number of special characters into their HTML entities.
|
564
|
+
*
|
565
|
+
* Specifically deals with: &, <, >, ", and '.
|
566
|
+
*
|
567
|
+
* $quote_style can be set to ENT_COMPAT to encode " to
|
568
|
+
* ", or ENT_QUOTES to do both. Default is ENT_NOQUOTES where no quotes are encoded.
|
569
|
+
*
|
570
|
+
* @since 1.2.2
|
571
|
+
* @access private
|
572
|
+
*
|
573
|
+
* @param string $string The text which is to be encoded.
|
574
|
+
* @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.
|
575
|
+
* @param string $charset Optional. The character encoding of the string. Default is false.
|
576
|
+
* @param boolean $double_encode Optional. Whether to encode existing html entities. Default is false.
|
577
|
+
* @return string The encoded text with HTML entities.
|
578
|
+
*/
|
579
|
+
function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
|
580
|
+
$string = (string) $string;
|
581
|
+
|
582
|
+
if ( 0 === strlen( $string ) )
|
583
|
+
return '';
|
584
|
+
|
585
|
+
// Don't bother if there are no specialchars - saves some processing
|
586
|
+
if ( ! preg_match( '/[&<>"\']/', $string ) )
|
587
|
+
return $string;
|
588
|
+
|
589
|
+
// Account for the previous behaviour of the function when the $quote_style is not an accepted value
|
590
|
+
if ( empty( $quote_style ) )
|
591
|
+
$quote_style = ENT_NOQUOTES;
|
592
|
+
elseif ( ! in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) )
|
593
|
+
$quote_style = ENT_QUOTES;
|
594
|
+
|
595
|
+
// Store the site charset as a static to avoid multiple calls to wp_load_alloptions()
|
596
|
+
if ( ! $charset ) {
|
597
|
+
static $_charset;
|
598
|
+
if ( ! isset( $_charset ) ) {
|
599
|
+
$alloptions = wp_load_alloptions();
|
600
|
+
$_charset = isset( $alloptions['blog_charset'] ) ? $alloptions['blog_charset'] : '';
|
601
|
+
}
|
602
|
+
$charset = $_charset;
|
603
|
+
}
|
604
|
+
|
605
|
+
if ( in_array( $charset, array( 'utf8', 'utf-8', 'UTF8' ) ) )
|
606
|
+
$charset = 'UTF-8';
|
607
|
+
|
608
|
+
$_quote_style = $quote_style;
|
609
|
+
|
610
|
+
if ( $quote_style === 'double' ) {
|
611
|
+
$quote_style = ENT_COMPAT;
|
612
|
+
$_quote_style = ENT_COMPAT;
|
613
|
+
} elseif ( $quote_style === 'single' ) {
|
614
|
+
$quote_style = ENT_NOQUOTES;
|
615
|
+
}
|
616
|
+
|
617
|
+
// Handle double encoding ourselves
|
618
|
+
if ( $double_encode ) {
|
619
|
+
$string = @htmlspecialchars( $string, $quote_style, $charset );
|
620
|
+
} else {
|
621
|
+
// Decode & into &
|
622
|
+
$string = wp_specialchars_decode( $string, $_quote_style );
|
623
|
+
|
624
|
+
// Guarantee every &entity; is valid or re-encode the &
|
625
|
+
$string = wp_kses_normalize_entities( $string );
|
626
|
+
|
627
|
+
// Now re-encode everything except &entity;
|
628
|
+
$string = preg_split( '/(&#?x?[0-9a-z]+;)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE );
|
629
|
+
|
630
|
+
for ( $i = 0; $i < count( $string ); $i += 2 )
|
631
|
+
$string[$i] = @htmlspecialchars( $string[$i], $quote_style, $charset );
|
632
|
+
|
633
|
+
$string = implode( '', $string );
|
634
|
+
}
|
635
|
+
|
636
|
+
// Backwards compatibility
|
637
|
+
if ( 'single' === $_quote_style )
|
638
|
+
$string = str_replace( "'", ''', $string );
|
639
|
+
|
640
|
+
return $string;
|
641
|
+
}
|
642
|
+
|
643
|
+
/**
|
644
|
+
* Converts a number of HTML entities into their special characters.
|
645
|
+
*
|
646
|
+
* Specifically deals with: &, <, >, ", and '.
|
647
|
+
*
|
648
|
+
* $quote_style can be set to ENT_COMPAT to decode " entities,
|
649
|
+
* or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded.
|
650
|
+
*
|
651
|
+
* @since 2.8.0
|
652
|
+
*
|
653
|
+
* @param string $string The text which is to be decoded.
|
654
|
+
* @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.
|
655
|
+
* @return string The decoded text without HTML entities.
|
656
|
+
*/
|
657
|
+
function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
|
658
|
+
$string = (string) $string;
|
659
|
+
|
660
|
+
if ( 0 === strlen( $string ) ) {
|
661
|
+
return '';
|
662
|
+
}
|
663
|
+
|
664
|
+
// Don't bother if there are no entities - saves a lot of processing
|
665
|
+
if ( strpos( $string, '&' ) === false ) {
|
666
|
+
return $string;
|
667
|
+
}
|
668
|
+
|
669
|
+
// Match the previous behaviour of _wp_specialchars() when the $quote_style is not an accepted value
|
670
|
+
if ( empty( $quote_style ) ) {
|
671
|
+
$quote_style = ENT_NOQUOTES;
|
672
|
+
} elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
|
673
|
+
$quote_style = ENT_QUOTES;
|
674
|
+
}
|
675
|
+
|
676
|
+
// More complete than get_html_translation_table( HTML_SPECIALCHARS )
|
677
|
+
$single = array( ''' => '\'', ''' => '\'' );
|
678
|
+
$single_preg = array( '/�*39;/' => ''', '/�*27;/i' => ''' );
|
679
|
+
$double = array( '"' => '"', '"' => '"', '"' => '"' );
|
680
|
+
$double_preg = array( '/�*34;/' => '"', '/�*22;/i' => '"' );
|
681
|
+
$others = array( '<' => '<', '<' => '<', '>' => '>', '>' => '>', '&' => '&', '&' => '&', '&' => '&' );
|
682
|
+
$others_preg = array( '/�*60;/' => '<', '/�*62;/' => '>', '/�*38;/' => '&', '/�*26;/i' => '&' );
|
683
|
+
|
684
|
+
if ( $quote_style === ENT_QUOTES ) {
|
685
|
+
$translation = array_merge( $single, $double, $others );
|
686
|
+
$translation_preg = array_merge( $single_preg, $double_preg, $others_preg );
|
687
|
+
} elseif ( $quote_style === ENT_COMPAT || $quote_style === 'double' ) {
|
688
|
+
$translation = array_merge( $double, $others );
|
689
|
+
$translation_preg = array_merge( $double_preg, $others_preg );
|
690
|
+
} elseif ( $quote_style === 'single' ) {
|
691
|
+
$translation = array_merge( $single, $others );
|
692
|
+
$translation_preg = array_merge( $single_preg, $others_preg );
|
693
|
+
} elseif ( $quote_style === ENT_NOQUOTES ) {
|
694
|
+
$translation = $others;
|
695
|
+
$translation_preg = $others_preg;
|
696
|
+
}
|
697
|
+
|
698
|
+
// Remove zero padding on numeric entities
|
699
|
+
$string = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $string );
|
700
|
+
|
701
|
+
// Replace characters according to translation table
|
702
|
+
return strtr( $string, $translation );
|
703
|
+
}
|
704
|
+
|
705
|
+
/**
|
706
|
+
* Checks for invalid UTF8 in a string.
|
707
|
+
*
|
708
|
+
* @since 2.8.0
|
709
|
+
*
|
710
|
+
* @param string $string The text which is to be checked.
|
711
|
+
* @param boolean $strip Optional. Whether to attempt to strip out invalid UTF8. Default is false.
|
712
|
+
* @return string The checked text.
|
713
|
+
*/
|
714
|
+
function wp_check_invalid_utf8( $string, $strip = false ) {
|
715
|
+
$string = (string) $string;
|
716
|
+
|
717
|
+
if ( 0 === strlen( $string ) ) {
|
718
|
+
return '';
|
719
|
+
}
|
720
|
+
|
721
|
+
// Store the site charset as a static to avoid multiple calls to get_option()
|
722
|
+
static $is_utf8;
|
723
|
+
if ( !isset( $is_utf8 ) ) {
|
724
|
+
$is_utf8 = in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) );
|
725
|
+
}
|
726
|
+
if ( !$is_utf8 ) {
|
727
|
+
return $string;
|
728
|
+
}
|
729
|
+
|
730
|
+
// Check for support for utf8 in the installed PCRE library once and store the result in a static
|
731
|
+
static $utf8_pcre;
|
732
|
+
if ( !isset( $utf8_pcre ) ) {
|
733
|
+
$utf8_pcre = @preg_match( '/^./u', 'a' );
|
734
|
+
}
|
735
|
+
// We can't demand utf8 in the PCRE installation, so just return the string in those cases
|
736
|
+
if ( !$utf8_pcre ) {
|
737
|
+
return $string;
|
738
|
+
}
|
739
|
+
|
740
|
+
// preg_match fails when it encounters invalid UTF8 in $string
|
741
|
+
if ( 1 === @preg_match( '/^./us', $string ) ) {
|
742
|
+
return $string;
|
743
|
+
}
|
744
|
+
|
745
|
+
// Attempt to strip the bad chars if requested (not recommended)
|
746
|
+
if ( $strip && function_exists( 'iconv' ) ) {
|
747
|
+
return iconv( 'utf-8', 'utf-8', $string );
|
748
|
+
}
|
749
|
+
|
750
|
+
return '';
|
751
|
+
}
|
752
|
+
|
753
|
+
/**
|
754
|
+
* Encode the Unicode values to be used in the URI.
|
755
|
+
*
|
756
|
+
* @since 1.5.0
|
757
|
+
*
|
758
|
+
* @param string $utf8_string
|
759
|
+
* @param int $length Max length of the string
|
760
|
+
* @return string String with Unicode encoded for URI.
|
761
|
+
*/
|
762
|
+
function utf8_uri_encode( $utf8_string, $length = 0 ) {
|
763
|
+
$unicode = '';
|
764
|
+
$values = array();
|
765
|
+
$num_octets = 1;
|
766
|
+
$unicode_length = 0;
|
767
|
+
|
768
|
+
mbstring_binary_safe_encoding();
|
769
|
+
$string_length = strlen( $utf8_string );
|
770
|
+
reset_mbstring_encoding();
|
771
|
+
|
772
|
+
for ($i = 0; $i < $string_length; $i++ ) {
|
773
|
+
|
774
|
+
$value = ord( $utf8_string[ $i ] );
|
775
|
+
|
776
|
+
if ( $value < 128 ) {
|
777
|
+
if ( $length && ( $unicode_length >= $length ) )
|
778
|
+
break;
|
779
|
+
$unicode .= chr($value);
|
780
|
+
$unicode_length++;
|
781
|
+
} else {
|
782
|
+
if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3;
|
783
|
+
|
784
|
+
$values[] = $value;
|
785
|
+
|
786
|
+
if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length )
|
787
|
+
break;
|
788
|
+
if ( count( $values ) == $num_octets ) {
|
789
|
+
if ($num_octets == 3) {
|
790
|
+
$unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]);
|
791
|
+
$unicode_length += 9;
|
792
|
+
} else {
|
793
|
+
$unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]);
|
794
|
+
$unicode_length += 6;
|
795
|
+
}
|
796
|
+
|
797
|
+
$values = array();
|
798
|
+
$num_octets = 1;
|
799
|
+
}
|
800
|
+
}
|
801
|
+
}
|
802
|
+
|
803
|
+
return $unicode;
|
804
|
+
}
|
805
|
+
|
806
|
+
/**
|
807
|
+
* Converts all accent characters to ASCII characters.
|
808
|
+
*
|
809
|
+
* If there are no accent characters, then the string given is just returned.
|
810
|
+
*
|
811
|
+
* @since 1.2.1
|
812
|
+
*
|
813
|
+
* @param string $string Text that might have accent characters
|
814
|
+
* @return string Filtered string with replaced "nice" characters.
|
815
|
+
*/
|
816
|
+
function remove_accents($string) {
|
817
|
+
if ( !preg_match('/[\x80-\xff]/', $string) )
|
818
|
+
return $string;
|
819
|
+
|
820
|
+
if (seems_utf8($string)) {
|
821
|
+
$chars = array(
|
822
|
+
// Decompositions for Latin-1 Supplement
|
823
|
+
chr(194).chr(170) => 'a', chr(194).chr(186) => 'o',
|
824
|
+
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
|
825
|
+
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
|
826
|
+
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
|
827
|
+
chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
|
828
|
+
chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
|
829
|
+
chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
|
830
|
+
chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
|
831
|
+
chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
|
832
|
+
chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
|
833
|
+
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
|
834
|
+
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
|
835
|
+
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
|
836
|
+
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
|
837
|
+
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
|
838
|
+
chr(195).chr(158) => 'TH',chr(195).chr(159) => 's',
|
839
|
+
chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
|
840
|
+
chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
|
841
|
+
chr(195).chr(164) => 'a', chr(195).chr(165) => 'a',
|
842
|
+
chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
|
843
|
+
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
|
844
|
+
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
|
845
|
+
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
|
846
|
+
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
|
847
|
+
chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
|
848
|
+
chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
|
849
|
+
chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
|
850
|
+
chr(195).chr(182) => 'o', chr(195).chr(184) => 'o',
|
851
|
+
chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
|
852
|
+
chr(195).chr(187) => 'u', chr(195).chr(188) => 'u',
|
853
|
+
chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
|
854
|
+
chr(195).chr(191) => 'y', chr(195).chr(152) => 'O',
|
855
|
+
// Decompositions for Latin Extended-A
|
856
|
+
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
|
857
|
+
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
|
858
|
+
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
|
859
|
+
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
|
860
|
+
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
|
861
|
+
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
|
862
|
+
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
|
863
|
+
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
|
864
|
+
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
|
865
|
+
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
|
866
|
+
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
|
867
|
+
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
|
868
|
+
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
|
869
|
+
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
|
870
|
+
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
|
871
|
+
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
|
872
|
+
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
|
873
|
+
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
|
874
|
+
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
|
875
|
+
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
|
876
|
+
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
|
877
|
+
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
|
878
|
+
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
|
879
|
+
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
|
880
|
+
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
|
881
|
+
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
|
882
|
+
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
|
883
|
+
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
|
884
|
+
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
|
885
|
+
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
|
886
|
+
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
|
887
|
+
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
|
888
|
+
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
|
889
|
+
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
|
890
|
+
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
|
891
|
+
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
|
892
|
+
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
|
893
|
+
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
|
894
|
+
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
|
895
|
+
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
|
896
|
+
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
|
897
|
+
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
|
898
|
+
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
|
899
|
+
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
|
900
|
+
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
|
901
|
+
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
|
902
|
+
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
|
903
|
+
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
|
904
|
+
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
|
905
|
+
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
|
906
|
+
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
|
907
|
+
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
|
908
|
+
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
|
909
|
+
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
|
910
|
+
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
|
911
|
+
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
|
912
|
+
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
|
913
|
+
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
|
914
|
+
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
|
915
|
+
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
|
916
|
+
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
|
917
|
+
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
|
918
|
+
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
|
919
|
+
chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
|
920
|
+
// Decompositions for Latin Extended-B
|
921
|
+
chr(200).chr(152) => 'S', chr(200).chr(153) => 's',
|
922
|
+
chr(200).chr(154) => 'T', chr(200).chr(155) => 't',
|
923
|
+
// Euro Sign
|
924
|
+
chr(226).chr(130).chr(172) => 'E',
|
925
|
+
// GBP (Pound) Sign
|
926
|
+
chr(194).chr(163) => '',
|
927
|
+
// Vowels with diacritic (Vietnamese)
|
928
|
+
// unmarked
|
929
|
+
chr(198).chr(160) => 'O', chr(198).chr(161) => 'o',
|
930
|
+
chr(198).chr(175) => 'U', chr(198).chr(176) => 'u',
|
931
|
+
// grave accent
|
932
|
+
chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a',
|
933
|
+
chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a',
|
934
|
+
chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e',
|
935
|
+
chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o',
|
936
|
+
chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o',
|
937
|
+
chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u',
|
938
|
+
chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y',
|
939
|
+
// hook
|
940
|
+
chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a',
|
941
|
+
chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a',
|
942
|
+
chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a',
|
943
|
+
chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e',
|
944
|
+
chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e',
|
945
|
+
chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i',
|
946
|
+
chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o',
|
947
|
+
chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o',
|
948
|
+
chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o',
|
949
|
+
chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u',
|
950
|
+
chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u',
|
951
|
+
chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y',
|
952
|
+
// tilde
|
953
|
+
chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a',
|
954
|
+
chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a',
|
955
|
+
chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e',
|
956
|
+
chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e',
|
957
|
+
chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o',
|
958
|
+
chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o',
|
959
|
+
chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u',
|
960
|
+
chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y',
|
961
|
+
// acute accent
|
962
|
+
chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a',
|
963
|
+
chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a',
|
964
|
+
chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e',
|
965
|
+
chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o',
|
966
|
+
chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o',
|
967
|
+
chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u',
|
968
|
+
// dot below
|
969
|
+
chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a',
|
970
|
+
chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a',
|
971
|
+
chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a',
|
972
|
+
chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e',
|
973
|
+
chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e',
|
974
|
+
chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i',
|
975
|
+
chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o',
|
976
|
+
chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o',
|
977
|
+
chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o',
|
978
|
+
chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
|
979
|
+
chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
|
980
|
+
chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
|
981
|
+
// Vowels with diacritic (Chinese, Hanyu Pinyin)
|
982
|
+
chr(201).chr(145) => 'a',
|
983
|
+
// macron
|
984
|
+
chr(199).chr(149) => 'U', chr(199).chr(150) => 'u',
|
985
|
+
// acute accent
|
986
|
+
chr(199).chr(151) => 'U', chr(199).chr(152) => 'u',
|
987
|
+
// caron
|
988
|
+
chr(199).chr(141) => 'A', chr(199).chr(142) => 'a',
|
989
|
+
chr(199).chr(143) => 'I', chr(199).chr(144) => 'i',
|
990
|
+
chr(199).chr(145) => 'O', chr(199).chr(146) => 'o',
|
991
|
+
chr(199).chr(147) => 'U', chr(199).chr(148) => 'u',
|
992
|
+
chr(199).chr(153) => 'U', chr(199).chr(154) => 'u',
|
993
|
+
// grave accent
|
994
|
+
chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
|
995
|
+
);
|
996
|
+
|
997
|
+
// Used for locale-specific rules
|
998
|
+
$locale = get_locale();
|
999
|
+
|
1000
|
+
if ( 'de_DE' == $locale ) {
|
1001
|
+
$chars[ chr(195).chr(132) ] = 'Ae';
|
1002
|
+
$chars[ chr(195).chr(164) ] = 'ae';
|
1003
|
+
$chars[ chr(195).chr(150) ] = 'Oe';
|
1004
|
+
$chars[ chr(195).chr(182) ] = 'oe';
|
1005
|
+
$chars[ chr(195).chr(156) ] = 'Ue';
|
1006
|
+
$chars[ chr(195).chr(188) ] = 'ue';
|
1007
|
+
$chars[ chr(195).chr(159) ] = 'ss';
|
1008
|
+
} elseif ( 'da_DK' === $locale ) {
|
1009
|
+
$chars[ chr(195).chr(134) ] = 'Ae';
|
1010
|
+
$chars[ chr(195).chr(166) ] = 'ae';
|
1011
|
+
$chars[ chr(195).chr(152) ] = 'Oe';
|
1012
|
+
$chars[ chr(195).chr(184) ] = 'oe';
|
1013
|
+
$chars[ chr(195).chr(133) ] = 'Aa';
|
1014
|
+
$chars[ chr(195).chr(165) ] = 'aa';
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
$string = strtr($string, $chars);
|
1018
|
+
} else {
|
1019
|
+
// Assume ISO-8859-1 if not UTF-8
|
1020
|
+
$chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
|
1021
|
+
.chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
|
1022
|
+
.chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
|
1023
|
+
.chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
|
1024
|
+
.chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
|
1025
|
+
.chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
|
1026
|
+
.chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
|
1027
|
+
.chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
|
1028
|
+
.chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
|
1029
|
+
.chr(252).chr(253).chr(255);
|
1030
|
+
|
1031
|
+
$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
|
1032
|
+
|
1033
|
+
$string = strtr($string, $chars['in'], $chars['out']);
|
1034
|
+
$double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
|
1035
|
+
$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
|
1036
|
+
$string = str_replace($double_chars['in'], $double_chars['out'], $string);
|
1037
|
+
}
|
1038
|
+
|
1039
|
+
return $string;
|
1040
|
+
}
|
1041
|
+
|
1042
|
+
/**
|
1043
|
+
* Sanitizes a filename, replacing whitespace with dashes.
|
1044
|
+
*
|
1045
|
+
* Removes special characters that are illegal in filenames on certain
|
1046
|
+
* operating systems and special characters requiring special escaping
|
1047
|
+
* to manipulate at the command line. Replaces spaces and consecutive
|
1048
|
+
* dashes with a single dash. Trims period, dash and underscore from beginning
|
1049
|
+
* and end of filename.
|
1050
|
+
*
|
1051
|
+
* @since 2.1.0
|
1052
|
+
*
|
1053
|
+
* @param string $filename The filename to be sanitized
|
1054
|
+
* @return string The sanitized filename
|
1055
|
+
*/
|
1056
|
+
function sanitize_file_name( $filename ) {
|
1057
|
+
$filename_raw = $filename;
|
1058
|
+
$special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", chr(0));
|
1059
|
+
/**
|
1060
|
+
* Filter the list of characters to remove from a filename.
|
1061
|
+
*
|
1062
|
+
* @since 2.8.0
|
1063
|
+
*
|
1064
|
+
* @param array $special_chars Characters to remove.
|
1065
|
+
* @param string $filename_raw Filename as it was passed into sanitize_file_name().
|
1066
|
+
*/
|
1067
|
+
$special_chars = apply_filters( 'sanitize_file_name_chars', $special_chars, $filename_raw );
|
1068
|
+
$filename = preg_replace( "#\x{00a0}#siu", ' ', $filename );
|
1069
|
+
$filename = str_replace( $special_chars, '', $filename );
|
1070
|
+
$filename = str_replace( array( '%20', '+' ), '-', $filename );
|
1071
|
+
$filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
|
1072
|
+
$filename = trim( $filename, '.-_' );
|
1073
|
+
|
1074
|
+
// Split the filename into a base and extension[s]
|
1075
|
+
$parts = explode('.', $filename);
|
1076
|
+
|
1077
|
+
// Return if only one extension
|
1078
|
+
if ( count( $parts ) <= 2 ) {
|
1079
|
+
/**
|
1080
|
+
* Filter a sanitized filename string.
|
1081
|
+
*
|
1082
|
+
* @since 2.8.0
|
1083
|
+
*
|
1084
|
+
* @param string $filename Sanitized filename.
|
1085
|
+
* @param string $filename_raw The filename prior to sanitization.
|
1086
|
+
*/
|
1087
|
+
return apply_filters( 'sanitize_file_name', $filename, $filename_raw );
|
1088
|
+
}
|
1089
|
+
|
1090
|
+
// Process multiple extensions
|
1091
|
+
$filename = array_shift($parts);
|
1092
|
+
$extension = array_pop($parts);
|
1093
|
+
$mimes = get_allowed_mime_types();
|
1094
|
+
|
1095
|
+
/*
|
1096
|
+
* Loop over any intermediate extensions. Postfix them with a trailing underscore
|
1097
|
+
* if they are a 2 - 5 character long alpha string not in the extension whitelist.
|
1098
|
+
*/
|
1099
|
+
foreach ( (array) $parts as $part) {
|
1100
|
+
$filename .= '.' . $part;
|
1101
|
+
|
1102
|
+
if ( preg_match("/^[a-zA-Z]{2,5}\d?$/", $part) ) {
|
1103
|
+
$allowed = false;
|
1104
|
+
foreach ( $mimes as $ext_preg => $mime_match ) {
|
1105
|
+
$ext_preg = '!^(' . $ext_preg . ')$!i';
|
1106
|
+
if ( preg_match( $ext_preg, $part ) ) {
|
1107
|
+
$allowed = true;
|
1108
|
+
break;
|
1109
|
+
}
|
1110
|
+
}
|
1111
|
+
if ( !$allowed )
|
1112
|
+
$filename .= '_';
|
1113
|
+
}
|
1114
|
+
}
|
1115
|
+
$filename .= '.' . $extension;
|
1116
|
+
/** This filter is documented in wp-includes/formatting.php */
|
1117
|
+
return apply_filters('sanitize_file_name', $filename, $filename_raw);
|
1118
|
+
}
|
1119
|
+
|
1120
|
+
/**
|
1121
|
+
* Sanitizes a username, stripping out unsafe characters.
|
1122
|
+
*
|
1123
|
+
* Removes tags, octets, entities, and if strict is enabled, will only keep
|
1124
|
+
* alphanumeric, _, space, ., -, @. After sanitizing, it passes the username,
|
1125
|
+
* raw username (the username in the parameter), and the value of $strict as
|
1126
|
+
* parameters for the 'sanitize_user' filter.
|
1127
|
+
*
|
1128
|
+
* @since 2.0.0
|
1129
|
+
*
|
1130
|
+
* @param string $username The username to be sanitized.
|
1131
|
+
* @param bool $strict If set limits $username to specific characters. Default false.
|
1132
|
+
* @return string The sanitized username, after passing through filters.
|
1133
|
+
*/
|
1134
|
+
function sanitize_user( $username, $strict = false ) {
|
1135
|
+
$raw_username = $username;
|
1136
|
+
$username = wp_strip_all_tags( $username );
|
1137
|
+
$username = remove_accents( $username );
|
1138
|
+
// Kill octets
|
1139
|
+
$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
|
1140
|
+
$username = preg_replace( '/&.+?;/', '', $username ); // Kill entities
|
1141
|
+
|
1142
|
+
// If strict, reduce to ASCII for max portability.
|
1143
|
+
if ( $strict )
|
1144
|
+
$username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );
|
1145
|
+
|
1146
|
+
$username = trim( $username );
|
1147
|
+
// Consolidate contiguous whitespace
|
1148
|
+
$username = preg_replace( '|\s+|', ' ', $username );
|
1149
|
+
|
1150
|
+
/**
|
1151
|
+
* Filter a sanitized username string.
|
1152
|
+
*
|
1153
|
+
* @since 2.0.1
|
1154
|
+
*
|
1155
|
+
* @param string $username Sanitized username.
|
1156
|
+
* @param string $raw_username The username prior to sanitization.
|
1157
|
+
* @param bool $strict Whether to limit the sanitization to specific characters. Default false.
|
1158
|
+
*/
|
1159
|
+
return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
|
1160
|
+
}
|
1161
|
+
|
1162
|
+
/**
|
1163
|
+
* Sanitizes a string key.
|
1164
|
+
*
|
1165
|
+
* Keys are used as internal identifiers. Lowercase alphanumeric characters, dashes and underscores are allowed.
|
1166
|
+
*
|
1167
|
+
* @since 3.0.0
|
1168
|
+
*
|
1169
|
+
* @param string $key String key
|
1170
|
+
* @return string Sanitized key
|
1171
|
+
*/
|
1172
|
+
function sanitize_key( $key ) {
|
1173
|
+
$raw_key = $key;
|
1174
|
+
$key = strtolower( $key );
|
1175
|
+
$key = preg_replace( '/[^a-z0-9_\-]/', '', $key );
|
1176
|
+
|
1177
|
+
/**
|
1178
|
+
* Filter a sanitized key string.
|
1179
|
+
*
|
1180
|
+
* @since 3.0.0
|
1181
|
+
*
|
1182
|
+
* @param string $key Sanitized key.
|
1183
|
+
* @param string $raw_key The key prior to sanitization.
|
1184
|
+
*/
|
1185
|
+
return apply_filters( 'sanitize_key', $key, $raw_key );
|
1186
|
+
}
|
1187
|
+
|
1188
|
+
/**
|
1189
|
+
* Sanitizes a title, or returns a fallback title.
|
1190
|
+
*
|
1191
|
+
* Specifically, HTML and PHP tags are stripped. Further actions can be added
|
1192
|
+
* via the plugin API. If $title is empty and $fallback_title is set, the latter
|
1193
|
+
* will be used.
|
1194
|
+
*
|
1195
|
+
* @since 1.0.0
|
1196
|
+
*
|
1197
|
+
* @param string $title The string to be sanitized.
|
1198
|
+
* @param string $fallback_title Optional. A title to use if $title is empty.
|
1199
|
+
* @param string $context Optional. The operation for which the string is sanitized
|
1200
|
+
* @return string The sanitized string.
|
1201
|
+
*/
|
1202
|
+
function sanitize_title( $title, $fallback_title = '', $context = 'save' ) {
|
1203
|
+
$raw_title = $title;
|
1204
|
+
|
1205
|
+
if ( 'save' == $context )
|
1206
|
+
$title = remove_accents($title);
|
1207
|
+
|
1208
|
+
/**
|
1209
|
+
* Filter a sanitized title string.
|
1210
|
+
*
|
1211
|
+
* @since 1.2.0
|
1212
|
+
*
|
1213
|
+
* @param string $title Sanitized title.
|
1214
|
+
* @param string $raw_title The title prior to sanitization.
|
1215
|
+
* @param string $context The context for which the title is being sanitized.
|
1216
|
+
*/
|
1217
|
+
$title = apply_filters( 'sanitize_title', $title, $raw_title, $context );
|
1218
|
+
|
1219
|
+
if ( '' === $title || false === $title )
|
1220
|
+
$title = $fallback_title;
|
1221
|
+
|
1222
|
+
return $title;
|
1223
|
+
}
|
1224
|
+
|
1225
|
+
/**
|
1226
|
+
* Sanitizes a title with the 'query' context.
|
1227
|
+
*
|
1228
|
+
* Used for querying the database for a value from URL.
|
1229
|
+
*
|
1230
|
+
* @since 3.1.0
|
1231
|
+
* @uses sanitize_title()
|
1232
|
+
*
|
1233
|
+
* @param string $title The string to be sanitized.
|
1234
|
+
* @return string The sanitized string.
|
1235
|
+
*/
|
1236
|
+
function sanitize_title_for_query( $title ) {
|
1237
|
+
return sanitize_title( $title, '', 'query' );
|
1238
|
+
}
|
1239
|
+
|
1240
|
+
/**
|
1241
|
+
* Sanitizes a title, replacing whitespace and a few other characters with dashes.
|
1242
|
+
*
|
1243
|
+
* Limits the output to alphanumeric characters, underscore (_) and dash (-).
|
1244
|
+
* Whitespace becomes a dash.
|
1245
|
+
*
|
1246
|
+
* @since 1.2.0
|
1247
|
+
*
|
1248
|
+
* @param string $title The title to be sanitized.
|
1249
|
+
* @param string $raw_title Optional. Not used.
|
1250
|
+
* @param string $context Optional. The operation for which the string is sanitized.
|
1251
|
+
* @return string The sanitized title.
|
1252
|
+
*/
|
1253
|
+
function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
|
1254
|
+
$title = strip_tags($title);
|
1255
|
+
// Preserve escaped octets.
|
1256
|
+
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
|
1257
|
+
// Remove percent signs that are not part of an octet.
|
1258
|
+
$title = str_replace('%', '', $title);
|
1259
|
+
// Restore octets.
|
1260
|
+
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
|
1261
|
+
|
1262
|
+
if (seems_utf8($title)) {
|
1263
|
+
if (function_exists('mb_strtolower')) {
|
1264
|
+
$title = mb_strtolower($title, 'UTF-8');
|
1265
|
+
}
|
1266
|
+
$title = utf8_uri_encode($title, 200);
|
1267
|
+
}
|
1268
|
+
|
1269
|
+
$title = strtolower($title);
|
1270
|
+
$title = preg_replace('/&.+?;/', '', $title); // kill entities
|
1271
|
+
$title = str_replace('.', '-', $title);
|
1272
|
+
|
1273
|
+
if ( 'save' == $context ) {
|
1274
|
+
// Convert nbsp, ndash and mdash to hyphens
|
1275
|
+
$title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
|
1276
|
+
|
1277
|
+
// Strip these characters entirely
|
1278
|
+
$title = str_replace( array(
|
1279
|
+
// iexcl and iquest
|
1280
|
+
'%c2%a1', '%c2%bf',
|
1281
|
+
// angle quotes
|
1282
|
+
'%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
|
1283
|
+
// curly quotes
|
1284
|
+
'%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
|
1285
|
+
'%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
|
1286
|
+
// copy, reg, deg, hellip and trade
|
1287
|
+
'%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
|
1288
|
+
// acute accents
|
1289
|
+
'%c2%b4', '%cb%8a', '%cc%81', '%cd%81',
|
1290
|
+
// grave accent, macron, caron
|
1291
|
+
'%cc%80', '%cc%84', '%cc%8c',
|
1292
|
+
), '', $title );
|
1293
|
+
|
1294
|
+
// Convert times to x
|
1295
|
+
$title = str_replace( '%c3%97', 'x', $title );
|
1296
|
+
}
|
1297
|
+
|
1298
|
+
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
|
1299
|
+
$title = preg_replace('/\s+/', '-', $title);
|
1300
|
+
$title = preg_replace('|-+|', '-', $title);
|
1301
|
+
$title = trim($title, '-');
|
1302
|
+
|
1303
|
+
return $title;
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
/**
|
1307
|
+
* Ensures a string is a valid SQL order by clause.
|
1308
|
+
*
|
1309
|
+
* Accepts one or more columns, with or without ASC/DESC, and also accepts
|
1310
|
+
* RAND().
|
1311
|
+
*
|
1312
|
+
* @since 2.5.1
|
1313
|
+
*
|
1314
|
+
* @param string $orderby Order by string to be checked.
|
1315
|
+
* @return string|bool Returns the order by clause if it is a match, false otherwise.
|
1316
|
+
*/
|
1317
|
+
function sanitize_sql_orderby( $orderby ){
|
1318
|
+
preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
|
1319
|
+
if ( !$obmatches )
|
1320
|
+
return false;
|
1321
|
+
return $orderby;
|
1322
|
+
}
|
1323
|
+
|
1324
|
+
/**
|
1325
|
+
* Sanitizes an HTML classname to ensure it only contains valid characters.
|
1326
|
+
*
|
1327
|
+
* Strips the string down to A-Z,a-z,0-9,_,-. If this results in an empty
|
1328
|
+
* string then it will return the alternative value supplied.
|
1329
|
+
*
|
1330
|
+
* @todo Expand to support the full range of CDATA that a class attribute can contain.
|
1331
|
+
*
|
1332
|
+
* @since 2.8.0
|
1333
|
+
*
|
1334
|
+
* @param string $class The classname to be sanitized
|
1335
|
+
* @param string $fallback Optional. The value to return if the sanitization ends up as an empty string.
|
1336
|
+
* Defaults to an empty string.
|
1337
|
+
* @return string The sanitized value
|
1338
|
+
*/
|
1339
|
+
function sanitize_html_class( $class, $fallback = '' ) {
|
1340
|
+
//Strip out any % encoded octets
|
1341
|
+
$sanitized = preg_replace( '|%[a-fA-F0-9][a-fA-F0-9]|', '', $class );
|
1342
|
+
|
1343
|
+
//Limit to A-Z,a-z,0-9,_,-
|
1344
|
+
$sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $sanitized );
|
1345
|
+
|
1346
|
+
if ( '' == $sanitized )
|
1347
|
+
$sanitized = $fallback;
|
1348
|
+
|
1349
|
+
/**
|
1350
|
+
* Filter a sanitized HTML class string.
|
1351
|
+
*
|
1352
|
+
* @since 2.8.0
|
1353
|
+
*
|
1354
|
+
* @param string $sanitized The sanitized HTML class.
|
1355
|
+
* @param string $class HTML class before sanitization.
|
1356
|
+
* @param string $fallback The fallback string.
|
1357
|
+
*/
|
1358
|
+
return apply_filters( 'sanitize_html_class', $sanitized, $class, $fallback );
|
1359
|
+
}
|
1360
|
+
|
1361
|
+
/**
|
1362
|
+
* Converts a number of characters from a string.
|
1363
|
+
*
|
1364
|
+
* Metadata tags <<title>> and <<category>> are removed, <<br>> and <<hr>> are
|
1365
|
+
* converted into correct XHTML and Unicode characters are converted to the
|
1366
|
+
* valid range.
|
1367
|
+
*
|
1368
|
+
* @since 0.71
|
1369
|
+
*
|
1370
|
+
* @param string $content String of characters to be converted.
|
1371
|
+
* @param string $deprecated Not used.
|
1372
|
+
* @return string Converted string.
|
1373
|
+
*/
|
1374
|
+
function convert_chars($content, $deprecated = '') {
|
1375
|
+
if ( !empty( $deprecated ) )
|
1376
|
+
_deprecated_argument( __FUNCTION__, '0.71' );
|
1377
|
+
|
1378
|
+
// Translation of invalid Unicode references range to valid range
|
1379
|
+
$wp_htmltranswinuni = array(
|
1380
|
+
'€' => '€', // the Euro sign
|
1381
|
+
'' => '',
|
1382
|
+
'‚' => '‚', // these are Windows CP1252 specific characters
|
1383
|
+
'ƒ' => 'ƒ', // they would look weird on non-Windows browsers
|
1384
|
+
'„' => '„',
|
1385
|
+
'…' => '…',
|
1386
|
+
'†' => '†',
|
1387
|
+
'‡' => '‡',
|
1388
|
+
'ˆ' => 'ˆ',
|
1389
|
+
'‰' => '‰',
|
1390
|
+
'Š' => 'Š',
|
1391
|
+
'‹' => '‹',
|
1392
|
+
'Œ' => 'Œ',
|
1393
|
+
'' => '',
|
1394
|
+
'Ž' => 'Ž',
|
1395
|
+
'' => '',
|
1396
|
+
'' => '',
|
1397
|
+
'‘' => '‘',
|
1398
|
+
'’' => '’',
|
1399
|
+
'“' => '“',
|
1400
|
+
'”' => '”',
|
1401
|
+
'•' => '•',
|
1402
|
+
'–' => '–',
|
1403
|
+
'—' => '—',
|
1404
|
+
'˜' => '˜',
|
1405
|
+
'™' => '™',
|
1406
|
+
'š' => 'š',
|
1407
|
+
'›' => '›',
|
1408
|
+
'œ' => 'œ',
|
1409
|
+
'' => '',
|
1410
|
+
'ž' => 'ž',
|
1411
|
+
'Ÿ' => 'Ÿ'
|
1412
|
+
);
|
1413
|
+
|
1414
|
+
// Remove metadata tags
|
1415
|
+
$content = preg_replace('/<title>(.+?)<\/title>/','',$content);
|
1416
|
+
$content = preg_replace('/<category>(.+?)<\/category>/','',$content);
|
1417
|
+
|
1418
|
+
// Converts lone & characters into & (a.k.a. &)
|
1419
|
+
$content = preg_replace('/&([^#])(?![a-z1-4]{1,8};)/i', '&$1', $content);
|
1420
|
+
|
1421
|
+
// Fix Word pasting
|
1422
|
+
$content = strtr($content, $wp_htmltranswinuni);
|
1423
|
+
|
1424
|
+
// Just a little XHTML help
|
1425
|
+
$content = str_replace('<br>', '<br />', $content);
|
1426
|
+
$content = str_replace('<hr>', '<hr />', $content);
|
1427
|
+
|
1428
|
+
return $content;
|
1429
|
+
}
|
1430
|
+
|
1431
|
+
/**
|
1432
|
+
* Balances tags if forced to, or if the 'use_balanceTags' option is set to true.
|
1433
|
+
*
|
1434
|
+
* @since 0.71
|
1435
|
+
*
|
1436
|
+
* @param string $text Text to be balanced
|
1437
|
+
* @param bool $force If true, forces balancing, ignoring the value of the option. Default false.
|
1438
|
+
* @return string Balanced text
|
1439
|
+
*/
|
1440
|
+
function balanceTags( $text, $force = false ) {
|
1441
|
+
if ( $force || get_option('use_balanceTags') == 1 ) {
|
1442
|
+
return force_balance_tags( $text );
|
1443
|
+
} else {
|
1444
|
+
return $text;
|
1445
|
+
}
|
1446
|
+
}
|
1447
|
+
|
1448
|
+
/**
|
1449
|
+
* Balances tags of string using a modified stack.
|
1450
|
+
*
|
1451
|
+
* @since 2.0.4
|
1452
|
+
*
|
1453
|
+
* @author Leonard Lin <leonard@acm.org>
|
1454
|
+
* @license GPL
|
1455
|
+
* @copyright November 4, 2001
|
1456
|
+
* @version 1.1
|
1457
|
+
* @todo Make better - change loop condition to $text in 1.2
|
1458
|
+
* @internal Modified by Scott Reilly (coffee2code) 02 Aug 2004
|
1459
|
+
* 1.1 Fixed handling of append/stack pop order of end text
|
1460
|
+
* Added Cleaning Hooks
|
1461
|
+
* 1.0 First Version
|
1462
|
+
*
|
1463
|
+
* @param string $text Text to be balanced.
|
1464
|
+
* @return string Balanced text.
|
1465
|
+
*/
|
1466
|
+
function force_balance_tags( $text ) {
|
1467
|
+
$tagstack = array();
|
1468
|
+
$stacksize = 0;
|
1469
|
+
$tagqueue = '';
|
1470
|
+
$newtext = '';
|
1471
|
+
// Known single-entity/self-closing tags
|
1472
|
+
$single_tags = array( 'area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source' );
|
1473
|
+
// Tags that can be immediately nested within themselves
|
1474
|
+
$nestable_tags = array( 'blockquote', 'div', 'object', 'q', 'span' );
|
1475
|
+
|
1476
|
+
// WP bug fix for comments - in case you REALLY meant to type '< !--'
|
1477
|
+
$text = str_replace('< !--', '< !--', $text);
|
1478
|
+
// WP bug fix for LOVE <3 (and other situations with '<' before a number)
|
1479
|
+
$text = preg_replace('#<([0-9]{1})#', '<$1', $text);
|
1480
|
+
|
1481
|
+
while ( preg_match("/<(\/?[\w:]*)\s*([^>]*)>/", $text, $regex) ) {
|
1482
|
+
$newtext .= $tagqueue;
|
1483
|
+
|
1484
|
+
$i = strpos($text, $regex[0]);
|
1485
|
+
$l = strlen($regex[0]);
|
1486
|
+
|
1487
|
+
// clear the shifter
|
1488
|
+
$tagqueue = '';
|
1489
|
+
// Pop or Push
|
1490
|
+
if ( isset($regex[1][0]) && '/' == $regex[1][0] ) { // End Tag
|
1491
|
+
$tag = strtolower(substr($regex[1],1));
|
1492
|
+
// if too many closing tags
|
1493
|
+
if( $stacksize <= 0 ) {
|
1494
|
+
$tag = '';
|
1495
|
+
// or close to be safe $tag = '/' . $tag;
|
1496
|
+
}
|
1497
|
+
// if stacktop value = tag close value then pop
|
1498
|
+
else if ( $tagstack[$stacksize - 1] == $tag ) { // found closing tag
|
1499
|
+
$tag = '</' . $tag . '>'; // Close Tag
|
1500
|
+
// Pop
|
1501
|
+
array_pop( $tagstack );
|
1502
|
+
$stacksize--;
|
1503
|
+
} else { // closing tag not at top, search for it
|
1504
|
+
for ( $j = $stacksize-1; $j >= 0; $j-- ) {
|
1505
|
+
if ( $tagstack[$j] == $tag ) {
|
1506
|
+
// add tag to tagqueue
|
1507
|
+
for ( $k = $stacksize-1; $k >= $j; $k--) {
|
1508
|
+
$tagqueue .= '</' . array_pop( $tagstack ) . '>';
|
1509
|
+
$stacksize--;
|
1510
|
+
}
|
1511
|
+
break;
|
1512
|
+
}
|
1513
|
+
}
|
1514
|
+
$tag = '';
|
1515
|
+
}
|
1516
|
+
} else { // Begin Tag
|
1517
|
+
$tag = strtolower($regex[1]);
|
1518
|
+
|
1519
|
+
// Tag Cleaning
|
1520
|
+
|
1521
|
+
// If it's an empty tag "< >", do nothing
|
1522
|
+
if ( '' == $tag ) {
|
1523
|
+
// do nothing
|
1524
|
+
}
|
1525
|
+
// ElseIf it presents itself as a self-closing tag...
|
1526
|
+
elseif ( substr( $regex[2], -1 ) == '/' ) {
|
1527
|
+
// ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and
|
1528
|
+
// immediately close it with a closing tag (the tag will encapsulate no text as a result)
|
1529
|
+
if ( ! in_array( $tag, $single_tags ) )
|
1530
|
+
$regex[2] = trim( substr( $regex[2], 0, -1 ) ) . "></$tag";
|
1531
|
+
}
|
1532
|
+
// ElseIf it's a known single-entity tag but it doesn't close itself, do so
|
1533
|
+
elseif ( in_array($tag, $single_tags) ) {
|
1534
|
+
$regex[2] .= '/';
|
1535
|
+
}
|
1536
|
+
// Else it's not a single-entity tag
|
1537
|
+
else {
|
1538
|
+
// If the top of the stack is the same as the tag we want to push, close previous tag
|
1539
|
+
if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) {
|
1540
|
+
$tagqueue = '</' . array_pop( $tagstack ) . '>';
|
1541
|
+
$stacksize--;
|
1542
|
+
}
|
1543
|
+
$stacksize = array_push( $tagstack, $tag );
|
1544
|
+
}
|
1545
|
+
|
1546
|
+
// Attributes
|
1547
|
+
$attributes = $regex[2];
|
1548
|
+
if( ! empty( $attributes ) && $attributes[0] != '>' )
|
1549
|
+
$attributes = ' ' . $attributes;
|
1550
|
+
|
1551
|
+
$tag = '<' . $tag . $attributes . '>';
|
1552
|
+
//If already queuing a close tag, then put this tag on, too
|
1553
|
+
if ( !empty($tagqueue) ) {
|
1554
|
+
$tagqueue .= $tag;
|
1555
|
+
$tag = '';
|
1556
|
+
}
|
1557
|
+
}
|
1558
|
+
$newtext .= substr($text, 0, $i) . $tag;
|
1559
|
+
$text = substr($text, $i + $l);
|
1560
|
+
}
|
1561
|
+
|
1562
|
+
// Clear Tag Queue
|
1563
|
+
$newtext .= $tagqueue;
|
1564
|
+
|
1565
|
+
// Add Remaining text
|
1566
|
+
$newtext .= $text;
|
1567
|
+
|
1568
|
+
// Empty Stack
|
1569
|
+
while( $x = array_pop($tagstack) )
|
1570
|
+
$newtext .= '</' . $x . '>'; // Add remaining tags to close
|
1571
|
+
|
1572
|
+
// WP fix for the bug with HTML comments
|
1573
|
+
$newtext = str_replace("< !--","<!--",$newtext);
|
1574
|
+
$newtext = str_replace("< !--","< !--",$newtext);
|
1575
|
+
|
1576
|
+
return $newtext;
|
1577
|
+
}
|
1578
|
+
|
1579
|
+
/**
|
1580
|
+
* Acts on text which is about to be edited.
|
1581
|
+
*
|
1582
|
+
* The $content is run through esc_textarea(), which uses htmlspecialchars()
|
1583
|
+
* to convert special characters to HTML entities. If $richedit is set to true,
|
1584
|
+
* it is simply a holder for the 'format_to_edit' filter.
|
1585
|
+
*
|
1586
|
+
* @since 0.71
|
1587
|
+
*
|
1588
|
+
* @param string $content The text about to be edited.
|
1589
|
+
* @param bool $richedit Whether the $content should not pass through htmlspecialchars(). Default false (meaning it will be passed).
|
1590
|
+
* @return string The text after the filter (and possibly htmlspecialchars()) has been run.
|
1591
|
+
*/
|
1592
|
+
function format_to_edit( $content, $richedit = false ) {
|
1593
|
+
/**
|
1594
|
+
* Filter the text to be formatted for editing.
|
1595
|
+
*
|
1596
|
+
* @since 1.2.0
|
1597
|
+
*
|
1598
|
+
* @param string $content The text, prior to formatting for editing.
|
1599
|
+
*/
|
1600
|
+
$content = apply_filters( 'format_to_edit', $content );
|
1601
|
+
if ( ! $richedit )
|
1602
|
+
$content = esc_textarea( $content );
|
1603
|
+
return $content;
|
1604
|
+
}
|
1605
|
+
|
1606
|
+
/**
|
1607
|
+
* Add leading zeros when necessary.
|
1608
|
+
*
|
1609
|
+
* If you set the threshold to '4' and the number is '10', then you will get
|
1610
|
+
* back '0010'. If you set the threshold to '4' and the number is '5000', then you
|
1611
|
+
* will get back '5000'.
|
1612
|
+
*
|
1613
|
+
* Uses sprintf to append the amount of zeros based on the $threshold parameter
|
1614
|
+
* and the size of the number. If the number is large enough, then no zeros will
|
1615
|
+
* be appended.
|
1616
|
+
*
|
1617
|
+
* @since 0.71
|
1618
|
+
*
|
1619
|
+
* @param mixed $number Number to append zeros to if not greater than threshold.
|
1620
|
+
* @param int $threshold Digit places number needs to be to not have zeros added.
|
1621
|
+
* @return string Adds leading zeros to number if needed.
|
1622
|
+
*/
|
1623
|
+
function zeroise($number, $threshold) {
|
1624
|
+
return sprintf('%0'.$threshold.'s', $number);
|
1625
|
+
}
|
1626
|
+
|
1627
|
+
/**
|
1628
|
+
* Adds backslashes before letters and before a number at the start of a string.
|
1629
|
+
*
|
1630
|
+
* @since 0.71
|
1631
|
+
*
|
1632
|
+
* @param string $string Value to which backslashes will be added.
|
1633
|
+
* @return string String with backslashes inserted.
|
1634
|
+
*/
|
1635
|
+
function backslashit($string) {
|
1636
|
+
if ( isset( $string[0] ) && $string[0] >= '0' && $string[0] <= '9' )
|
1637
|
+
$string = '\\\\' . $string;
|
1638
|
+
return addcslashes( $string, 'A..Za..z' );
|
1639
|
+
}
|
1640
|
+
|
1641
|
+
/**
|
1642
|
+
* Appends a trailing slash.
|
1643
|
+
*
|
1644
|
+
* Will remove trailing forward and backslashes if it exists already before adding
|
1645
|
+
* a trailing forward slash. This prevents double slashing a string or path.
|
1646
|
+
*
|
1647
|
+
* The primary use of this is for paths and thus should be used for paths. It is
|
1648
|
+
* not restricted to paths and offers no specific path support.
|
1649
|
+
*
|
1650
|
+
* @since 1.2.0
|
1651
|
+
*
|
1652
|
+
* @param string $string What to add the trailing slash to.
|
1653
|
+
* @return string String with trailing slash added.
|
1654
|
+
*/
|
1655
|
+
function trailingslashit( $string ) {
|
1656
|
+
return untrailingslashit( $string ) . '/';
|
1657
|
+
}
|
1658
|
+
|
1659
|
+
/**
|
1660
|
+
* Removes trailing forward slashes and backslashes if they exist.
|
1661
|
+
*
|
1662
|
+
* The primary use of this is for paths and thus should be used for paths. It is
|
1663
|
+
* not restricted to paths and offers no specific path support.
|
1664
|
+
*
|
1665
|
+
* @since 2.2.0
|
1666
|
+
*
|
1667
|
+
* @param string $string What to remove the trailing slashes from.
|
1668
|
+
* @return string String without the trailing slashes.
|
1669
|
+
*/
|
1670
|
+
function untrailingslashit( $string ) {
|
1671
|
+
return rtrim( $string, '/\\' );
|
1672
|
+
}
|
1673
|
+
|
1674
|
+
/**
|
1675
|
+
* Adds slashes to escape strings.
|
1676
|
+
*
|
1677
|
+
* Slashes will first be removed if magic_quotes_gpc is set, see {@link
|
1678
|
+
* http://www.php.net/magic_quotes} for more details.
|
1679
|
+
*
|
1680
|
+
* @since 0.71
|
1681
|
+
*
|
1682
|
+
* @param string $gpc The string returned from HTTP request data.
|
1683
|
+
* @return string Returns a string escaped with slashes.
|
1684
|
+
*/
|
1685
|
+
function addslashes_gpc($gpc) {
|
1686
|
+
if ( get_magic_quotes_gpc() )
|
1687
|
+
$gpc = stripslashes($gpc);
|
1688
|
+
|
1689
|
+
return wp_slash($gpc);
|
1690
|
+
}
|
1691
|
+
|
1692
|
+
/**
|
1693
|
+
* Navigates through an array and removes slashes from the values.
|
1694
|
+
*
|
1695
|
+
* If an array is passed, the array_map() function causes a callback to pass the
|
1696
|
+
* value back to the function. The slashes from this value will removed.
|
1697
|
+
*
|
1698
|
+
* @since 2.0.0
|
1699
|
+
*
|
1700
|
+
* @param mixed $value The value to be stripped.
|
1701
|
+
* @return mixed Stripped value.
|
1702
|
+
*/
|
1703
|
+
function stripslashes_deep($value) {
|
1704
|
+
if ( is_array($value) ) {
|
1705
|
+
$value = array_map('stripslashes_deep', $value);
|
1706
|
+
} elseif ( is_object($value) ) {
|
1707
|
+
$vars = get_object_vars( $value );
|
1708
|
+
foreach ($vars as $key=>$data) {
|
1709
|
+
$value->{$key} = stripslashes_deep( $data );
|
1710
|
+
}
|
1711
|
+
} elseif ( is_string( $value ) ) {
|
1712
|
+
$value = stripslashes($value);
|
1713
|
+
}
|
1714
|
+
|
1715
|
+
return $value;
|
1716
|
+
}
|
1717
|
+
|
1718
|
+
/**
|
1719
|
+
* Navigates through an array and encodes the values to be used in a URL.
|
1720
|
+
*
|
1721
|
+
*
|
1722
|
+
* @since 2.2.0
|
1723
|
+
*
|
1724
|
+
* @param array|string $value The array or string to be encoded.
|
1725
|
+
* @return array|string $value The encoded array (or string from the callback).
|
1726
|
+
*/
|
1727
|
+
function urlencode_deep($value) {
|
1728
|
+
$value = is_array($value) ? array_map('urlencode_deep', $value) : urlencode($value);
|
1729
|
+
return $value;
|
1730
|
+
}
|
1731
|
+
|
1732
|
+
/**
|
1733
|
+
* Navigates through an array and raw encodes the values to be used in a URL.
|
1734
|
+
*
|
1735
|
+
* @since 3.4.0
|
1736
|
+
*
|
1737
|
+
* @param array|string $value The array or string to be encoded.
|
1738
|
+
* @return array|string $value The encoded array (or string from the callback).
|
1739
|
+
*/
|
1740
|
+
function rawurlencode_deep( $value ) {
|
1741
|
+
return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
|
1742
|
+
}
|
1743
|
+
|
1744
|
+
/**
|
1745
|
+
* Converts email addresses characters to HTML entities to block spam bots.
|
1746
|
+
*
|
1747
|
+
* @since 0.71
|
1748
|
+
*
|
1749
|
+
* @param string $email_address Email address.
|
1750
|
+
* @param int $hex_encoding Optional. Set to 1 to enable hex encoding.
|
1751
|
+
* @return string Converted email address.
|
1752
|
+
*/
|
1753
|
+
function antispambot( $email_address, $hex_encoding = 0 ) {
|
1754
|
+
$email_no_spam_address = '';
|
1755
|
+
for ( $i = 0; $i < strlen( $email_address ); $i++ ) {
|
1756
|
+
$j = rand( 0, 1 + $hex_encoding );
|
1757
|
+
if ( $j == 0 ) {
|
1758
|
+
$email_no_spam_address .= '&#' . ord( $email_address[$i] ) . ';';
|
1759
|
+
} elseif ( $j == 1 ) {
|
1760
|
+
$email_no_spam_address .= $email_address[$i];
|
1761
|
+
} elseif ( $j == 2 ) {
|
1762
|
+
$email_no_spam_address .= '%' . zeroise( dechex( ord( $email_address[$i] ) ), 2 );
|
1763
|
+
}
|
1764
|
+
}
|
1765
|
+
|
1766
|
+
$email_no_spam_address = str_replace( '@', '@', $email_no_spam_address );
|
1767
|
+
|
1768
|
+
return $email_no_spam_address;
|
1769
|
+
}
|
1770
|
+
|
1771
|
+
/**
|
1772
|
+
* Callback to convert URI match to HTML A element.
|
1773
|
+
*
|
1774
|
+
* This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
|
1775
|
+
* make_clickable()}.
|
1776
|
+
*
|
1777
|
+
* @since 2.3.2
|
1778
|
+
* @access private
|
1779
|
+
*
|
1780
|
+
* @param array $matches Single Regex Match.
|
1781
|
+
* @return string HTML A element with URI address.
|
1782
|
+
*/
|
1783
|
+
function _make_url_clickable_cb($matches) {
|
1784
|
+
$url = $matches[2];
|
1785
|
+
|
1786
|
+
if ( ')' == $matches[3] && strpos( $url, '(' ) ) {
|
1787
|
+
// If the trailing character is a closing parethesis, and the URL has an opening parenthesis in it, add the closing parenthesis to the URL.
|
1788
|
+
// Then we can let the parenthesis balancer do its thing below.
|
1789
|
+
$url .= $matches[3];
|
1790
|
+
$suffix = '';
|
1791
|
+
} else {
|
1792
|
+
$suffix = $matches[3];
|
1793
|
+
}
|
1794
|
+
|
1795
|
+
// Include parentheses in the URL only if paired
|
1796
|
+
while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
|
1797
|
+
$suffix = strrchr( $url, ')' ) . $suffix;
|
1798
|
+
$url = substr( $url, 0, strrpos( $url, ')' ) );
|
1799
|
+
}
|
1800
|
+
|
1801
|
+
$url = esc_url($url);
|
1802
|
+
if ( empty($url) )
|
1803
|
+
return $matches[0];
|
1804
|
+
|
1805
|
+
return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $suffix;
|
1806
|
+
}
|
1807
|
+
|
1808
|
+
/**
|
1809
|
+
* Callback to convert URL match to HTML A element.
|
1810
|
+
*
|
1811
|
+
* This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
|
1812
|
+
* make_clickable()}.
|
1813
|
+
*
|
1814
|
+
* @since 2.3.2
|
1815
|
+
* @access private
|
1816
|
+
*
|
1817
|
+
* @param array $matches Single Regex Match.
|
1818
|
+
* @return string HTML A element with URL address.
|
1819
|
+
*/
|
1820
|
+
function _make_web_ftp_clickable_cb($matches) {
|
1821
|
+
$ret = '';
|
1822
|
+
$dest = $matches[2];
|
1823
|
+
$dest = 'http://' . $dest;
|
1824
|
+
$dest = esc_url($dest);
|
1825
|
+
if ( empty($dest) )
|
1826
|
+
return $matches[0];
|
1827
|
+
|
1828
|
+
// removed trailing [.,;:)] from URL
|
1829
|
+
if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
|
1830
|
+
$ret = substr($dest, -1);
|
1831
|
+
$dest = substr($dest, 0, strlen($dest)-1);
|
1832
|
+
}
|
1833
|
+
return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
|
1834
|
+
}
|
1835
|
+
|
1836
|
+
/**
|
1837
|
+
* Callback to convert email address match to HTML A element.
|
1838
|
+
*
|
1839
|
+
* This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
|
1840
|
+
* make_clickable()}.
|
1841
|
+
*
|
1842
|
+
* @since 2.3.2
|
1843
|
+
* @access private
|
1844
|
+
*
|
1845
|
+
* @param array $matches Single Regex Match.
|
1846
|
+
* @return string HTML A element with email address.
|
1847
|
+
*/
|
1848
|
+
function _make_email_clickable_cb($matches) {
|
1849
|
+
$email = $matches[2] . '@' . $matches[3];
|
1850
|
+
return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
|
1851
|
+
}
|
1852
|
+
|
1853
|
+
/**
|
1854
|
+
* Convert plaintext URI to HTML links.
|
1855
|
+
*
|
1856
|
+
* Converts URI, www and ftp, and email addresses. Finishes by fixing links
|
1857
|
+
* within links.
|
1858
|
+
*
|
1859
|
+
* @since 0.71
|
1860
|
+
*
|
1861
|
+
* @param string $text Content to convert URIs.
|
1862
|
+
* @return string Content with converted URIs.
|
1863
|
+
*/
|
1864
|
+
function make_clickable( $text ) {
|
1865
|
+
$r = '';
|
1866
|
+
$textarr = preg_split( '/(<[^<>]+>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // split out HTML tags
|
1867
|
+
$nested_code_pre = 0; // Keep track of how many levels link is nested inside <pre> or <code>
|
1868
|
+
foreach ( $textarr as $piece ) {
|
1869
|
+
|
1870
|
+
if ( preg_match( '|^<code[\s>]|i', $piece ) || preg_match( '|^<pre[\s>]|i', $piece ) )
|
1871
|
+
$nested_code_pre++;
|
1872
|
+
elseif ( ( '</code>' === strtolower( $piece ) || '</pre>' === strtolower( $piece ) ) && $nested_code_pre )
|
1873
|
+
$nested_code_pre--;
|
1874
|
+
|
1875
|
+
if ( $nested_code_pre || empty( $piece ) || ( $piece[0] === '<' && ! preg_match( '|^<\s*[\w]{1,20}+://|', $piece ) ) ) {
|
1876
|
+
$r .= $piece;
|
1877
|
+
continue;
|
1878
|
+
}
|
1879
|
+
|
1880
|
+
// Long strings might contain expensive edge cases ...
|
1881
|
+
if ( 10000 < strlen( $piece ) ) {
|
1882
|
+
// ... break it up
|
1883
|
+
foreach ( _split_str_by_whitespace( $piece, 2100 ) as $chunk ) { // 2100: Extra room for scheme and leading and trailing paretheses
|
1884
|
+
if ( 2101 < strlen( $chunk ) ) {
|
1885
|
+
$r .= $chunk; // Too big, no whitespace: bail.
|
1886
|
+
} else {
|
1887
|
+
$r .= make_clickable( $chunk );
|
1888
|
+
}
|
1889
|
+
}
|
1890
|
+
} else {
|
1891
|
+
$ret = " $piece "; // Pad with whitespace to simplify the regexes
|
1892
|
+
|
1893
|
+
$url_clickable = '~
|
1894
|
+
([\\s(<.,;:!?]) # 1: Leading whitespace, or punctuation
|
1895
|
+
( # 2: URL
|
1896
|
+
[\\w]{1,20}+:// # Scheme and hier-part prefix
|
1897
|
+
(?=\S{1,2000}\s) # Limit to URLs less than about 2000 characters long
|
1898
|
+
[\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+ # Non-punctuation URL character
|
1899
|
+
(?: # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character
|
1900
|
+
[\'.,;:!?)] # Punctuation URL character
|
1901
|
+
[\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character
|
1902
|
+
)*
|
1903
|
+
)
|
1904
|
+
(\)?) # 3: Trailing closing parenthesis (for parethesis balancing post processing)
|
1905
|
+
~xS'; // The regex is a non-anchored pattern and does not have a single fixed starting character.
|
1906
|
+
// Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times.
|
1907
|
+
|
1908
|
+
$ret = preg_replace_callback( $url_clickable, '_make_url_clickable_cb', $ret );
|
1909
|
+
|
1910
|
+
$ret = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret );
|
1911
|
+
$ret = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret );
|
1912
|
+
|
1913
|
+
$ret = substr( $ret, 1, -1 ); // Remove our whitespace padding.
|
1914
|
+
$r .= $ret;
|
1915
|
+
}
|
1916
|
+
}
|
1917
|
+
|
1918
|
+
// Cleanup of accidental links within links
|
1919
|
+
$r = preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
|
1920
|
+
return $r;
|
1921
|
+
}
|
1922
|
+
|
1923
|
+
/**
|
1924
|
+
* Breaks a string into chunks by splitting at whitespace characters.
|
1925
|
+
* The length of each returned chunk is as close to the specified length goal as possible,
|
1926
|
+
* with the caveat that each chunk includes its trailing delimiter.
|
1927
|
+
* Chunks longer than the goal are guaranteed to not have any inner whitespace.
|
1928
|
+
*
|
1929
|
+
* Joining the returned chunks with empty delimiters reconstructs the input string losslessly.
|
1930
|
+
*
|
1931
|
+
* Input string must have no null characters (or eventual transformations on output chunks must not care about null characters)
|
1932
|
+
*
|
1933
|
+
* <code>
|
1934
|
+
* _split_str_by_whitespace( "1234 67890 1234 67890a cd 1234 890 123456789 1234567890a 45678 1 3 5 7 90 ", 10 ) ==
|
1935
|
+
* array (
|
1936
|
+
* 0 => '1234 67890 ', // 11 characters: Perfect split
|
1937
|
+
* 1 => '1234 ', // 5 characters: '1234 67890a' was too long
|
1938
|
+
* 2 => '67890a cd ', // 10 characters: '67890a cd 1234' was too long
|
1939
|
+
* 3 => '1234 890 ', // 11 characters: Perfect split
|
1940
|
+
* 4 => '123456789 ', // 10 characters: '123456789 1234567890a' was too long
|
1941
|
+
* 5 => '1234567890a ', // 12 characters: Too long, but no inner whitespace on which to split
|
1942
|
+
* 6 => ' 45678 ', // 11 characters: Perfect split
|
1943
|
+
* 7 => '1 3 5 7 9', // 9 characters: End of $string
|
1944
|
+
* );
|
1945
|
+
* </code>
|
1946
|
+
*
|
1947
|
+
* @since 3.4.0
|
1948
|
+
* @access private
|
1949
|
+
*
|
1950
|
+
* @param string $string The string to split.
|
1951
|
+
* @param int $goal The desired chunk length.
|
1952
|
+
* @return array Numeric array of chunks.
|
1953
|
+
*/
|
1954
|
+
function _split_str_by_whitespace( $string, $goal ) {
|
1955
|
+
$chunks = array();
|
1956
|
+
|
1957
|
+
$string_nullspace = strtr( $string, "\r\n\t\v\f ", "\000\000\000\000\000\000" );
|
1958
|
+
|
1959
|
+
while ( $goal < strlen( $string_nullspace ) ) {
|
1960
|
+
$pos = strrpos( substr( $string_nullspace, 0, $goal + 1 ), "\000" );
|
1961
|
+
|
1962
|
+
if ( false === $pos ) {
|
1963
|
+
$pos = strpos( $string_nullspace, "\000", $goal + 1 );
|
1964
|
+
if ( false === $pos ) {
|
1965
|
+
break;
|
1966
|
+
}
|
1967
|
+
}
|
1968
|
+
|
1969
|
+
$chunks[] = substr( $string, 0, $pos + 1 );
|
1970
|
+
$string = substr( $string, $pos + 1 );
|
1971
|
+
$string_nullspace = substr( $string_nullspace, $pos + 1 );
|
1972
|
+
}
|
1973
|
+
|
1974
|
+
if ( $string ) {
|
1975
|
+
$chunks[] = $string;
|
1976
|
+
}
|
1977
|
+
|
1978
|
+
return $chunks;
|
1979
|
+
}
|
1980
|
+
|
1981
|
+
/**
|
1982
|
+
* Adds rel nofollow string to all HTML A elements in content.
|
1983
|
+
*
|
1984
|
+
* @since 1.5.0
|
1985
|
+
*
|
1986
|
+
* @param string $text Content that may contain HTML A elements.
|
1987
|
+
* @return string Converted content.
|
1988
|
+
*/
|
1989
|
+
function wp_rel_nofollow( $text ) {
|
1990
|
+
// This is a pre save filter, so text is already escaped.
|
1991
|
+
$text = stripslashes($text);
|
1992
|
+
$text = preg_replace_callback('|<a (.+?)>|i', 'wp_rel_nofollow_callback', $text);
|
1993
|
+
$text = wp_slash($text);
|
1994
|
+
return $text;
|
1995
|
+
}
|
1996
|
+
|
1997
|
+
/**
|
1998
|
+
* Callback to add rel=nofollow string to HTML A element.
|
1999
|
+
*
|
2000
|
+
* Will remove already existing rel="nofollow" and rel='nofollow' from the
|
2001
|
+
* string to prevent from invalidating (X)HTML.
|
2002
|
+
*
|
2003
|
+
* @since 2.3.0
|
2004
|
+
*
|
2005
|
+
* @param array $matches Single Match
|
2006
|
+
* @return string HTML A Element with rel nofollow.
|
2007
|
+
*/
|
2008
|
+
function wp_rel_nofollow_callback( $matches ) {
|
2009
|
+
$text = $matches[1];
|
2010
|
+
$text = str_replace(array(' rel="nofollow"', " rel='nofollow'"), '', $text);
|
2011
|
+
return "<a $text rel=\"nofollow\">";
|
2012
|
+
}
|
2013
|
+
|
2014
|
+
/**
|
2015
|
+
* Convert one smiley code to the icon graphic file equivalent.
|
2016
|
+
*
|
2017
|
+
* Callback handler for {@link convert_smilies()}.
|
2018
|
+
* Looks up one smiley code in the $wpsmiliestrans global array and returns an
|
2019
|
+
* <img> string for that smiley.
|
2020
|
+
*
|
2021
|
+
* @global array $wpsmiliestrans
|
2022
|
+
* @since 2.8.0
|
2023
|
+
*
|
2024
|
+
* @param array $matches Single match. Smiley code to convert to image.
|
2025
|
+
* @return string Image string for smiley.
|
2026
|
+
*/
|
2027
|
+
function translate_smiley( $matches ) {
|
2028
|
+
global $wpsmiliestrans;
|
2029
|
+
|
2030
|
+
if ( count( $matches ) == 0 )
|
2031
|
+
return '';
|
2032
|
+
|
2033
|
+
$smiley = trim( reset( $matches ) );
|
2034
|
+
$img = $wpsmiliestrans[ $smiley ];
|
2035
|
+
|
2036
|
+
/**
|
2037
|
+
* Filter the Smiley image URL before it's used in the image element.
|
2038
|
+
*
|
2039
|
+
* @since 2.9.0
|
2040
|
+
*
|
2041
|
+
* @param string $smiley_url URL for the smiley image.
|
2042
|
+
* @param string $img Filename for the smiley image.
|
2043
|
+
* @param string $site_url Site URL, as returned by site_url().
|
2044
|
+
*/
|
2045
|
+
$src_url = apply_filters( 'smilies_src', includes_url( "images/smilies/$img" ), $img, site_url() );
|
2046
|
+
|
2047
|
+
return sprintf( '<img src="%s" alt="%s" class="wp-smiley" />', esc_url( $src_url ), esc_attr( $smiley ) );
|
2048
|
+
}
|
2049
|
+
|
2050
|
+
/**
|
2051
|
+
* Convert text equivalent of smilies to images.
|
2052
|
+
*
|
2053
|
+
* Will only convert smilies if the option 'use_smilies' is true and the global
|
2054
|
+
* used in the function isn't empty.
|
2055
|
+
*
|
2056
|
+
* @since 0.71
|
2057
|
+
* @uses $wp_smiliessearch
|
2058
|
+
*
|
2059
|
+
* @param string $text Content to convert smilies from text.
|
2060
|
+
* @return string Converted content with text smilies replaced with images.
|
2061
|
+
*/
|
2062
|
+
function convert_smilies( $text ) {
|
2063
|
+
global $wp_smiliessearch;
|
2064
|
+
$output = '';
|
2065
|
+
if ( get_option( 'use_smilies' ) && ! empty( $wp_smiliessearch ) ) {
|
2066
|
+
// HTML loop taken from texturize function, could possible be consolidated
|
2067
|
+
$textarr = preg_split( '/(<.*>)/U', $text, -1, PREG_SPLIT_DELIM_CAPTURE ); // capture the tags as well as in between
|
2068
|
+
$stop = count( $textarr );// loop stuff
|
2069
|
+
|
2070
|
+
// Ignore proessing of specific tags
|
2071
|
+
$tags_to_ignore = 'code|pre|style|script|textarea';
|
2072
|
+
$ignore_block_element = '';
|
2073
|
+
|
2074
|
+
for ( $i = 0; $i < $stop; $i++ ) {
|
2075
|
+
$content = $textarr[$i];
|
2076
|
+
|
2077
|
+
// If we're in an ignore block, wait until we find its closing tag
|
2078
|
+
if ( '' == $ignore_block_element && preg_match( '/^<(' . $tags_to_ignore . ')>/', $content, $matches ) ) {
|
2079
|
+
$ignore_block_element = $matches[1];
|
2080
|
+
}
|
2081
|
+
|
2082
|
+
// If it's not a tag and not in ignore block
|
2083
|
+
if ( '' == $ignore_block_element && strlen( $content ) > 0 && '<' != $content[0] ) {
|
2084
|
+
$content = preg_replace_callback( $wp_smiliessearch, 'translate_smiley', $content );
|
2085
|
+
}
|
2086
|
+
|
2087
|
+
// did we exit ignore block
|
2088
|
+
if ( '' != $ignore_block_element && '</' . $ignore_block_element . '>' == $content ) {
|
2089
|
+
$ignore_block_element = '';
|
2090
|
+
}
|
2091
|
+
|
2092
|
+
$output .= $content;
|
2093
|
+
}
|
2094
|
+
} else {
|
2095
|
+
// return default text.
|
2096
|
+
$output = $text;
|
2097
|
+
}
|
2098
|
+
return $output;
|
2099
|
+
}
|
2100
|
+
|
2101
|
+
/**
|
2102
|
+
* Verifies that an email is valid.
|
2103
|
+
*
|
2104
|
+
* Does not grok i18n domains. Not RFC compliant.
|
2105
|
+
*
|
2106
|
+
* @since 0.71
|
2107
|
+
*
|
2108
|
+
* @param string $email Email address to verify.
|
2109
|
+
* @param boolean $deprecated Deprecated.
|
2110
|
+
* @return string|bool Either false or the valid email address.
|
2111
|
+
*/
|
2112
|
+
function is_email( $email, $deprecated = false ) {
|
2113
|
+
if ( ! empty( $deprecated ) )
|
2114
|
+
_deprecated_argument( __FUNCTION__, '3.0' );
|
2115
|
+
|
2116
|
+
// Test for the minimum length the email can be
|
2117
|
+
if ( strlen( $email ) < 3 ) {
|
2118
|
+
/**
|
2119
|
+
* Filter whether an email address is valid.
|
2120
|
+
*
|
2121
|
+
* This filter is evaluated under several different contexts, such as 'email_too_short',
|
2122
|
+
* 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
|
2123
|
+
* 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context.
|
2124
|
+
*
|
2125
|
+
* @since 2.8.0
|
2126
|
+
*
|
2127
|
+
* @param bool $is_email Whether the email address has passed the is_email() checks. Default false.
|
2128
|
+
* @param string $email The email address being checked.
|
2129
|
+
* @param string $message An explanatory message to the user.
|
2130
|
+
* @param string $context Context under which the email was tested.
|
2131
|
+
*/
|
2132
|
+
return apply_filters( 'is_email', false, $email, 'email_too_short' );
|
2133
|
+
}
|
2134
|
+
|
2135
|
+
// Test for an @ character after the first position
|
2136
|
+
if ( strpos( $email, '@', 1 ) === false ) {
|
2137
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2138
|
+
return apply_filters( 'is_email', false, $email, 'email_no_at' );
|
2139
|
+
}
|
2140
|
+
|
2141
|
+
// Split out the local and domain parts
|
2142
|
+
list( $local, $domain ) = explode( '@', $email, 2 );
|
2143
|
+
|
2144
|
+
// LOCAL PART
|
2145
|
+
// Test for invalid characters
|
2146
|
+
if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
|
2147
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2148
|
+
return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
|
2149
|
+
}
|
2150
|
+
|
2151
|
+
// DOMAIN PART
|
2152
|
+
// Test for sequences of periods
|
2153
|
+
if ( preg_match( '/\.{2,}/', $domain ) ) {
|
2154
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2155
|
+
return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
|
2156
|
+
}
|
2157
|
+
|
2158
|
+
// Test for leading and trailing periods and whitespace
|
2159
|
+
if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
|
2160
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2161
|
+
return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
|
2162
|
+
}
|
2163
|
+
|
2164
|
+
// Split the domain into subs
|
2165
|
+
$subs = explode( '.', $domain );
|
2166
|
+
|
2167
|
+
// Assume the domain will have at least two subs
|
2168
|
+
if ( 2 > count( $subs ) ) {
|
2169
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2170
|
+
return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
|
2171
|
+
}
|
2172
|
+
|
2173
|
+
// Loop through each sub
|
2174
|
+
foreach ( $subs as $sub ) {
|
2175
|
+
// Test for leading and trailing hyphens and whitespace
|
2176
|
+
if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
|
2177
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2178
|
+
return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
|
2179
|
+
}
|
2180
|
+
|
2181
|
+
// Test for invalid characters
|
2182
|
+
if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) {
|
2183
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2184
|
+
return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
|
2185
|
+
}
|
2186
|
+
}
|
2187
|
+
|
2188
|
+
// Congratulations your email made it!
|
2189
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2190
|
+
return apply_filters( 'is_email', $email, $email, null );
|
2191
|
+
}
|
2192
|
+
|
2193
|
+
/**
|
2194
|
+
* Convert to ASCII from email subjects.
|
2195
|
+
*
|
2196
|
+
* @since 1.2.0
|
2197
|
+
*
|
2198
|
+
* @param string $string Subject line
|
2199
|
+
* @return string Converted string to ASCII
|
2200
|
+
*/
|
2201
|
+
function wp_iso_descrambler($string) {
|
2202
|
+
/* this may only work with iso-8859-1, I'm afraid */
|
2203
|
+
if (!preg_match('#\=\?(.+)\?Q\?(.+)\?\=#i', $string, $matches)) {
|
2204
|
+
return $string;
|
2205
|
+
} else {
|
2206
|
+
$subject = str_replace('_', ' ', $matches[2]);
|
2207
|
+
$subject = preg_replace_callback('#\=([0-9a-f]{2})#i', '_wp_iso_convert', $subject);
|
2208
|
+
return $subject;
|
2209
|
+
}
|
2210
|
+
}
|
2211
|
+
|
2212
|
+
/**
|
2213
|
+
* Helper function to convert hex encoded chars to ASCII
|
2214
|
+
*
|
2215
|
+
* @since 3.1.0
|
2216
|
+
* @access private
|
2217
|
+
*
|
2218
|
+
* @param array $match The preg_replace_callback matches array
|
2219
|
+
* @return array Converted chars
|
2220
|
+
*/
|
2221
|
+
function _wp_iso_convert( $match ) {
|
2222
|
+
return chr( hexdec( strtolower( $match[1] ) ) );
|
2223
|
+
}
|
2224
|
+
|
2225
|
+
/**
|
2226
|
+
* Returns a date in the GMT equivalent.
|
2227
|
+
*
|
2228
|
+
* Requires and returns a date in the Y-m-d H:i:s format. If there is a
|
2229
|
+
* timezone_string available, the date is assumed to be in that timezone,
|
2230
|
+
* otherwise it simply subtracts the value of the 'gmt_offset' option. Return
|
2231
|
+
* format can be overridden using the $format parameter.
|
2232
|
+
*
|
2233
|
+
* @since 1.2.0
|
2234
|
+
*
|
2235
|
+
* @uses get_option() to retrieve the value of 'gmt_offset'.
|
2236
|
+
* @param string $string The date to be converted.
|
2237
|
+
* @param string $format The format string for the returned date (default is Y-m-d H:i:s)
|
2238
|
+
* @return string GMT version of the date provided.
|
2239
|
+
*/
|
2240
|
+
function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
|
2241
|
+
$tz = get_option( 'timezone_string' );
|
2242
|
+
if ( $tz ) {
|
2243
|
+
$datetime = date_create( $string, new DateTimeZone( $tz ) );
|
2244
|
+
if ( ! $datetime )
|
2245
|
+
return gmdate( $format, 0 );
|
2246
|
+
$datetime->setTimezone( new DateTimeZone( 'UTC' ) );
|
2247
|
+
$string_gmt = $datetime->format( $format );
|
2248
|
+
} else {
|
2249
|
+
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 ) )
|
2250
|
+
return gmdate( $format, 0 );
|
2251
|
+
$string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
|
2252
|
+
$string_gmt = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
|
2253
|
+
}
|
2254
|
+
return $string_gmt;
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
/**
|
2258
|
+
* Converts a GMT date into the correct format for the blog.
|
2259
|
+
*
|
2260
|
+
* Requires and returns a date in the Y-m-d H:i:s format. If there is a
|
2261
|
+
* timezone_string available, the returned date is in that timezone, otherwise
|
2262
|
+
* it simply adds the value of gmt_offset. Return format can be overridden
|
2263
|
+
* using the $format parameter
|
2264
|
+
*
|
2265
|
+
* @since 1.2.0
|
2266
|
+
*
|
2267
|
+
* @param string $string The date to be converted.
|
2268
|
+
* @param string $format The format string for the returned date (default is Y-m-d H:i:s)
|
2269
|
+
* @return string Formatted date relative to the timezone / GMT offset.
|
2270
|
+
*/
|
2271
|
+
function get_date_from_gmt( $string, $format = 'Y-m-d H:i:s' ) {
|
2272
|
+
$tz = get_option( 'timezone_string' );
|
2273
|
+
if ( $tz ) {
|
2274
|
+
$datetime = date_create( $string, new DateTimeZone( 'UTC' ) );
|
2275
|
+
if ( ! $datetime )
|
2276
|
+
return date( $format, 0 );
|
2277
|
+
$datetime->setTimezone( new DateTimeZone( $tz ) );
|
2278
|
+
$string_localtime = $datetime->format( $format );
|
2279
|
+
} else {
|
2280
|
+
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) )
|
2281
|
+
return date( $format, 0 );
|
2282
|
+
$string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
|
2283
|
+
$string_localtime = gmdate( $format, $string_time + get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
|
2284
|
+
}
|
2285
|
+
return $string_localtime;
|
2286
|
+
}
|
2287
|
+
|
2288
|
+
/**
|
2289
|
+
* Computes an offset in seconds from an iso8601 timezone.
|
2290
|
+
*
|
2291
|
+
* @since 1.5.0
|
2292
|
+
*
|
2293
|
+
* @param string $timezone Either 'Z' for 0 offset or '±hhmm'.
|
2294
|
+
* @return int|float The offset in seconds.
|
2295
|
+
*/
|
2296
|
+
function iso8601_timezone_to_offset($timezone) {
|
2297
|
+
// $timezone is either 'Z' or '[+|-]hhmm'
|
2298
|
+
if ($timezone == 'Z') {
|
2299
|
+
$offset = 0;
|
2300
|
+
} else {
|
2301
|
+
$sign = (substr($timezone, 0, 1) == '+') ? 1 : -1;
|
2302
|
+
$hours = intval(substr($timezone, 1, 2));
|
2303
|
+
$minutes = intval(substr($timezone, 3, 4)) / 60;
|
2304
|
+
$offset = $sign * HOUR_IN_SECONDS * ($hours + $minutes);
|
2305
|
+
}
|
2306
|
+
return $offset;
|
2307
|
+
}
|
2308
|
+
|
2309
|
+
/**
|
2310
|
+
* Converts an iso8601 date to MySQL DateTime format used by post_date[_gmt].
|
2311
|
+
*
|
2312
|
+
* @since 1.5.0
|
2313
|
+
*
|
2314
|
+
* @param string $date_string Date and time in ISO 8601 format {@link http://en.wikipedia.org/wiki/ISO_8601}.
|
2315
|
+
* @param string $timezone Optional. If set to GMT returns the time minus gmt_offset. Default is 'user'.
|
2316
|
+
* @return string The date and time in MySQL DateTime format - Y-m-d H:i:s.
|
2317
|
+
*/
|
2318
|
+
function iso8601_to_datetime($date_string, $timezone = 'user') {
|
2319
|
+
$timezone = strtolower($timezone);
|
2320
|
+
|
2321
|
+
if ($timezone == 'gmt') {
|
2322
|
+
|
2323
|
+
preg_match('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', $date_string, $date_bits);
|
2324
|
+
|
2325
|
+
if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
|
2326
|
+
$offset = iso8601_timezone_to_offset($date_bits[7]);
|
2327
|
+
} else { // we don't have a timezone, so we assume user local timezone (not server's!)
|
2328
|
+
$offset = HOUR_IN_SECONDS * get_option('gmt_offset');
|
2329
|
+
}
|
2330
|
+
|
2331
|
+
$timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
|
2332
|
+
$timestamp -= $offset;
|
2333
|
+
|
2334
|
+
return gmdate('Y-m-d H:i:s', $timestamp);
|
2335
|
+
|
2336
|
+
} else if ($timezone == 'user') {
|
2337
|
+
return preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', '$1-$2-$3 $4:$5:$6', $date_string);
|
2338
|
+
}
|
2339
|
+
}
|
2340
|
+
|
2341
|
+
/**
|
2342
|
+
* Adds a element attributes to open links in new windows.
|
2343
|
+
*
|
2344
|
+
* Comment text in popup windows should be filtered through this. Right now it's
|
2345
|
+
* a moderately dumb function, ideally it would detect whether a target or rel
|
2346
|
+
* attribute was already there and adjust its actions accordingly.
|
2347
|
+
*
|
2348
|
+
* @since 0.71
|
2349
|
+
*
|
2350
|
+
* @param string $text Content to replace links to open in a new window.
|
2351
|
+
* @return string Content that has filtered links.
|
2352
|
+
*/
|
2353
|
+
function popuplinks($text) {
|
2354
|
+
$text = preg_replace('/<a (.+?)>/i', "<a $1 target='_blank' rel='external'>", $text);
|
2355
|
+
return $text;
|
2356
|
+
}
|
2357
|
+
|
2358
|
+
/**
|
2359
|
+
* Strips out all characters that are not allowable in an email.
|
2360
|
+
*
|
2361
|
+
* @since 1.5.0
|
2362
|
+
*
|
2363
|
+
* @param string $email Email address to filter.
|
2364
|
+
* @return string Filtered email address.
|
2365
|
+
*/
|
2366
|
+
function sanitize_email( $email ) {
|
2367
|
+
// Test for the minimum length the email can be
|
2368
|
+
if ( strlen( $email ) < 3 ) {
|
2369
|
+
/**
|
2370
|
+
* Filter a sanitized email address.
|
2371
|
+
*
|
2372
|
+
* This filter is evaluated under several contexts, including 'email_too_short',
|
2373
|
+
* 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
|
2374
|
+
* 'domain_no_periods', 'domain_no_valid_subs', or no context.
|
2375
|
+
*
|
2376
|
+
* @since 2.8.0
|
2377
|
+
*
|
2378
|
+
* @param string $email The sanitized email address.
|
2379
|
+
* @param string $email The email address, as provided to sanitize_email().
|
2380
|
+
* @param string $message A message to pass to the user.
|
2381
|
+
*/
|
2382
|
+
return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
|
2383
|
+
}
|
2384
|
+
|
2385
|
+
// Test for an @ character after the first position
|
2386
|
+
if ( strpos( $email, '@', 1 ) === false ) {
|
2387
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2388
|
+
return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
|
2389
|
+
}
|
2390
|
+
|
2391
|
+
// Split out the local and domain parts
|
2392
|
+
list( $local, $domain ) = explode( '@', $email, 2 );
|
2393
|
+
|
2394
|
+
// LOCAL PART
|
2395
|
+
// Test for invalid characters
|
2396
|
+
$local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
|
2397
|
+
if ( '' === $local ) {
|
2398
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2399
|
+
return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
|
2400
|
+
}
|
2401
|
+
|
2402
|
+
// DOMAIN PART
|
2403
|
+
// Test for sequences of periods
|
2404
|
+
$domain = preg_replace( '/\.{2,}/', '', $domain );
|
2405
|
+
if ( '' === $domain ) {
|
2406
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2407
|
+
return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
|
2408
|
+
}
|
2409
|
+
|
2410
|
+
// Test for leading and trailing periods and whitespace
|
2411
|
+
$domain = trim( $domain, " \t\n\r\0\x0B." );
|
2412
|
+
if ( '' === $domain ) {
|
2413
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2414
|
+
return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
|
2415
|
+
}
|
2416
|
+
|
2417
|
+
// Split the domain into subs
|
2418
|
+
$subs = explode( '.', $domain );
|
2419
|
+
|
2420
|
+
// Assume the domain will have at least two subs
|
2421
|
+
if ( 2 > count( $subs ) ) {
|
2422
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2423
|
+
return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
|
2424
|
+
}
|
2425
|
+
|
2426
|
+
// Create an array that will contain valid subs
|
2427
|
+
$new_subs = array();
|
2428
|
+
|
2429
|
+
// Loop through each sub
|
2430
|
+
foreach ( $subs as $sub ) {
|
2431
|
+
// Test for leading and trailing hyphens
|
2432
|
+
$sub = trim( $sub, " \t\n\r\0\x0B-" );
|
2433
|
+
|
2434
|
+
// Test for invalid characters
|
2435
|
+
$sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub );
|
2436
|
+
|
2437
|
+
// If there's anything left, add it to the valid subs
|
2438
|
+
if ( '' !== $sub ) {
|
2439
|
+
$new_subs[] = $sub;
|
2440
|
+
}
|
2441
|
+
}
|
2442
|
+
|
2443
|
+
// If there aren't 2 or more valid subs
|
2444
|
+
if ( 2 > count( $new_subs ) ) {
|
2445
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2446
|
+
return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
|
2447
|
+
}
|
2448
|
+
|
2449
|
+
// Join valid subs into the new domain
|
2450
|
+
$domain = join( '.', $new_subs );
|
2451
|
+
|
2452
|
+
// Put the email back together
|
2453
|
+
$email = $local . '@' . $domain;
|
2454
|
+
|
2455
|
+
// Congratulations your email made it!
|
2456
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2457
|
+
return apply_filters( 'sanitize_email', $email, $email, null );
|
2458
|
+
}
|
2459
|
+
|
2460
|
+
/**
|
2461
|
+
* Determines the difference between two timestamps.
|
2462
|
+
*
|
2463
|
+
* The difference is returned in a human readable format such as "1 hour",
|
2464
|
+
* "5 mins", "2 days".
|
2465
|
+
*
|
2466
|
+
* @since 1.5.0
|
2467
|
+
*
|
2468
|
+
* @param int $from Unix timestamp from which the difference begins.
|
2469
|
+
* @param int $to Optional. Unix timestamp to end the time difference. Default becomes time() if not set.
|
2470
|
+
* @return string Human readable time difference.
|
2471
|
+
*/
|
2472
|
+
function human_time_diff( $from, $to = '' ) {
|
2473
|
+
if ( empty( $to ) ) {
|
2474
|
+
$to = time();
|
2475
|
+
}
|
2476
|
+
|
2477
|
+
$diff = (int) abs( $to - $from );
|
2478
|
+
|
2479
|
+
if ( $diff < HOUR_IN_SECONDS ) {
|
2480
|
+
$mins = round( $diff / MINUTE_IN_SECONDS );
|
2481
|
+
if ( $mins <= 1 )
|
2482
|
+
$mins = 1;
|
2483
|
+
/* translators: min=minute */
|
2484
|
+
$since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
|
2485
|
+
} elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
|
2486
|
+
$hours = round( $diff / HOUR_IN_SECONDS );
|
2487
|
+
if ( $hours <= 1 )
|
2488
|
+
$hours = 1;
|
2489
|
+
$since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
|
2490
|
+
} elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
|
2491
|
+
$days = round( $diff / DAY_IN_SECONDS );
|
2492
|
+
if ( $days <= 1 )
|
2493
|
+
$days = 1;
|
2494
|
+
$since = sprintf( _n( '%s day', '%s days', $days ), $days );
|
2495
|
+
} elseif ( $diff < 30 * DAY_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
|
2496
|
+
$weeks = round( $diff / WEEK_IN_SECONDS );
|
2497
|
+
if ( $weeks <= 1 )
|
2498
|
+
$weeks = 1;
|
2499
|
+
$since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks );
|
2500
|
+
} elseif ( $diff < YEAR_IN_SECONDS && $diff >= 30 * DAY_IN_SECONDS ) {
|
2501
|
+
$months = round( $diff / ( 30 * DAY_IN_SECONDS ) );
|
2502
|
+
if ( $months <= 1 )
|
2503
|
+
$months = 1;
|
2504
|
+
$since = sprintf( _n( '%s month', '%s months', $months ), $months );
|
2505
|
+
} elseif ( $diff >= YEAR_IN_SECONDS ) {
|
2506
|
+
$years = round( $diff / YEAR_IN_SECONDS );
|
2507
|
+
if ( $years <= 1 )
|
2508
|
+
$years = 1;
|
2509
|
+
$since = sprintf( _n( '%s year', '%s years', $years ), $years );
|
2510
|
+
}
|
2511
|
+
|
2512
|
+
/**
|
2513
|
+
* Filter the human readable difference between two timestamps.
|
2514
|
+
*
|
2515
|
+
* @since 4.0.0
|
2516
|
+
*
|
2517
|
+
* @param string $since The difference in human readable text.
|
2518
|
+
* @param int $diff The difference in seconds.
|
2519
|
+
* @param int $from Unix timestamp from which the difference begins.
|
2520
|
+
* @param int $to Unix timestamp to end the time difference.
|
2521
|
+
*/
|
2522
|
+
return apply_filters( 'human_time_diff', $since, $diff, $from, $to );
|
2523
|
+
}
|
2524
|
+
|
2525
|
+
/**
|
2526
|
+
* Generates an excerpt from the content, if needed.
|
2527
|
+
*
|
2528
|
+
* The excerpt word amount will be 55 words and if the amount is greater than
|
2529
|
+
* that, then the string ' […]' will be appended to the excerpt. If the string
|
2530
|
+
* is less than 55 words, then the content will be returned as is.
|
2531
|
+
*
|
2532
|
+
* The 55 word limit can be modified by plugins/themes using the excerpt_length filter
|
2533
|
+
* The ' […]' string can be modified by plugins/themes using the excerpt_more filter
|
2534
|
+
*
|
2535
|
+
* @since 1.5.0
|
2536
|
+
*
|
2537
|
+
* @param string $text Optional. The excerpt. If set to empty, an excerpt is generated.
|
2538
|
+
* @return string The excerpt.
|
2539
|
+
*/
|
2540
|
+
function wp_trim_excerpt($text = '') {
|
2541
|
+
$raw_excerpt = $text;
|
2542
|
+
if ( '' == $text ) {
|
2543
|
+
$text = get_the_content('');
|
2544
|
+
|
2545
|
+
$text = strip_shortcodes( $text );
|
2546
|
+
|
2547
|
+
/** This filter is documented in wp-includes/post-template.php */
|
2548
|
+
$text = apply_filters( 'the_content', $text );
|
2549
|
+
$text = str_replace(']]>', ']]>', $text);
|
2550
|
+
|
2551
|
+
/**
|
2552
|
+
* Filter the number of words in an excerpt.
|
2553
|
+
*
|
2554
|
+
* @since 2.7.0
|
2555
|
+
*
|
2556
|
+
* @param int $number The number of words. Default 55.
|
2557
|
+
*/
|
2558
|
+
$excerpt_length = apply_filters( 'excerpt_length', 55 );
|
2559
|
+
/**
|
2560
|
+
* Filter the string in the "more" link displayed after a trimmed excerpt.
|
2561
|
+
*
|
2562
|
+
* @since 2.9.0
|
2563
|
+
*
|
2564
|
+
* @param string $more_string The string shown within the more link.
|
2565
|
+
*/
|
2566
|
+
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
|
2567
|
+
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
|
2568
|
+
}
|
2569
|
+
/**
|
2570
|
+
* Filter the trimmed excerpt string.
|
2571
|
+
*
|
2572
|
+
* @since 2.8.0
|
2573
|
+
*
|
2574
|
+
* @param string $text The trimmed text.
|
2575
|
+
* @param string $raw_excerpt The text prior to trimming.
|
2576
|
+
*/
|
2577
|
+
return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt );
|
2578
|
+
}
|
2579
|
+
|
2580
|
+
/**
|
2581
|
+
* Trims text to a certain number of words.
|
2582
|
+
*
|
2583
|
+
* This function is localized. For languages that count 'words' by the individual
|
2584
|
+
* character (such as East Asian languages), the $num_words argument will apply
|
2585
|
+
* to the number of individual characters.
|
2586
|
+
*
|
2587
|
+
* @since 3.3.0
|
2588
|
+
*
|
2589
|
+
* @param string $text Text to trim.
|
2590
|
+
* @param int $num_words Number of words. Default 55.
|
2591
|
+
* @param string $more Optional. What to append if $text needs to be trimmed. Default '…'.
|
2592
|
+
* @return string Trimmed text.
|
2593
|
+
*/
|
2594
|
+
function wp_trim_words( $text, $num_words = 55, $more = null ) {
|
2595
|
+
if ( null === $more )
|
2596
|
+
$more = __( '…' );
|
2597
|
+
$original_text = $text;
|
2598
|
+
$text = wp_strip_all_tags( $text );
|
2599
|
+
/* translators: If your word count is based on single characters (East Asian characters),
|
2600
|
+
enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
|
2601
|
+
if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
|
2602
|
+
$text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
|
2603
|
+
preg_match_all( '/./u', $text, $words_array );
|
2604
|
+
$words_array = array_slice( $words_array[0], 0, $num_words + 1 );
|
2605
|
+
$sep = '';
|
2606
|
+
} else {
|
2607
|
+
$words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
|
2608
|
+
$sep = ' ';
|
2609
|
+
}
|
2610
|
+
if ( count( $words_array ) > $num_words ) {
|
2611
|
+
array_pop( $words_array );
|
2612
|
+
$text = implode( $sep, $words_array );
|
2613
|
+
$text = $text . $more;
|
2614
|
+
} else {
|
2615
|
+
$text = implode( $sep, $words_array );
|
2616
|
+
}
|
2617
|
+
/**
|
2618
|
+
* Filter the text content after words have been trimmed.
|
2619
|
+
*
|
2620
|
+
* @since 3.3.0
|
2621
|
+
*
|
2622
|
+
* @param string $text The trimmed text.
|
2623
|
+
* @param int $num_words The number of words to trim the text to. Default 5.
|
2624
|
+
* @param string $more An optional string to append to the end of the trimmed text, e.g. ….
|
2625
|
+
* @param string $original_text The text before it was trimmed.
|
2626
|
+
*/
|
2627
|
+
return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
|
2628
|
+
}
|
2629
|
+
|
2630
|
+
/**
|
2631
|
+
* Converts named entities into numbered entities.
|
2632
|
+
*
|
2633
|
+
* @since 1.5.1
|
2634
|
+
*
|
2635
|
+
* @param string $text The text within which entities will be converted.
|
2636
|
+
* @return string Text with converted entities.
|
2637
|
+
*/
|
2638
|
+
function ent2ncr($text) {
|
2639
|
+
|
2640
|
+
/**
|
2641
|
+
* Filter text before named entities are converted into numbered entities.
|
2642
|
+
*
|
2643
|
+
* A non-null string must be returned for the filter to be evaluated.
|
2644
|
+
*
|
2645
|
+
* @since 3.3.0
|
2646
|
+
*
|
2647
|
+
* @param null $converted_text The text to be converted. Default null.
|
2648
|
+
* @param string $text The text prior to entity conversion.
|
2649
|
+
*/
|
2650
|
+
$filtered = apply_filters( 'pre_ent2ncr', null, $text );
|
2651
|
+
if( null !== $filtered )
|
2652
|
+
return $filtered;
|
2653
|
+
|
2654
|
+
$to_ncr = array(
|
2655
|
+
'"' => '"',
|
2656
|
+
'&' => '&',
|
2657
|
+
'<' => '<',
|
2658
|
+
'>' => '>',
|
2659
|
+
'|' => '|',
|
2660
|
+
' ' => ' ',
|
2661
|
+
'¡' => '¡',
|
2662
|
+
'¢' => '¢',
|
2663
|
+
'£' => '£',
|
2664
|
+
'¤' => '¤',
|
2665
|
+
'¥' => '¥',
|
2666
|
+
'¦' => '¦',
|
2667
|
+
'&brkbar;' => '¦',
|
2668
|
+
'§' => '§',
|
2669
|
+
'¨' => '¨',
|
2670
|
+
'¨' => '¨',
|
2671
|
+
'©' => '©',
|
2672
|
+
'ª' => 'ª',
|
2673
|
+
'«' => '«',
|
2674
|
+
'¬' => '¬',
|
2675
|
+
'­' => '­',
|
2676
|
+
'®' => '®',
|
2677
|
+
'¯' => '¯',
|
2678
|
+
'&hibar;' => '¯',
|
2679
|
+
'°' => '°',
|
2680
|
+
'±' => '±',
|
2681
|
+
'²' => '²',
|
2682
|
+
'³' => '³',
|
2683
|
+
'´' => '´',
|
2684
|
+
'µ' => 'µ',
|
2685
|
+
'¶' => '¶',
|
2686
|
+
'·' => '·',
|
2687
|
+
'¸' => '¸',
|
2688
|
+
'¹' => '¹',
|
2689
|
+
'º' => 'º',
|
2690
|
+
'»' => '»',
|
2691
|
+
'¼' => '¼',
|
2692
|
+
'½' => '½',
|
2693
|
+
'¾' => '¾',
|
2694
|
+
'¿' => '¿',
|
2695
|
+
'À' => 'À',
|
2696
|
+
'Á' => 'Á',
|
2697
|
+
'Â' => 'Â',
|
2698
|
+
'Ã' => 'Ã',
|
2699
|
+
'Ä' => 'Ä',
|
2700
|
+
'Å' => 'Å',
|
2701
|
+
'Æ' => 'Æ',
|
2702
|
+
'Ç' => 'Ç',
|
2703
|
+
'È' => 'È',
|
2704
|
+
'É' => 'É',
|
2705
|
+
'Ê' => 'Ê',
|
2706
|
+
'Ë' => 'Ë',
|
2707
|
+
'Ì' => 'Ì',
|
2708
|
+
'Í' => 'Í',
|
2709
|
+
'Î' => 'Î',
|
2710
|
+
'Ï' => 'Ï',
|
2711
|
+
'Ð' => 'Ð',
|
2712
|
+
'Ñ' => 'Ñ',
|
2713
|
+
'Ò' => 'Ò',
|
2714
|
+
'Ó' => 'Ó',
|
2715
|
+
'Ô' => 'Ô',
|
2716
|
+
'Õ' => 'Õ',
|
2717
|
+
'Ö' => 'Ö',
|
2718
|
+
'×' => '×',
|
2719
|
+
'Ø' => 'Ø',
|
2720
|
+
'Ù' => 'Ù',
|
2721
|
+
'Ú' => 'Ú',
|
2722
|
+
'Û' => 'Û',
|
2723
|
+
'Ü' => 'Ü',
|
2724
|
+
'Ý' => 'Ý',
|
2725
|
+
'Þ' => 'Þ',
|
2726
|
+
'ß' => 'ß',
|
2727
|
+
'à' => 'à',
|
2728
|
+
'á' => 'á',
|
2729
|
+
'â' => 'â',
|
2730
|
+
'ã' => 'ã',
|
2731
|
+
'ä' => 'ä',
|
2732
|
+
'å' => 'å',
|
2733
|
+
'æ' => 'æ',
|
2734
|
+
'ç' => 'ç',
|
2735
|
+
'è' => 'è',
|
2736
|
+
'é' => 'é',
|
2737
|
+
'ê' => 'ê',
|
2738
|
+
'ë' => 'ë',
|
2739
|
+
'ì' => 'ì',
|
2740
|
+
'í' => 'í',
|
2741
|
+
'î' => 'î',
|
2742
|
+
'ï' => 'ï',
|
2743
|
+
'ð' => 'ð',
|
2744
|
+
'ñ' => 'ñ',
|
2745
|
+
'ò' => 'ò',
|
2746
|
+
'ó' => 'ó',
|
2747
|
+
'ô' => 'ô',
|
2748
|
+
'õ' => 'õ',
|
2749
|
+
'ö' => 'ö',
|
2750
|
+
'÷' => '÷',
|
2751
|
+
'ø' => 'ø',
|
2752
|
+
'ù' => 'ù',
|
2753
|
+
'ú' => 'ú',
|
2754
|
+
'û' => 'û',
|
2755
|
+
'ü' => 'ü',
|
2756
|
+
'ý' => 'ý',
|
2757
|
+
'þ' => 'þ',
|
2758
|
+
'ÿ' => 'ÿ',
|
2759
|
+
'Œ' => 'Œ',
|
2760
|
+
'œ' => 'œ',
|
2761
|
+
'Š' => 'Š',
|
2762
|
+
'š' => 'š',
|
2763
|
+
'Ÿ' => 'Ÿ',
|
2764
|
+
'ƒ' => 'ƒ',
|
2765
|
+
'ˆ' => 'ˆ',
|
2766
|
+
'˜' => '˜',
|
2767
|
+
'Α' => 'Α',
|
2768
|
+
'Β' => 'Β',
|
2769
|
+
'Γ' => 'Γ',
|
2770
|
+
'Δ' => 'Δ',
|
2771
|
+
'Ε' => 'Ε',
|
2772
|
+
'Ζ' => 'Ζ',
|
2773
|
+
'Η' => 'Η',
|
2774
|
+
'Θ' => 'Θ',
|
2775
|
+
'Ι' => 'Ι',
|
2776
|
+
'Κ' => 'Κ',
|
2777
|
+
'Λ' => 'Λ',
|
2778
|
+
'Μ' => 'Μ',
|
2779
|
+
'Ν' => 'Ν',
|
2780
|
+
'Ξ' => 'Ξ',
|
2781
|
+
'Ο' => 'Ο',
|
2782
|
+
'Π' => 'Π',
|
2783
|
+
'Ρ' => 'Ρ',
|
2784
|
+
'Σ' => 'Σ',
|
2785
|
+
'Τ' => 'Τ',
|
2786
|
+
'Υ' => 'Υ',
|
2787
|
+
'Φ' => 'Φ',
|
2788
|
+
'Χ' => 'Χ',
|
2789
|
+
'Ψ' => 'Ψ',
|
2790
|
+
'Ω' => 'Ω',
|
2791
|
+
'α' => 'α',
|
2792
|
+
'β' => 'β',
|
2793
|
+
'γ' => 'γ',
|
2794
|
+
'δ' => 'δ',
|
2795
|
+
'ε' => 'ε',
|
2796
|
+
'ζ' => 'ζ',
|
2797
|
+
'η' => 'η',
|
2798
|
+
'θ' => 'θ',
|
2799
|
+
'ι' => 'ι',
|
2800
|
+
'κ' => 'κ',
|
2801
|
+
'λ' => 'λ',
|
2802
|
+
'μ' => 'μ',
|
2803
|
+
'ν' => 'ν',
|
2804
|
+
'ξ' => 'ξ',
|
2805
|
+
'ο' => 'ο',
|
2806
|
+
'π' => 'π',
|
2807
|
+
'ρ' => 'ρ',
|
2808
|
+
'ς' => 'ς',
|
2809
|
+
'σ' => 'σ',
|
2810
|
+
'τ' => 'τ',
|
2811
|
+
'υ' => 'υ',
|
2812
|
+
'φ' => 'φ',
|
2813
|
+
'χ' => 'χ',
|
2814
|
+
'ψ' => 'ψ',
|
2815
|
+
'ω' => 'ω',
|
2816
|
+
'ϑ' => 'ϑ',
|
2817
|
+
'ϒ' => 'ϒ',
|
2818
|
+
'ϖ' => 'ϖ',
|
2819
|
+
' ' => ' ',
|
2820
|
+
' ' => ' ',
|
2821
|
+
' ' => ' ',
|
2822
|
+
'‌' => '‌',
|
2823
|
+
'‍' => '‍',
|
2824
|
+
'‎' => '‎',
|
2825
|
+
'‏' => '‏',
|
2826
|
+
'–' => '–',
|
2827
|
+
'—' => '—',
|
2828
|
+
'‘' => '‘',
|
2829
|
+
'’' => '’',
|
2830
|
+
'‚' => '‚',
|
2831
|
+
'“' => '“',
|
2832
|
+
'”' => '”',
|
2833
|
+
'„' => '„',
|
2834
|
+
'†' => '†',
|
2835
|
+
'‡' => '‡',
|
2836
|
+
'•' => '•',
|
2837
|
+
'…' => '…',
|
2838
|
+
'‰' => '‰',
|
2839
|
+
'′' => '′',
|
2840
|
+
'″' => '″',
|
2841
|
+
'‹' => '‹',
|
2842
|
+
'›' => '›',
|
2843
|
+
'‾' => '‾',
|
2844
|
+
'⁄' => '⁄',
|
2845
|
+
'€' => '€',
|
2846
|
+
'ℑ' => 'ℑ',
|
2847
|
+
'℘' => '℘',
|
2848
|
+
'ℜ' => 'ℜ',
|
2849
|
+
'™' => '™',
|
2850
|
+
'ℵ' => 'ℵ',
|
2851
|
+
'↵' => '↵',
|
2852
|
+
'⇐' => '⇐',
|
2853
|
+
'⇑' => '⇑',
|
2854
|
+
'⇒' => '⇒',
|
2855
|
+
'⇓' => '⇓',
|
2856
|
+
'⇔' => '⇔',
|
2857
|
+
'∀' => '∀',
|
2858
|
+
'∂' => '∂',
|
2859
|
+
'∃' => '∃',
|
2860
|
+
'∅' => '∅',
|
2861
|
+
'∇' => '∇',
|
2862
|
+
'∈' => '∈',
|
2863
|
+
'∉' => '∉',
|
2864
|
+
'∋' => '∋',
|
2865
|
+
'∏' => '∏',
|
2866
|
+
'∑' => '∑',
|
2867
|
+
'−' => '−',
|
2868
|
+
'∗' => '∗',
|
2869
|
+
'√' => '√',
|
2870
|
+
'∝' => '∝',
|
2871
|
+
'∞' => '∞',
|
2872
|
+
'∠' => '∠',
|
2873
|
+
'∧' => '∧',
|
2874
|
+
'∨' => '∨',
|
2875
|
+
'∩' => '∩',
|
2876
|
+
'∪' => '∪',
|
2877
|
+
'∫' => '∫',
|
2878
|
+
'∴' => '∴',
|
2879
|
+
'∼' => '∼',
|
2880
|
+
'≅' => '≅',
|
2881
|
+
'≈' => '≈',
|
2882
|
+
'≠' => '≠',
|
2883
|
+
'≡' => '≡',
|
2884
|
+
'≤' => '≤',
|
2885
|
+
'≥' => '≥',
|
2886
|
+
'⊂' => '⊂',
|
2887
|
+
'⊃' => '⊃',
|
2888
|
+
'⊄' => '⊄',
|
2889
|
+
'⊆' => '⊆',
|
2890
|
+
'⊇' => '⊇',
|
2891
|
+
'⊕' => '⊕',
|
2892
|
+
'⊗' => '⊗',
|
2893
|
+
'⊥' => '⊥',
|
2894
|
+
'⋅' => '⋅',
|
2895
|
+
'⌈' => '⌈',
|
2896
|
+
'⌉' => '⌉',
|
2897
|
+
'⌊' => '⌊',
|
2898
|
+
'⌋' => '⌋',
|
2899
|
+
'⟨' => '〈',
|
2900
|
+
'⟩' => '〉',
|
2901
|
+
'←' => '←',
|
2902
|
+
'↑' => '↑',
|
2903
|
+
'→' => '→',
|
2904
|
+
'↓' => '↓',
|
2905
|
+
'↔' => '↔',
|
2906
|
+
'◊' => '◊',
|
2907
|
+
'♠' => '♠',
|
2908
|
+
'♣' => '♣',
|
2909
|
+
'♥' => '♥',
|
2910
|
+
'♦' => '♦'
|
2911
|
+
);
|
2912
|
+
|
2913
|
+
return str_replace( array_keys($to_ncr), array_values($to_ncr), $text );
|
2914
|
+
}
|
2915
|
+
|
2916
|
+
/**
|
2917
|
+
* Formats text for the rich text editor.
|
2918
|
+
*
|
2919
|
+
* The filter 'richedit_pre' is applied here. If $text is empty the filter will
|
2920
|
+
* be applied to an empty string.
|
2921
|
+
*
|
2922
|
+
* @since 2.0.0
|
2923
|
+
*
|
2924
|
+
* @param string $text The text to be formatted.
|
2925
|
+
* @return string The formatted text after filter is applied.
|
2926
|
+
*/
|
2927
|
+
function wp_richedit_pre($text) {
|
2928
|
+
if ( empty( $text ) ) {
|
2929
|
+
/**
|
2930
|
+
* Filter text returned for the rich text editor.
|
2931
|
+
*
|
2932
|
+
* This filter is first evaluated, and the value returned, if an empty string
|
2933
|
+
* is passed to wp_richedit_pre(). If an empty string is passed, it results
|
2934
|
+
* in a break tag and line feed.
|
2935
|
+
*
|
2936
|
+
* If a non-empty string is passed, the filter is evaluated on the wp_richedit_pre()
|
2937
|
+
* return after being formatted.
|
2938
|
+
*
|
2939
|
+
* @since 2.0.0
|
2940
|
+
*
|
2941
|
+
* @param string $output Text for the rich text editor.
|
2942
|
+
*/
|
2943
|
+
return apply_filters( 'richedit_pre', '' );
|
2944
|
+
}
|
2945
|
+
|
2946
|
+
$output = convert_chars($text);
|
2947
|
+
$output = wpautop($output);
|
2948
|
+
$output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) );
|
2949
|
+
|
2950
|
+
/** This filter is documented in wp-includes/formatting.php */
|
2951
|
+
return apply_filters( 'richedit_pre', $output );
|
2952
|
+
}
|
2953
|
+
|
2954
|
+
/**
|
2955
|
+
* Formats text for the HTML editor.
|
2956
|
+
*
|
2957
|
+
* Unless $output is empty it will pass through htmlspecialchars before the
|
2958
|
+
* 'htmledit_pre' filter is applied.
|
2959
|
+
*
|
2960
|
+
* @since 2.5.0
|
2961
|
+
*
|
2962
|
+
* @param string $output The text to be formatted.
|
2963
|
+
* @return string Formatted text after filter applied.
|
2964
|
+
*/
|
2965
|
+
function wp_htmledit_pre($output) {
|
2966
|
+
if ( !empty($output) )
|
2967
|
+
$output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > &
|
2968
|
+
|
2969
|
+
/**
|
2970
|
+
* Filter the text before it is formatted for the HTML editor.
|
2971
|
+
*
|
2972
|
+
* @since 2.5.0
|
2973
|
+
*
|
2974
|
+
* @param string $output The HTML-formatted text.
|
2975
|
+
*/
|
2976
|
+
return apply_filters( 'htmledit_pre', $output );
|
2977
|
+
}
|
2978
|
+
|
2979
|
+
/**
|
2980
|
+
* Perform a deep string replace operation to ensure the values in $search are no longer present
|
2981
|
+
*
|
2982
|
+
* Repeats the replacement operation until it no longer replaces anything so as to remove "nested" values
|
2983
|
+
* e.g. $subject = '%0%0%0DDD', $search ='%0D', $result ='' rather than the '%0%0DD' that
|
2984
|
+
* str_replace would return
|
2985
|
+
*
|
2986
|
+
* @since 2.8.1
|
2987
|
+
* @access private
|
2988
|
+
*
|
2989
|
+
* @param string|array $search The value being searched for, otherwise known as the needle. An array may be used to designate multiple needles.
|
2990
|
+
* @param string $subject The string being searched and replaced on, otherwise known as the haystack.
|
2991
|
+
* @return string The string with the replaced svalues.
|
2992
|
+
*/
|
2993
|
+
function _deep_replace( $search, $subject ) {
|
2994
|
+
$subject = (string) $subject;
|
2995
|
+
|
2996
|
+
$count = 1;
|
2997
|
+
while ( $count ) {
|
2998
|
+
$subject = str_replace( $search, '', $subject, $count );
|
2999
|
+
}
|
3000
|
+
|
3001
|
+
return $subject;
|
3002
|
+
}
|
3003
|
+
|
3004
|
+
/**
|
3005
|
+
* Escapes data for use in a MySQL query.
|
3006
|
+
*
|
3007
|
+
* Usually you should prepare queries using wpdb::prepare().
|
3008
|
+
* Sometimes, spot-escaping is required or useful. One example
|
3009
|
+
* is preparing an array for use in an IN clause.
|
3010
|
+
*
|
3011
|
+
* @since 2.8.0
|
3012
|
+
* @param string|array $data Unescaped data
|
3013
|
+
* @return string|array Escaped data
|
3014
|
+
*/
|
3015
|
+
function esc_sql( $data ) {
|
3016
|
+
global $wpdb;
|
3017
|
+
return $wpdb->_escape( $data );
|
3018
|
+
}
|
3019
|
+
|
3020
|
+
/**
|
3021
|
+
* Checks and cleans a URL.
|
3022
|
+
*
|
3023
|
+
* A number of characters are removed from the URL. If the URL is for displaying
|
3024
|
+
* (the default behaviour) ampersands are also replaced. The 'clean_url' filter
|
3025
|
+
* is applied to the returned cleaned URL.
|
3026
|
+
*
|
3027
|
+
* @since 2.8.0
|
3028
|
+
* @uses wp_kses_bad_protocol() To only permit protocols in the URL set
|
3029
|
+
* via $protocols or the common ones set in the function.
|
3030
|
+
*
|
3031
|
+
* @param string $url The URL to be cleaned.
|
3032
|
+
* @param array $protocols Optional. An array of acceptable protocols.
|
3033
|
+
* Defaults to 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn' if not set.
|
3034
|
+
* @param string $_context Private. Use esc_url_raw() for database usage.
|
3035
|
+
* @return string The cleaned $url after the 'clean_url' filter is applied.
|
3036
|
+
*/
|
3037
|
+
function esc_url( $url, $protocols = null, $_context = 'display' ) {
|
3038
|
+
$original_url = $url;
|
3039
|
+
|
3040
|
+
if ( '' == $url )
|
3041
|
+
return $url;
|
3042
|
+
$url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
|
3043
|
+
$strip = array('%0d', '%0a', '%0D', '%0A');
|
3044
|
+
$url = _deep_replace($strip, $url);
|
3045
|
+
$url = str_replace(';//', '://', $url);
|
3046
|
+
/* If the URL doesn't appear to contain a scheme, we
|
3047
|
+
* presume it needs http:// appended (unless a relative
|
3048
|
+
* link starting with /, # or ? or a php file).
|
3049
|
+
*/
|
3050
|
+
if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
|
3051
|
+
! preg_match('/^[a-z0-9-]+?\.php/i', $url) )
|
3052
|
+
$url = 'http://' . $url;
|
3053
|
+
|
3054
|
+
// Replace ampersands and single quotes only when displaying.
|
3055
|
+
if ( 'display' == $_context ) {
|
3056
|
+
$url = wp_kses_normalize_entities( $url );
|
3057
|
+
$url = str_replace( '&', '&', $url );
|
3058
|
+
$url = str_replace( "'", ''', $url );
|
3059
|
+
}
|
3060
|
+
|
3061
|
+
if ( '/' === $url[0] ) {
|
3062
|
+
$good_protocol_url = $url;
|
3063
|
+
} else {
|
3064
|
+
if ( ! is_array( $protocols ) )
|
3065
|
+
$protocols = wp_allowed_protocols();
|
3066
|
+
$good_protocol_url = wp_kses_bad_protocol( $url, $protocols );
|
3067
|
+
if ( strtolower( $good_protocol_url ) != strtolower( $url ) )
|
3068
|
+
return '';
|
3069
|
+
}
|
3070
|
+
|
3071
|
+
/**
|
3072
|
+
* Filter a string cleaned and escaped for output as a URL.
|
3073
|
+
*
|
3074
|
+
* @since 2.3.0
|
3075
|
+
*
|
3076
|
+
* @param string $good_protocol_url The cleaned URL to be returned.
|
3077
|
+
* @param string $original_url The URL prior to cleaning.
|
3078
|
+
* @param string $_context If 'display', replace ampersands and single quotes only.
|
3079
|
+
*/
|
3080
|
+
return apply_filters( 'clean_url', $good_protocol_url, $original_url, $_context );
|
3081
|
+
}
|
3082
|
+
|
3083
|
+
/**
|
3084
|
+
* Performs esc_url() for database usage.
|
3085
|
+
*
|
3086
|
+
* @since 2.8.0
|
3087
|
+
* @uses esc_url()
|
3088
|
+
*
|
3089
|
+
* @param string $url The URL to be cleaned.
|
3090
|
+
* @param array $protocols An array of acceptable protocols.
|
3091
|
+
* @return string The cleaned URL.
|
3092
|
+
*/
|
3093
|
+
function esc_url_raw( $url, $protocols = null ) {
|
3094
|
+
return esc_url( $url, $protocols, 'db' );
|
3095
|
+
}
|
3096
|
+
|
3097
|
+
/**
|
3098
|
+
* Convert entities, while preserving already-encoded entities.
|
3099
|
+
*
|
3100
|
+
* @link http://www.php.net/htmlentities Borrowed from the PHP Manual user notes.
|
3101
|
+
*
|
3102
|
+
* @since 1.2.2
|
3103
|
+
*
|
3104
|
+
* @param string $myHTML The text to be converted.
|
3105
|
+
* @return string Converted text.
|
3106
|
+
*/
|
3107
|
+
function htmlentities2($myHTML) {
|
3108
|
+
$translation_table = get_html_translation_table( HTML_ENTITIES, ENT_QUOTES );
|
3109
|
+
$translation_table[chr(38)] = '&';
|
3110
|
+
return preg_replace( "/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/", "&", strtr($myHTML, $translation_table) );
|
3111
|
+
}
|
3112
|
+
|
3113
|
+
/**
|
3114
|
+
* Escape single quotes, htmlspecialchar " < > &, and fix line endings.
|
3115
|
+
*
|
3116
|
+
* Escapes text strings for echoing in JS. It is intended to be used for inline JS
|
3117
|
+
* (in a tag attribute, for example onclick="..."). Note that the strings have to
|
3118
|
+
* be in single quotes. The filter 'js_escape' is also applied here.
|
3119
|
+
*
|
3120
|
+
* @since 2.8.0
|
3121
|
+
*
|
3122
|
+
* @param string $text The text to be escaped.
|
3123
|
+
* @return string Escaped text.
|
3124
|
+
*/
|
3125
|
+
function esc_js( $text ) {
|
3126
|
+
$safe_text = wp_check_invalid_utf8( $text );
|
3127
|
+
$safe_text = _wp_specialchars( $safe_text, ENT_COMPAT );
|
3128
|
+
$safe_text = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes( $safe_text ) );
|
3129
|
+
$safe_text = str_replace( "\r", '', $safe_text );
|
3130
|
+
$safe_text = str_replace( "\n", '\\n', addslashes( $safe_text ) );
|
3131
|
+
/**
|
3132
|
+
* Filter a string cleaned and escaped for output in JavaScript.
|
3133
|
+
*
|
3134
|
+
* Text passed to esc_js() is stripped of invalid or special characters,
|
3135
|
+
* and properly slashed for output.
|
3136
|
+
*
|
3137
|
+
* @since 2.0.6
|
3138
|
+
*
|
3139
|
+
* @param string $safe_text The text after it has been escaped.
|
3140
|
+
* @param string $text The text prior to being escaped.
|
3141
|
+
*/
|
3142
|
+
return apply_filters( 'js_escape', $safe_text, $text );
|
3143
|
+
}
|
3144
|
+
|
3145
|
+
/**
|
3146
|
+
* Escaping for HTML blocks.
|
3147
|
+
*
|
3148
|
+
* @since 2.8.0
|
3149
|
+
*
|
3150
|
+
* @param string $text
|
3151
|
+
* @return string
|
3152
|
+
*/
|
3153
|
+
function esc_html( $text ) {
|
3154
|
+
$safe_text = wp_check_invalid_utf8( $text );
|
3155
|
+
$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
|
3156
|
+
/**
|
3157
|
+
* Filter a string cleaned and escaped for output in HTML.
|
3158
|
+
*
|
3159
|
+
* Text passed to esc_html() is stripped of invalid or special characters
|
3160
|
+
* before output.
|
3161
|
+
*
|
3162
|
+
* @since 2.8.0
|
3163
|
+
*
|
3164
|
+
* @param string $safe_text The text after it has been escaped.
|
3165
|
+
* @param string $text The text prior to being escaped.
|
3166
|
+
*/
|
3167
|
+
return apply_filters( 'esc_html', $safe_text, $text );
|
3168
|
+
}
|
3169
|
+
|
3170
|
+
/**
|
3171
|
+
* Escaping for HTML attributes.
|
3172
|
+
*
|
3173
|
+
* @since 2.8.0
|
3174
|
+
*
|
3175
|
+
* @param string $text
|
3176
|
+
* @return string
|
3177
|
+
*/
|
3178
|
+
function esc_attr( $text ) {
|
3179
|
+
$safe_text = wp_check_invalid_utf8( $text );
|
3180
|
+
$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
|
3181
|
+
/**
|
3182
|
+
* Filter a string cleaned and escaped for output in an HTML attribute.
|
3183
|
+
*
|
3184
|
+
* Text passed to esc_attr() is stripped of invalid or special characters
|
3185
|
+
* before output.
|
3186
|
+
*
|
3187
|
+
* @since 2.0.6
|
3188
|
+
*
|
3189
|
+
* @param string $safe_text The text after it has been escaped.
|
3190
|
+
* @param string $text The text prior to being escaped.
|
3191
|
+
*/
|
3192
|
+
return apply_filters( 'attribute_escape', $safe_text, $text );
|
3193
|
+
}
|
3194
|
+
|
3195
|
+
/**
|
3196
|
+
* Escaping for textarea values.
|
3197
|
+
*
|
3198
|
+
* @since 3.1.0
|
3199
|
+
*
|
3200
|
+
* @param string $text
|
3201
|
+
* @return string
|
3202
|
+
*/
|
3203
|
+
function esc_textarea( $text ) {
|
3204
|
+
$safe_text = htmlspecialchars( $text, ENT_QUOTES, get_option( 'blog_charset' ) );
|
3205
|
+
/**
|
3206
|
+
* Filter a string cleaned and escaped for output in a textarea element.
|
3207
|
+
*
|
3208
|
+
* @since 3.1.0
|
3209
|
+
*
|
3210
|
+
* @param string $safe_text The text after it has been escaped.
|
3211
|
+
* @param string $text The text prior to being escaped.
|
3212
|
+
*/
|
3213
|
+
return apply_filters( 'esc_textarea', $safe_text, $text );
|
3214
|
+
}
|
3215
|
+
|
3216
|
+
/**
|
3217
|
+
* Escape an HTML tag name.
|
3218
|
+
*
|
3219
|
+
* @since 2.5.0
|
3220
|
+
*
|
3221
|
+
* @param string $tag_name
|
3222
|
+
* @return string
|
3223
|
+
*/
|
3224
|
+
function tag_escape($tag_name) {
|
3225
|
+
$safe_tag = strtolower( preg_replace('/[^a-zA-Z0-9_:]/', '', $tag_name) );
|
3226
|
+
/**
|
3227
|
+
* Filter a string cleaned and escaped for output as an HTML tag.
|
3228
|
+
*
|
3229
|
+
* @since 2.8.0
|
3230
|
+
*
|
3231
|
+
* @param string $safe_tag The tag name after it has been escaped.
|
3232
|
+
* @param string $tag_name The text before it was escaped.
|
3233
|
+
*/
|
3234
|
+
return apply_filters( 'tag_escape', $safe_tag, $tag_name );
|
3235
|
+
}
|
3236
|
+
|
3237
|
+
/**
|
3238
|
+
* Convert full URL paths to absolute paths.
|
3239
|
+
*
|
3240
|
+
* Removes the http or https protocols and the domain. Keeps the path '/' at the
|
3241
|
+
* beginning, so it isn't a true relative link, but from the web root base.
|
3242
|
+
*
|
3243
|
+
* @since 2.1.0
|
3244
|
+
*
|
3245
|
+
* @param string $link Full URL path.
|
3246
|
+
* @return string Absolute path.
|
3247
|
+
*/
|
3248
|
+
function wp_make_link_relative( $link ) {
|
3249
|
+
return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
|
3250
|
+
}
|
3251
|
+
|
3252
|
+
/**
|
3253
|
+
* Sanitises various option values based on the nature of the option.
|
3254
|
+
*
|
3255
|
+
* This is basically a switch statement which will pass $value through a number
|
3256
|
+
* of functions depending on the $option.
|
3257
|
+
*
|
3258
|
+
* @since 2.0.5
|
3259
|
+
*
|
3260
|
+
* @param string $option The name of the option.
|
3261
|
+
* @param string $value The unsanitised value.
|
3262
|
+
* @return string Sanitized value.
|
3263
|
+
*/
|
3264
|
+
function sanitize_option($option, $value) {
|
3265
|
+
|
3266
|
+
switch ( $option ) {
|
3267
|
+
case 'admin_email' :
|
3268
|
+
case 'new_admin_email' :
|
3269
|
+
$value = sanitize_email( $value );
|
3270
|
+
if ( ! is_email( $value ) ) {
|
3271
|
+
$value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
|
3272
|
+
if ( function_exists( 'add_settings_error' ) )
|
3273
|
+
add_settings_error( $option, 'invalid_admin_email', __( 'The email address entered did not appear to be a valid email address. Please enter a valid email address.' ) );
|
3274
|
+
}
|
3275
|
+
break;
|
3276
|
+
|
3277
|
+
case 'thumbnail_size_w':
|
3278
|
+
case 'thumbnail_size_h':
|
3279
|
+
case 'medium_size_w':
|
3280
|
+
case 'medium_size_h':
|
3281
|
+
case 'large_size_w':
|
3282
|
+
case 'large_size_h':
|
3283
|
+
case 'mailserver_port':
|
3284
|
+
case 'comment_max_links':
|
3285
|
+
case 'page_on_front':
|
3286
|
+
case 'page_for_posts':
|
3287
|
+
case 'rss_excerpt_length':
|
3288
|
+
case 'default_category':
|
3289
|
+
case 'default_email_category':
|
3290
|
+
case 'default_link_category':
|
3291
|
+
case 'close_comments_days_old':
|
3292
|
+
case 'comments_per_page':
|
3293
|
+
case 'thread_comments_depth':
|
3294
|
+
case 'users_can_register':
|
3295
|
+
case 'start_of_week':
|
3296
|
+
$value = absint( $value );
|
3297
|
+
break;
|
3298
|
+
|
3299
|
+
case 'posts_per_page':
|
3300
|
+
case 'posts_per_rss':
|
3301
|
+
$value = (int) $value;
|
3302
|
+
if ( empty($value) )
|
3303
|
+
$value = 1;
|
3304
|
+
if ( $value < -1 )
|
3305
|
+
$value = abs($value);
|
3306
|
+
break;
|
3307
|
+
|
3308
|
+
case 'default_ping_status':
|
3309
|
+
case 'default_comment_status':
|
3310
|
+
// Options that if not there have 0 value but need to be something like "closed"
|
3311
|
+
if ( $value == '0' || $value == '')
|
3312
|
+
$value = 'closed';
|
3313
|
+
break;
|
3314
|
+
|
3315
|
+
case 'blogdescription':
|
3316
|
+
case 'blogname':
|
3317
|
+
$value = wp_kses_post( $value );
|
3318
|
+
$value = esc_html( $value );
|
3319
|
+
break;
|
3320
|
+
|
3321
|
+
case 'blog_charset':
|
3322
|
+
$value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value); // strips slashes
|
3323
|
+
break;
|
3324
|
+
|
3325
|
+
case 'blog_public':
|
3326
|
+
// This is the value if the settings checkbox is not checked on POST. Don't rely on this.
|
3327
|
+
if ( null === $value )
|
3328
|
+
$value = 1;
|
3329
|
+
else
|
3330
|
+
$value = intval( $value );
|
3331
|
+
break;
|
3332
|
+
|
3333
|
+
case 'date_format':
|
3334
|
+
case 'time_format':
|
3335
|
+
case 'mailserver_url':
|
3336
|
+
case 'mailserver_login':
|
3337
|
+
case 'mailserver_pass':
|
3338
|
+
case 'upload_path':
|
3339
|
+
$value = strip_tags( $value );
|
3340
|
+
$value = wp_kses_data( $value );
|
3341
|
+
break;
|
3342
|
+
|
3343
|
+
case 'ping_sites':
|
3344
|
+
$value = explode( "\n", $value );
|
3345
|
+
$value = array_filter( array_map( 'trim', $value ) );
|
3346
|
+
$value = array_filter( array_map( 'esc_url_raw', $value ) );
|
3347
|
+
$value = implode( "\n", $value );
|
3348
|
+
break;
|
3349
|
+
|
3350
|
+
case 'gmt_offset':
|
3351
|
+
$value = preg_replace('/[^0-9:.-]/', '', $value); // strips slashes
|
3352
|
+
break;
|
3353
|
+
|
3354
|
+
case 'siteurl':
|
3355
|
+
if ( (bool)preg_match( '#http(s?)://(.+)#i', $value) ) {
|
3356
|
+
$value = esc_url_raw($value);
|
3357
|
+
} else {
|
3358
|
+
$value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
|
3359
|
+
if ( function_exists('add_settings_error') )
|
3360
|
+
add_settings_error('siteurl', 'invalid_siteurl', __('The WordPress address you entered did not appear to be a valid URL. Please enter a valid URL.'));
|
3361
|
+
}
|
3362
|
+
break;
|
3363
|
+
|
3364
|
+
case 'home':
|
3365
|
+
if ( (bool)preg_match( '#http(s?)://(.+)#i', $value) ) {
|
3366
|
+
$value = esc_url_raw($value);
|
3367
|
+
} else {
|
3368
|
+
$value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
|
3369
|
+
if ( function_exists('add_settings_error') )
|
3370
|
+
add_settings_error('home', 'invalid_home', __('The Site address you entered did not appear to be a valid URL. Please enter a valid URL.'));
|
3371
|
+
}
|
3372
|
+
break;
|
3373
|
+
|
3374
|
+
case 'WPLANG':
|
3375
|
+
$allowed = get_available_languages();
|
3376
|
+
if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG ) {
|
3377
|
+
$allowed[] = WPLANG;
|
3378
|
+
}
|
3379
|
+
if ( ! in_array( $value, $allowed ) && ! empty( $value ) ) {
|
3380
|
+
$value = get_option( $option );
|
3381
|
+
}
|
3382
|
+
break;
|
3383
|
+
|
3384
|
+
case 'illegal_names':
|
3385
|
+
if ( ! is_array( $value ) )
|
3386
|
+
$value = explode( ' ', $value );
|
3387
|
+
|
3388
|
+
$value = array_values( array_filter( array_map( 'trim', $value ) ) );
|
3389
|
+
|
3390
|
+
if ( ! $value )
|
3391
|
+
$value = '';
|
3392
|
+
break;
|
3393
|
+
|
3394
|
+
case 'limited_email_domains':
|
3395
|
+
case 'banned_email_domains':
|
3396
|
+
if ( ! is_array( $value ) )
|
3397
|
+
$value = explode( "\n", $value );
|
3398
|
+
|
3399
|
+
$domains = array_values( array_filter( array_map( 'trim', $value ) ) );
|
3400
|
+
$value = array();
|
3401
|
+
|
3402
|
+
foreach ( $domains as $domain ) {
|
3403
|
+
if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
|
3404
|
+
$value[] = $domain;
|
3405
|
+
}
|
3406
|
+
if ( ! $value )
|
3407
|
+
$value = '';
|
3408
|
+
break;
|
3409
|
+
|
3410
|
+
case 'timezone_string':
|
3411
|
+
$allowed_zones = timezone_identifiers_list();
|
3412
|
+
if ( ! in_array( $value, $allowed_zones ) && ! empty( $value ) ) {
|
3413
|
+
$value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
|
3414
|
+
if ( function_exists('add_settings_error') )
|
3415
|
+
add_settings_error('timezone_string', 'invalid_timezone_string', __('The timezone you have entered is not valid. Please select a valid timezone.') );
|
3416
|
+
}
|
3417
|
+
break;
|
3418
|
+
|
3419
|
+
case 'permalink_structure':
|
3420
|
+
case 'category_base':
|
3421
|
+
case 'tag_base':
|
3422
|
+
$value = esc_url_raw( $value );
|
3423
|
+
$value = str_replace( 'http://', '', $value );
|
3424
|
+
break;
|
3425
|
+
|
3426
|
+
case 'default_role' :
|
3427
|
+
if ( ! get_role( $value ) && get_role( 'subscriber' ) )
|
3428
|
+
$value = 'subscriber';
|
3429
|
+
break;
|
3430
|
+
|
3431
|
+
case 'moderation_keys':
|
3432
|
+
case 'blacklist_keys':
|
3433
|
+
$value = explode( "\n", $value );
|
3434
|
+
$value = array_filter( array_map( 'trim', $value ) );
|
3435
|
+
$value = array_unique( $value );
|
3436
|
+
$value = implode( "\n", $value );
|
3437
|
+
break;
|
3438
|
+
}
|
3439
|
+
|
3440
|
+
/**
|
3441
|
+
* Filter an option value following sanitization.
|
3442
|
+
*
|
3443
|
+
* @since 2.3.0
|
3444
|
+
*
|
3445
|
+
* @param string $value The sanitized option value.
|
3446
|
+
* @param string $option The option name.
|
3447
|
+
*/
|
3448
|
+
$value = apply_filters( "sanitize_option_{$option}", $value, $option );
|
3449
|
+
|
3450
|
+
return $value;
|
3451
|
+
}
|
3452
|
+
|
3453
|
+
/**
|
3454
|
+
* Parses a string into variables to be stored in an array.
|
3455
|
+
*
|
3456
|
+
* Uses {@link http://www.php.net/parse_str parse_str()} and stripslashes if
|
3457
|
+
* {@link http://www.php.net/magic_quotes magic_quotes_gpc} is on.
|
3458
|
+
*
|
3459
|
+
* @since 2.2.1
|
3460
|
+
*
|
3461
|
+
* @param string $string The string to be parsed.
|
3462
|
+
* @param array $array Variables will be stored in this array.
|
3463
|
+
*/
|
3464
|
+
function wp_parse_str( $string, &$array ) {
|
3465
|
+
parse_str( $string, $array );
|
3466
|
+
if ( get_magic_quotes_gpc() )
|
3467
|
+
$array = stripslashes_deep( $array );
|
3468
|
+
/**
|
3469
|
+
* Filter the array of variables derived from a parsed string.
|
3470
|
+
*
|
3471
|
+
* @since 2.3.0
|
3472
|
+
*
|
3473
|
+
* @param array $array The array populated with variables.
|
3474
|
+
*/
|
3475
|
+
$array = apply_filters( 'wp_parse_str', $array );
|
3476
|
+
}
|
3477
|
+
|
3478
|
+
/**
|
3479
|
+
* Convert lone less than signs.
|
3480
|
+
*
|
3481
|
+
* KSES already converts lone greater than signs.
|
3482
|
+
*
|
3483
|
+
* @uses wp_pre_kses_less_than_callback in the callback function.
|
3484
|
+
* @since 2.3.0
|
3485
|
+
*
|
3486
|
+
* @param string $text Text to be converted.
|
3487
|
+
* @return string Converted text.
|
3488
|
+
*/
|
3489
|
+
function wp_pre_kses_less_than( $text ) {
|
3490
|
+
return preg_replace_callback('%<[^>]*?((?=<)|>|$)%', 'wp_pre_kses_less_than_callback', $text);
|
3491
|
+
}
|
3492
|
+
|
3493
|
+
/**
|
3494
|
+
* Callback function used by preg_replace.
|
3495
|
+
*
|
3496
|
+
* @uses esc_html to format the $matches text.
|
3497
|
+
* @since 2.3.0
|
3498
|
+
*
|
3499
|
+
* @param array $matches Populated by matches to preg_replace.
|
3500
|
+
* @return string The text returned after esc_html if needed.
|
3501
|
+
*/
|
3502
|
+
function wp_pre_kses_less_than_callback( $matches ) {
|
3503
|
+
if ( false === strpos($matches[0], '>') )
|
3504
|
+
return esc_html($matches[0]);
|
3505
|
+
return $matches[0];
|
3506
|
+
}
|
3507
|
+
|
3508
|
+
/**
|
3509
|
+
* WordPress implementation of PHP sprintf() with filters.
|
3510
|
+
*
|
3511
|
+
* @since 2.5.0
|
3512
|
+
* @link http://www.php.net/sprintf
|
3513
|
+
*
|
3514
|
+
* @param string $pattern The string which formatted args are inserted.
|
3515
|
+
* @param mixed $args,... Arguments to be formatted into the $pattern string.
|
3516
|
+
* @return string The formatted string.
|
3517
|
+
*/
|
3518
|
+
function wp_sprintf( $pattern ) {
|
3519
|
+
$args = func_get_args();
|
3520
|
+
$len = strlen($pattern);
|
3521
|
+
$start = 0;
|
3522
|
+
$result = '';
|
3523
|
+
$arg_index = 0;
|
3524
|
+
while ( $len > $start ) {
|
3525
|
+
// Last character: append and break
|
3526
|
+
if ( strlen($pattern) - 1 == $start ) {
|
3527
|
+
$result .= substr($pattern, -1);
|
3528
|
+
break;
|
3529
|
+
}
|
3530
|
+
|
3531
|
+
// Literal %: append and continue
|
3532
|
+
if ( substr($pattern, $start, 2) == '%%' ) {
|
3533
|
+
$start += 2;
|
3534
|
+
$result .= '%';
|
3535
|
+
continue;
|
3536
|
+
}
|
3537
|
+
|
3538
|
+
// Get fragment before next %
|
3539
|
+
$end = strpos($pattern, '%', $start + 1);
|
3540
|
+
if ( false === $end )
|
3541
|
+
$end = $len;
|
3542
|
+
$fragment = substr($pattern, $start, $end - $start);
|
3543
|
+
|
3544
|
+
// Fragment has a specifier
|
3545
|
+
if ( $pattern[$start] == '%' ) {
|
3546
|
+
// Find numbered arguments or take the next one in order
|
3547
|
+
if ( preg_match('/^%(\d+)\$/', $fragment, $matches) ) {
|
3548
|
+
$arg = isset($args[$matches[1]]) ? $args[$matches[1]] : '';
|
3549
|
+
$fragment = str_replace("%{$matches[1]}$", '%', $fragment);
|
3550
|
+
} else {
|
3551
|
+
++$arg_index;
|
3552
|
+
$arg = isset($args[$arg_index]) ? $args[$arg_index] : '';
|
3553
|
+
}
|
3554
|
+
|
3555
|
+
/**
|
3556
|
+
* Filter a fragment from the pattern passed to wp_sprintf().
|
3557
|
+
*
|
3558
|
+
* If the fragment is unchanged, then sprintf() will be run on the fragment.
|
3559
|
+
*
|
3560
|
+
* @since 2.5.0
|
3561
|
+
*
|
3562
|
+
* @param string $fragment A fragment from the pattern.
|
3563
|
+
* @param string $arg The argument.
|
3564
|
+
*/
|
3565
|
+
$_fragment = apply_filters( 'wp_sprintf', $fragment, $arg );
|
3566
|
+
if ( $_fragment != $fragment )
|
3567
|
+
$fragment = $_fragment;
|
3568
|
+
else
|
3569
|
+
$fragment = sprintf($fragment, strval($arg) );
|
3570
|
+
}
|
3571
|
+
|
3572
|
+
// Append to result and move to next fragment
|
3573
|
+
$result .= $fragment;
|
3574
|
+
$start = $end;
|
3575
|
+
}
|
3576
|
+
return $result;
|
3577
|
+
}
|
3578
|
+
|
3579
|
+
/**
|
3580
|
+
* Localize list items before the rest of the content.
|
3581
|
+
*
|
3582
|
+
* The '%l' must be at the first characters can then contain the rest of the
|
3583
|
+
* content. The list items will have ', ', ', and', and ' and ' added depending
|
3584
|
+
* on the amount of list items in the $args parameter.
|
3585
|
+
*
|
3586
|
+
* @since 2.5.0
|
3587
|
+
*
|
3588
|
+
* @param string $pattern Content containing '%l' at the beginning.
|
3589
|
+
* @param array $args List items to prepend to the content and replace '%l'.
|
3590
|
+
* @return string Localized list items and rest of the content.
|
3591
|
+
*/
|
3592
|
+
function wp_sprintf_l($pattern, $args) {
|
3593
|
+
// Not a match
|
3594
|
+
if ( substr($pattern, 0, 2) != '%l' )
|
3595
|
+
return $pattern;
|
3596
|
+
|
3597
|
+
// Nothing to work with
|
3598
|
+
if ( empty($args) )
|
3599
|
+
return '';
|
3600
|
+
|
3601
|
+
/**
|
3602
|
+
* Filter the translated delimiters used by wp_sprintf_l().
|
3603
|
+
* Placeholders (%s) are included to assist translators and then
|
3604
|
+
* removed before the array of strings reaches the filter.
|
3605
|
+
*
|
3606
|
+
* Please note: Ampersands and entities should be avoided here.
|
3607
|
+
*
|
3608
|
+
* @since 2.5.0
|
3609
|
+
*
|
3610
|
+
* @param array $delimiters An array of translated delimiters.
|
3611
|
+
*/
|
3612
|
+
$l = apply_filters( 'wp_sprintf_l', array(
|
3613
|
+
/* translators: used to join items in a list with more than 2 items */
|
3614
|
+
'between' => sprintf( __('%s, %s'), '', '' ),
|
3615
|
+
/* translators: used to join last two items in a list with more than 2 times */
|
3616
|
+
'between_last_two' => sprintf( __('%s, and %s'), '', '' ),
|
3617
|
+
/* translators: used to join items in a list with only 2 items */
|
3618
|
+
'between_only_two' => sprintf( __('%s and %s'), '', '' ),
|
3619
|
+
) );
|
3620
|
+
|
3621
|
+
$args = (array) $args;
|
3622
|
+
$result = array_shift($args);
|
3623
|
+
if ( count($args) == 1 )
|
3624
|
+
$result .= $l['between_only_two'] . array_shift($args);
|
3625
|
+
// Loop when more than two args
|
3626
|
+
$i = count($args);
|
3627
|
+
while ( $i ) {
|
3628
|
+
$arg = array_shift($args);
|
3629
|
+
$i--;
|
3630
|
+
if ( 0 == $i )
|
3631
|
+
$result .= $l['between_last_two'] . $arg;
|
3632
|
+
else
|
3633
|
+
$result .= $l['between'] . $arg;
|
3634
|
+
}
|
3635
|
+
return $result . substr($pattern, 2);
|
3636
|
+
}
|
3637
|
+
|
3638
|
+
/**
|
3639
|
+
* Safely extracts not more than the first $count characters from html string.
|
3640
|
+
*
|
3641
|
+
* UTF-8, tags and entities safe prefix extraction. Entities inside will *NOT*
|
3642
|
+
* be counted as one character. For example & will be counted as 4, < as
|
3643
|
+
* 3, etc.
|
3644
|
+
*
|
3645
|
+
* @since 2.5.0
|
3646
|
+
*
|
3647
|
+
* @param string $str String to get the excerpt from.
|
3648
|
+
* @param integer $count Maximum number of characters to take.
|
3649
|
+
* @param string $more Optional. What to append if $str needs to be trimmed. Defaults to empty string.
|
3650
|
+
* @return string The excerpt.
|
3651
|
+
*/
|
3652
|
+
function wp_html_excerpt( $str, $count, $more = null ) {
|
3653
|
+
if ( null === $more )
|
3654
|
+
$more = '';
|
3655
|
+
$str = wp_strip_all_tags( $str, true );
|
3656
|
+
$excerpt = mb_substr( $str, 0, $count );
|
3657
|
+
// remove part of an entity at the end
|
3658
|
+
$excerpt = preg_replace( '/&[^;\s]{0,6}$/', '', $excerpt );
|
3659
|
+
if ( $str != $excerpt )
|
3660
|
+
$excerpt = trim( $excerpt ) . $more;
|
3661
|
+
return $excerpt;
|
3662
|
+
}
|
3663
|
+
|
3664
|
+
/**
|
3665
|
+
* Add a Base url to relative links in passed content.
|
3666
|
+
*
|
3667
|
+
* By default it supports the 'src' and 'href' attributes. However this can be
|
3668
|
+
* changed via the 3rd param.
|
3669
|
+
*
|
3670
|
+
* @since 2.7.0
|
3671
|
+
*
|
3672
|
+
* @param string $content String to search for links in.
|
3673
|
+
* @param string $base The base URL to prefix to links.
|
3674
|
+
* @param array $attrs The attributes which should be processed.
|
3675
|
+
* @return string The processed content.
|
3676
|
+
*/
|
3677
|
+
function links_add_base_url( $content, $base, $attrs = array('src', 'href') ) {
|
3678
|
+
global $_links_add_base;
|
3679
|
+
$_links_add_base = $base;
|
3680
|
+
$attrs = implode('|', (array)$attrs);
|
3681
|
+
return preg_replace_callback( "!($attrs)=(['\"])(.+?)\\2!i", '_links_add_base', $content );
|
3682
|
+
}
|
3683
|
+
|
3684
|
+
/**
|
3685
|
+
* Callback to add a base url to relative links in passed content.
|
3686
|
+
*
|
3687
|
+
* @since 2.7.0
|
3688
|
+
* @access private
|
3689
|
+
*
|
3690
|
+
* @param string $m The matched link.
|
3691
|
+
* @return string The processed link.
|
3692
|
+
*/
|
3693
|
+
function _links_add_base($m) {
|
3694
|
+
global $_links_add_base;
|
3695
|
+
//1 = attribute name 2 = quotation mark 3 = URL
|
3696
|
+
return $m[1] . '=' . $m[2] .
|
3697
|
+
( preg_match( '#^(\w{1,20}):#', $m[3], $protocol ) && in_array( $protocol[1], wp_allowed_protocols() ) ?
|
3698
|
+
$m[3] :
|
3699
|
+
path_join( $_links_add_base, $m[3] ) )
|
3700
|
+
. $m[2];
|
3701
|
+
}
|
3702
|
+
|
3703
|
+
/**
|
3704
|
+
* Adds a Target attribute to all links in passed content.
|
3705
|
+
*
|
3706
|
+
* This function by default only applies to <a> tags, however this can be
|
3707
|
+
* modified by the 3rd param.
|
3708
|
+
*
|
3709
|
+
* <b>NOTE:</b> Any current target attributed will be stripped and replaced.
|
3710
|
+
*
|
3711
|
+
* @since 2.7.0
|
3712
|
+
*
|
3713
|
+
* @param string $content String to search for links in.
|
3714
|
+
* @param string $target The Target to add to the links.
|
3715
|
+
* @param array $tags An array of tags to apply to.
|
3716
|
+
* @return string The processed content.
|
3717
|
+
*/
|
3718
|
+
function links_add_target( $content, $target = '_blank', $tags = array('a') ) {
|
3719
|
+
global $_links_add_target;
|
3720
|
+
$_links_add_target = $target;
|
3721
|
+
$tags = implode('|', (array)$tags);
|
3722
|
+
return preg_replace_callback( "!<($tags)([^>]*)>!i", '_links_add_target', $content );
|
3723
|
+
}
|
3724
|
+
|
3725
|
+
/**
|
3726
|
+
* Callback to add a target attribute to all links in passed content.
|
3727
|
+
*
|
3728
|
+
* @since 2.7.0
|
3729
|
+
* @access private
|
3730
|
+
*
|
3731
|
+
* @param string $m The matched link.
|
3732
|
+
* @return string The processed link.
|
3733
|
+
*/
|
3734
|
+
function _links_add_target( $m ) {
|
3735
|
+
global $_links_add_target;
|
3736
|
+
$tag = $m[1];
|
3737
|
+
$link = preg_replace('|( target=([\'"])(.*?)\2)|i', '', $m[2]);
|
3738
|
+
return '<' . $tag . $link . ' target="' . esc_attr( $_links_add_target ) . '">';
|
3739
|
+
}
|
3740
|
+
|
3741
|
+
/**
|
3742
|
+
* Normalize EOL characters and strip duplicate whitespace.
|
3743
|
+
*
|
3744
|
+
* @since 2.7.0
|
3745
|
+
*
|
3746
|
+
* @param string $str The string to normalize.
|
3747
|
+
* @return string The normalized string.
|
3748
|
+
*/
|
3749
|
+
function normalize_whitespace( $str ) {
|
3750
|
+
$str = trim( $str );
|
3751
|
+
$str = str_replace( "\r", "\n", $str );
|
3752
|
+
$str = preg_replace( array( '/\n+/', '/[ \t]+/' ), array( "\n", ' ' ), $str );
|
3753
|
+
return $str;
|
3754
|
+
}
|
3755
|
+
|
3756
|
+
/**
|
3757
|
+
* Properly strip all HTML tags including script and style
|
3758
|
+
*
|
3759
|
+
* This differs from strip_tags() because it removes the contents of
|
3760
|
+
* the <script> and <style> tags. E.g. strip_tags( '<script>something</script>' )
|
3761
|
+
* will return 'something'. wp_strip_all_tags will return ''
|
3762
|
+
*
|
3763
|
+
* @since 2.9.0
|
3764
|
+
*
|
3765
|
+
* @param string $string String containing HTML tags
|
3766
|
+
* @param bool $remove_breaks optional Whether to remove left over line breaks and white space chars
|
3767
|
+
* @return string The processed string.
|
3768
|
+
*/
|
3769
|
+
function wp_strip_all_tags($string, $remove_breaks = false) {
|
3770
|
+
$string = preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $string );
|
3771
|
+
$string = strip_tags($string);
|
3772
|
+
|
3773
|
+
if ( $remove_breaks )
|
3774
|
+
$string = preg_replace('/[\r\n\t ]+/', ' ', $string);
|
3775
|
+
|
3776
|
+
return trim( $string );
|
3777
|
+
}
|
3778
|
+
|
3779
|
+
/**
|
3780
|
+
* Sanitize a string from user input or from the db
|
3781
|
+
*
|
3782
|
+
* check for invalid UTF-8,
|
3783
|
+
* Convert single < characters to entity,
|
3784
|
+
* strip all tags,
|
3785
|
+
* remove line breaks, tabs and extra white space,
|
3786
|
+
* strip octets.
|
3787
|
+
*
|
3788
|
+
* @since 2.9.0
|
3789
|
+
*
|
3790
|
+
* @param string $str
|
3791
|
+
* @return string
|
3792
|
+
*/
|
3793
|
+
function sanitize_text_field($str) {
|
3794
|
+
$filtered = wp_check_invalid_utf8( $str );
|
3795
|
+
|
3796
|
+
if ( strpos($filtered, '<') !== false ) {
|
3797
|
+
$filtered = wp_pre_kses_less_than( $filtered );
|
3798
|
+
// This will strip extra whitespace for us.
|
3799
|
+
$filtered = wp_strip_all_tags( $filtered, true );
|
3800
|
+
} else {
|
3801
|
+
$filtered = trim( preg_replace('/[\r\n\t ]+/', ' ', $filtered) );
|
3802
|
+
}
|
3803
|
+
|
3804
|
+
$found = false;
|
3805
|
+
while ( preg_match('/%[a-f0-9]{2}/i', $filtered, $match) ) {
|
3806
|
+
$filtered = str_replace($match[0], '', $filtered);
|
3807
|
+
$found = true;
|
3808
|
+
}
|
3809
|
+
|
3810
|
+
if ( $found ) {
|
3811
|
+
// Strip out the whitespace that may now exist after removing the octets.
|
3812
|
+
$filtered = trim( preg_replace('/ +/', ' ', $filtered) );
|
3813
|
+
}
|
3814
|
+
|
3815
|
+
/**
|
3816
|
+
* Filter a sanitized text field string.
|
3817
|
+
*
|
3818
|
+
* @since 2.9.0
|
3819
|
+
*
|
3820
|
+
* @param string $filtered The sanitized string.
|
3821
|
+
* @param string $str The string prior to being sanitized.
|
3822
|
+
*/
|
3823
|
+
return apply_filters( 'sanitize_text_field', $filtered, $str );
|
3824
|
+
}
|
3825
|
+
|
3826
|
+
/**
|
3827
|
+
* i18n friendly version of basename()
|
3828
|
+
*
|
3829
|
+
* @since 3.1.0
|
3830
|
+
*
|
3831
|
+
* @param string $path A path.
|
3832
|
+
* @param string $suffix If the filename ends in suffix this will also be cut off.
|
3833
|
+
* @return string
|
3834
|
+
*/
|
3835
|
+
function wp_basename( $path, $suffix = '' ) {
|
3836
|
+
return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
|
3837
|
+
}
|
3838
|
+
|
3839
|
+
/**
|
3840
|
+
* Forever eliminate "Wordpress" from the planet (or at least the little bit we can influence).
|
3841
|
+
*
|
3842
|
+
* Violating our coding standards for a good function name.
|
3843
|
+
*
|
3844
|
+
* @since 3.0.0
|
3845
|
+
*/
|
3846
|
+
function capital_P_dangit( $text ) {
|
3847
|
+
// Simple replacement for titles
|
3848
|
+
$current_filter = current_filter();
|
3849
|
+
if ( 'the_title' === $current_filter || 'wp_title' === $current_filter )
|
3850
|
+
return str_replace( 'Wordpress', 'WordPress', $text );
|
3851
|
+
// Still here? Use the more judicious replacement
|
3852
|
+
static $dblq = false;
|
3853
|
+
if ( false === $dblq )
|
3854
|
+
$dblq = _x( '“', 'opening curly double quote' );
|
3855
|
+
return str_replace(
|
3856
|
+
array( ' Wordpress', '‘Wordpress', $dblq . 'Wordpress', '>Wordpress', '(Wordpress' ),
|
3857
|
+
array( ' WordPress', '‘WordPress', $dblq . 'WordPress', '>WordPress', '(WordPress' ),
|
3858
|
+
$text );
|
3859
|
+
|
3860
|
+
}
|
3861
|
+
|
3862
|
+
/**
|
3863
|
+
* Sanitize a mime type
|
3864
|
+
*
|
3865
|
+
* @since 3.1.3
|
3866
|
+
*
|
3867
|
+
* @param string $mime_type Mime type
|
3868
|
+
* @return string Sanitized mime type
|
3869
|
+
*/
|
3870
|
+
function sanitize_mime_type( $mime_type ) {
|
3871
|
+
$sani_mime_type = preg_replace( '/[^-+*.a-zA-Z0-9\/]/', '', $mime_type );
|
3872
|
+
/**
|
3873
|
+
* Filter a mime type following sanitization.
|
3874
|
+
*
|
3875
|
+
* @since 3.1.3
|
3876
|
+
*
|
3877
|
+
* @param string $sani_mime_type The sanitized mime type.
|
3878
|
+
* @param string $mime_type The mime type prior to sanitization.
|
3879
|
+
*/
|
3880
|
+
return apply_filters( 'sanitize_mime_type', $sani_mime_type, $mime_type );
|
3881
|
+
}
|
3882
|
+
|
3883
|
+
/**
|
3884
|
+
* Sanitize space or carriage return separated URLs that are used to send trackbacks.
|
3885
|
+
*
|
3886
|
+
* @since 3.4.0
|
3887
|
+
*
|
3888
|
+
* @param string $to_ping Space or carriage return separated URLs
|
3889
|
+
* @return string URLs starting with the http or https protocol, separated by a carriage return.
|
3890
|
+
*/
|
3891
|
+
function sanitize_trackback_urls( $to_ping ) {
|
3892
|
+
$urls_to_ping = preg_split( '/[\r\n\t ]/', trim( $to_ping ), -1, PREG_SPLIT_NO_EMPTY );
|
3893
|
+
foreach ( $urls_to_ping as $k => $url ) {
|
3894
|
+
if ( !preg_match( '#^https?://.#i', $url ) )
|
3895
|
+
unset( $urls_to_ping[$k] );
|
3896
|
+
}
|
3897
|
+
$urls_to_ping = array_map( 'esc_url_raw', $urls_to_ping );
|
3898
|
+
$urls_to_ping = implode( "\n", $urls_to_ping );
|
3899
|
+
/**
|
3900
|
+
* Filter a list of trackback URLs following sanitization.
|
3901
|
+
*
|
3902
|
+
* The string returned here consists of a space or carriage return-delimited list
|
3903
|
+
* of trackback URLs.
|
3904
|
+
*
|
3905
|
+
* @since 3.4.0
|
3906
|
+
*
|
3907
|
+
* @param string $urls_to_ping Sanitized space or carriage return separated URLs.
|
3908
|
+
* @param string $to_ping Space or carriage return separated URLs before sanitization.
|
3909
|
+
*/
|
3910
|
+
return apply_filters( 'sanitize_trackback_urls', $urls_to_ping, $to_ping );
|
3911
|
+
}
|
3912
|
+
|
3913
|
+
/**
|
3914
|
+
* Add slashes to a string or array of strings.
|
3915
|
+
*
|
3916
|
+
* This should be used when preparing data for core API that expects slashed data.
|
3917
|
+
* This should not be used to escape data going directly into an SQL query.
|
3918
|
+
*
|
3919
|
+
* @since 3.6.0
|
3920
|
+
*
|
3921
|
+
* @param string|array $value String or array of strings to slash.
|
3922
|
+
* @return string|array Slashed $value
|
3923
|
+
*/
|
3924
|
+
function wp_slash( $value ) {
|
3925
|
+
if ( is_array( $value ) ) {
|
3926
|
+
foreach ( $value as $k => $v ) {
|
3927
|
+
if ( is_array( $v ) ) {
|
3928
|
+
$value[$k] = wp_slash( $v );
|
3929
|
+
} else {
|
3930
|
+
$value[$k] = addslashes( $v );
|
3931
|
+
}
|
3932
|
+
}
|
3933
|
+
} else {
|
3934
|
+
$value = addslashes( $value );
|
3935
|
+
}
|
3936
|
+
|
3937
|
+
return $value;
|
3938
|
+
}
|
3939
|
+
|
3940
|
+
/**
|
3941
|
+
* Remove slashes from a string or array of strings.
|
3942
|
+
*
|
3943
|
+
* This should be used to remove slashes from data passed to core API that
|
3944
|
+
* expects data to be unslashed.
|
3945
|
+
*
|
3946
|
+
* @since 3.6.0
|
3947
|
+
*
|
3948
|
+
* @param string|array $value String or array of strings to unslash.
|
3949
|
+
* @return string|array Unslashed $value
|
3950
|
+
*/
|
3951
|
+
function wp_unslash( $value ) {
|
3952
|
+
return stripslashes_deep( $value );
|
3953
|
+
}
|
3954
|
+
|
3955
|
+
/**
|
3956
|
+
* Extract and return the first URL from passed content.
|
3957
|
+
*
|
3958
|
+
* @since 3.6.0
|
3959
|
+
*
|
3960
|
+
* @param string $content A string which might contain a URL.
|
3961
|
+
* @return string The found URL.
|
3962
|
+
*/
|
3963
|
+
function get_url_in_content( $content ) {
|
3964
|
+
if ( empty( $content ) ) {
|
3965
|
+
return false;
|
3966
|
+
}
|
3967
|
+
|
3968
|
+
if ( preg_match( '/<a\s[^>]*?href=([\'"])(.+?)\1/is', $content, $matches ) ) {
|
3969
|
+
return esc_url_raw( $matches[2] );
|
3970
|
+
}
|
3971
|
+
|
3972
|
+
return false;
|
3973
|
+
}
|
3974
|
+
|
3975
|
+
/**
|
3976
|
+
* Returns the regexp for common whitespace characters.
|
3977
|
+
*
|
3978
|
+
* By default, spaces include new lines, tabs, nbsp entities, and the UTF-8 nbsp.
|
3979
|
+
* This is designed to replace the PCRE \s sequence. In ticket #22692, that
|
3980
|
+
* sequence was found to be unreliable due to random inclusion of the A0 byte.
|
3981
|
+
*
|
3982
|
+
* @since 4.0.0
|
3983
|
+
*
|
3984
|
+
* @return string The spaces regexp.
|
3985
|
+
*/
|
3986
|
+
function wp_spaces_regexp() {
|
3987
|
+
static $spaces;
|
3988
|
+
|
3989
|
+
if ( empty( $spaces ) ) {
|
3990
|
+
/**
|
3991
|
+
* Filter the regexp for common whitespace characters.
|
3992
|
+
*
|
3993
|
+
* This string is substituted for the \s sequence as needed in regular
|
3994
|
+
* expressions. For websites not written in English, different characters
|
3995
|
+
* may represent whitespace. For websites not encoded in UTF-8, the 0xC2 0xA0
|
3996
|
+
* sequence may not be in use.
|
3997
|
+
*
|
3998
|
+
* @since 4.0.0
|
3999
|
+
*
|
4000
|
+
* @param string $spaces Regexp pattern for matching common whitespace characters.
|
4001
|
+
*/
|
4002
|
+
$spaces = apply_filters( 'wp_spaces_regexp', '[\r\n\t ]|\xC2\xA0| ' );
|
4003
|
+
}
|
4004
|
+
|
4005
|
+
return $spaces;
|
4006
|
+
}
|