|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/_compat.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/_compat.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/_compat.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -138,9 +138,7 @@ def proper_repr(value: Any) -> str:
|
|
Bernhard M. Wiedemann |
4db387 |
return Printer().doprint(value)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
if isinstance(value, np.ndarray):
|
|
Bernhard M. Wiedemann |
4db387 |
- if np.issubdtype(value.dtype, np.datetime64):
|
|
Bernhard M. Wiedemann |
4db387 |
- return f'np.array({value.tolist()!r}, dtype=np.{value.dtype!r})'
|
|
Bernhard M. Wiedemann |
4db387 |
- return f'np.array({value.tolist()!r}, dtype=np.{value.dtype})'
|
|
Bernhard M. Wiedemann |
4db387 |
+ return f'np.array({value.tolist()!r}, dtype=np.{value.dtype!r})'
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
if isinstance(value, pd.MultiIndex):
|
|
Bernhard M. Wiedemann |
4db387 |
return f'pd.MultiIndex.from_tuples({repr(list(value))}, names={repr(list(value.names))})'
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/_compat_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/_compat_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/_compat_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -110,7 +110,7 @@ def test_dataclass_repr_numpy():
|
|
Bernhard M. Wiedemann |
4db387 |
return dataclass_repr(self, namespace='cirq.testing')
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
tc = TestClass2(np.ones(3))
|
|
Bernhard M. Wiedemann |
4db387 |
- assert repr(tc) == "cirq.testing.TestClass2(x=np.array([1.0, 1.0, 1.0], dtype=np.float64))"
|
|
Bernhard M. Wiedemann |
4db387 |
+ assert repr(tc) == "cirq.testing.TestClass2(x=np.array([1.0, 1.0, 1.0], dtype=np.dtype('float64')))"
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
def test_proper_eq():
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/linalg/decompositions_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/linalg/decompositions_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/linalg/decompositions_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -367,12 +367,12 @@ def test_kak_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
cirq.KakDecomposition(
|
|
Bernhard M. Wiedemann |
4db387 |
interaction_coefficients=(0.5, 0.25, 0),
|
|
Bernhard M. Wiedemann |
4db387 |
single_qubit_operations_before=(
|
|
Bernhard M. Wiedemann |
4db387 |
- np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.complex128),
|
|
Bernhard M. Wiedemann |
4db387 |
- np.array([[0j, -1j], [1j, 0j]], dtype=np.complex128),
|
|
Bernhard M. Wiedemann |
4db387 |
+ np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.dtype('complex128')),
|
|
Bernhard M. Wiedemann |
4db387 |
+ np.array([[0j, -1j], [1j, 0j]], dtype=np.dtype('complex128')),
|
|
Bernhard M. Wiedemann |
4db387 |
),
|
|
Bernhard M. Wiedemann |
4db387 |
single_qubit_operations_after=(
|
|
Bernhard M. Wiedemann |
4db387 |
- np.array([[1.0, 0.0], [0.0, 1.0]], dtype=np.float64),
|
|
Bernhard M. Wiedemann |
4db387 |
- np.array([[(1+0j), 0j], [0j, (-1+0j)]], dtype=np.complex128),
|
|
Bernhard M. Wiedemann |
4db387 |
+ np.array([[1.0, 0.0], [0.0, 1.0]], dtype=np.dtype('float64')),
|
|
Bernhard M. Wiedemann |
4db387 |
+ np.array([[(1+0j), 0j], [0j, (-1+0j)]], dtype=np.dtype('complex128')),
|
|
Bernhard M. Wiedemann |
4db387 |
),
|
|
Bernhard M. Wiedemann |
4db387 |
global_phase=1)
|
|
Bernhard M. Wiedemann |
4db387 |
""".strip()
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/ops/kraus_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/ops/kraus_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/ops/kraus_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -105,8 +105,8 @@ def test_kraus_channel_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
repr(x_meas)
|
|
Bernhard M. Wiedemann |
4db387 |
== """\
|
|
Bernhard M. Wiedemann |
4db387 |
cirq.KrausChannel(kraus_ops=[\
|
|
Bernhard M. Wiedemann |
4db387 |
-np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), \
|
|
Bernhard M. Wiedemann |
4db387 |
-np.array([[(0.5+0j), (-0.5+0j)], [(-0.5+0j), (0.5+0j)]], dtype=np.complex64)], \
|
|
Bernhard M. Wiedemann |
4db387 |
+np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), \
|
|
Bernhard M. Wiedemann |
4db387 |
+np.array([[(0.5+0j), (-0.5+0j)], [(-0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64'))], \
|
|
Bernhard M. Wiedemann |
4db387 |
key='x_meas')"""
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/ops/measurement_gate_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/ops/measurement_gate_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/ops/measurement_gate_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -317,23 +317,23 @@ def test_op_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
b,
|
|
Bernhard M. Wiedemann |
4db387 |
key='out',
|
|
Bernhard M. Wiedemann |
4db387 |
invert_mask=(False, True),
|
|
Bernhard M. Wiedemann |
4db387 |
- confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.int64)},
|
|
Bernhard M. Wiedemann |
4db387 |
+ confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))},
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
) == (
|
|
Bernhard M. Wiedemann |
4db387 |
"cirq.measure(cirq.LineQubit(0), cirq.LineQubit(1), "
|
|
Bernhard M. Wiedemann |
4db387 |
"key=cirq.MeasurementKey(name='out'), "
|
|
Bernhard M. Wiedemann |
4db387 |
"invert_mask=(False, True), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.int64)})"
|
|
Bernhard M. Wiedemann |
4db387 |
+ "confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))})"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
def test_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
gate = cirq.MeasurementGate(
|
|
Bernhard M. Wiedemann |
4db387 |
- 3, 'a', (True, False), (1, 2, 3), {(2,): np.array([[0, 1], [1, 0]], dtype=np.int64)}
|
|
Bernhard M. Wiedemann |
4db387 |
+ 3, 'a', (True, False), (1, 2, 3), {(2,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))}
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
assert repr(gate) == (
|
|
Bernhard M. Wiedemann |
4db387 |
"cirq.MeasurementGate(3, cirq.MeasurementKey(name='a'), (True, False), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "qid_shape=(1, 2, 3), confusion_map={(2,): np.array([[0, 1], [1, 0]], dtype=np.int64)})"
|
|
Bernhard M. Wiedemann |
4db387 |
+ "qid_shape=(1, 2, 3), confusion_map={(2,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))})"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/ops/mixed_unitary_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/ops/mixed_unitary_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/ops/mixed_unitary_channel_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -95,16 +95,16 @@ def test_matrix_mixture_str():
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
def test_matrix_mixture_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
mix = [
|
|
Bernhard M. Wiedemann |
4db387 |
- (0.5, np.array([[1, 0], [0, 1]], dtype=np.complex64)),
|
|
Bernhard M. Wiedemann |
4db387 |
- (0.5, np.array([[0, 1], [1, 0]], dtype=np.complex64)),
|
|
Bernhard M. Wiedemann |
4db387 |
+ (0.5, np.array([[1, 0], [0, 1]], dtype=np.dtype('complex64'))),
|
|
Bernhard M. Wiedemann |
4db387 |
+ (0.5, np.array([[0, 1], [1, 0]], dtype=np.dtype('complex64'))),
|
|
Bernhard M. Wiedemann |
4db387 |
]
|
|
Bernhard M. Wiedemann |
4db387 |
half_flip = cirq.MixedUnitaryChannel(mix, key='flip')
|
|
Bernhard M. Wiedemann |
4db387 |
assert (
|
|
Bernhard M. Wiedemann |
4db387 |
repr(half_flip)
|
|
Bernhard M. Wiedemann |
4db387 |
== """\
|
|
Bernhard M. Wiedemann |
4db387 |
cirq.MixedUnitaryChannel(mixture=[\
|
|
Bernhard M. Wiedemann |
4db387 |
-(0.5, np.array([[(1+0j), 0j], [0j, (1+0j)]], dtype=np.complex64)), \
|
|
Bernhard M. Wiedemann |
4db387 |
-(0.5, np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.complex64))], \
|
|
Bernhard M. Wiedemann |
4db387 |
+(0.5, np.array([[(1+0j), 0j], [0j, (1+0j)]], dtype=np.dtype('complex64'))), \
|
|
Bernhard M. Wiedemann |
4db387 |
+(0.5, np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.dtype('complex64')))], \
|
|
Bernhard M. Wiedemann |
4db387 |
key='flip')"""
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/sim/density_matrix_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -951,9 +951,9 @@ def test_density_matrix_step_result_repr
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
== "cirq.DensityMatrixStepResult(sim_state=cirq.DensityMatrixSimulationState("
|
|
Bernhard M. Wiedemann |
4db387 |
- "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), "
|
|
Bernhard M. Wiedemann |
4db387 |
"qubits=(cirq.LineQubit(0),), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.complex64)"
|
|
Bernhard M. Wiedemann |
4db387 |
+ "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.dtype('complex64'))"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -1034,9 +1034,9 @@ def test_density_matrix_trial_result_rep
|
|
Bernhard M. Wiedemann |
4db387 |
expected_repr = (
|
|
Bernhard M. Wiedemann |
4db387 |
"cirq.DensityMatrixTrialResult("
|
|
Bernhard M. Wiedemann |
4db387 |
"params=cirq.ParamResolver({'s': 1}), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "measurements={'m': np.array([[1]], dtype=np.int32)}, "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "measurements={'m': np.array([[1]], dtype=np.dtype('int32'))}, "
|
|
Bernhard M. Wiedemann |
4db387 |
"final_simulator_state=cirq.DensityMatrixSimulationState("
|
|
Bernhard M. Wiedemann |
4db387 |
- "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), "
|
|
Bernhard M. Wiedemann |
4db387 |
"qubits=(cirq.LineQubit(0),), "
|
|
Bernhard M. Wiedemann |
4db387 |
"classical_data=cirq.ClassicalDataDictionaryStore()))"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/sim/sparse_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -775,9 +775,9 @@ def test_sparse_simulator_repr():
|
|
Bernhard M. Wiedemann |
4db387 |
# No equality so cannot use cirq.testing.assert_equivalent_repr
|
|
Bernhard M. Wiedemann |
4db387 |
assert (
|
|
Bernhard M. Wiedemann |
4db387 |
repr(step) == "cirq.SparseSimulatorStep(sim_state=cirq.StateVectorSimulationState("
|
|
Bernhard M. Wiedemann |
4db387 |
- "initial_state=np.array([[0j, (1+0j)], [0j, 0j]], dtype=np.complex64), "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "initial_state=np.array([[0j, (1+0j)], [0j, 0j]], dtype=np.dtype('complex64')), "
|
|
Bernhard M. Wiedemann |
4db387 |
"qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.complex64)"
|
|
Bernhard M. Wiedemann |
4db387 |
+ "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.dtype('complex64'))"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/sim/sparse_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -282,5 +282,5 @@ class SparseSimulatorStep(
|
|
Bernhard M. Wiedemann |
4db387 |
# Dtype doesn't have a good repr, so we work around by invoking __name__.
|
|
Bernhard M. Wiedemann |
4db387 |
return (
|
|
Bernhard M. Wiedemann |
4db387 |
f'cirq.SparseSimulatorStep(sim_state={self._sim_state!r},'
|
|
Bernhard M. Wiedemann |
4db387 |
- f' dtype=np.{self._dtype.__name__})'
|
|
Bernhard M. Wiedemann |
4db387 |
+ f' dtype=np.{np.dtype(self._dtype)!r})'
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/sim/state_vector_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/sim/state_vector_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/sim/state_vector_simulator_test.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -35,9 +35,9 @@ def test_state_vector_trial_result_repr(
|
|
Bernhard M. Wiedemann |
4db387 |
expected_repr = (
|
|
Bernhard M. Wiedemann |
4db387 |
"cirq.StateVectorTrialResult("
|
|
Bernhard M. Wiedemann |
4db387 |
"params=cirq.ParamResolver({'s': 1}), "
|
|
Bernhard M. Wiedemann |
4db387 |
- "measurements={'m': np.array([[1]], dtype=np.int32)}, "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "measurements={'m': np.array([[1]], dtype=np.dtype('int32'))}, "
|
|
Bernhard M. Wiedemann |
4db387 |
"final_simulator_state=cirq.StateVectorSimulationState("
|
|
Bernhard M. Wiedemann |
4db387 |
- "initial_state=np.array([0j, (1+0j)], dtype=np.complex64), "
|
|
Bernhard M. Wiedemann |
4db387 |
+ "initial_state=np.array([0j, (1+0j)], dtype=np.dtype('complex64')), "
|
|
Bernhard M. Wiedemann |
4db387 |
"qubits=(cirq.NamedQubit('a'),), "
|
|
Bernhard M. Wiedemann |
4db387 |
"classical_data=cirq.ClassicalDataDictionaryStore()))"
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
Index: Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
===================================================================
|
|
Bernhard M. Wiedemann |
4db387 |
--- Cirq-1.1.0.orig/cirq-core/cirq/sim/density_matrix_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
+++ Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator.py
|
|
Bernhard M. Wiedemann |
4db387 |
@@ -303,7 +303,7 @@ class DensityMatrixStepResult(simulator_
|
|
Bernhard M. Wiedemann |
4db387 |
# Dtype doesn't have a good repr, so we work around by invoking __name__.
|
|
Bernhard M. Wiedemann |
4db387 |
return (
|
|
Bernhard M. Wiedemann |
4db387 |
f'cirq.DensityMatrixStepResult(sim_state={self._sim_state!r},'
|
|
Bernhard M. Wiedemann |
4db387 |
- f' dtype=np.{self._dtype.__name__})'
|
|
Bernhard M. Wiedemann |
4db387 |
+ f' dtype=np.{np.dtype(self._dtype)!r})'
|
|
Bernhard M. Wiedemann |
4db387 |
)
|
|
Bernhard M. Wiedemann |
4db387 |
|
|
Bernhard M. Wiedemann |
4db387 |
|