mirror of
https://gitlab.com/scemama/qp_plugins_scemama.git
synced 2025-04-18 06:20:11 +02:00
Improving trexio export
This commit is contained in:
parent
1df54bc2fe
commit
0ea3df3502
@ -1,2 +1,6 @@
|
|||||||
ezfio_files
|
ezfio_files
|
||||||
hartree_fock
|
determinants
|
||||||
|
mo_one_e_ints
|
||||||
|
mo_two_e_ints
|
||||||
|
ao_two_e_ints
|
||||||
|
ao_one_e_ints
|
||||||
|
@ -21,7 +21,11 @@ program export_trexio
|
|||||||
stop -1
|
stop -1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! Nuclei
|
! ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
! Nuclei
|
||||||
|
! ------
|
||||||
|
|
||||||
rc = trexio_write_nucleus_num(f, nucl_num)
|
rc = trexio_write_nucleus_num(f, nucl_num)
|
||||||
call check_success(rc)
|
call check_success(rc)
|
||||||
|
|
||||||
@ -38,7 +42,10 @@ program export_trexio
|
|||||||
rc = trexio_write_electron_dn_num(f, elec_beta_num)
|
rc = trexio_write_electron_dn_num(f, elec_beta_num)
|
||||||
call check_success(rc)
|
call check_success(rc)
|
||||||
|
|
||||||
! Basis
|
|
||||||
|
! Basis
|
||||||
|
! -----
|
||||||
|
|
||||||
! rc = trexio_write_basis_type(f, 'Gaussian')
|
! rc = trexio_write_basis_type(f, 'Gaussian')
|
||||||
! call check_success(rc)
|
! call check_success(rc)
|
||||||
|
|
||||||
@ -46,6 +53,89 @@ program export_trexio
|
|||||||
call check_success(rc)
|
call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! Atomic orbitals
|
||||||
|
! ---------------
|
||||||
|
|
||||||
|
rc = trexio_write_ao_num(f, ao_num)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_ao_cartesian(f, 1)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! One-e AO integrals
|
||||||
|
! ------------------
|
||||||
|
|
||||||
|
rc = trexio_write_ao_1e_int_overlap(f,ao_overlap)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_ao_1e_int_kinetic(f,ao_kinetic_integrals)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_ao_1e_int_potential_n_e(f,ao_integrals_n_e)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
if (do_pseudo) then
|
||||||
|
rc = trexio_write_ao_1e_int_ecp_local(f,ao_pseudo_integrals_local)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_ao_1e_int_ecp_non_local(f,ao_pseudo_integrals_non_local)
|
||||||
|
call check_success(rc)
|
||||||
|
endif
|
||||||
|
|
||||||
|
rc = trexio_write_ao_1e_int_core_hamiltonian(f,ao_one_e_integrals)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! Molecular orbitals
|
||||||
|
! ------------------
|
||||||
|
|
||||||
|
! rc = trexio_write_mo_type(f, mo_label)
|
||||||
|
! call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_mo_num(f, mo_num)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_mo_coef(f, mo_coef)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! One-e MO integrals
|
||||||
|
! ------------------
|
||||||
|
|
||||||
|
rc = trexio_write_mo_1e_int_kinetic(f,mo_kinetic_integrals)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_mo_1e_int_potential_n_e(f,mo_integrals_n_e)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
if (do_pseudo) then
|
||||||
|
rc = trexio_write_mo_1e_int_ecp_local(f,mo_pseudo_integrals_local)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
rc = trexio_write_mo_1e_int_ecp_non_local(f,mo_pseudo_integrals_non_local)
|
||||||
|
call check_success(rc)
|
||||||
|
endif
|
||||||
|
|
||||||
|
rc = trexio_write_mo_1e_int_core_hamiltonian(f,one_e_dm_mo)
|
||||||
|
call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! RDM
|
||||||
|
! ----
|
||||||
|
|
||||||
|
! rc = trexio_write_rdm_one_e(f,one_e_dm_mo)
|
||||||
|
! call check_success(rc)
|
||||||
|
!
|
||||||
|
! rc = trexio_write_rdm_one_e_up(f,one_e_dm_mo_alpha_average)
|
||||||
|
! call check_success(rc)
|
||||||
|
!
|
||||||
|
! rc = trexio_write_rdm_one_e_dn(f,one_e_dm_mo_beta_average)
|
||||||
|
! call check_success(rc)
|
||||||
|
|
||||||
|
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
|
||||||
rc = trexio_close(f)
|
rc = trexio_close(f)
|
||||||
call check_success(rc)
|
call check_success(rc)
|
||||||
|
|
||||||
@ -59,7 +149,7 @@ subroutine check_success(rc)
|
|||||||
character*(128) :: str
|
character*(128) :: str
|
||||||
if (rc /= TREXIO_SUCCESS) then
|
if (rc /= TREXIO_SUCCESS) then
|
||||||
call trexio_string_of_error(rc,str)
|
call trexio_string_of_error(rc,str)
|
||||||
print *, str
|
print *, 'TREXIO Error: ' //trim(str)
|
||||||
stop -1
|
stop -1
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
@ -24,6 +24,15 @@ integer(trexio_exit_code), parameter :: TREXIO_INVALID_ID = 9
|
|||||||
integer(trexio_exit_code), parameter :: TREXIO_ALLOCATION_FAILED = 10
|
integer(trexio_exit_code), parameter :: TREXIO_ALLOCATION_FAILED = 10
|
||||||
integer(trexio_exit_code), parameter :: TREXIO_HAS_NOT = 11
|
integer(trexio_exit_code), parameter :: TREXIO_HAS_NOT = 11
|
||||||
integer(trexio_exit_code), parameter :: TREXIO_INVALID_NUM = 12
|
integer(trexio_exit_code), parameter :: TREXIO_INVALID_NUM = 12
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_NUM_ALREADY_EXISTS = 13
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_OPEN_ERROR = 14
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_LOCK_ERROR = 15
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_UNLOCK_ERROR = 16
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_FILE_ERROR = 17
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_GROUP_READ_ERROR = 18
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_GROUP_WRITE_ERROR = 19
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_ELEM_READ_ERROR = 20
|
||||||
|
integer(trexio_exit_code), parameter :: TREXIO_ELEM_WRITE_ERROR = 21
|
||||||
|
|
||||||
interface
|
interface
|
||||||
subroutine trexio_string_of_error (error, string) bind(C, name='trexio_string_of_error_f')
|
subroutine trexio_string_of_error (error, string) bind(C, name='trexio_string_of_error_f')
|
||||||
@ -188,10 +197,10 @@ interface
|
|||||||
end function trexio_has_ao_1e_int_kinetic
|
end function trexio_has_ao_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_has_ao_1e_int_potential (trex_file) bind(C)
|
integer function trexio_has_ao_1e_int_potential_n_e (trex_file) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
end function trexio_has_ao_1e_int_potential
|
end function trexio_has_ao_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_has_ao_1e_int_ecp_local (trex_file) bind(C)
|
integer function trexio_has_ao_1e_int_ecp_local (trex_file) bind(C)
|
||||||
@ -236,10 +245,10 @@ interface
|
|||||||
end function trexio_has_mo_1e_int_kinetic
|
end function trexio_has_mo_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_has_mo_1e_int_potential (trex_file) bind(C)
|
integer function trexio_has_mo_1e_int_potential_n_e (trex_file) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
end function trexio_has_mo_1e_int_potential
|
end function trexio_has_mo_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_has_mo_1e_int_ecp_local (trex_file) bind(C)
|
integer function trexio_has_mo_1e_int_ecp_local (trex_file) bind(C)
|
||||||
@ -487,11 +496,11 @@ interface
|
|||||||
end function trexio_read_ao_1e_int_kinetic_32
|
end function trexio_read_ao_1e_int_kinetic_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_potential_32 (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_potential_n_e_32 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(4), intent(out) :: dset(*)
|
real(4), intent(out) :: dset(*)
|
||||||
end function trexio_read_ao_1e_int_potential_32
|
end function trexio_read_ao_1e_int_potential_n_e_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
||||||
@ -543,11 +552,11 @@ interface
|
|||||||
end function trexio_read_mo_1e_int_kinetic_32
|
end function trexio_read_mo_1e_int_kinetic_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_potential_32 (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_potential_n_e_32 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(4), intent(out) :: dset(*)
|
real(4), intent(out) :: dset(*)
|
||||||
end function trexio_read_mo_1e_int_potential_32
|
end function trexio_read_mo_1e_int_potential_n_e_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
||||||
@ -739,11 +748,11 @@ interface
|
|||||||
end function trexio_read_ao_1e_int_kinetic_64
|
end function trexio_read_ao_1e_int_kinetic_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_potential_64 (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_potential_n_e_64 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(out) :: dset(*)
|
real(8), intent(out) :: dset(*)
|
||||||
end function trexio_read_ao_1e_int_potential_64
|
end function trexio_read_ao_1e_int_potential_n_e_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
||||||
@ -795,11 +804,11 @@ interface
|
|||||||
end function trexio_read_mo_1e_int_kinetic_64
|
end function trexio_read_mo_1e_int_kinetic_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_potential_64 (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_potential_n_e_64 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(out) :: dset(*)
|
real(8), intent(out) :: dset(*)
|
||||||
end function trexio_read_mo_1e_int_potential_64
|
end function trexio_read_mo_1e_int_potential_n_e_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
||||||
@ -991,11 +1000,11 @@ interface
|
|||||||
end function trexio_read_ao_1e_int_kinetic
|
end function trexio_read_ao_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_potential (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_potential_n_e (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(out) :: dset(*)
|
real(8), intent(out) :: dset(*)
|
||||||
end function trexio_read_ao_1e_int_potential
|
end function trexio_read_ao_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_ao_1e_int_ecp_local (trex_file, dset) bind(C)
|
integer function trexio_read_ao_1e_int_ecp_local (trex_file, dset) bind(C)
|
||||||
@ -1047,11 +1056,11 @@ interface
|
|||||||
end function trexio_read_mo_1e_int_kinetic
|
end function trexio_read_mo_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_potential (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_potential_n_e (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(out) :: dset(*)
|
real(8), intent(out) :: dset(*)
|
||||||
end function trexio_read_mo_1e_int_potential
|
end function trexio_read_mo_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_read_mo_1e_int_ecp_local (trex_file, dset) bind(C)
|
integer function trexio_read_mo_1e_int_ecp_local (trex_file, dset) bind(C)
|
||||||
@ -1453,11 +1462,11 @@ interface
|
|||||||
end function trexio_write_ao_1e_int_kinetic_32
|
end function trexio_write_ao_1e_int_kinetic_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_potential_32 (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_potential_n_e_32 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(4), intent(in) :: dset(*)
|
real(4), intent(in) :: dset(*)
|
||||||
end function trexio_write_ao_1e_int_potential_32
|
end function trexio_write_ao_1e_int_potential_n_e_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
||||||
@ -1509,11 +1518,11 @@ interface
|
|||||||
end function trexio_write_mo_1e_int_kinetic_32
|
end function trexio_write_mo_1e_int_kinetic_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_potential_32 (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_potential_n_e_32 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(4), intent(in) :: dset(*)
|
real(4), intent(in) :: dset(*)
|
||||||
end function trexio_write_mo_1e_int_potential_32
|
end function trexio_write_mo_1e_int_potential_n_e_32
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_ecp_local_32 (trex_file, dset) bind(C)
|
||||||
@ -1705,11 +1714,11 @@ interface
|
|||||||
end function trexio_write_ao_1e_int_kinetic_64
|
end function trexio_write_ao_1e_int_kinetic_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_potential_64 (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_potential_n_e_64 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(in) :: dset(*)
|
real(8), intent(in) :: dset(*)
|
||||||
end function trexio_write_ao_1e_int_potential_64
|
end function trexio_write_ao_1e_int_potential_n_e_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
||||||
@ -1761,11 +1770,11 @@ interface
|
|||||||
end function trexio_write_mo_1e_int_kinetic_64
|
end function trexio_write_mo_1e_int_kinetic_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_potential_64 (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_potential_n_e_64 (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(in) :: dset(*)
|
real(8), intent(in) :: dset(*)
|
||||||
end function trexio_write_mo_1e_int_potential_64
|
end function trexio_write_mo_1e_int_potential_n_e_64
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_ecp_local_64 (trex_file, dset) bind(C)
|
||||||
@ -1957,11 +1966,11 @@ interface
|
|||||||
end function trexio_write_ao_1e_int_kinetic
|
end function trexio_write_ao_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_potential (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_potential_n_e (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(in) :: dset(*)
|
real(8), intent(in) :: dset(*)
|
||||||
end function trexio_write_ao_1e_int_potential
|
end function trexio_write_ao_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_ao_1e_int_ecp_local (trex_file, dset) bind(C)
|
integer function trexio_write_ao_1e_int_ecp_local (trex_file, dset) bind(C)
|
||||||
@ -2013,11 +2022,11 @@ interface
|
|||||||
end function trexio_write_mo_1e_int_kinetic
|
end function trexio_write_mo_1e_int_kinetic
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_potential (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_potential_n_e (trex_file, dset) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
integer(8), intent(in), value :: trex_file
|
integer(8), intent(in), value :: trex_file
|
||||||
real(8), intent(in) :: dset(*)
|
real(8), intent(in) :: dset(*)
|
||||||
end function trexio_write_mo_1e_int_potential
|
end function trexio_write_mo_1e_int_potential_n_e
|
||||||
end interface
|
end interface
|
||||||
interface
|
interface
|
||||||
integer function trexio_write_mo_1e_int_ecp_local (trex_file, dset) bind(C)
|
integer function trexio_write_mo_1e_int_ecp_local (trex_file, dset) bind(C)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user