QPyth - Qiskit-based quantum toolkit for simulation, education, and research workflows with VQE, IBM Quantum integration, realistic noisy simulation, quantum error correction, quantum teleportation, and optional web UI
Project description
QPyth
QPyth is a professionally engineered, physically rigorous quantum computing library built on Qiskit. Moving beyond ideal statevector simulations, QPyth provides canonical implementations of advanced quantum algorithms, including Variational Quantum Eigensolvers (VQE) for multi-electron molecules, robust Quantum Error Correction (QEC) protocols, and seamless IBM Quantum hardware execution. Featuring hardware-calibrated simulation with vendor-neutral backend profiles supporting IBM, IonQ, Rigetti, Quantinuum, and Pasqal, QPyth ensures every component follows standard physical implementationsโdelivering real simulation, authentic hardware routing, and graceful dependency handling within a full-stack environment.
๐ Highlights
- Physically grounded quantum workflows โ canonical implementations built on Qiskit, with textbook-aligned circuits and real simulation behavior.
- Molecular VQE โ Hโ plus extended molecule support through the VQE stack, with physical and lightweight execution paths.
- IBM Quantum execution โ run circuits on real IBM backends with configurable shots, backend routing, and runtime options.
- Hardware-calibrated noisy simulation โ realistic noise models from vendor-neutral backend profiles (IBM, IonQ, Rigetti, Quantinuum, Pasqal) or user-imported calibration data.
- Core quantum protocols โ Bloch state analysis, Bell-state exploration, teleportation, and measurement-driven circuit demos.
- Complete quantum teleportation โ Full protocol with Bob's conditional X/Z corrections, tested on IBM Quantum hardware (ibm_fez, 14,448 shots).
- DNA-inspired circuit exploration โ curated OpenQASM imports with normalized sequence and circuit metadata.
- Quantum error correction โ Shor 9-qubit and Steane 7-qubit codes with proper syndrome measurement using ancilla qubits.
- Sacred-geometry modules โ QRNG with phi-scaling and the 21-qubit TMT Sierpinski circuit.
- CLI + Web UI โ interactive command-line interface plus optional FastAPI + React web UI for exploration.
๐ Quickstart
Installation
# Core package (Qiskit, Qiskit-Aer, NumPy)
pip install QPyth
# With physical VQE support (requires qiskit-algorithms, qiskit-nature, pyscf)
pip install QPyth[physical]
# With IBM Quantum hardware support (requires qiskit-ibm-runtime)
pip install QPyth[hardware]
# With web UI support (requires FastAPI, uvicorn)
pip install QPyth[web]
# Development mode (all extras)
pip install -e .[dev,physical,web,hardware]
CLI Mode
# Run the interactive quantum playground
qpy
# Or directly via Python module
python -m quantumpytho
Web UI Mode
# Start the FastAPI backend
python server.py # http://localhost:8000
# Start the React frontend (in a separate terminal)
cd web
npm install
npm run dev # http://localhost:3000
For frontend build and dev commands, run npm inside the web/ directory because the React/Vite package.json lives in web/package.json.
๐ Usage Examples
1. Bloch Sphere State Projection
from quantumpytho.modules.bloch_ascii import run_bloch_ascii
# Display statevector at ฮธ=ฯ/3, ฯ=ฯ/2
run_bloch_ascii(theta=1.047, phi=1.571)
Output:
State Vector Projection (ฮธ=1.047000, ฯ=1.571000):
Statevector([ 8.66e-01+0.j, -1.02e-04+0.4999j], dims=(2,))
|0> state: [###############-----] 75.01% (768 shots)
|1> state: [#####---------------] 24.99% (256 shots)
2. QRNG with Golden-Ratio Scaling
from quantumpytho.engine import QuantumEngine
from quantumpytho.modules.qrng_sacred import qrng_phi_sequence
engine = QuantumEngine()
sequence = qrng_phi_sequence(engine, num_qubits=8, length=16)
print(f"QRNG ฯ-sequence: {sequence}")
3. Bell Pair Creation (Entanglement)
from quantumpytho.engine import QuantumEngine
from quantumpytho.modules.circuit_explorer import bell_pair
engine = QuantumEngine()
result = bell_pair(engine)
print(f"Bell pair counts: {result.counts}")
# Expected: {'00': ~512, '11': ~512} (maximally entangled state |ฮฆโบโฉ)
4. TMT Sierpinski Fractal (21-qubit)
from quantumpytho.engine import QuantumEngine
from quantumpytho.modules.tmt_sierpinski import run_tmt_sierpinski, build_tmt_sierpinski_circuit
# Inspect the circuit
qc = build_tmt_sierpinski_circuit()
print(f"Circuit: {qc.num_qubits} qubits, depth {qc.depth()}, {qc.size()} gates")
# Execute on simulator
engine = QuantumEngine()
result = run_tmt_sierpinski(engine)
print(f"Most common outcome: {result['most_common'][0]} ({result['most_common'][1]} shots)")
5. Physical Hโ VQE
# Requires: pip install QPyth[physical]
from quantumpytho.modules.vqe_h2_exact import run_vqe_h2_physical
energies = run_vqe_h2_physical(max_iters=50)
for iteration, energy in energies[-5:]:
print(f"Iter {iteration:3d}: E = {energy:.8f} Hartree")
# Ground state energy converges to โ โ1.137 Hartree
6. Quantum Teleportation
from quantumpytho.modules.teleport_bridge import (
build_teleport_circuit,
build_complete_teleport_circuit,
run_teleport_bridge,
run_complete_teleport
)
# Basic teleportation (Bell measurement only)
qc = build_teleport_circuit()
print(f"Basic circuit: {qc.num_qubits} qubits, {qc.num_clbits} classical bits")
# Complete teleportation with Bob's conditional corrections
qc_complete = build_complete_teleport_circuit()
print(f"Complete circuit: {qc_complete.num_qubits} qubits, {qc_complete.num_clbits} classical bits")
# Run the complete protocol
counts = run_complete_teleport()
print(f"Measurement outcomes: {counts}")
# The complete protocol includes:
# - Alice's Bell measurement on qubits 0 and 1
# - Bob's conditional X gate (if alice[1] == 1)
# - Bob's conditional Z gate (if alice[0] == 1)
# - Final measurement on Bob's qubit (qubit 2)
7. Decoherence Toggle
from quantumpytho.modules.decoherence_toggle import DecoherenceController
ctrl = DecoherenceController()
print(ctrl.enabled) # False
ctrl.toggle()
print(ctrl.enabled) # True
8. IBM Quantum Hardware Execution
# Requires: pip install QPyth[hardware]
import os
os.environ['QISKIT_IBM_TOKEN'] = 'your-ibm-quantum-token'
from quantumpytho.modules.hardware_ibm import run_on_hardware
from quantumpytho.engine import QuantumEngine
from qiskit import QuantumCircuit
# Create a simple circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run on IBM Quantum hardware
result = run_on_hardware(qc, backend_name='least_busy')
print(f"Job ID: {result.job_id}")
print(f"Backend: {result.backend_name}")
print(f"Counts: {result.counts}")
9. Noisy Simulation with Hardware Calibration Data
Simulate realistic quantum hardware noise using calibration data from IBM Quantum backends:
from quantumpytho.modules.noise_builder import (
build_noise_model_from_ibm_backend,
get_synthetic_demo_profiles,
load_noise_model
)
from qiskit import QuantumCircuit
# Option 1: Use synthetic demo profiles for testing (no IBM account needed)
demo_profiles = get_synthetic_demo_profiles()
print(f"Demo profiles: {list(demo_profiles.keys())}")
# ['demo_5q', 'demo_7q']
noise_model = load_noise_model('demo_5q')
# Option 2: Retrieve from IBM Quantum at runtime (requires IBM account)
# Set your IBM Quantum token: os.environ['QISKIT_IBM_TOKEN'] = 'your-token'
# noise_model = build_noise_model_from_ibm_backend('ibm_brisbane')
# Create a Bell state circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run with noise model
from qiskit_aer import AerSimulator
simulator = AerSimulator(noise_model=noise_model)
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()
print(f"Counts: {counts}")
# Shows realistic noise effects (not ideal 50/50 split)
Note: Backend-derived noise parameters are generated from IBM Quantum calibration properties and remain subject to IBM platform terms. Users are responsible for ensuring their use complies with IBM Quantum terms of service.
10. DNA-Inspired Circuit Import
from quantumpytho.modules.dna_circuits import get_available_dna_circuits, summarize_dna_circuit
catalog = get_available_dna_circuits()
print([item.circuit_id for item in catalog])
summary = summarize_dna_circuit("dna_helix_10bp")
print(summary.name)
print(summary.qubits, summary.parsed_gate_count)
large_summary = summarize_dna_circuit("stealth_dna_34bp")
print(large_summary.base_pairs, large_summary.qubits, large_summary.parsed_depth)
from quantumpytho.modules.dna_circuits import get_available_dna_sequences
print([record.record_id for record in get_available_dna_sequences()])
This feature imports curated OpenQASM assets and exposes them as circuit-exploration data. It does not claim biological simulation fidelity.
OpenQASM 3 assets require the optional dependency qiskit_qasm3_import.
Responsible Use Notice
The DNA-related features in QPyth are provided for educational, computational, and circuit-exploration purposes only.
- They do not constitute biological modeling, clinical analysis, or validated genetic interpretation.
- They do not provide medical, diagnostic, therapeutic, or laboratory guidance.
- They are not intended for pathogen design, wet-lab experimentation, synthesis planning, or any harmful biological application.
- They should not be relied upon as evidence of biological function, safety, or real-world DNA behavior.
Any DNA-inspired or sequence-related assets in this repository are presented as computational abstractions or curated examples unless explicitly documented otherwise.
Data Provenance
Where bundled DNA or sequence-like assets are included, the repository should identify whether they are synthetic/demo-only, derived from public reference material, or transformed for educational use. Unless explicitly stated otherwise, treat such assets as illustrative and non-authoritative.
IBM Quantum Backend Data
Important: QPyth does not bundle IBM Quantum calibration data. Users must retrieve backend properties at runtime using their own IBM Quantum credentials.
- Runtime Retrieval: Use
build_noise_model_from_ibm_backend(backend_name)to fetch calibration data directly from IBM Quantum. - Synthetic Demo Profiles: Use
get_synthetic_demo_profiles()for testing without IBM access. - User Responsibility: Users are responsible for ensuring their use of IBM Quantum backend data complies with IBM Quantum terms of service.
- Attribution: Backend-derived noise parameters are generated from IBM Quantum calibration properties and remain subject to IBM platform terms.
Environment Variables:
| Variable | Default | Description |
|---|---|---|
QPYTH_MODE |
simulator |
Execution mode: simulator, noisy_simulator, or hardware |
QPYTH_NOISE_PROFILE |
โ | Hardware profile for noisy simulation (e.g., Boston, Torino) |
Web UI Integration:
The VQE web interface now supports three execution modes:
- ๐งช Ideal Simulator โ Fast, noise-free simulation
- ๐ Noisy Simulator โ Realistic hardware noise from calibration data
- ๐ฅ๏ธ IBM Quantum Hardware โ Real quantum hardware execution
Environment Variables:
| Variable | Default | Description |
|---|---|---|
QISKIT_IBM_TOKEN |
โ | IBM Quantum API token (required) |
QPYTH_IBM_CHANNEL |
ibm_quantum |
Channel: ibm_quantum or ibm_cloud |
QPYTH_IBM_BACKEND |
least_busy |
Backend name or least_busy for auto-selection |
QPYTH_IBM_SHOTS |
1024 |
Number of measurement shots |
QPYTH_IBM_OPTIMIZATION_LEVEL |
1 |
Transpilation optimization (0-3) |
QPYTH_IBM_RESILIENCE_LEVEL |
1 |
Error mitigation level (0-3) |
๐ฅ๏ธ Interactive CLI
Run qpy (or python -m quantumpytho) to open the interactive menu:
=== QuantumPytho App ===
1) Sacred-geometry QRNG sequence
2) Circuit explorer (Bell pair)
3) Circuit explorer (Hadamard sweep)
4) TMT Sierpinski fractal (21-qubit)
5) Bloch State Vector Projection (ASCII)
6) Non-local Teleportation Bridge
7) Molecular Ground-State (VQE Sim)
8) Toggle Quantum Decoherence [OFF]
q) Quit
๐ Circuit Explorer
| Circuit | Description |
|---|---|
| Bell Pair | Creates |ฮฆโบโฉ = (|00โฉ + |11โฉ)/โ2 โ maximally entangled |
| Hadamard Sweep | Applies n sequential Hadamard gates and measures |
| Teleportation | Three-qubit protocol from Nielsen & Chuang |
| TMT Sierpinski | 21-qubit Sierpinski-triangle topology with ฯ-scaled RZ gates |
๐งช Running Tests
# All tests
pytest tests/ --tb=short
# With coverage report
pytest --cov=quantumpytho --cov-report=html
# Skip slow tests
pytest -m "not slow"
# Verbose output
pytest -v
Coverage status:
| Module | Status |
|---|---|
bloch_ascii |
โ |
qrng_sacred |
โ |
circuit_explorer |
โ |
teleport_bridge |
โ |
tmt_sierpinski |
โ |
vqe_h2_cli |
โ |
decoherence_toggle |
โ |
config / engine |
โ |
๐ Development
Code Quality
# Lint
ruff check .
# Format
ruff format .
# Lint + format check (CI-equivalent)
ruff check . && ruff format --check .
# Optional type checking
mypy quantumpytho/
Pre-commit Hooks
pre-commit install # install once
pre-commit run # run on staged files
pre-commit run --all-files # run on entire repo
๐ Project Structure
QPyth/
โโโ quantumpytho/
โ โโโ __init__.py # Package version & public API
โ โโโ __main__.py # CLI entry point
โ โโโ config.py # QuantumConfig (env-driven)
โ โโโ engine.py # QuantumEngine + QuantumResult
โ โโโ menu.py # Interactive CLI menu
โ โโโ modules/
โ โโโ __init__.py
โ โโโ bloch_ascii.py # Bloch sphere ASCII projection
โ โโโ qrng_sacred.py # Sacred-geometry QRNG (ฯ-scaling)
โ โโโ circuit_explorer.py # Bell pairs, Hadamard sweeps
โ โโโ vqe_h2_ascii.py # Lightweight VQE optimizer
โ โโโ vqe_h2_exact.py # Physical Hโ VQE (Qiskit-Nature)
โ โโโ vqe_h2_cli.py # CLI wrapper for VQE
โ โโโ vqe_core.py # Core VQE implementation
โ โโโ vqe_molecules.py # Extended molecule support (LiH, HeH+, BeHโ, HโO)
โ โโโ vqe_utils.py # VQE utility functions
โ โโโ hardware_ibm.py # IBM Quantum hardware integration
โ โโโ teleport_bridge.py # Quantum teleportation protocol
โ โโโ decoherence_toggle.py# Noise model toggle controller
โ โโโ qec_shor.py # Shor's 9-qubit error correction
โ โโโ qec_steane.py # Steane's 7-qubit error correction
โ โโโ tmt_sierpinski.py # 21-qubit TMT Sierpinski circuit
โโโ web/ # React + Vite frontend
โ โโโ src/ # TypeScript source
โ โโโ README.md # Web UI documentation
โโโ tests/
โ โโโ test_*.py # pytest test suite
โโโ server.py # FastAPI web server entry point
โโโ pyproject.toml # Project metadata & dependencies
โโโ CHANGELOG.md # Version history
โโโ CONTRIBUTING.md # Contribution guidelines
โโโ SECURITY.md # Security policy
โโโ CODE_OF_CONDUCT.md # Community standards
โโโ LICENSE # Apache 2.0
โ๏ธ Configuration
QuantumPytho reads its configuration from environment variables:
| Variable | Default | Description |
|---|---|---|
QPYTH_BACKEND |
automatic |
Qiskit-Aer simulation method |
QPYTH_SHOTS |
1024 |
Number of measurement shots |
IBM Quantum Hardware Configuration
| Variable | Default | Description |
|---|---|---|
QISKIT_IBM_TOKEN |
โ | IBM Quantum API token (required for hardware) |
QPYTH_IBM_CHANNEL |
ibm_quantum |
Channel: ibm_quantum or ibm_cloud |
QPYTH_IBM_BACKEND |
least_busy |
Backend name or least_busy for auto-selection |
QPYTH_IBM_SHOTS |
1024 |
Number of measurement shots |
QPYTH_IBM_OPTIMIZATION_LEVEL |
1 |
Transpilation optimization (0-3) |
QPYTH_IBM_RESILIENCE_LEVEL |
1 |
Error mitigation level (0-3) |
# Example: run with 4096 shots and statevector method
QPYTH_BACKEND=statevector QPYTH_SHOTS=4096 qpy
# Example: run on IBM Quantum hardware
export QISKIT_IBM_TOKEN="your-token-here"
pip install QPyth[hardware]
python -c "from quantumpytho.modules.hardware_ibm import run_on_hardware; ..."
๐ฌ Scientific Value: Simulate Real Hardware Without Physical Access
One of the most significant capabilities of QPyth is the ability to simulate the behavior of real quantum hardware without needing actual access to a quantum computer. This is scientifically and practically valuable for several reasons:
Why Noisy Simulation Matters
Real quantum hardware is subject to multiple sources of error:
| Error Source | Physical Origin | Impact |
|---|---|---|
| T1 Relaxation | Energy decay from excited |1โฉ to ground |0โฉ state | Amplitude damping |
| T2 Dephasing | Loss of phase coherence between |0โฉ and |1โฉ | Phase flip probability |
| Readout Error | Measurement apparatus imperfections | Bit-flip on measurement |
| Gate Error | Imperfect control pulses, crosstalk | Depolarizing noise |
| CZ Gate Error | Coupling between neighboring qubits | Two-qubit depolarization |
How QPyth Replicates Hardware Fidelity
QPyth uses real IBM Quantum calibration data to build noise models that accurately reflect the performance characteristics of specific hardware backends. Each profile captures:
- Per-qubit T1/T2 coherence times (in microseconds)
- Qubit-specific readout error matrices
- Single-qubit gate error rates and durations
- Two-qubit (CZ) gate error rates for all coupled pairs
from quantumpytho.modules.noise_builder import get_backend_info
info = get_backend_info("Boston")
# Returns: {'name': 'Boston', 'num_qubits': 127,
# 'avg_t1_us': 280.4, 'avg_t2_us': 352.1,
# 'avg_readout_error': 0.0052, ...}
Scientific Applications Without Hardware Access
| Use Case | Description |
|---|---|
| Algorithm benchmarking | Test VQE, QAOA, or other algorithms under realistic noise before running on real hardware |
| Error mitigation research | Develop and test error mitigation strategies with calibrated noise models |
| Threshold analysis | Determine minimum hardware requirements before requesting hardware access |
| Reproducible results | Share experiments with fixed noise parameters for peer review |
| Educational simulation | Teach quantum error effects without requiring expensive hardware queue time |
| CI/CD validation | Validate quantum software against hardware-realistic noise in automated pipelines |
Supported Hardware Profiles (IBM Quantum)
All 10 hardware profiles are derived from real IBM Quantum calibration data:
| Backend | Qubits | Avg T1 (ฮผs) | Avg T2 (ฮผs) | Avg Readout Error | Architecture |
|---|---|---|---|---|---|
| Boston | 127 | ~280 | ~350 | ~0.5% | Eagle r3 |
| Torino | 133 | ~200 | ~150 | ~3.0% | Heron r1 |
| Kingston | 127 | ~280 | ~350 | ~0.5% | Eagle r3 |
| Marrakesh | 132 | ~250 | ~200 | ~2.0% | Heron r2 |
| Fez | 156 | ~300 | ~400 | ~0.5% | Flamingo r1 |
| Strasbourg | 127 | ~260 | ~280 | ~1.2% | Eagle r3 |
| Brussels | 127 | ~270 | ~300 | ~0.8% | Eagle r3 |
| Aachen | 127 | ~290 | ~320 | ~0.7% | Eagle r3 |
| Miami | 156 | ~310 | ~380 | ~0.6% | Flamingo r1 |
| Pittsburgh | 156 | ~295 | ~360 | ~0.55% | Flamingo r1 |
Comparison: Ideal vs. Noisy Simulation
from qiskit import QuantumCircuit
from quantumpytho.modules.hardware_ibm import NoisySimulatorEngine
from quantumpytho.engine import QuantumEngine
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Ideal simulation โ perfect 50/50 split
ideal = QuantumEngine()
ideal_result = ideal.run(qc, shots=1000)
# {'00': 500, '11': 500} (approximately)
# Noisy simulation โ realistic hardware errors
noisy = NoisySimulatorEngine("Boston", shots=1000)
noisy_result = noisy.run(qc)
# {'00': 483, '11': 471, '01': 23, '10': 23} (noise causes ~4.6% error)
The gap between ideal and noisy results quantifies the noise budget โ the overhead that must be addressed by error mitigation or error correction strategies to achieve fault-tolerant computation.
๐ฌ Scientific Correctness
| Principle | Implementation |
|---|---|
| No fabricated physics | Real Qiskit simulation or graceful error messages |
| Canonical parametrizations | Bloch sphere: |ฯโฉ = cos(ฮธ/2)|0โฉ + e^{iฯ} sin(ฮธ/2)|1โฉ |
| Textbook circuits | Bell pairs and teleportation match Nielsen & Chuang |
| Proper VQE stack | PySCF โ Jordan-Wigner mapper โ VQE when dependencies available |
| Physical units | Energies reported in Hartree; angles in radians |
๐ Web UI
The optional web interface provides:
- Bloch Sphere โ interactive ฮธ/ฯ sliders with real-time probability bars
- Circuit Explorer โ Bell pairs, Hadamard sweeps, teleportation
- VQE โ live energy convergence plots for multiple molecules (Hโ, LiH, HeHโบ, BeHโ, HโO)
- Hardware Toggle โ switch between local simulator and IBM Quantum hardware
- QRNG โ quantum random number sequences with ฯ-scaling
Requirements: Node.js 18+, Python 3.10+
See web/README.md for full setup instructions.
๐ References
- Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
- Qiskit Documentation
- Qiskit Nature Documentation
- Kawaihome โ Bloch Sphere Definition (quantum information theory resources).
๐ค Contributing
Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request.
Areas we'd love help with:
- New quantum circuits and modules
- Web UI enhancements and visualizations
- Documentation improvements and tutorials
- Additional test coverage and edge cases
- Performance optimizations
๐ License
This project is licensed under the Apache License 2.0 โ see the LICENSE file for details.
Made with quantum โค๏ธ by Quantum Dynamics
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qpyth-0.4.0.tar.gz.
File metadata
- Download URL: qpyth-0.4.0.tar.gz
- Upload date:
- Size: 126.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04c642521cc65c5448f3a9f783dd1dbcc8fa3bd1dd8700f497b8fe7b719d1ade
|
|
| MD5 |
7575d09dd8adba34774d378cb241e5ca
|
|
| BLAKE2b-256 |
7849e6eeb2764ad62222f580a87e1f6ca008f7606d9db55a24843fd0fcc460a6
|
File details
Details for the file qpyth-0.4.0-py3-none-any.whl.
File metadata
- Download URL: qpyth-0.4.0-py3-none-any.whl
- Upload date:
- Size: 88.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed4c46e65f875080c57d48508166cf13c7deb0ad12ad56fb2361f01c591dd015
|
|
| MD5 |
7829000bd8f0fbf47f7aeaf6bf22a873
|
|
| BLAKE2b-256 |
cd1aa3257d8913d317db3e0d635e10b000fad102f1c6c56817ea49d5950e6267
|