| @@ -18,49 +18,10 @@ | ||
| 18 | 18 | */ |
| 19 | 19 | public function __construct() { |
| 20 | 20 | $this->addons_config = array( |
| 21 | 21 | |
| 22 | - 'mxchat-advanced-content' => array( | |
| 23 | - 'title' => __('MxChat Advanced Content Editor', 'mxchat'), | |
| 24 | - 'sidebar_title' => __('Content Gen.', 'mxchat'), | |
| 25 | - 'description' => __('Supercharge your AI content generation workflow. Add advanced editing tools, image management, SEO meta controls, and internal linking to the MxChat Content Generator—turning simple prompts into publish-ready posts and landing pages.', 'mxchat'), | |
| 26 | - 'key_benefits' => array( | |
| 27 | - __('AI-powered image regeneration & uploads', 'mxchat'), | |
| 28 | - __('SEO meta title, description & excerpt editor', 'mxchat'), | |
| 29 | - __('Automatic internal linking between posts', 'mxchat') | |
| 30 | - ), | |
| 31 | - 'license' => 'MxChat PRO', | |
| 32 | - 'accent' => '#6366f1', | |
| 33 | - 'url' => 'https://mxchat.ai/documentation-bot/', | |
| 34 | - 'download_url' => 'https://mxchat.ai/advanced-content-editor/', | |
| 35 | - 'plugin_file' => 'mxchat-advanced-content/mxchat-advanced-content.php', | |
| 36 | - 'config_page' => 'mxchat-content', | |
| 37 | - 'hero_features' => array( | |
| 38 | - array( | |
| 39 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>', | |
| 40 | - 'title' => __('Image Management', 'mxchat'), | |
| 41 | - 'desc' => __('Regenerate, upload, and swap AI images', 'mxchat'), | |
| 42 | - ), | |
| 43 | - array( | |
| 44 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>', | |
| 45 | - 'title' => __('SEO Meta Editor', 'mxchat'), | |
| 46 | - 'desc' => __('Title, description & excerpt controls', 'mxchat'), | |
| 47 | - ), | |
| 48 | - array( | |
| 49 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>', | |
| 50 | - 'title' => __('Internal Linking', 'mxchat'), | |
| 51 | - 'desc' => __('Auto-link to related posts & pages', 'mxchat'), | |
| 52 | - ), | |
| 53 | - array( | |
| 54 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"/></svg>', | |
| 55 | - 'title' => __('Chat-Based Editing', 'mxchat'), | |
| 56 | - 'desc' => __('Refine content through conversation', 'mxchat'), | |
| 57 | - ), | |
| 58 | - ), | |
| 59 | - ), | |
| 60 | - | |
| 61 | 22 | 'mxchat-theme' => array( |
| 62 | - 'title' => __('MxChat Chat Themes', 'mxchat'), | |
| 23 | + 'title' => __('MxChat Theme Customizer', 'mxchat'), | |
| 63 | 24 | 'description' => __('Make your chatbot uniquely yours. Generate beautiful themes instantly using simple descriptions or customize manually with precise color controls—zero coding required. Perfect for matching your brand identity.', 'mxchat'), |
| 64 | 25 | 'key_benefits' => array( |
| 65 | 26 | __('AI-powered theme generator', 'mxchat'), |
| 66 | 27 | __('Live preview customizer', 'mxchat'), |
| @@ -69,31 +30,9 @@ | ||
| 69 | 30 | 'license' => 'MxChat PRO', |
| 70 | 31 | 'accent' => '#fa73e6', |
| 71 | 32 | 'url' => 'https://mxchat.ai/ai-theme-customizer/', |
| 72 | 33 | 'plugin_file' => 'mxchat-theme/mxchat-theme.php', |
| 73 | - 'config_page' => 'mxchat-theme-settings', | |
| 74 | - 'hero_features' => array( | |
| 75 | - array( | |
| 76 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="13.5" cy="6.5" r="2.5"/><path d="M17.5 10.5l4-4"/><circle cx="6" cy="12" r="2"/><path d="M2 14l2-2"/><circle cx="10.5" cy="17.5" r="2.5"/><path d="M14 21l-1-3"/></svg>', | |
| 77 | - 'title' => __('AI Theme Generator', 'mxchat'), | |
| 78 | - 'desc' => __('Describe your style, AI creates it', 'mxchat'), | |
| 79 | - ), | |
| 80 | - array( | |
| 81 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/></svg>', | |
| 82 | - 'title' => __('Live Preview', 'mxchat'), | |
| 83 | - 'desc' => __('See changes in real-time', 'mxchat'), | |
| 84 | - ), | |
| 85 | - array( | |
| 86 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>', | |
| 87 | - 'title' => __('Color Controls', 'mxchat'), | |
| 88 | - 'desc' => __('Fine-tune every color precisely', 'mxchat'), | |
| 89 | - ), | |
| 90 | - array( | |
| 91 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>', | |
| 92 | - 'title' => __('One-Click Apply', 'mxchat'), | |
| 93 | - 'desc' => __('Apply themes instantly', 'mxchat'), | |
| 94 | - ), | |
| 95 | - ), | |
| 34 | + 'config_page' => 'mxchat-theme-settings' | |
| 96 | 35 | ), |
| 97 | 36 | |
| 98 | 37 | 'mxchat-admin-assistant' => array( |
| 99 | 38 | 'title' => __('MxChat Admin Assistant', 'mxchat'), |
| @@ -106,31 +45,9 @@ | ||
| 106 | 45 | 'license' => 'MxChat PRO', |
| 107 | 46 | 'accent' => '#fa73e6', |
| 108 | 47 | 'url' => 'https://mxchat.ai/ai-admin-assistant/', |
| 109 | 48 | 'plugin_file' => 'mxchat-admin-chat/mxchat-admin-chat.php', |
| 110 | - 'config_page' => 'mxchat-admin-chat', | |
| 111 | - 'hero_features' => array( | |
| 112 | - array( | |
| 113 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>', | |
| 114 | - 'title' => __('Admin Chat UI', 'mxchat'), | |
| 115 | - 'desc' => __('ChatGPT-like dashboard interface', 'mxchat'), | |
| 116 | - ), | |
| 117 | - array( | |
| 118 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>', | |
| 119 | - 'title' => __('Image Generation', 'mxchat'), | |
| 120 | - 'desc' => __('Create images with AI prompts', 'mxchat'), | |
| 121 | - ), | |
| 122 | - array( | |
| 123 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>', | |
| 124 | - 'title' => __('Web Research', 'mxchat'), | |
| 125 | - 'desc' => __('Search the web from your dashboard', 'mxchat'), | |
| 126 | - ), | |
| 127 | - array( | |
| 128 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 16 12 14 15 10 9 8 12 2 12"/></svg>', | |
| 129 | - 'title' => __('Chat History', 'mxchat'), | |
| 130 | - 'desc' => __('Searchable conversation archive', 'mxchat'), | |
| 131 | - ), | |
| 132 | - ), | |
| 49 | + 'config_page' => 'mxchat-admin-chat' | |
| 133 | 50 | ), |
| 134 | 51 | |
| 135 | 52 | 'mxchat-veo' => array( |
| 136 | 53 | 'title' => __('MxChat Video Generation', 'mxchat'), |
| @@ -143,31 +60,9 @@ | ||
| 143 | 60 | 'license' => 'MxChat PRO', |
| 144 | 61 | 'accent' => '#ff6b35', |
| 145 | 62 | 'url' => 'https://mxchat.ai/mxchat-veo-video-generation/', |
| 146 | 63 | 'plugin_file' => 'mxchat-veo/mxchat-veo.php', |
| 147 | - 'config_page' => 'mxchat-veo', | |
| 148 | - 'hero_features' => array( | |
| 149 | - array( | |
| 150 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="23 7 16 12 23 17 23 7"/><rect x="1" y="5" width="15" height="14" rx="2" ry="2"/></svg>', | |
| 151 | - 'title' => __('AI Video Creation', 'mxchat'), | |
| 152 | - 'desc' => __('Generate videos from text prompts', 'mxchat'), | |
| 153 | - ), | |
| 154 | - array( | |
| 155 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18V5l12-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/></svg>', | |
| 156 | - 'title' => __('Native Audio', 'mxchat'), | |
| 157 | - 'desc' => __('Videos with built-in audio tracks', 'mxchat'), | |
| 158 | - ), | |
| 159 | - array( | |
| 160 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"/></svg>', | |
| 161 | - 'title' => __('Aspect Ratios', 'mxchat'), | |
| 162 | - 'desc' => __('Multiple size options available', 'mxchat'), | |
| 163 | - ), | |
| 164 | - array( | |
| 165 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>', | |
| 166 | - 'title' => __('Media Library', 'mxchat'), | |
| 167 | - 'desc' => __('Save directly to WordPress media', 'mxchat'), | |
| 168 | - ), | |
| 169 | - ), | |
| 64 | + 'config_page' => 'mxchat-veo' | |
| 170 | 65 | ), |
| 171 | 66 | |
| 172 | 67 | 'mxchat-image-analysis' => array( |
| 173 | 68 | 'title' => __('MxChat Image Analysis', 'mxchat'), |
| @@ -180,31 +75,9 @@ | ||
| 180 | 75 | 'license' => 'MxChat PRO', |
| 181 | 76 | 'accent' => '#fa73e6', |
| 182 | 77 | 'url' => 'https://mxchat.ai/image-analysis/', |
| 183 | 78 | 'plugin_file' => 'mxchat-vision/mxchat-vision.php', |
| 184 | - 'config_page' => 'mxchat-vision', | |
| 185 | - 'hero_features' => array( | |
| 186 | - array( | |
| 187 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>', | |
| 188 | - 'title' => __('Vision AI Models', 'mxchat'), | |
| 189 | - 'desc' => __('OpenAI Vision & Grok analysis', 'mxchat'), | |
| 190 | - ), | |
| 191 | - array( | |
| 192 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 16 12 12 8 16"/><line x1="12" y1="12" x2="12" y2="21"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/></svg>', | |
| 193 | - 'title' => __('Drag & Drop', 'mxchat'), | |
| 194 | - 'desc' => __('Easy image upload in chat', 'mxchat'), | |
| 195 | - ), | |
| 196 | - array( | |
| 197 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>', | |
| 198 | - 'title' => __('OCR Extraction', 'mxchat'), | |
| 199 | - 'desc' => __('Extract text from images', 'mxchat'), | |
| 200 | - ), | |
| 201 | - array( | |
| 202 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="21" x2="4" y2="14"/><line x1="4" y1="10" x2="4" y2="3"/><line x1="12" y1="21" x2="12" y2="12"/><line x1="12" y1="8" x2="12" y2="3"/><line x1="20" y1="21" x2="20" y2="16"/><line x1="20" y1="12" x2="20" y2="3"/><line x1="1" y1="14" x2="7" y2="14"/><line x1="9" y1="8" x2="15" y2="8"/><line x1="17" y1="16" x2="23" y2="16"/></svg>', | |
| 203 | - 'title' => __('Custom Prompts', 'mxchat'), | |
| 204 | - 'desc' => __('Tailor analysis instructions', 'mxchat'), | |
| 205 | - ), | |
| 206 | - ), | |
| 79 | + 'config_page' => 'mxchat-vision' | |
| 207 | 80 | ), |
| 208 | 81 | |
| 209 | 82 | 'mxchat-forms' => array( |
| 210 | 83 | 'title' => __('MxChat Forms', 'mxchat'), |
| @@ -217,31 +90,9 @@ | ||
| 217 | 90 | 'license' => 'MxChat PRO', |
| 218 | 91 | 'accent' => '#fa73e6', |
| 219 | 92 | 'url' => 'https://mxchat.ai/forms-action/', |
| 220 | 93 | 'plugin_file' => 'mxchat-forms/mxchat-forms.php', |
| 221 | - 'config_page' => 'mxchat-forms', | |
| 222 | - 'hero_features' => array( | |
| 223 | - array( | |
| 224 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><line x1="9" y1="9" x2="15" y2="9"/><line x1="9" y1="13" x2="15" y2="13"/><line x1="9" y1="17" x2="12" y2="17"/></svg>', | |
| 225 | - 'title' => __('Form Builder', 'mxchat'), | |
| 226 | - 'desc' => __('No-code drag & drop builder', 'mxchat'), | |
| 227 | - ), | |
| 228 | - array( | |
| 229 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>', | |
| 230 | - 'title' => __('Smart Triggers', 'mxchat'), | |
| 231 | - 'desc' => __('Show forms based on intent', 'mxchat'), | |
| 232 | - ), | |
| 233 | - array( | |
| 234 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>', | |
| 235 | - 'title' => __('Lead Capture', 'mxchat'), | |
| 236 | - 'desc' => __('Turn visitors into contacts', 'mxchat'), | |
| 237 | - ), | |
| 238 | - array( | |
| 239 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>', | |
| 240 | - 'title' => __('Data Export', 'mxchat'), | |
| 241 | - 'desc' => __('Export leads to CSV easily', 'mxchat'), | |
| 242 | - ), | |
| 243 | - ), | |
| 94 | + 'config_page' => 'mxchat-forms' | |
| 244 | 95 | ), |
| 245 | 96 | |
| 246 | 97 | 'mxchat-multi-bot' => array( |
| 247 | 98 | 'title' => __('MxChat Multi-Bot Manager', 'mxchat'), |
| @@ -254,109 +105,11 @@ | ||
| 254 | 105 | 'license' => 'MxChat PRO', |
| 255 | 106 | 'accent' => '#8b5cf6', |
| 256 | 107 | 'url' => 'https://mxchat.ai/multi-bot/', |
| 257 | 108 | 'plugin_file' => 'mxchat-multi-bot/mxchat-multi-bot.php', |
| 258 | - 'config_page' => 'mxchat-multi-bot', | |
| 259 | - 'hero_features' => array( | |
| 260 | - array( | |
| 261 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>', | |
| 262 | - 'title' => __('Unlimited Bots', 'mxchat'), | |
| 263 | - 'desc' => __('Create specialized chatbots', 'mxchat'), | |
| 264 | - ), | |
| 265 | - array( | |
| 266 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"/><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"/></svg>', | |
| 267 | - 'title' => __('Separate Knowledge', 'mxchat'), | |
| 268 | - 'desc' => __('Unique knowledge per bot', 'mxchat'), | |
| 269 | - ), | |
| 270 | - array( | |
| 271 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>', | |
| 272 | - 'title' => __('Page Assignments', 'mxchat'), | |
| 273 | - 'desc' => __('Assign bots to specific pages', 'mxchat'), | |
| 274 | - ), | |
| 275 | - array( | |
| 276 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>', | |
| 277 | - 'title' => __('Custom Personas', 'mxchat'), | |
| 278 | - 'desc' => __('Unique personality per bot', 'mxchat'), | |
| 279 | - ), | |
| 280 | - ), | |
| 109 | + 'config_page' => 'mxchat-multi-bot' | |
| 281 | 110 | ), |
| 282 | 111 | |
| 283 | - 'mxchat-trigger' => array( | |
| 284 | - 'title' => __('MxChat Trigger', 'mxchat'), | |
| 285 | - 'description' => __('Turn any element into a conversation starter. Add chat trigger buttons and links throughout your website that open MxChat and send predefined messages—perfect for CTAs, support links, and guided experiences.', 'mxchat'), | |
| 286 | - 'key_benefits' => array( | |
| 287 | - __('Simple data attribute triggers', 'mxchat'), | |
| 288 | - __('Multi-Bot targeting support', 'mxchat'), | |
| 289 | - __('Built-in button styles & animations', 'mxchat') | |
| 290 | - ), | |
| 291 | - 'license' => 'MxChat PRO', | |
| 292 | - 'accent' => '#3ac9d1', | |
| 293 | - 'url' => 'https://mxchat.ai/triggers/', | |
| 294 | - 'plugin_file' => 'mxchat-trigger/mxchat-trigger.php', | |
| 295 | - 'config_page' => 'mxchat-triggers', | |
| 296 | - 'hero_features' => array( | |
| 297 | - array( | |
| 298 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>', | |
| 299 | - 'title' => __('Element Triggers', 'mxchat'), | |
| 300 | - 'desc' => __('Turn any element into a trigger', 'mxchat'), | |
| 301 | - ), | |
| 302 | - array( | |
| 303 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>', | |
| 304 | - 'title' => __('Preset Messages', 'mxchat'), | |
| 305 | - 'desc' => __('Auto-send predefined prompts', 'mxchat'), | |
| 306 | - ), | |
| 307 | - array( | |
| 308 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>', | |
| 309 | - 'title' => __('Multi-Bot Targeting', 'mxchat'), | |
| 310 | - 'desc' => __('Route to specific bots', 'mxchat'), | |
| 311 | - ), | |
| 312 | - array( | |
| 313 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><path d="M12 8v8"/><path d="M8 12h8"/></svg>', | |
| 314 | - 'title' => __('Button Styles', 'mxchat'), | |
| 315 | - 'desc' => __('Built-in styles & animations', 'mxchat'), | |
| 316 | - ), | |
| 317 | - ), | |
| 318 | - ), | |
| 319 | - | |
| 320 | - 'mxchat-anywhere' => array( | |
| 321 | - 'title' => __('MxChat Anywhere', 'mxchat'), | |
| 322 | - 'sidebar_title' => __('MxChat Anywhere', 'mxchat'), | |
| 323 | - 'description' => __('Deploy your AI chatbot on any website with a single script tag. Works on static HTML, Shopify, Squarespace, Wix, and custom web apps — no WordPress required on the target site. Full feature parity with Shadow DOM style isolation.', 'mxchat'), | |
| 324 | - 'key_benefits' => array( | |
| 325 | - __('One script tag — works on any website', 'mxchat'), | |
| 326 | - __('Shadow DOM prevents CSS conflicts', 'mxchat'), | |
| 327 | - __('Domain-validated security keys', 'mxchat') | |
| 328 | - ), | |
| 329 | - 'license' => 'MxChat PRO', | |
| 330 | - 'accent' => '#10b981', | |
| 331 | - 'url' => 'https://mxchat.ai/mxchat-anywhere-deploy-your-ai-chatbot-on-any-website-with-one-script-tag/', | |
| 332 | - 'download_url' => 'https://mxchat.ai/mxchat-anywhere-deploy-your-ai-chatbot-on-any-website-with-one-script-tag/', | |
| 333 | - 'plugin_file' => 'mxchat-embed/mxchat-embed.php', | |
| 334 | - 'config_page' => 'mxchat-embed', | |
| 335 | - 'hero_features' => array( | |
| 336 | - array( | |
| 337 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>', | |
| 338 | - 'title' => __('Universal Embed', 'mxchat'), | |
| 339 | - 'desc' => __('One script tag on any website', 'mxchat'), | |
| 340 | - ), | |
| 341 | - array( | |
| 342 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>', | |
| 343 | - 'title' => __('Style Isolation', 'mxchat'), | |
| 344 | - 'desc' => __('Shadow DOM prevents CSS conflicts', 'mxchat'), | |
| 345 | - ), | |
| 346 | - array( | |
| 347 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>', | |
| 348 | - 'title' => __('Domain Security', 'mxchat'), | |
| 349 | - 'desc' => __('Validated keys per domain', 'mxchat'), | |
| 350 | - ), | |
| 351 | - array( | |
| 352 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>', | |
| 353 | - 'title' => __('Zero Dependencies', 'mxchat'), | |
| 354 | - 'desc' => __('Vanilla JS, no impact on Core Web Vitals', 'mxchat'), | |
| 355 | - ), | |
| 356 | - ), | |
| 357 | - ), | |
| 358 | - | |
| 359 | 112 | 'mxchat-woo' => array( |
| 360 | 113 | 'title' => __('MxChat WooCommerce', 'mxchat'), |
| 361 | 114 | 'description' => __('Boost sales with AI-powered shopping assistance. Help customers find products, manage carts, and complete purchases—all through natural conversation.', 'mxchat'), |
| 362 | 115 | 'key_benefits' => array( |
| @@ -367,31 +120,9 @@ | ||
| 367 | 120 | 'license' => 'MxChat PRO', |
| 368 | 121 | 'accent' => '#fa73e6', |
| 369 | 122 | 'url' => 'https://mxchat.ai/woocommerce/', |
| 370 | 123 | 'plugin_file' => 'mxchat-woo/mxchat-woo.php', |
| 371 | - 'config_page' => 'mxchat-woo', | |
| 372 | - 'hero_features' => array( | |
| 373 | - array( | |
| 374 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg>', | |
| 375 | - 'title' => __('Cart Assistant', 'mxchat'), | |
| 376 | - 'desc' => __('Manage cart through conversation', 'mxchat'), | |
| 377 | - ), | |
| 378 | - array( | |
| 379 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>', | |
| 380 | - 'title' => __('Product Search', 'mxchat'), | |
| 381 | - 'desc' => __('Smart product recommendations', 'mxchat'), | |
| 382 | - ), | |
| 383 | - array( | |
| 384 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>', | |
| 385 | - 'title' => __('Checkout Help', 'mxchat'), | |
| 386 | - 'desc' => __('Guide customers to purchase', 'mxchat'), | |
| 387 | - ), | |
| 388 | - array( | |
| 389 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>', | |
| 390 | - 'title' => __('Order History', 'mxchat'), | |
| 391 | - 'desc' => __('Look up past orders in chat', 'mxchat'), | |
| 392 | - ), | |
| 393 | - ), | |
| 124 | + 'config_page' => 'mxchat-woo' | |
| 394 | 125 | ), |
| 395 | 126 | |
| 396 | 127 | 'mxchat-assistant-api' => array( |
| 397 | 128 | 'title' => __('MxChat Assistant API', 'mxchat'), |
| @@ -404,31 +135,9 @@ | ||
| 404 | 135 | 'license' => 'MxChat PRO', |
| 405 | 136 | 'accent' => '#00d4aa', |
| 406 | 137 | 'url' => 'https://mxchat.ai/openai-assistants-api/', |
| 407 | 138 | 'plugin_file' => 'mxchat-assistant-api/mxchat-assistant-api.php', |
| 408 | - 'config_page' => 'mxchat-assistant-api', | |
| 409 | - 'hero_features' => array( | |
| 410 | - array( | |
| 411 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>', | |
| 412 | - 'title' => __('OpenAI Assistants', 'mxchat'), | |
| 413 | - 'desc' => __('Connect your custom Assistant', 'mxchat'), | |
| 414 | - ), | |
| 415 | - array( | |
| 416 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>', | |
| 417 | - 'title' => __('Advanced AI', 'mxchat'), | |
| 418 | - 'desc' => __('Full Assistant API capabilities', 'mxchat'), | |
| 419 | - ), | |
| 420 | - array( | |
| 421 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>', | |
| 422 | - 'title' => __('24hr Persistence', 'mxchat'), | |
| 423 | - 'desc' => __('Conversations persist all day', 'mxchat'), | |
| 424 | - ), | |
| 425 | - array( | |
| 426 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>', | |
| 427 | - 'title' => __('Direct Connect', 'mxchat'), | |
| 428 | - 'desc' => __('Bypass MxChat knowledge base', 'mxchat'), | |
| 429 | - ), | |
| 430 | - ), | |
| 139 | + 'config_page' => 'mxchat-assistant-api' | |
| 431 | 140 | ), |
| 432 | 141 | |
| 433 | 142 | 'mxchat-perplexity' => array( |
| 434 | 143 | 'title' => __('MxChat Perplexity', 'mxchat'), |
| @@ -441,31 +150,9 @@ | ||
| 441 | 150 | 'license' => 'MxChat PRO', |
| 442 | 151 | 'accent' => '#fa73e6', |
| 443 | 152 | 'url' => 'https://quickdeploywp.com/plugin/mxchat-perplexity/', |
| 444 | 153 | 'plugin_file' => 'mxchat-perplexity/mxchat-perplexity.php', |
| 445 | - 'config_page' => 'mxchat-perplexity', | |
| 446 | - 'hero_features' => array( | |
| 447 | - array( | |
| 448 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>', | |
| 449 | - 'title' => __('Web Search', 'mxchat'), | |
| 450 | - 'desc' => __('Real-time internet searching', 'mxchat'), | |
| 451 | - ), | |
| 452 | - array( | |
| 453 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>', | |
| 454 | - 'title' => __('Intent Triggers', 'mxchat'), | |
| 455 | - 'desc' => __('Auto-search when needed', 'mxchat'), | |
| 456 | - ), | |
| 457 | - array( | |
| 458 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>', | |
| 459 | - 'title' => __('Live Data', 'mxchat'), | |
| 460 | - 'desc' => __('Up-to-date information always', 'mxchat'), | |
| 461 | - ), | |
| 462 | - array( | |
| 463 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>', | |
| 464 | - 'title' => __('Seamless Chat', 'mxchat'), | |
| 465 | - 'desc' => __('Results blend into conversation', 'mxchat'), | |
| 466 | - ), | |
| 467 | - ), | |
| 154 | + 'config_page' => 'mxchat-perplexity' | |
| 468 | 155 | ), |
| 469 | 156 | |
| 470 | 157 | 'mxchat-moderation' => array( |
| 471 | 158 | 'title' => __('MxChat Moderation', 'mxchat'), |
| @@ -478,54 +165,39 @@ | ||
| 478 | 165 | 'license' => 'MxChat PRO', |
| 479 | 166 | 'accent' => '#fa73e6', |
| 480 | 167 | 'url' => 'https://quickdeploywp.com/plugin/mxchat-moderation/', |
| 481 | 168 | 'plugin_file' => 'mxchat-moderation/mx-chat-moderation.php', |
| 482 | - 'config_page' => 'mx-chat-moderation', | |
| 483 | - 'hero_features' => array( | |
| 484 | - array( | |
| 485 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>', | |
| 486 | - 'title' => __('Content Filter', 'mxchat'), | |
| 487 | - 'desc' => __('Block inappropriate content', 'mxchat'), | |
| 488 | - ), | |
| 489 | - array( | |
| 490 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"/></svg>', | |
| 491 | - 'title' => __('User Blocking', 'mxchat'), | |
| 492 | - 'desc' => __('IP & email-based bans', 'mxchat'), | |
| 493 | - ), | |
| 494 | - array( | |
| 495 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>', | |
| 496 | - 'title' => __('Spam Protection', 'mxchat'), | |
| 497 | - 'desc' => __('Detect and prevent spam', 'mxchat'), | |
| 498 | - ), | |
| 499 | - array( | |
| 500 | - 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg>', | |
| 501 | - 'title' => __('Brand Safety', 'mxchat'), | |
| 502 | - 'desc' => __('Keep chat professional', 'mxchat'), | |
| 503 | - ), | |
| 169 | + 'config_page' => 'mx-chat-moderation' | |
| 170 | + ), | |
| 171 | + | |
| 172 | + 'mxchat-smart-recommender' => array( | |
| 173 | + 'title' => __('MxChat Smart Recommender', 'mxchat'), | |
| 174 | + 'description' => __('Turn your chatbot into a sales machine. Build personalized recommendation flows that understand user preferences and suggest perfect products or services.', 'mxchat'), | |
| 175 | + 'key_benefits' => array( | |
| 176 | + __('Increase conversion rates', 'mxchat'), | |
| 177 | + __('Custom recommendation flows', 'mxchat'), | |
| 178 | + __('No coding required', 'mxchat') | |
| 504 | 179 | ), |
| 180 | + 'license' => 'MxChat PRO', | |
| 181 | + 'accent' => '#fa73e6', | |
| 182 | + 'url' => 'https://quickdeploywp.com/plugin/mxchat-smart-recommender/', | |
| 183 | + 'plugin_file' => 'mxchat-smart-recommender/mxchat-smart-recommender.php', | |
| 184 | + 'config_page' => 'mxchat-smart-recommender' | |
| 505 | 185 | ), |
| 506 | - | |
| 507 | 186 | ); |
| 508 | 187 | } |
| 509 | 188 | |
| 510 | 189 | /** |
| 511 | - * Get the addons configuration array | |
| 512 | - * | |
| 513 | - * @return array The addons configuration | |
| 514 | - */ | |
| 515 | - public function get_addons_config() { | |
| 516 | - return $this->addons_config; | |
| 517 | - } | |
| 518 | - | |
| 519 | - /** | |
| 520 | 190 | * Register the stylesheets for the admin area. |
| 521 | 191 | */ |
| 522 | 192 | public function enqueue_styles() { |
| 193 | + $plugin_version = '2.4.6'; | |
| 194 | + | |
| 523 | 195 | wp_enqueue_style( |
| 524 | 196 | 'mxchat-addons', |
| 525 | 197 | plugin_dir_url(__FILE__) . '../css/admin-add-ons.css', |
| 526 | 198 | array(), |
| 527 | - MXCHAT_VERSION, | |
| 199 | + $plugin_version, | |
| 528 | 200 | 'all' |
| 529 | 201 | ); |
| 530 | 202 | } |
| 531 | 203 | |