{"id":308183,"date":"2026-05-07T13:56:40","date_gmt":"2026-05-07T13:56:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tempaloo-webp\/"},"modified":"2026-05-07T13:56:53","modified_gmt":"2026-05-07T13:56:53","slug":"tempaloo-webp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tempaloo-webp\/","author":20423139,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Tempaloo WebP","header_author":"Tempaloo","header_description":"Convert images to WebP & AVIF automatically. Faster sites, no setup.","assets_banners_color":"3c3c3c","last_updated":"2026-05-07 13:56:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tempaloo.com\/webp","header_author_uri":"https:\/\/tempaloo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"otmanehammadi","date":"2026-05-07 13:56:53"}},"upgrade_notice":{"1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3525607,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3525607,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3525607,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3525607,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3525607,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3525607,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3525607,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"The dashboard \u2014 monthly quota, savings stats, license management.","2":"Bulk conversion in progress.","3":"Per-attachment conversion badges in the media library.","4":"Settings \u2014 quality, output format, auto-convert toggle."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[194661,29161,163,247,15376],"plugin_category":[50,54],"plugin_contributors":[262175],"plugin_business_model":[],"class_list":["post-308183","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-image-optimization","plugin_tags-images","plugin_tags-performance","plugin_tags-webp","plugin_category-media","plugin_category-security-and-spam-protection","plugin_contributors-otmanehammadi","plugin_committers-otmanehammadi"],"banners":{"banner":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/banner-772x250.png?rev=3525607","banner_2x":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/banner-1544x500.png?rev=3525607","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/icon-256x256.png?rev=3525607","icon_2x":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/icon-256x256.png?rev=3525607","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/screenshot-1.png?rev=3525607","caption":"The dashboard \u2014 monthly quota, savings stats, license management."},{"src":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/screenshot-2.png?rev=3525607","caption":"Bulk conversion in progress."},{"src":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/screenshot-3.png?rev=3525607","caption":"Per-attachment conversion badges in the media library."},{"src":"https:\/\/ps.w.org\/tempaloo-webp\/assets\/screenshot-4.png?rev=3525607","caption":"Settings \u2014 quality, output format, auto-convert toggle."}],"raw_content":"<!--section=description-->\n<p><strong>The pricing problem with most WebP plugins<\/strong><\/p>\n\n<p>WordPress generates 5-8 thumbnails for every image you upload (<code>thumbnail<\/code>, <code>medium<\/code>, <code>medium_large<\/code>, <code>large<\/code>, <code>full<\/code>, plus theme-specific sizes). Most popular optimizers count each thumbnail as a separate credit, so a single product photo or blog hero can burn through 6-8 credits before you've touched your second image.<\/p>\n\n<p>Tempaloo charges <strong>1 credit per upload<\/strong>, no matter how many sizes WordPress derives from it. Same quota, 6-8x more usable conversions.<\/p>\n\n<p><strong>Concrete comparison \u2014 1,000 uploads \/ month<\/strong><\/p>\n\n<ul>\n<li>ShortPixel \/ Imagify (per-thumbnail billing): <strong>6,000 to 8,000 credits consumed<\/strong> \u2192 you need a 10k or 20k plan.<\/li>\n<li>Tempaloo (per-upload billing): <strong>1,000 credits consumed<\/strong> \u2192 our 5,000-image Starter plan covers you 5x over.<\/li>\n<\/ul>\n\n<p>If your site averages 4+ thumbnails per upload (which it does, by default), Tempaloo is the lowest cost-per-converted-image on the market.<\/p>\n\n<p><strong>Built for<\/strong><\/p>\n\n<ul>\n<li><strong>Agencies<\/strong> managing 10\u2013100 client sites tired of credit math and license-per-site upcharges (our Growth plan covers 5 sites; Business covers unlimited).<\/li>\n<li><strong>WooCommerce stores<\/strong> with 50+ photos per product who blow through ShortPixel quotas in days.<\/li>\n<li><strong>Photographers, portfolios, magazines<\/strong> who want AVIF + high quality without the Imagify Pro tier.<\/li>\n<\/ul>\n\n<p><strong>What's in version 1.0<\/strong><\/p>\n\n<ul>\n<li><strong>Async upload pipeline<\/strong> \u2014 conversion runs in a fresh PHP process via non-blocking loopback, so your uploads finish instantly and we never fight other plugins on the same WordPress filter chain (security scanners, page builders, other optimizers). Most optimizers convert sync inline; that's where conflicts come from.<\/li>\n<li><strong>Bulk converter<\/strong> with adaptive backoff, pause\/resume, and live progress (current image, savings counter, ETA).<\/li>\n<li><strong>Diagnostic + reconcile tab<\/strong> \u2014 drift detection across filesystem, attachment metadata, bulk state, and retry queue. One click to repair desynchronized state. Most optimizers leave this to the user; we audit it.<\/li>\n<li><strong>AVIF on every paid tier<\/strong> \u2014 not a Pro-only add-on. Starter (5\u20ac\/mo) already includes it.<\/li>\n<li><strong>WP-CLI<\/strong> \u2014 <code>wp tempaloo status \/ activate \/ bulk \/ restore \/ quota<\/code>. First-class deploy story for managed WordPress hosts.<\/li>\n<li><strong>Picture-tag and URL-rewrite delivery modes<\/strong> \u2014 picture-tag works with Gutenberg, Elementor, Bricks, Divi, Beaver Builder, WooCommerce, and any theme. URL rewrite stays out of your markup. CDN passthrough also supported.<\/li>\n<li><strong>Compatibility hardening<\/strong> \u2014 atomic temp+rename writes, explicit <code>nocache_headers()<\/code> + <code>DONOTCACHEPAGE<\/code> so LiteSpeed Cache, WP Rocket, and W3 Total Cache never serve stale admin data.<\/li>\n<li><strong>Developer hooks<\/strong> \u2014 three filters\/actions to skip attachments, override quality, and react after conversion. See \"Developer hooks\" below.<\/li>\n<\/ul>\n\n<p><strong>Pricing<\/strong><\/p>\n\n<ul>\n<li><strong>Free plan<\/strong>: 250 images \/ month, 1 site, no credit card required.<\/li>\n<li><strong>Starter<\/strong> (5 \u20ac\/mo): 5,000 images\/month, AVIF included.<\/li>\n<li><strong>Growth<\/strong> (12 \u20ac\/mo): 25,000 images\/month, 5 sites per license.<\/li>\n<li><strong>Business<\/strong> (29 \u20ac\/mo): 150,000 images\/month, unlimited sites.<\/li>\n<li><strong>Unlimited<\/strong> (59 \u20ac\/mo): fair-use 500k\/mo, priority SLA.<\/li>\n<\/ul>\n\n<p>Paid plans include a 7-day trial and a 30-day money-back guarantee. Credits roll over up to 30 days on paid plans.<\/p>\n\n<p>Full details at <a href=\"https:\/\/tempaloo.com\/webp\">https:\/\/tempaloo.com\/webp<\/a>.<\/p>\n\n<p><strong>Trademarks<\/strong><\/p>\n\n<p>WebP and AVIF are open image formats developed by Google and the Alliance for Open Media respectively. Tempaloo is an independent product and is not affiliated with, endorsed by, or sponsored by Google or the Alliance for Open Media. ShortPixel, Imagify, EWWW, Smush, and Optimole are trademarks of their respective owners and are referenced for comparison purposes only.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Tempaloo conversion API hosted at <code>https:\/\/api.tempaloo.com<\/code> to:<\/p>\n\n<ul>\n<li>Verify your license key when you activate the plugin.<\/li>\n<li>Convert images to WebP or AVIF \u2014 the plugin sends your image files (temporarily, not stored) along with your license key and site URL.<\/li>\n<li>Fetch your current monthly quota.<\/li>\n<li>Receive webhooks from Freemius (our payment processor) for subscription events.<\/li>\n<\/ul>\n\n<p><strong>What data is sent<\/strong><\/p>\n\n<ul>\n<li>Your license key (required for authentication).<\/li>\n<li>Your site URL (for license-to-site binding).<\/li>\n<li>The image bytes to be converted (streamed, never persisted on our servers \u2014 originals stay on your server).<\/li>\n<li>Your WordPress and plugin version (for compatibility diagnostics).<\/li>\n<\/ul>\n\n<p><strong>Data retention<\/strong><\/p>\n\n<ul>\n<li>Image data is held in memory only during conversion, then discarded.<\/li>\n<li>Usage logs (count of conversions, byte totals, duration) are stored for billing and analytics, associated with your license.<\/li>\n<li>No personal data beyond what is needed to authenticate your license: your account email (collected at activation or via Google OAuth) and the URL of the WordPress site where the license is active. Both are necessary for license enforcement and are detailed in our privacy policy at https:\/\/tempaloo.com\/privacy.<\/li>\n<\/ul>\n\n<p><strong>Providers<\/strong><\/p>\n\n<ul>\n<li>Conversion API: <strong>Tempaloo<\/strong> (hosted in Frankfurt, EU).\n\n<ul>\n<li><a href=\"https:\/\/tempaloo.com\/terms\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/tempaloo.com\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li>Payment processing (paid plans only, triggered by clicking \"Upgrade\"): <strong>Freemius, Inc.<\/strong>\n\n<ul>\n<li><a href=\"https:\/\/freemius.com\/privacy\/\">Freemius Privacy Policy<\/a><\/li>\n<li><a href=\"https:\/\/freemius.com\/terms\/\">Freemius Terms<\/a><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p>By activating this plugin and entering a license key, you agree to Tempaloo's Terms and Privacy Policy.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>See the <strong>External services<\/strong> section above for a full disclosure of the data this plugin sends to the Tempaloo API.<\/p>\n\n<h3>Developer hooks<\/h3>\n\n<p>Three hooks let you tailor the plugin's behavior from your own theme or custom plugin. They fire on both the auto-convert-on-upload path and the bulk path (CLI or admin), so a single rule applies everywhere.<\/p>\n\n<pre><code>apply_filters( 'tempaloo_webp_skip_attachment', false, $attachment_id, $mode )\n<\/code><\/pre>\n\n<p>Return <code>true<\/code> to bypass conversion for a specific attachment. Useful to exclude a folder, a CPT, or images larger than a threshold.<\/p>\n\n<pre><code>apply_filters( 'tempaloo_webp_quality_for', $quality, $attachment_id, $format )\n<\/code><\/pre>\n\n<p>Override the quality value (1\u2013100) per attachment. Returned values are clamped to 1\u2013100. Useful to lift quality on portfolio shots or drop it on product thumbnails.<\/p>\n\n<pre><code>do_action( 'tempaloo_webp_after_convert', $attachment_id, $info )\n<\/code><\/pre>\n\n<p>Fired after a successful conversion (one or more sizes written). <code>$info<\/code> contains <code>format<\/code>, <code>converted<\/code>, <code>failed<\/code>, <code>mode<\/code>, <code>quality<\/code>, <code>sizes<\/code>. Useful for CDN purges, custom logging, webhooks, manifest rebuilds.<\/p>\n\n<p>Example \u2014 skip conversion for any attachment in the <code>private\/<\/code> upload subfolder:<\/p>\n\n<pre><code>add_filter( 'tempaloo_webp_skip_attachment', function( $skip, $id ) {\n    $path = get_attached_file( $id );\n    return $path &amp;&amp; false !== strpos( $path, '\/uploads\/private\/' );\n}, 10, 2 );&lt;h3&gt;Source code&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Tempaloo WebP is open source under the GPLv2 (or later) license. All compiled assets are generated from human-readable sources included in this distribution \u2014 no obfuscated or auto-generated code without a matching source.<\/p>\n\n<h4>Compiled assets<\/h4>\n\n<p>The admin dashboard UI is built with Vite + React + TailwindCSS. The compiled output (<code>build\/admin.js<\/code> and <code>build\/admin.css<\/code>) is generated from the source files under <code>admin-app\/<\/code>:<\/p>\n\n<ul>\n<li>TypeScript \/ TSX source: <code>admin-app\/src\/<\/code><\/li>\n<li>Build configuration: <code>admin-app\/vite.config.ts<\/code>, <code>admin-app\/tsconfig.json<\/code>, <code>admin-app\/tailwind.config.js<\/code>, <code>admin-app\/postcss.config.js<\/code><\/li>\n<li>Dependency manifest: <code>admin-app\/package.json<\/code> (and <code>admin-app\/package-lock.json<\/code> for reproducible installs)<\/li>\n<\/ul>\n\n<h4>How to rebuild<\/h4>\n\n<p>From the plugin root:<\/p>\n\n<pre><code>cd admin-app\nnpm install\nnpm run build\n<\/code><\/pre>\n\n<p>This regenerates <code>build\/admin.js<\/code> and <code>build\/admin.css<\/code>. Output is deterministic \u2014 same source plus same lock file produce the same bytes.<\/p>\n\n<pre><code>npm run typecheck runs the TypeScript compiler in `--noEmit` mode for a standalone type check.\n<\/code><\/pre>\n\n<h4>Third-party libraries<\/h4>\n\n<p>All third-party libraries are pulled in via npm (declared in <code>admin-app\/package.json<\/code>) \u2014 none are vendored as pre-built minified files in this repository. Their licenses are MIT and compatible with GPLv2-or-later.<\/p>\n\n<ul>\n<li>React 18 \u2014 https:\/\/react.dev (MIT)<\/li>\n<li>React DOM 18 \u2014 https:\/\/react.dev (MIT)<\/li>\n<li>clsx \u2014 https:\/\/github.com\/lukeed\/clsx (MIT)<\/li>\n<li>@freemius\/checkout \u2014 https:\/\/github.com\/Freemius\/checkout (MIT)<\/li>\n<li>TailwindCSS \u2014 https:\/\/tailwindcss.com (MIT)<\/li>\n<li>Vite \u2014 https:\/\/vitejs.dev (MIT)<\/li>\n<li>PostCSS \u2014 https:\/\/postcss.org (MIT)<\/li>\n<li>Autoprefixer \u2014 https:\/\/github.com\/postcss\/autoprefixer (MIT)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/tempaloo-webp\/<\/code>, or install via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to the <strong>Tempaloo WebP<\/strong> menu in your admin sidebar.<\/li>\n<li>Click <strong>Generate an API key<\/strong> (opens tempaloo.com\/webp\/activate) or paste an existing key.<\/li>\n<li>Click <strong>Activate<\/strong>. New uploads will be converted automatically.<\/li>\n<li>(Optional) Go to the <strong>Bulk<\/strong> tab and click <strong>Start conversion<\/strong> to convert your existing library.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20to%20use%20this%20plugin%3F\"><h3>Do I need an account to use this plugin?<\/h3><\/dt>\n<dd><p>Yes. Conversion happens on our API, so a license key is required. The Free plan (250 images\/month) takes 10 seconds to generate and requires no credit card.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20hit%20my%20quota%3F\"><h3>What happens if I hit my quota?<\/h3><\/dt>\n<dd><p>New uploads stop being converted until the next monthly reset, or until you upgrade. Images already converted keep being served as WebP\/AVIF \u2014 nothing breaks.<\/p><\/dd>\n<dt id=\"are%20my%20images%20stored%20on%20your%20servers%3F\"><h3>Are my images stored on your servers?<\/h3><\/dt>\n<dd><p>No. Conversion happens in-memory. The converted file is streamed back to your site; the input and output are not persisted. Originals always stay on your server.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20my%20page%20builder%20%2F%20theme%3F\"><h3>Will it work with my page builder \/ theme?<\/h3><\/dt>\n<dd><p>Yes. The plugin is standalone \u2014 it hooks into WordPress's media pipeline via <code>wp_handle_upload<\/code> and <code>wp_get_attachment_image<\/code>. It works with Gutenberg, Elementor, Bricks, Divi, Beaver Builder, WooCommerce and any theme, without modification.<\/p><\/dd>\n<dt id=\"can%20i%20uninstall%20and%20keep%20my%20converted%20images%3F\"><h3>Can I uninstall and keep my converted images?<\/h3><\/dt>\n<dd><p>Yes. Uninstalling only removes the plugin settings. The <code>.webp<\/code> \/ <code>.avif<\/code> files we wrote next to your originals stay on your server. Your originals are never touched.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20with%20shortpixel%20%2F%20imagify%20%2F%20elementor%20image%20optimizer%3F\"><h3>What's the difference with ShortPixel \/ Imagify \/ Elementor Image Optimizer?<\/h3><\/dt>\n<dd><p>They charge one credit per thumbnail WordPress generates (6-8 per upload). We charge one credit per upload, all sizes bundled. For the same monthly quota, you get 6-8x more usable conversions.<\/p><\/dd>\n<dt id=\"does%20the%20free%20plan%20require%20a%20credit%20card%3F\"><h3>Does the Free plan require a credit card?<\/h3><\/dt>\n<dd><p>No. Paid plans include a 7-day trial and a 30-day money-back guarantee.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>Initial public release. Highlights:<\/p>\n\n<ul>\n<li><strong>WebP &amp; AVIF conversion<\/strong> \u2014 every uploaded image plus all WordPress-generated sizes (thumbnail, medium, medium_large, large, full) are converted to <code>.webp<\/code> (and optionally <code>.avif<\/code>) siblings. Originals are never modified, so restore is one click.<\/li>\n<li><strong>Async upload pipeline<\/strong> \u2014 conversion runs in a fresh PHP process via a non-blocking loopback request, so uploads finish instantly even on slow hosts and never fight other image-optimizer plugins on the same WordPress filter chain.<\/li>\n<li><strong>Bulk converter<\/strong> \u2014 convert your entire Media Library in batches, with adaptive backoff on transient API failures, pause \/ resume on quota or daily-cap, and live progress (current image, savings counter, ETA).<\/li>\n<li><strong>Pro Media Library column<\/strong> \u2014 per-row format badge, savings breakdown, expandable detail per size, inline restore confirmation. Bulk row-actions for \"Optimize selected\" and \"Restore originals\".<\/li>\n<li><strong>Picture-tag and URL-rewrite delivery modes<\/strong> \u2014 picture-tag works with every page builder (Elementor, Bricks, Divi, Beaver Builder); URL rewrite stays out of the markup. CDN passthrough mode also supported.<\/li>\n<li><strong>Diagnostic tab<\/strong> \u2014 state audit (drift detection across filesystem, attachment meta, bulk state, retry queue), reconcile button, per-attachment forensic inspect, filesystem self-test.<\/li>\n<li><strong>Compatibility hardening<\/strong> \u2014 atomic temp+rename writes, cache-buster on every REST call, explicit <code>nocache_headers()<\/code> + <code>DONOTCACHEPAGE<\/code> so LiteSpeed Cache \/ WP Rocket \/ W3 Total Cache never serve stale admin data.<\/li>\n<li><strong>Developer hooks<\/strong> \u2014 <code>tempaloo_webp_skip_attachment<\/code>, <code>tempaloo_webp_quality_for<\/code>, <code>tempaloo_webp_after_convert<\/code>. WP-CLI commands: <code>wp tempaloo status \/ activate \/ bulk \/ restore \/ quota<\/code>.<\/li>\n<\/ul>","raw_excerpt":"The image optimizer that doesn&#039;t charge you for thumbnails. 1 credit per upload, all sizes included \u2014 6-8x more conversions for the same quota.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/308183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=308183"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/otmanehammadi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=308183"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=308183"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=308183"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=308183"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=308183"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=308183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}