glibc/sysdeps/ieee754/dbl-64
Joseph Myers 70e2ba332f Do not include fenv_private.h in math_private.h.
Continuing the clean-up related to the catch-all math_private.h
header, this patch stops math_private.h from including fenv_private.h.
Instead, fenv_private.h is included directly from those users of
math_private.h that also used interfaces from fenv_private.h.  No
attempt is made to remove unused includes of math_private.h, but that
is a natural followup.

(However, since math_private.h sometimes defines optimized versions of
math.h interfaces or __* variants thereof, as well as defining its own
interfaces, I think it might make sense to get all those optimized
versions included from include/math.h, not requiring a separate header
at all, before eliminating unused math_private.h includes - that
avoids a file quietly becoming less-optimized if someone adds a call
to one of those interfaces without restoring a math_private.h include
to that file.)

There is still a pitfall that if code uses plain fe* and __fe*
interfaces, but only includes fenv.h and not fenv_private.h or (before
this patch) math_private.h, it will compile on platforms with
exceptions and rounding modes but not get the optimized versions (and
possibly not compile) on platforms without exception and rounding mode
support, so making it easy to break the build for such platforms
accidentally.

I think it would be most natural to move the inlines / macros for fe*
and __fe* in the case of no exceptions and rounding modes into
include/fenv.h, so that all code including fenv.h with _ISOMAC not
defined automatically gets them.  Then fenv_private.h would be purely
the header for the libc_fe*, SET_RESTORE_ROUND etc. internal
interfaces and the risk of breaking the build on other platforms than
the one you tested on because of a missing fenv_private.h include
would be much reduced (and there would be some unused fenv_private.h
includes to remove along with unused math_private.h includes).

Tested for x86_64 and x86, and tested with build-many-glibcs.py that
installed stripped shared libraries are unchanged by this patch.

	* sysdeps/generic/math_private.h: Do not include <fenv_private.h>.
	* math/fromfp.h: Include <fenv_private.h>.
	* math/math-narrow.h: Likewise.
	* math/s_cexp_template.c: Likewise.
	* math/s_csin_template.c: Likewise.
	* math/s_csinh_template.c: Likewise.
	* math/s_ctan_template.c: Likewise.
	* math/s_ctanh_template.c: Likewise.
	* math/s_iseqsig_template.c: Likewise.
	* math/w_acos_compat.c: Likewise.
	* math/w_acosf_compat.c: Likewise.
	* math/w_acosl_compat.c: Likewise.
	* math/w_asin_compat.c: Likewise.
	* math/w_asinf_compat.c: Likewise.
	* math/w_asinl_compat.c: Likewise.
	* math/w_ilogb_template.c: Likewise.
	* math/w_j0_compat.c: Likewise.
	* math/w_j0f_compat.c: Likewise.
	* math/w_j0l_compat.c: Likewise.
	* math/w_j1_compat.c: Likewise.
	* math/w_j1f_compat.c: Likewise.
	* math/w_j1l_compat.c: Likewise.
	* math/w_jn_compat.c: Likewise.
	* math/w_jnf_compat.c: Likewise.
	* math/w_llogb_template.c: Likewise.
	* math/w_log10_compat.c: Likewise.
	* math/w_log10f_compat.c: Likewise.
	* math/w_log10l_compat.c: Likewise.
	* math/w_log2_compat.c: Likewise.
	* math/w_log2f_compat.c: Likewise.
	* math/w_log2l_compat.c: Likewise.
	* math/w_log_compat.c: Likewise.
	* math/w_logf_compat.c: Likewise.
	* math/w_logl_compat.c: Likewise.
	* sysdeps/aarch64/fpu/feholdexcpt.c: Likewise.
	* sysdeps/aarch64/fpu/fesetround.c: Likewise.
	* sysdeps/aarch64/fpu/fgetexcptflg.c: Likewise.
	* sysdeps/aarch64/fpu/ftestexcept.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_atan2.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_exp.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_exp2.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_gamma_r.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_jn.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_pow.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_remainder.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise.
	* sysdeps/ieee754/dbl-64/gamma_product.c: Likewise.
	* sysdeps/ieee754/dbl-64/lgamma_neg.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_atan.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_fma.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_fmaf.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_llrint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_llround.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_lrint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_lround.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_nearbyint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_sincos.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c: Likewise.
	* sysdeps/ieee754/dbl-64/x2y2m1.c: Likewise.
	* sysdeps/ieee754/float128/float128_private.h: Likewise.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise.
	* sysdeps/ieee754/flt-32/e_j1f.c: Likewise.
	* sysdeps/ieee754/flt-32/e_jnf.c: Likewise.
	* sysdeps/ieee754/flt-32/lgamma_negf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_llrintf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_llroundf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_lrintf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_lroundf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_nearbyintf.c: Likewise.
	* sysdeps/ieee754/k_standardl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_expl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/gamma_productl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_nearbyintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/x2y2m1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c: Likewise.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-96/e_jnl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/gamma_productl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/lgamma_negl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_fma.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_fmal.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_llrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_llroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_lrintl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_lroundl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/x2y2m1l.c: Likewise.
	* sysdeps/powerpc/fpu/e_sqrt.c: Likewise.
	* sysdeps/powerpc/fpu/e_sqrtf.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_ceil.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_floor.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_nearbyint.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_round.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_roundeven.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_trunc.c: Likewise.
	* sysdeps/riscv/rvd/s_finite.c: Likewise.
	* sysdeps/riscv/rvd/s_fmax.c: Likewise.
	* sysdeps/riscv/rvd/s_fmin.c: Likewise.
	* sysdeps/riscv/rvd/s_fpclassify.c: Likewise.
	* sysdeps/riscv/rvd/s_isinf.c: Likewise.
	* sysdeps/riscv/rvd/s_isnan.c: Likewise.
	* sysdeps/riscv/rvd/s_issignaling.c: Likewise.
	* sysdeps/riscv/rvf/fegetround.c: Likewise.
	* sysdeps/riscv/rvf/feholdexcpt.c: Likewise.
	* sysdeps/riscv/rvf/fesetenv.c: Likewise.
	* sysdeps/riscv/rvf/fesetround.c: Likewise.
	* sysdeps/riscv/rvf/feupdateenv.c: Likewise.
	* sysdeps/riscv/rvf/fgetexcptflg.c: Likewise.
	* sysdeps/riscv/rvf/ftestexcept.c: Likewise.
	* sysdeps/riscv/rvf/s_ceilf.c: Likewise.
	* sysdeps/riscv/rvf/s_finitef.c: Likewise.
	* sysdeps/riscv/rvf/s_floorf.c: Likewise.
	* sysdeps/riscv/rvf/s_fmaxf.c: Likewise.
	* sysdeps/riscv/rvf/s_fminf.c: Likewise.
	* sysdeps/riscv/rvf/s_fpclassifyf.c: Likewise.
	* sysdeps/riscv/rvf/s_isinff.c: Likewise.
	* sysdeps/riscv/rvf/s_isnanf.c: Likewise.
	* sysdeps/riscv/rvf/s_issignalingf.c: Likewise.
	* sysdeps/riscv/rvf/s_nearbyintf.c: Likewise.
	* sysdeps/riscv/rvf/s_roundevenf.c: Likewise.
	* sysdeps/riscv/rvf/s_roundf.c: Likewise.
	* sysdeps/riscv/rvf/s_truncf.c: Likewise.
2018-09-03 21:09:04 +00:00
..
wordsize-64 Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
asincos.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atnat2.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atnat.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
branred.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
branred.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dla.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
doasin.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
doasin.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dosincos.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dosincos.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_acos.c
e_acosh.c Rename all __ieee754_sqrt(f/l) calls to sqrt(f/l) 2018-03-15 19:21:36 +00:00
e_asin.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
e_atan2.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_atanh.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
e_cosh.c Move math_narrow_eval to separate math-narrow-eval.h. 2018-05-09 00:15:10 +00:00
e_exp2.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_exp10.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_exp.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_fmod.c
e_gamma_r.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_hypot.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
e_ilogb.c
e_j0.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
e_j1.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
e_jn.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_lgamma_r.c Move math_narrow_eval to separate math-narrow-eval.h. 2018-05-09 00:15:10 +00:00
e_log2.c
e_log10.c
e_log.c Remove slow paths from log 2018-02-07 12:24:43 +00:00
e_pow.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_remainder.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
e_sinh.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
e_sqrt.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
eexp.tbl Improves __ieee754_exp(x) performance by 18-37% when |x| < 1.0397 2018-04-15 18:46:37 -04:00
gamma_product.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
gamma_productf.c Move math_narrow_eval to separate math-narrow-eval.h. 2018-05-09 00:15:10 +00:00
k_rem_pio2.c Fix i686-linux-gnu build with GCC mainline. 2018-05-22 16:55:04 +00:00
k_tan.c
lgamma_neg.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
lgamma_product.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile
MathLib.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpa-arch.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpa.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpa.h Remove mplog and mpexp 2018-02-15 12:41:05 +00:00
mpatan2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpatan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpatan.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpsqrt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpsqrt.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mptan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mydefs.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
powtwo.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
root.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_asinh.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_atan.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_cbrt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_ceil.c
s_copysign.c
s_cos.c
s_erf.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_expm1.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_f32xaddf64.c Add narrowing add functions. 2018-02-10 02:08:43 +00:00
s_f32xdivf64.c Add narrowing divide functions. 2018-05-17 00:40:52 +00:00
s_f32xmulf64.c Add narrowing multiply functions. 2018-05-16 00:05:28 +00:00
s_f32xsubf64.c Add narrowing subtract functions. 2018-03-20 00:34:52 +00:00
s_fabs.c
s_fadd.c Add narrowing add functions. 2018-02-10 02:08:43 +00:00
s_fdiv.c Add narrowing divide functions. 2018-05-17 00:40:52 +00:00
s_finite.c Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
s_floor.c
s_fma.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_fmaf.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_fmul.c Add narrowing multiply functions. 2018-05-16 00:05:28 +00:00
s_fpclassify.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_frexp.c
s_fromfp_main.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fromfp.c
s_fromfpx.c
s_fsub.c Add narrowing subtract functions. 2018-03-20 00:34:52 +00:00
s_getpayload.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_isinf.c Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
s_isnan.c Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
s_issignaling.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_llrint.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_llround.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_log1p.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_logb.c
s_lrint.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_lround.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_modf.c
s_nearbyint.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_nexttoward.c
s_nextup.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_remquo.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_rint.c
s_round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_roundeven.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_scalbln.c
s_scalbn.c
s_setpayload_main.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_setpayload.c
s_setpayloadsig.c
s_signbit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_sin.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_sincos.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_tan.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
s_tanh.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_totalorder.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_totalordermag.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_trunc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_ufromfp.c
s_ufromfpx.c
sincos32.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sincos32.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sincostab.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
t_exp2.h
t_exp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
uasncs.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
uatan.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
uexp.h Remove slow paths from exp 2018-02-12 11:33:33 +00:00
uexp.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ulog.h Remove slow paths from log 2018-02-07 12:24:43 +00:00
ulog.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
upow.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
upow.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
urem.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
usncs.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utan.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
utan.tbl Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
x2y2m1.c Do not include fenv_private.h in math_private.h. 2018-09-03 21:09:04 +00:00
x2y2m1f.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00