mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
(drivers_joypad) Cleanup axis functions
This commit is contained in:
parent
ff01ed8cc3
commit
897a9de5be
@ -75,22 +75,20 @@ static int16_t android_joypad_axis_state(
|
||||
struct android_app *android_app,
|
||||
unsigned port, uint32_t joyaxis)
|
||||
{
|
||||
int val = 0;
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < MAX_AXIS)
|
||||
{
|
||||
val = android_app->analog_state[port][AXIS_NEG_GET(joyaxis)];
|
||||
if (val > 0)
|
||||
val = 0;
|
||||
int val = android_app->analog_state[port][AXIS_NEG_GET(joyaxis)];
|
||||
if (val < 0)
|
||||
return val;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < MAX_AXIS)
|
||||
{
|
||||
val = android_app->analog_state[port][AXIS_POS_GET(joyaxis)];
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
int val = android_app->analog_state[port][AXIS_POS_GET(joyaxis)];
|
||||
if (val > 0)
|
||||
return val;
|
||||
}
|
||||
|
||||
return val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int16_t android_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||
|
@ -72,51 +72,52 @@ static void ctr_joypad_get_buttons(unsigned port_num, input_bits_t *state)
|
||||
BIT256_CLEAR_ALL_PTR(state);
|
||||
}
|
||||
|
||||
static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||
static int16_t ctr_joypad_axis_state(unsigned port_num, uint32_t joyaxis)
|
||||
{
|
||||
int val = 0;
|
||||
int axis = -1;
|
||||
bool is_neg = false;
|
||||
bool is_pos = false;
|
||||
|
||||
if (port_num >= DEFAULT_MAX_PADS)
|
||||
return 0;
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = analog_state[port_num][0][0];
|
||||
break;
|
||||
case 1:
|
||||
val = analog_state[port_num][0][1];
|
||||
val = analog_state[port_num][0][axis];
|
||||
break;
|
||||
case 2:
|
||||
val = analog_state[port_num][1][0];
|
||||
break;
|
||||
case 3:
|
||||
val = analog_state[port_num][1][1];
|
||||
val = analog_state[port_num][1][axis - 2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||
{
|
||||
if (port_num >= DEFAULT_MAX_PADS)
|
||||
return 0;
|
||||
return ctr_joypad_axis_state(port_num, joyaxis);
|
||||
}
|
||||
|
||||
static int16_t ctr_joypad_state(
|
||||
rarch_joypad_info_t *joypad_info,
|
||||
const struct retro_keybind *binds,
|
||||
@ -140,7 +141,7 @@ static int16_t ctr_joypad_state(
|
||||
(pad_state & (1 << (uint16_t)joykey)))
|
||||
ret |= ( 1 << i);
|
||||
else if (joyaxis != AXIS_NONE &&
|
||||
((float)abs(ctr_joypad_axis(port, joyaxis))
|
||||
((float)abs(ctr_joypad_axis_state(port, joyaxis))
|
||||
/ 0x8000) > joypad_info->axis_threshold)
|
||||
ret |= (1 << i);
|
||||
}
|
||||
|
@ -522,14 +522,16 @@ static int16_t dinput_joypad_axis_state(
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) <= 7)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) <= 7)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
@ -552,10 +554,8 @@ static int16_t dinput_joypad_axis_state(
|
||||
val = pad->joy_state.lRz;
|
||||
break;
|
||||
case 6:
|
||||
val = pad->joy_state.rglSlider[0];
|
||||
break;
|
||||
case 7:
|
||||
val = pad->joy_state.rglSlider[1];
|
||||
val = pad->joy_state.rglSlider[axis - 6];
|
||||
break;
|
||||
}
|
||||
|
||||
@ -563,7 +563,6 @@ static int16_t dinput_joypad_axis_state(
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
return 0;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -329,22 +329,20 @@ static int16_t linuxraw_joypad_axis_state(
|
||||
const struct linuxraw_joypad *pad,
|
||||
unsigned port, uint32_t joyaxis)
|
||||
{
|
||||
int16_t val = 0;
|
||||
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
||||
{
|
||||
val = pad->axes[AXIS_NEG_GET(joyaxis)];
|
||||
if (val > 0)
|
||||
val = 0;
|
||||
/* Kernel returns values in range [-0x7fff, 0x7fff]. */
|
||||
int16_t val = pad->axes[AXIS_NEG_GET(joyaxis)];
|
||||
if (val < 0)
|
||||
return val;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < NUM_AXES)
|
||||
{
|
||||
val = pad->axes[AXIS_POS_GET(joyaxis)];
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
int16_t val = pad->axes[AXIS_POS_GET(joyaxis)];
|
||||
if (val > 0)
|
||||
return val;
|
||||
}
|
||||
|
||||
return val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int16_t linuxraw_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||
|
@ -370,28 +370,15 @@ static int16_t apple_gamecontroller_joypad_axis(
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = mfi_axes[port][0];
|
||||
break;
|
||||
case 1:
|
||||
val = mfi_axes[port][1];
|
||||
break;
|
||||
case 2:
|
||||
val = mfi_axes[port][2];
|
||||
break;
|
||||
case 3:
|
||||
val = mfi_axes[port][3];
|
||||
break;
|
||||
}
|
||||
|
||||
if (axis >= 0 && axis < 4)
|
||||
val = mfi_axes[port][axis];
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -100,36 +100,33 @@ static int16_t ps2_joypad_axis_state(unsigned port_num, uint32_t joyaxis)
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = analog_state[port_num][0][0];
|
||||
break;
|
||||
case 1:
|
||||
val = analog_state[port_num][0][1];
|
||||
val = analog_state[port_num][0][axis];
|
||||
break;
|
||||
case 2:
|
||||
val = analog_state[port_num][1][0];
|
||||
break;
|
||||
case 3:
|
||||
val = analog_state[port_num][1][1];
|
||||
val = analog_state[port_num][1][axis-2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -87,36 +87,33 @@ static int16_t ps3_joypad_axis_state(unsigned port, uint32_t joyaxis)
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = analog_state[port][0][0];
|
||||
break;
|
||||
case 1:
|
||||
val = analog_state[port][0][1];
|
||||
val = analog_state[port][0][axis];
|
||||
break;
|
||||
case 2:
|
||||
val = analog_state[port][1][0];
|
||||
break;
|
||||
case 3:
|
||||
val = analog_state[port][1][1];
|
||||
val = analog_state[port][1][axis-2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -140,36 +140,33 @@ static int16_t psp_joypad_axis_state(unsigned port, uint32_t joyaxis)
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = analog_state[port][0][0];
|
||||
break;
|
||||
case 1:
|
||||
val = analog_state[port][0][1];
|
||||
val = analog_state[port][0][axis];
|
||||
break;
|
||||
case 2:
|
||||
val = analog_state[port][1][0];
|
||||
break;
|
||||
case 3:
|
||||
val = analog_state[port][1][1];
|
||||
val = analog_state[port][1][axis - 2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -66,38 +66,34 @@ static int16_t qnx_joypad_axis_state(
|
||||
int axis = -1;
|
||||
bool is_neg = false;
|
||||
bool is_pos = false;
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = controller->analog0[0];
|
||||
break;
|
||||
case 1:
|
||||
val = controller->analog0[1];
|
||||
val = controller->analog0[axis];
|
||||
break;
|
||||
case 2:
|
||||
val = controller->analog1[0];
|
||||
break;
|
||||
case 3:
|
||||
val = controller->analog1[1];
|
||||
val = controller->analog1[axis-2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -138,21 +138,21 @@ static int16_t rwebpad_joypad_axis_state(
|
||||
EmscriptenGamepadEvent *gamepad_state,
|
||||
unsigned port, uint32_t joyaxis)
|
||||
{
|
||||
int16_t val = 0;
|
||||
if (AXIS_NEG_GET(joyaxis) < gamepad_state->numAxes)
|
||||
{
|
||||
val = CLAMPDOUBLE(gamepad_state->axis[AXIS_NEG_GET(joyaxis)]) * 0x7FFF;
|
||||
if (val > 0)
|
||||
val = 0;
|
||||
int16_t val = CLAMPDOUBLE(
|
||||
gamepad_state->axis[AXIS_NEG_GET(joyaxis)]) * 0x7FFF;
|
||||
if (val < 0)
|
||||
return val;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < gamepad_state->numAxes)
|
||||
{
|
||||
val = CLAMPDOUBLE(gamepad_state->axis[AXIS_POS_GET(joyaxis)]) * 0x7FFF;
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
int16_t val = CLAMPDOUBLE(
|
||||
gamepad_state->axis[AXIS_POS_GET(joyaxis)]) * 0x7FFF;
|
||||
if (val > 0)
|
||||
return val;
|
||||
}
|
||||
|
||||
return val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int16_t rwebpad_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||
|
@ -299,12 +299,12 @@ static int16_t sdl_joypad_button_state(
|
||||
sdl_joypad_t *pad,
|
||||
unsigned port, uint16_t joykey)
|
||||
{
|
||||
unsigned hat_dir = GET_HAT_DIR(joykey);
|
||||
unsigned hat_dir = GET_HAT_DIR(joykey);
|
||||
/* Check hat. */
|
||||
if (hat_dir)
|
||||
{
|
||||
uint8_t dir;
|
||||
uint16_t hat = GET_HAT(joykey);
|
||||
uint16_t hat = GET_HAT(joykey);
|
||||
|
||||
if (hat >= pad->num_hats)
|
||||
return 0;
|
||||
@ -345,26 +345,23 @@ static int16_t sdl_joypad_axis_state(
|
||||
sdl_joypad_t *pad,
|
||||
unsigned port, uint32_t joyaxis)
|
||||
{
|
||||
int16_t val = 0;
|
||||
if (AXIS_NEG_GET(joyaxis) < pad->num_axes)
|
||||
{
|
||||
val = sdl_pad_get_axis(pad, AXIS_NEG_GET(joyaxis));
|
||||
|
||||
if (val > 0)
|
||||
val = 0;
|
||||
int16_t val = sdl_pad_get_axis(pad, AXIS_NEG_GET(joyaxis));
|
||||
/* -0x8000 can cause trouble if we later abs() it. */
|
||||
else if (val < -0x7fff)
|
||||
val = -0x7fff;
|
||||
if (val < -0x7fff)
|
||||
return -0x7fff;
|
||||
else if (val < 0)
|
||||
return val;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < pad->num_axes)
|
||||
{
|
||||
val = sdl_pad_get_axis(pad, AXIS_POS_GET(joyaxis));
|
||||
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
int16_t val = sdl_pad_get_axis(pad, AXIS_POS_GET(joyaxis));
|
||||
if (val > 0)
|
||||
return val;
|
||||
}
|
||||
|
||||
return val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int16_t sdl_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||
|
@ -113,36 +113,31 @@ static int16_t switch_joypad_axis_state(unsigned port, uint32_t joyaxis)
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < 4)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
|
||||
switch(axis)
|
||||
{
|
||||
case 0:
|
||||
val = analog_state[port][0][0];
|
||||
break;
|
||||
case 1:
|
||||
val = analog_state[port][0][1];
|
||||
val = analog_state[port][0][axis];
|
||||
break;
|
||||
case 2:
|
||||
val = analog_state[port][1][0];
|
||||
break;
|
||||
case 3:
|
||||
val = analog_state[port][1][1];
|
||||
val = analog_state[port][1][axis - 2];
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -648,33 +648,31 @@ static int16_t udev_joypad_axis_state(
|
||||
const struct udev_joypad *pad,
|
||||
unsigned port, uint32_t joyaxis)
|
||||
{
|
||||
int16_t val = 0;
|
||||
if (AXIS_NEG_GET(joyaxis) < NUM_AXES)
|
||||
{
|
||||
val = pad->axes[AXIS_NEG_GET(joyaxis)];
|
||||
int16_t val = pad->axes[AXIS_NEG_GET(joyaxis)];
|
||||
/* Deal with analog triggers that report -32767 to 32767 */
|
||||
if ((
|
||||
(AXIS_NEG_GET(joyaxis) == ABS_Z) ||
|
||||
(AXIS_NEG_GET(joyaxis) == ABS_RZ))
|
||||
&& (pad->neg_trigger[AXIS_NEG_GET(joyaxis)]))
|
||||
val = (val + 0x7fff) / 2;
|
||||
if (val > 0)
|
||||
val = 0;
|
||||
if (val < 0)
|
||||
return val;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) < NUM_AXES)
|
||||
{
|
||||
val = pad->axes[AXIS_POS_GET(joyaxis)];
|
||||
int16_t val = pad->axes[AXIS_POS_GET(joyaxis)];
|
||||
/* Deal with analog triggers that report -32767 to 32767 */
|
||||
if ((
|
||||
(AXIS_POS_GET(joyaxis) == ABS_Z) ||
|
||||
(AXIS_POS_GET(joyaxis) == ABS_RZ))
|
||||
&& (pad->neg_trigger[AXIS_POS_GET(joyaxis)]))
|
||||
val = (val + 0x7fff) / 2;
|
||||
if (val < 0)
|
||||
val = 0;
|
||||
if (val > 0)
|
||||
return val;
|
||||
}
|
||||
|
||||
return val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int16_t udev_joypad_axis(unsigned port, uint32_t joyaxis)
|
||||
|
@ -168,17 +168,19 @@ static int16_t xdk_joypad_axis_state(XINPUT_GAMEPAD *pad,
|
||||
int axis = -1;
|
||||
bool is_neg = false;
|
||||
bool is_pos = false;
|
||||
|
||||
if (AXIS_NEG_GET(joyaxis) <= 3)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) <= 5)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
@ -207,14 +209,12 @@ static int16_t xdk_joypad_axis_state(XINPUT_GAMEPAD *pad,
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
/* Clamp to avoid warnings */
|
||||
if (val == -32768)
|
||||
val = -32767;
|
||||
|
||||
else if (val == -32768)
|
||||
return -32767;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -473,14 +473,16 @@ static int16_t xinput_joypad_axis_state(
|
||||
/* triggers (axes 4,5) cannot be negative */
|
||||
if (AXIS_NEG_GET(joyaxis) <= 3)
|
||||
{
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
axis = AXIS_NEG_GET(joyaxis);
|
||||
is_neg = true;
|
||||
}
|
||||
else if (AXIS_POS_GET(joyaxis) <= 5)
|
||||
{
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
axis = AXIS_POS_GET(joyaxis);
|
||||
is_pos = true;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
@ -505,14 +507,12 @@ static int16_t xinput_joypad_axis_state(
|
||||
}
|
||||
|
||||
if (is_neg && val > 0)
|
||||
val = 0;
|
||||
return 0;
|
||||
else if (is_pos && val < 0)
|
||||
val = 0;
|
||||
|
||||
return 0;
|
||||
/* Clamp to avoid overflow error. */
|
||||
if (val == -32768)
|
||||
val = -32767;
|
||||
|
||||
else if (val == -32768)
|
||||
return -32767;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user