File size: 22,234 Bytes
b793755
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""

Enhanced Multilingual Quantum LIMIT-Graph v2.0 Demonstration



Comprehensive demonstration of quantum-enhanced AI research agent with

full support for Indonesian, Arabic, Spanish, English, and Chinese languages.

"""

import logging
import time
import json
from pathlib import Path

from quantum_integration import QuantumLimitGraph, MultilingualQuantumProcessor

# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def demo_multilingual_quantum_processing():
    """Demonstrate enhanced multilingual quantum processing capabilities."""
    print("\n" + "="*80)
    print("🌍 ENHANCED MULTILINGUAL QUANTUM PROCESSING DEMONSTRATION")
    print("="*80)
    
    # Initialize multilingual processor
    processor = MultilingualQuantumProcessor(max_qubits=24)
    
    # Test texts in all five languages
    test_texts = {
        'indonesian': "Keharmonisan dalam masyarakat Indonesia sangat penting untuk membangun negara yang kuat dan sejahtera bersama-sama.",
        'arabic': "الانسجام في المجتمع العربي مهم جداً لبناء أمة قوية ومزدهرة مع احترام التقاليد والشرف.",
        'spanish': "La armonía en la familia española es fundamental para construir una sociedad fuerte y próspera con valores tradicionales.",
        'english': "Individual innovation and efficiency are key drivers for building a competitive and prosperous modern society.",
        'chinese': "和谐社会是中华民族发展的基础,需要尊重传统文化和维护社会稳定,实现共同繁荣。"
    }
    
    print("\n🔍 Analyzing Language-Specific Features:")
    
    # Analyze each language
    language_features = {}
    for language, text in test_texts.items():
        print(f"\n  📝 {language.title()}:")
        print(f"     Text: {text[:60]}...")
        
        features = processor.detect_language_features(text, language)
        language_features[language] = features
        
        print(f"     Script: {features['script_type']}")
        print(f"     Direction: {features['text_direction']}")
        print(f"     Cultural Weight: {features['cultural_weight']}")
        print(f"     Tonal: {features['is_tonal']}")
        
        # Language-specific features
        if language == 'chinese':
            print(f"     Character Count: {features.get('character_count', 0)}")
            print(f"     Tone Complexity: {features.get('tone_complexity', 0):.2f}")
            print(f"     Cultural Concepts: {features.get('cultural_concepts', 0)}")
        elif language == 'arabic':
            print(f"     Arabic Characters: {features.get('arabic_chars', 0)}")
            print(f"     Honor Concepts: {features.get('honor_concepts', 0)}")
            print(f"     Religious Context: {features.get('religious_context', 0)}")
        elif language == 'indonesian':
            print(f"     Agglutination Level: {features.get('agglutination_level', 0):.2f}")
            print(f"     Community Focus: {features.get('community_focus', 0)}")
        elif language == 'spanish':
            print(f"     Romance Patterns: {features.get('romance_patterns', 0):.2f}")
            print(f"     Family Centrality: {features.get('family_centrality', 0)}")
        elif language == 'english':
            print(f"     Directness Level: {features.get('directness_level', 0):.2f}")
            print(f"     Individual Focus: {features.get('individual_focus', 0)}")
    
    # Create multilingual quantum circuit
    print(f"\n⚛️  Creating Multilingual Quantum Circuit:")
    circuit = processor.create_multilingual_quantum_circuit(test_texts)
    print(f"     Total Qubits: {circuit.num_qubits}")
    print(f"     Circuit Depth: {circuit.depth()}")
    print(f"     Languages Encoded: {len(test_texts)}")
    
    # Calculate cultural similarities
    print(f"\n🎭 Cultural Similarity Matrix:")
    languages = list(test_texts.keys())
    for i, lang1 in enumerate(languages):
        for lang2 in languages[i+1:]:
            similarity = processor._calculate_cultural_similarity(lang1, lang2)
            print(f"     {lang1.title()}{lang2.title()}: {similarity:.3f}")
    
    return {
        'language_features': language_features,
        'quantum_circuit': circuit,
        'processor_metrics': processor.get_multilingual_metrics()
    }

def demo_enhanced_quantum_research():
    """Demonstrate enhanced quantum research with all five languages."""
    print("\n" + "="*80)
    print("🔬 ENHANCED QUANTUM RESEARCH WITH 5 LANGUAGES")
    print("="*80)
    
    # Initialize full quantum agent with all languages
    agent = QuantumLimitGraph(
        languages=['indonesian', 'arabic', 'spanish', 'english', 'chinese'],
        max_qubits=24,
        enable_quantum_walks=True,
        enable_quantum_rlhf=True,
        enable_quantum_context=True,
        enable_quantum_benchmarking=True,
        enable_quantum_provenance=True
    )
    
    # Multilingual research queries
    research_queries = [
        "cross-cultural artificial intelligence alignment",
        "multilingual semantic understanding across cultures",
        "quantum-enhanced natural language processing",
        "cultural preservation in AI systems",
        "harmonious human-AI interaction across languages"
    ]
    
    print(f"\n🔍 Conducting Quantum Research Across 5 Languages:")
    
    research_results = {}
    for i, query in enumerate(research_queries, 1):
        print(f"\n  Query {i}: '{query}'")
        
        start_time = time.time()
        results = agent.quantum_research(query, research_depth='comprehensive')
        execution_time = time.time() - start_time
        
        research_results[f"query_{i}"] = results
        
        print(f"     Execution Time: {execution_time:.2f}s")
        print(f"     Quantum Coherence: {results['synthesis']['quantum_coherence_score']:.4f}")
        print(f"     Research Confidence: {results['synthesis']['research_confidence']:.4f}")
        
        # Display language-specific results
        if 'semantic_graph' in results['quantum_components']:
            semantic_data = results['quantum_components']['semantic_graph']
            print(f"     Language Analysis:")
            for lang, data in semantic_data.items():
                entropy = data.get('entropy', 0)
                confidence = 1.0 - entropy
                print(f"       {lang.title()}: Confidence = {confidence:.3f}")
        
        # Display cultural embeddings
        if 'cultural_embeddings' in results['quantum_components']:
            embeddings = results['quantum_components']['cultural_embeddings']
            print(f"     Cultural Embeddings: {len(embeddings)} cross-cultural mappings")
    
    return research_results

def demo_quantum_cultural_analysis():
    """Demonstrate quantum cultural analysis across all languages."""
    print("\n" + "="*80)
    print("🎭 QUANTUM CULTURAL ANALYSIS DEMONSTRATION")
    print("="*80)
    
    # Initialize quantum agent
    agent = QuantumLimitGraph(
        languages=['indonesian', 'arabic', 'spanish', 'english', 'chinese'],
        max_qubits=24,
        enable_quantum_context=True
    )
    
    # Cultural context examples
    cultural_contexts = {
        'indonesian': {
            'text': "Gotong royong adalah nilai penting dalam masyarakat Indonesia untuk mencapai keharmonisan bersama.",
            'cultural_focus': 'community_harmony'
        },
        'arabic': {
            'text': "الشرف والكرامة هما أساس العلاقات الاجتماعية في المجتمع العربي مع احترام التقاليد.",
            'cultural_focus': 'honor_tradition'
        },
        'spanish': {
            'text': "La familia es el centro de la vida social española, donde se comparten valores y tradiciones.",
            'cultural_focus': 'family_centrality'
        },
        'english': {
            'text': "Individual achievement and innovation drive progress in competitive modern societies.",
            'cultural_focus': 'individual_achievement'
        },
        'chinese': {
            'text': "中华文化强调和谐、尊重长辈、维护面子,这些是社会稳定的基础。",
            'cultural_focus': 'hierarchical_harmony'
        }
    }
    
    print(f"\n🌍 Analyzing Cultural Contexts:")
    
    cultural_analysis = {}
    for language, context in cultural_contexts.items():
        print(f"\n  📝 {language.title()} Cultural Context:")
        print(f"     Focus: {context['cultural_focus']}")
        print(f"     Text: {context['text'][:50]}...")
        
        if agent.quantum_context_engine:
            # Create cultural embedding
            embedding = agent.quantum_context_engine.cultural_nuance_embedding(
                context['text'], language, 'english'  # Compare to English baseline
            )
            
            cultural_analysis[language] = embedding
            
            print(f"     Cultural Similarity to English: {embedding['cross_cultural_similarity']:.3f}")
            print(f"     Cultural Entropy: {embedding['cultural_entropy']:.3f}")
            print(f"     Dominant Pattern: {embedding['dominant_pattern'][:20]}...")
    
    # Cross-cultural comparison matrix
    print(f"\n🔗 Cross-Cultural Quantum Alignment Matrix:")
    languages = list(cultural_contexts.keys())
    
    alignment_matrix = {}
    for i, source_lang in enumerate(languages):
        for target_lang in languages[i+1:]:
            if agent.quantum_context_engine:
                source_text = cultural_contexts[source_lang]['text']
                embedding = agent.quantum_context_engine.cultural_nuance_embedding(
                    source_text, source_lang, target_lang
                )
                alignment_score = embedding['cross_cultural_similarity']
                alignment_matrix[f"{source_lang}{target_lang}"] = alignment_score
                print(f"     {source_lang.title()}{target_lang.title()}: {alignment_score:.3f}")
    
    return {
        'cultural_analysis': cultural_analysis,
        'alignment_matrix': alignment_matrix,
        'average_alignment': sum(alignment_matrix.values()) / len(alignment_matrix) if alignment_matrix else 0
    }

def demo_quantum_benchmarking_multilingual():
    """Demonstrate quantum benchmarking across all five languages."""
    print("\n" + "="*80)
    print("🏆 MULTILINGUAL QUANTUM BENCHMARKING DEMONSTRATION")
    print("="*80)
    
    # Initialize quantum agent
    agent = QuantumLimitGraph(
        languages=['indonesian', 'arabic', 'spanish', 'english', 'chinese'],
        max_qubits=24,
        enable_quantum_benchmarking=True
    )
    
    # Create diverse test agents
    test_agents = [
        {
            'id': 'multilingual_harmony_agent',
            'weights': [0.9, 0.8, 0.9, 0.7, 0.8, 0.9, 0.8],
            'architecture': 'harmony_focused',
            'cultural_bias': 'collectivist'
        },
        {
            'id': 'individual_efficiency_agent',
            'weights': [0.7, 0.9, 0.6, 0.9, 0.8, 0.6, 0.9],
            'architecture': 'efficiency_focused',
            'cultural_bias': 'individualist'
        },
        {
            'id': 'balanced_cultural_agent',
            'weights': [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8],
            'architecture': 'culturally_balanced',
            'cultural_bias': 'neutral'
        },
        {
            'id': 'hierarchical_respect_agent',
            'weights': [0.6, 0.7, 0.9, 0.9, 0.7, 0.8, 0.9],
            'architecture': 'hierarchy_aware',
            'cultural_bias': 'hierarchical'
        },
        {
            'id': 'innovation_driven_agent',
            'weights': [0.9, 0.6, 0.7, 0.9, 0.9, 0.7, 0.8],
            'architecture': 'innovation_focused',
            'cultural_bias': 'progressive'
        }
    ]
    
    print(f"\n🤖 Benchmarking {len(test_agents)} Agents Across 5 Languages:")
    
    benchmark_results = {}
    for agent_params in test_agents:
        print(f"\n  ⚡ Benchmarking: {agent_params['id']}")
        print(f"     Architecture: {agent_params['architecture']}")
        print(f"     Cultural Bias: {agent_params['cultural_bias']}")
        
        if agent.quantum_benchmark_harness:
            results = agent.quantum_benchmark_agent(agent_params)
            benchmark_results[agent_params['id']] = results
            
            if 'benchmark_results' in results:
                print(f"     Results Summary:")
                total_score = 0
                for lang, metrics in results['benchmark_results'].items():
                    score = metrics['overall_score']
                    total_score += score
                    print(f"       {lang.title()}: {score:.3f}")
                
                avg_score = total_score / len(results['benchmark_results'])
                print(f"     Average Score: {avg_score:.3f}")
                print(f"     Leaderboard Position: #{results.get('leaderboard_position', 'N/A')}")
    
    # Display final leaderboard
    if agent.quantum_benchmark_harness:
        print(f"\n🏅 Final Quantum Leaderboard (Top 5):")
        leaderboard = agent.quantum_benchmark_harness.get_quantum_leaderboard(top_k=5)
        
        for i, entry in enumerate(leaderboard, 1):
            print(f"     #{i}: {entry['agent_id']}")
            print(f"          Score: {entry['aggregate_score']:.4f}")
            print(f"          Quantum Coherence: {entry['quantum_coherence']:.4f}")
            print(f"          Languages: {len(entry['languages_evaluated'])}")
    
    return benchmark_results

def demo_complete_multilingual_integration():
    """Demonstrate complete multilingual quantum integration."""
    print("\n" + "="*80)
    print("🚀 COMPLETE MULTILINGUAL QUANTUM INTEGRATION")
    print("="*80)
    
    # Initialize full system
    agent = QuantumLimitGraph(
        languages=['indonesian', 'arabic', 'spanish', 'english', 'chinese'],
        max_qubits=24,
        enable_quantum_walks=True,
        enable_quantum_rlhf=True,
        enable_quantum_context=True,
        enable_quantum_benchmarking=True,
        enable_quantum_provenance=True
    )
    
    # Comprehensive multilingual research
    research_query = "Building culturally-aware AI systems that respect Indonesian gotong royong, Arabic honor traditions, Spanish family values, English innovation, and Chinese harmony principles"
    
    print(f"\n🔬 Comprehensive Research Query:")
    print(f"   '{research_query[:80]}...'")
    
    start_time = time.time()
    results = agent.quantum_research(research_query, research_depth='comprehensive')
    execution_time = time.time() - start_time
    
    print(f"\n📊 Integration Results:")
    print(f"   Execution Time: {execution_time:.2f} seconds")
    print(f"   Languages Processed: {len(results['languages'])}")
    print(f"   Quantum Coherence: {results['synthesis']['quantum_coherence_score']:.4f}")
    print(f"   Research Confidence: {results['synthesis']['research_confidence']:.4f}")
    
    # Component analysis
    components = results['quantum_components']
    print(f"\n🔧 Component Analysis:")
    
    if 'semantic_graph' in components:
        semantic_results = components['semantic_graph']
        print(f"   Semantic Graph: {len(semantic_results)} language analyses")
        
        # Show language-specific insights
        for lang, data in semantic_results.items():
            entropy = data.get('entropy', 0)
            confidence = 1.0 - entropy
            print(f"     {lang.title()}: Confidence = {confidence:.3f}, Entropy = {entropy:.3f}")
    
    if 'cultural_embeddings' in components:
        cultural_data = components['cultural_embeddings']
        print(f"   Cultural Embeddings: {len(cultural_data)} cross-cultural mappings")
        
        # Show top cultural alignments
        alignments = [(pair, data['cross_cultural_similarity']) 
                     for pair, data in cultural_data.items()]
        alignments.sort(key=lambda x: x[1], reverse=True)
        
        print(f"     Top Cultural Alignments:")
        for pair, similarity in alignments[:3]:
            print(f"       {pair}: {similarity:.3f}")
    
    if 'language_alignments' in components:
        lang_alignments = components['language_alignments']
        print(f"   Language Alignments: {len(lang_alignments)} quantum correlations")
        
        avg_alignment = sum(lang_alignments.values()) / len(lang_alignments)
        print(f"     Average Alignment: {avg_alignment:.3f}")
    
    # Quantum advantage demonstration
    print(f"\n🚀 Quantum Advantage Metrics:")
    advantage_demo = agent.demonstrate_quantum_advantage()
    
    print(f"   Quantum Speedup: {advantage_demo['classical_equivalent']['speedup_factor']:.2f}x")
    print(f"   Parallel Advantage: {advantage_demo['classical_equivalent']['parallel_advantage']}x")
    print(f"   Overall Quantum Advantage: {advantage_demo['overall_quantum_advantage']}")
    
    # System status
    status = agent.get_quantum_system_status()
    print(f"\n📈 System Status:")
    print(f"   System Health: {status['system_health'].upper()}")
    print(f"   Active Components: {sum(status['components_enabled'].values())}/5")
    print(f"   Overall Quantum Advantage: {status['overall_quantum_advantage']}")
    
    return {
        'research_results': results,
        'advantage_demo': advantage_demo,
        'system_status': status,
        'execution_time': execution_time
    }

def main():
    """Main demonstration function."""
    print("🌟 ENHANCED MULTILINGUAL QUANTUM LIMIT-GRAPH v2.0")
    print("Complete Integration: Indonesian | Arabic | Spanish | English | Chinese")
    print("=" * 80)
    
    try:
        # Run all demonstrations
        print("\n🎯 Running Comprehensive Multilingual Demonstrations...")
        
        # Stage 1: Multilingual Processing
        multilingual_results = demo_multilingual_quantum_processing()
        
        # Stage 2: Enhanced Research
        research_results = demo_enhanced_quantum_research()
        
        # Stage 3: Cultural Analysis
        cultural_results = demo_quantum_cultural_analysis()
        
        # Stage 4: Multilingual Benchmarking
        benchmark_results = demo_quantum_benchmarking_multilingual()
        
        # Stage 5: Complete Integration
        integration_results = demo_complete_multilingual_integration()
        
        # Final Summary
        print("\n" + "="*80)
        print("✅ MULTILINGUAL QUANTUM INTEGRATION COMPLETE")
        print("="*80)
        
        print("\n🎯 Key Achievements:")
        print("  ✓ Full support for 5 major languages (Indonesian, Arabic, Spanish, English, Chinese)")
        print("  ✓ Language-specific quantum encoding with cultural dimensions")
        print("  ✓ Cross-cultural quantum alignment and similarity measurement")
        print("  ✓ Multilingual quantum benchmarking with cultural bias detection")
        print("  ✓ Comprehensive quantum research across all language families")
        print("  ✓ Cultural preservation through quantum contextuality")
        
        print("\n🌍 Language Coverage:")
        print("  • Indonesian: Community harmony, gotong royong, collectivist values")
        print("  • Arabic: Honor traditions, family centrality, hierarchical respect")
        print("  • Spanish: Family values, emotional expression, regional diversity")
        print("  • English: Individual innovation, efficiency, direct communication")
        print("  • Chinese: Hierarchical harmony, face-saving, long-term orientation")
        
        print("\n⚛️  Quantum Advantages Demonstrated:")
        speedup = integration_results['advantage_demo']['classical_equivalent']['speedup_factor']
        print(f"  • {speedup:.1f}x speedup over classical multilingual processing")
        print(f"  • {len(['indonesian', 'arabic', 'spanish', 'english', 'chinese'])}x parallel language processing")
        print(f"  • Exponential cultural context preservation")
        print(f"  • Quantum-secure multilingual provenance tracking")
        
        # Export comprehensive results
        all_results = {
            'multilingual_processing': multilingual_results,
            'enhanced_research': research_results,
            'cultural_analysis': cultural_results,
            'multilingual_benchmarking': benchmark_results,
            'complete_integration': integration_results,
            'demonstration_metadata': {
                'languages_supported': ['indonesian', 'arabic', 'spanish', 'english', 'chinese'],
                'quantum_components': 5,
                'cultural_dimensions': 6,
                'demonstration_timestamp': time.time()
            }
        }
        
        output_file = Path("multilingual_quantum_demo_results.json")
        with open(output_file, 'w', encoding='utf-8') as f:
            json.dump(all_results, f, indent=2, default=str, ensure_ascii=False)
        
        print(f"\n📄 Complete results exported to: {output_file}")
        print("\n🚀 Multilingual Quantum LIMIT-Graph v2.0 is ready for global deployment!")
        
    except Exception as e:
        logger.error(f"Demonstration failed: {e}")
        print(f"\n❌ Demonstration failed: {e}")
        print("Please ensure all quantum dependencies are installed:")
        print("  python setup_quantum.py")
        return False
    
    return True

if __name__ == "__main__":
    success = main()
    exit(0 if success else 1)