{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"openrouter-qwen-qwen3-30b-a3b","slug":"qwen-qwen3-30b-a3b","name":"Qwen: Qwen3 30B A3B","type":"model","url":"https://openrouter.ai/models/qwen~qwen3-30b-a3b","page_url":"https://unfragile.ai/qwen-qwen3-30b-a3b","categories":["llm-apis"],"tags":["qwen","api-access","text"],"pricing":{"model":"paid","free":false,"starting_price":"$9.00e-8 per prompt token"},"status":"active","verified":false},"capabilities":[{"id":"openrouter-qwen-qwen3-30b-a3b__cap_0","uri":"capability://text.generation.language.multilingual.reasoning.and.instruction.following.via.dense.transformer.architecture","name":"multilingual reasoning and instruction-following via dense transformer architecture","description":"Qwen3 30B uses a dense transformer backbone optimized for reasoning tasks across 100+ languages, implementing standard causal language modeling with rotary positional embeddings and grouped query attention to balance parameter efficiency with context understanding. The model processes input tokens through stacked transformer layers with layer normalization and gated linear units, enabling coherent multi-turn reasoning without mixture-of-experts overhead.","intents":["I need a model that can reason through complex problems in non-English languages without performance degradation","I want to deploy a reasoning-capable LLM that's smaller than 70B parameter models but maintains instruction-following quality","I need consistent multilingual performance across technical, creative, and analytical tasks"],"best_for":["teams building multilingual AI agents for customer support, research, or analysis","developers deploying reasoning-heavy applications where latency and cost matter more than maximum capability","organizations requiring non-English reasoning without language-specific model variants"],"limitations":["30B parameter count limits reasoning depth on extremely complex multi-step problems compared to 70B+ models","No explicit fine-tuning for domain-specific reasoning (legal, medical, scientific) — requires prompt engineering or RAG","Multilingual performance varies by language; lower-resource languages may show degradation vs English"],"requires":["OpenRouter API key or compatible LLM provider integration","Minimum context window of 4K tokens (actual window size varies by provider)","Network connectivity for API calls; no local deployment option via this endpoint"],"input_types":["text (natural language instructions, questions, code snippets)","structured prompts with system messages and conversation history"],"output_types":["text (reasoning chains, explanations, code, structured responses)","streaming token output for real-time response generation"],"categories":["text-generation-language","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_1","uri":"capability://text.generation.language.mixture.of.experts.conditional.computation.for.specialized.task.routing","name":"mixture-of-experts conditional computation for specialized task routing","description":"Qwen3 30B A3B variant implements sparse mixture-of-experts (MoE) layers that route tokens to specialized expert sub-networks based on learned routing gates, activating only a subset of parameters per token to reduce computational cost while maintaining model capacity. The architecture uses top-k gating (typically 2-4 experts per token) with load-balancing auxiliary losses to prevent expert collapse and ensure even utilization across the expert pool.","intents":["I need faster inference on diverse tasks without sacrificing model capacity or reasoning ability","I want to reduce inference latency and cost for high-volume API calls while maintaining quality","I need a model that can efficiently handle mixed workloads (code, reasoning, creative writing) without reloading"],"best_for":["high-volume API services where per-token latency directly impacts user experience and cost","teams deploying multi-task agents that handle code, reasoning, and content generation in a single model","organizations with budget constraints on inference compute but quality requirements that demand large model capacity"],"limitations":["MoE routing adds ~50-100ms latency overhead per request due to gating computation and expert selection","Expert specialization is learned implicitly; no explicit control over which expert handles which task type","Batch inference efficiency depends on token distribution across experts — heterogeneous batches may underutilize experts","MoE models typically require more careful prompt engineering to trigger appropriate expert activation patterns"],"requires":["OpenRouter API endpoint or compatible provider supporting MoE model inference","Batch size optimization knowledge to maximize expert utilization","Understanding of MoE inference characteristics for latency budgeting"],"input_types":["text (instructions, code, questions, creative prompts)","batched requests for optimal expert utilization"],"output_types":["text (task-specific responses routed through specialized experts)","streaming output with variable latency based on expert activation"],"categories":["text-generation-language","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_10","uri":"capability://text.generation.language.cross.lingual.transfer.and.zero.shot.language.understanding","name":"cross-lingual transfer and zero-shot language understanding","description":"Qwen3 30B applies knowledge learned in high-resource languages to understand and generate content in low-resource languages through cross-lingual transformer embeddings, leveraging shared semantic space across 100+ languages to enable zero-shot understanding without language-specific training. The model uses multilingual token vocabularies and shared attention patterns to transfer reasoning capabilities across language boundaries.","intents":["I need to understand and respond to queries in languages the model wasn't explicitly trained on","I want to translate reasoning or problem-solving approaches from English to other languages without retraining","I need to build multilingual applications that work equally well across diverse language pairs"],"best_for":["global organizations building multilingual AI applications","teams supporting low-resource languages without language-specific models","developers building cross-lingual search or recommendation systems"],"limitations":["Zero-shot performance degrades significantly for very low-resource languages (< 1M speakers)","Language-specific idioms and cultural context may be lost in cross-lingual transfer","Code-switching (mixing languages) may confuse the model or degrade performance","No explicit language identification — model may struggle with ambiguous language boundaries"],"requires":["OpenRouter API access","Understanding of target language characteristics for effective prompting","Validation of cross-lingual transfer quality for critical applications","Optional: language identification preprocessing"],"input_types":["text in any of 100+ supported languages","mixed-language or code-switched input","language-specific instructions or examples"],"output_types":["responses in requested language","translations or cross-lingual explanations","language-appropriate formatting and conventions"],"categories":["text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_11","uri":"capability://safety.moderation.safety.aware.content.generation.with.harmful.content.filtering","name":"safety-aware content generation with harmful content filtering","description":"Qwen3 30B incorporates safety training to refuse harmful requests and avoid generating dangerous, illegal, or unethical content through learned refusal patterns and safety-aware token prediction. The model uses transformer attention to identify harmful intent in instructions and applies safety constraints during generation, though without explicit content filtering or moderation layers — safety relies on learned behavioral patterns from training.","intents":["I need an LLM that refuses to generate harmful, illegal, or unethical content","I want to build applications that are safe for general audiences without additional content filtering","I need to handle adversarial prompts and jailbreak attempts gracefully"],"best_for":["public-facing applications requiring inherent safety without additional moderation","organizations with strict content policies and compliance requirements","teams building consumer applications where safety is a key differentiator"],"limitations":["Safety training is probabilistic — determined adversaries may still elicit harmful content through prompt engineering","No explicit content filtering — safety relies entirely on learned refusal patterns","Safety constraints may be overly conservative, refusing legitimate requests (false positives)","No transparency into safety decision-making — difficult to debug or adjust safety behavior"],"requires":["OpenRouter API access","Understanding of model safety limitations and potential jailbreak vectors","Optional: additional content moderation layer for high-risk applications","User feedback mechanisms to identify safety failures"],"input_types":["any user input, including adversarial or harmful requests","instructions that may trigger safety constraints"],"output_types":["safe, non-harmful responses","refusals with explanations for harmful requests","alternative suggestions for blocked requests"],"categories":["safety-moderation","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_2","uri":"capability://code.generation.editing.code.generation.and.technical.problem.solving.with.context.aware.completion","name":"code generation and technical problem-solving with context-aware completion","description":"Qwen3 30B generates syntactically correct code across 10+ programming languages by leveraging transformer attention patterns trained on large code corpora, implementing standard causal masking to prevent lookahead and using byte-pair encoding tokenization optimized for code syntax. The model maintains awareness of code context through multi-turn conversation history, enabling iterative refinement and debugging without losing semantic understanding of the codebase.","intents":["I need to generate boilerplate code, utility functions, or API client implementations from natural language descriptions","I want to debug code by describing the problem and receiving corrected implementations with explanations","I need to refactor existing code snippets or translate code between programming languages"],"best_for":["developers using LLM-powered IDEs or code assistants for productivity enhancement","teams building code generation pipelines for infrastructure-as-code or API client generation","technical writers and documentation teams generating code examples"],"limitations":["Code generation quality degrades for domain-specific languages or frameworks with limited training data representation","No real-time syntax validation — generated code may have subtle bugs requiring human review","Context window limitations (typically 4K-8K tokens) constrain ability to handle very large codebases or complex multi-file refactoring","No access to external package registries or type definitions — may generate code using non-existent APIs or outdated library versions"],"requires":["OpenRouter API key with code-generation-capable model access","Knowledge of target programming language and framework for effective prompting","Code review process to validate generated implementations before deployment"],"input_types":["natural language descriptions of desired code behavior","existing code snippets for refactoring or debugging","function signatures or API specifications for implementation"],"output_types":["code in Python, JavaScript, TypeScript, Go, Rust, Java, C++, and other languages","explanations of generated code with implementation rationale","multi-file code structures for complex implementations"],"categories":["code-generation-editing","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_3","uri":"capability://text.generation.language.multi.turn.conversational.context.management.with.long.range.coherence","name":"multi-turn conversational context management with long-range coherence","description":"Qwen3 30B maintains conversational state across extended multi-turn exchanges by processing full conversation history through transformer attention, using rotary positional embeddings to encode relative token positions and enabling the model to track entity references, reasoning chains, and user preferences across dozens of turns. The model implements standard causal masking to prevent information leakage between turns while preserving full context for coherent response generation.","intents":["I need an AI assistant that remembers earlier parts of a conversation and builds on previous reasoning without losing context","I want to have extended technical discussions where the model tracks problem constraints and previous solutions","I need to maintain user preferences and conversation state across multiple interactions in a single session"],"best_for":["chatbot and conversational AI applications requiring extended user interactions","technical support systems where problem diagnosis requires multi-turn reasoning","interactive tutoring or mentoring applications with session-based learning"],"limitations":["Context window size (typically 4K-8K tokens via OpenRouter) limits conversation length before history truncation becomes necessary","No persistent memory across sessions — each new conversation starts without prior context","Attention computation scales quadratically with context length, causing latency increases in very long conversations","Model may lose track of fine-grained details in early conversation turns when processing very long histories"],"requires":["OpenRouter API integration with conversation history management","Application-level logic to maintain and pass conversation history with each request","Token counting and context window management to prevent exceeding model limits"],"input_types":["current user message (text)","full conversation history (array of user/assistant message pairs)","optional system prompt for conversation tone and behavior"],"output_types":["contextually coherent assistant response","streaming output for real-time conversation display"],"categories":["text-generation-language","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_4","uri":"capability://data.processing.analysis.structured.data.extraction.and.json.schema.compliance","name":"structured data extraction and json schema compliance","description":"Qwen3 30B can generate structured outputs conforming to JSON schemas by leveraging transformer token prediction to produce valid JSON syntax, using prompt engineering techniques (schema-in-prompt or few-shot examples) to guide output format. The model learns JSON structure patterns from training data and applies them consistently, though without native schema validation — output correctness depends on prompt clarity and model instruction-following quality.","intents":["I need to extract structured information from unstructured text and return it as validated JSON","I want to generate API responses or database records in a specific schema format from natural language input","I need to parse complex documents and output structured data for downstream processing"],"best_for":["data extraction pipelines converting unstructured text to structured formats","API backends using LLMs to generate structured responses from user queries","ETL workflows requiring intelligent document parsing and field extraction"],"limitations":["No native schema validation — model may generate invalid JSON or fields that don't match schema constraints","Complex nested schemas or conditional fields may confuse the model, requiring careful prompt engineering","No type enforcement — numeric fields may be generated as strings, requiring post-processing validation","Large schemas (100+ fields) may exceed effective prompt context and degrade accuracy"],"requires":["OpenRouter API access","JSON schema definition or examples in prompt","Post-processing validation layer to ensure output correctness","Error handling for malformed JSON responses"],"input_types":["unstructured text (documents, emails, chat messages)","JSON schema definition (as text or examples)","natural language extraction instructions"],"output_types":["JSON objects conforming to specified schema","arrays of structured records","nested JSON structures for complex data"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_5","uri":"capability://text.generation.language.creative.content.generation.with.stylistic.control.and.tone.adaptation","name":"creative content generation with stylistic control and tone adaptation","description":"Qwen3 30B generates creative text (stories, marketing copy, poetry, dialogue) by learning stylistic patterns from training data and applying them through prompt-based style guidance, using transformer attention to maintain narrative coherence and character consistency across long-form outputs. The model adapts tone and voice through system prompts and few-shot examples, enabling generation of content matching specific brand voices or literary styles without fine-tuning.","intents":["I need to generate marketing copy, product descriptions, or social media content in a specific brand voice","I want to create story outlines, character descriptions, or dialogue for creative projects","I need to generate multiple stylistic variations of content for A/B testing or audience segmentation"],"best_for":["content marketing teams using AI to scale content production","creative agencies prototyping copy variations and creative concepts","game developers and writers generating narrative content and dialogue"],"limitations":["Generated content may lack originality or contain subtle plagiarism from training data","Stylistic consistency degrades in very long outputs (1000+ tokens) as attention patterns weaken","No access to real-time information — generated content may reference outdated facts or trends","Tone control is probabilistic — same prompt may produce inconsistent results across generations"],"requires":["OpenRouter API access","Clear style guide or examples in system prompt","Human review process for brand voice compliance and originality","Temperature and top-p parameter tuning for desired creativity level"],"input_types":["content briefs or outlines","style guides or brand voice examples","target audience descriptions","tone and mood specifications"],"output_types":["marketing copy and product descriptions","creative narratives and story content","dialogue and character interactions","multiple stylistic variations for comparison"],"categories":["text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_6","uri":"capability://planning.reasoning.agent.task.planning.and.decomposition.with.multi.step.reasoning","name":"agent task planning and decomposition with multi-step reasoning","description":"Qwen3 30B breaks down complex user requests into executable subtasks through chain-of-thought reasoning, using transformer attention to track dependencies between steps and maintain goal-oriented planning across multiple reasoning turns. The model generates intermediate reasoning states (thoughts, observations, actions) that can be integrated into agentic frameworks, enabling structured task decomposition without explicit planning algorithms.","intents":["I need an LLM that can break down complex requests into actionable steps for an AI agent","I want to build an agent that reasons about task dependencies and execution order before taking actions","I need to generate step-by-step plans for complex workflows that involve multiple tools or APIs"],"best_for":["teams building LLM-powered agents and autonomous systems","developers implementing ReAct (Reasoning + Acting) agent patterns","organizations automating complex multi-step business processes"],"limitations":["Planning quality degrades for tasks with more than 10-15 steps; model may lose track of earlier constraints","No native tool integration — agent framework must implement tool calling and result integration","Planning may be suboptimal; model doesn't guarantee finding most efficient task decomposition","Requires careful prompt engineering to trigger consistent chain-of-thought reasoning patterns"],"requires":["OpenRouter API access","Agent framework (LangChain, AutoGPT, custom implementation) to execute planned steps","Tool definitions and API specifications for agent to reference","Prompt templates that explicitly request step-by-step reasoning"],"input_types":["high-level user requests or goals","available tools and API specifications","constraints and success criteria"],"output_types":["step-by-step task decomposition","intermediate reasoning states (thoughts, observations)","action specifications for agent execution","dependency graphs or execution order"],"categories":["planning-reasoning","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_7","uri":"capability://text.generation.language.knowledge.synthesis.and.comparative.analysis.across.multiple.documents","name":"knowledge synthesis and comparative analysis across multiple documents","description":"Qwen3 30B synthesizes information from multiple input documents by processing concatenated context through transformer attention, identifying patterns and relationships across sources, and generating comparative analyses or unified summaries. The model uses attention mechanisms to track cross-document references and maintain coherence when integrating information from diverse sources, though without native document retrieval or ranking capabilities.","intents":["I need to compare information across multiple research papers, articles, or documents","I want to synthesize findings from multiple sources into a unified analysis or report","I need to identify contradictions or consensus across different documents on a topic"],"best_for":["research teams analyzing multiple academic papers or technical documents","competitive intelligence teams synthesizing information from multiple sources","content teams creating comprehensive guides or reports from multiple inputs"],"limitations":["Context window limits total document size — typically 4K-8K tokens across all documents combined","No native document ranking or relevance filtering — must pre-select relevant documents","Synthesis quality depends on document order and formatting; model may over-weight early documents","No citation tracking — synthesized content may not clearly attribute information to source documents"],"requires":["OpenRouter API access","Pre-processing to extract relevant document sections and fit within context window","Document formatting and ordering strategy to optimize synthesis quality","Citation management system to track information provenance"],"input_types":["multiple text documents (research papers, articles, reports)","comparative analysis questions or synthesis prompts","document metadata (titles, authors, dates) for context"],"output_types":["comparative analyses highlighting similarities and differences","synthesized summaries integrating information from multiple sources","contradiction identification and consensus analysis","structured comparison tables or matrices"],"categories":["text-generation-language","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_8","uri":"capability://text.generation.language.instruction.following.with.complex.constraint.satisfaction","name":"instruction-following with complex constraint satisfaction","description":"Qwen3 30B follows detailed, multi-constraint instructions by learning instruction patterns from training data and applying them through attention-based constraint tracking, maintaining awareness of multiple simultaneous requirements (format, tone, length, style, content restrictions) throughout generation. The model uses transformer attention to balance competing constraints and generate outputs that satisfy all specified requirements without explicit constraint solvers.","intents":["I need an LLM that reliably follows complex, multi-part instructions without missing requirements","I want to specify detailed output format, tone, length, and content constraints and have them all respected","I need to generate content that satisfies multiple stakeholder requirements simultaneously"],"best_for":["teams building LLM-powered systems requiring strict output compliance","organizations with detailed content guidelines and brand standards","developers building LLM-based APIs with strict response format requirements"],"limitations":["Constraint satisfaction degrades with more than 5-7 simultaneous constraints; model may drop lower-priority requirements","Conflicting constraints may produce unpredictable results; model doesn't explicitly resolve conflicts","Instruction-following quality varies with instruction clarity — ambiguous requirements lead to inconsistent outputs","No native validation — output compliance must be verified post-generation"],"requires":["OpenRouter API access","Clear, well-structured instruction format (numbered lists, explicit constraints)","Post-generation validation to verify constraint satisfaction","Iterative refinement of instructions based on output quality"],"input_types":["detailed multi-part instructions with explicit constraints","content requirements and format specifications","tone, style, and audience guidelines"],"output_types":["content strictly adhering to specified constraints","outputs in specified formats (JSON, markdown, plain text, etc.)","content matching specified tone and style requirements"],"categories":["text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"openrouter-qwen-qwen3-30b-a3b__cap_9","uri":"capability://planning.reasoning.mathematical.reasoning.and.symbolic.problem.solving","name":"mathematical reasoning and symbolic problem-solving","description":"Qwen3 30B solves mathematical problems by generating step-by-step symbolic reasoning, using transformer attention to track variable definitions and equation transformations across multiple reasoning steps. The model learns mathematical patterns from training data and applies them to novel problems, generating intermediate calculations and symbolic manipulations that can be verified or executed by external tools.","intents":["I need to solve mathematical problems with step-by-step explanations of the reasoning","I want to generate symbolic expressions or equations from natural language problem descriptions","I need to verify mathematical reasoning or identify errors in problem-solving approaches"],"best_for":["educational platforms providing AI-powered math tutoring","research teams automating mathematical derivations or symbolic computation","developers building math-heavy applications requiring symbolic reasoning"],"limitations":["Mathematical reasoning quality degrades for problems requiring more than 10-15 symbolic steps","No native symbolic computation engine — complex calculations may contain arithmetic errors","Reasoning may be correct but inefficient; model doesn't guarantee optimal solution paths","Limited to mathematical domains well-represented in training data; specialized mathematics may fail"],"requires":["OpenRouter API access","Mathematical problem specifications in clear natural language or symbolic notation","Optional: symbolic computation tool (SymPy, Mathematica) for verification","Prompt templates that encourage step-by-step reasoning"],"input_types":["mathematical problems in natural language or symbolic notation","equations and variable definitions","problem constraints and success criteria"],"output_types":["step-by-step solution derivations","symbolic expressions and equations","numerical answers with reasoning","alternative solution approaches"],"categories":["planning-reasoning","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":25,"verified":false,"data_access_risk":"low","permissions":["OpenRouter API key or compatible LLM provider integration","Minimum context window of 4K tokens (actual window size varies by provider)","Network connectivity for API calls; no local deployment option via this endpoint","OpenRouter API endpoint or compatible provider supporting MoE model inference","Batch size optimization knowledge to maximize expert utilization","Understanding of MoE inference characteristics for latency budgeting","OpenRouter API access","Understanding of target language characteristics for effective prompting","Validation of cross-lingual transfer quality for critical applications","Optional: language identification preprocessing"],"failure_modes":["30B parameter count limits reasoning depth on extremely complex multi-step problems compared to 70B+ models","No explicit fine-tuning for domain-specific reasoning (legal, medical, scientific) — requires prompt engineering or RAG","Multilingual performance varies by language; lower-resource languages may show degradation vs English","MoE routing adds ~50-100ms latency overhead per request due to gating computation and expert selection","Expert specialization is learned implicitly; no explicit control over which expert handles which task type","Batch inference efficiency depends on token distribution across experts — heterogeneous batches may underutilize experts","MoE models typically require more careful prompt engineering to trigger appropriate expert activation patterns","Zero-shot performance degrades significantly for very low-resource languages (< 1M speakers)","Language-specific idioms and cultural context may be lost in cross-lingual transfer","Code-switching (mixing languages) may confuse the model or degrade performance","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.49,"ecosystem":0.24,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.35,"quality":0.2,"ecosystem":0.1,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:24.485Z","last_scraped_at":"2026-05-03T15:20:45.776Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=qwen-qwen3-30b-a3b","compare_url":"https://unfragile.ai/compare?artifact=qwen-qwen3-30b-a3b"}},"signature":"MP/DiCEIoPAUcBwz4mPmhzzjO8+GKcOM0HVGcA/10MHnL+m0shOighzNlqL6pesVY7Q+DgMA1ZKdk7qRDiAMDQ==","signedAt":"2026-06-19T21:12:47.676Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/qwen-qwen3-30b-a3b","artifact":"https://unfragile.ai/qwen-qwen3-30b-a3b","verify":"https://unfragile.ai/api/v1/verify?slug=qwen-qwen3-30b-a3b","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}