Old 05-12-2020, 05:09 AM   #1161
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by amagalma View Post
Is it good or is there a more efficient way to draw than creating and destroying bitmaps all the time?
In my own scripts, I overlay a large transparent canvas over the window, and then draw rectangles in it. Unfortunately, as you know, transparency doesn't yet work with macOS Metal.
juliansader is offline   Reply With Quote
Old 05-12-2020, 07:28 AM   #1162
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by juliansader View Post
Thanks for letting me know. It seems that ReaPack regards the decimals ".01" as having the same value as ".001", so it didn't update as intended. I changed the version to ".010" and now it is available.

The 1.10 version was just a temporary upload for some people to test, and I have now deleted it.

Yes, the ReaPack version is not a decimal number.


Quote:
Originally Posted by juliansader View Post
In my own scripts, I overlay a large transparent canvas over the window, and then draw rectangles in it. Unfortunately, as you know, transparency doesn't yet work with macOS Metal.

That was sort of my first try... I don't know if there is a big difference performance-wise, but at the time being (until the devs solve the macOS Metal issue) I'll stick to the current method.
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-12-2020, 11:43 AM   #1163
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Question: after Destroying a LICE Bitmap is InvalidateRect needed to redraw the region where the bitmap was? I tried commenting it out of my code, and the script still works and behaves as before. So, it is not needed? In which cases is it needed? (I was drawing with Composite and auto-update value set to true)
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-12-2020, 01:09 PM   #1164
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Correct, LICE_Destroy will unlink the bitmap and invalidate the region. (Unlinking ALL bitmaps from a window will also invalidate the entire window.)
juliansader is offline   Reply With Quote
Old 05-12-2020, 01:19 PM   #1165
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,599
Default

Quick question, whats the ID of TCP view? Want to draw over it (like a icon) but do not know whats tge ID or how to check any ID
Sexan is offline   Reply With Quote
Old 05-12-2020, 02:53 PM   #1166
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by Sexan View Post
Quick question, whats the ID of TCP view? Want to draw over it (like a icon) but do not know whats tge ID or how to check any ID
Code:
hwnd = reaper.JS_Window_FindEx( reaper.GetMainHwnd(), nil, "REAPERTCPDisplay", "" )
No ID, no name...
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-12-2020, 02:53 PM   #1167
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

You can use reaper.JS_Window_GetLong(hwnd, "ID") to get the ID of a window.

EDIT: Strange, as amagalma noted, the TCP doesn't seem to have a usable ID.
juliansader is offline   Reply With Quote
Old 05-12-2020, 09:26 PM   #1168
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

I am trying to implement a workaround for the compositing problems with OSX Metal, but the first step would be for the extension to reliably detect whether Metal is being used.

If anyone here uses OSX/Metal (particularly if you previously encountered problems with the compositing), I would appreciate it very much if you could test the JS_Window_EnableMetal function in the newest build from here:
https://github.com/juliansader/ReaEx...riptAPI/v1.200

What value does the function return for each of REAPER's graphics modes?

Code:
local trackview = reaper.JS_Window_FindChildByID(reaper.GetMainHwnd(), 1000)
metal = reaper.JS_Window_EnableMetal(trackview)
juliansader is offline   Reply With Quote
Old 05-13-2020, 02:56 AM   #1169
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Shows 0, when in classic mode and also 0 when automatic (metal mode) is turned on.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:28 AM   #1170
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Quote:
Originally Posted by juliansader View Post
You can use reaper.JS_Window_GetLong(hwnd, "ID") to get the ID of a window.

EDIT: Strange, as amagalma noted, the TCP doesn't seem to have a usable ID.
This has changed in v6 for TCP. V5 had ids for it but devs made things different, cause of HiDpi IIRC. One of the reasons the devs added tons of new track-attributes to access in the Api.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 05-13-2020, 04:55 AM   #1171
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by juliansader View Post
I am trying to implement a workaround for the compositing problems with OSX Metal, but the first step would be for the extension to reliably detect whether Metal is being used.

If anyone here uses OSX/Metal (particularly if you previously encountered problems with the compositing), I would appreciate it very much if you could test the JS_Window_EnableMetal function in the newest build from here:
https://github.com/juliansader/ReaEx...riptAPI/v1.200

What value does the function return for each of REAPER's graphics modes?

Code:
local trackview = reaper.JS_Window_FindChildByID(reaper.GetMainHwnd(), 1000)
metal = reaper.JS_Window_EnableMetal(trackview)

I made a thread about this, hope you don't mind! Trying to help
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-13-2020, 05:49 AM   #1172
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by _Stevie_ View Post
Shows 0, when in classic mode and also 0 when automatic (metal mode) is turned on.
Drat, seems like my Metal detector is still not working.

In automatic mode, are you sure that Metal is turned on?

* On you Mac, if you go to the Apple icon -> About this Mac -> System report -> Graphics/Displays, you should see a Metal: Supported field.

* When you ran my Multi Tool MIDI script on previous versions of the extension, you should see the entire window covered by an opaque bitmap, whereas amagalma's guideline script shouldn't show any line.
juliansader is offline   Reply With Quote
Old 05-13-2020, 05:55 AM   #1173
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by amagalma View Post
I made a thread about this, hope you don't mind! Trying to help
Thank you very much for trying to help! Actually I just need one or two people who can test a few updates until I get it working. (I am a bit embarassed to get too many people involved.)

Thanks to feedback by Justin himself, I know what the problem is with the disappearing guidelines, and it is easy to implement a workaround for the blitting part -- if I can only figure out why my Metal checking doesn't work as expected...
juliansader is offline   Reply With Quote
Old 05-13-2020, 06:07 AM   #1174
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by juliansader View Post
Thank you very much for trying to help! Actually I just need one or two people who can test a few updates until I get it working. (I am a bit embarassed to get too many people involved.)

Thanks to feedback by Justin himself, I know what the problem is with the disappearing guidelines, and it is easy to implement a workaround for the blitting part -- if I can only figure out why my Metal checking doesn't work as expected...

Oh, ok! I saw you removed the thread.. Sorry for posting without asking! I was just trying to help!

Anyway here is a quick test script if anyone needs it:
Code:
if not reaper.GetOS():find("OSX") then
  reaper.ShowConsoleMsg("Only OSX users please! Thanks!\n")
  return
end
if reaper.JS_ReaScriptAPI_Version() ~= 1.2 then
  reaper.ShowConsoleMsg("Install v1.2 please! Thanks!\n")
  reaper.CF_ShellExecute( "https://github.com/juliansader/ReaExtensions/tree/master/js_ReaScriptAPI/v1.200" )
  return
end

local trackview = reaper.JS_Window_FindChildByID(reaper.GetMainHwnd(), 1000)
local metal = reaper.JS_Window_EnableMetal(trackview)
local reaperini =  reaper.GetResourcePath() .. "/REAPER.ini"
local _, setting = reaper.BR_Win32_GetPrivateProfileString( "reaper", "osxnomiddlemancocoa", "", reaperini )
if setting == "0" then
  setting = "automatic (Metal)"
elseif setting == "-1" then
  setting = "disabled optimized drawing"
elseif setting == "1" then
  setting = "classic mode"
else
  setting = "(couldnt retrieve)"
end
reaper.ShowConsoleMsg("Current setting is set to :" .. setting)
reaper.ShowConsoleMsg("\nmetal = " .. metal .. "\n")
reaper.defer(function() end)

In my VMWare OSX Catalina installation I always get 0 no matter the setting.
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-13-2020, 07:19 AM   #1175
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Quote:
Originally Posted by juliansader View Post
Drat, seems like my Metal detector is still not working.

In automatic mode, are you sure that Metal is turned on?

* On you Mac, if you go to the Apple icon -> About this Mac -> System report -> Graphics/Displays, you should see a Metal: Supported field.

* When you ran my Multi Tool MIDI script on previous versions of the extension, you should see the entire window covered by an opaque bitmap, whereas amagalma's guideline script shouldn't show any line.
Tested on 2 of my machines. The MacBook does indeed not support Metal, but my iMac does:

And yes, I had the entire window covered with the iMac, when Metal was turned on.



Test results from my iMac:

Current setting is set to :automatic (Metal)
metal = 0

Current setting is set to :classic mode
metal = 0
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:02 PM   #1176
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

I've uploaded v1.204 to the same link as above. Let's see if this version works better!
juliansader is offline   Reply With Quote
Old 05-13-2020, 03:06 PM   #1177
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Seems to totally work

Quote:
Current setting is set to :automatic (Metal)
metal = 2
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:10 PM   #1178
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,599
Default

Interested what would the rendering difference be with Metal on A51, would like to test but no OSX, only PCMasterRace
Sexan is offline   Reply With Quote
Old 05-13-2020, 03:12 PM   #1179
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by _Stevie_ View Post
Seems to totally work
Woohoo! While you are in Metal mode, could you please check if the scripts now work properly?
juliansader is offline   Reply With Quote
Old 05-13-2020, 03:19 PM   #1180
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by _Stevie_ View Post
Seems to totally work
This is very good news!!!
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-13-2020, 03:24 PM   #1181
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,599
Default

Extremely good news!!!! Really hope there are not extreme changes regarding rendering performance because I will make sure that Reaper will be the first DAW that utilizes Vulkan and Scwha will not like that
Sexan is offline   Reply With Quote
Old 05-13-2020, 03:28 PM   #1182
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Quote:
Originally Posted by juliansader View Post
Woohoo! While you are in Metal mode, could you please check if the scripts now work properly?
Yes, of course! Checking...

Eeek, I get funny results!
Not sure what to say, almost there? LOL

__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:45 PM   #1183
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by _Stevie_ View Post
Eeek, I get funny results!
Not sure what to say, almost there? LOL
Bummer. I wonder why it looks OK while you are drawing the area, but then goes haywire as soon as you release the mouse.

It would be very helpful if you could also try amagalma's guideline script in the arrange view, and my Multi Tool script in the MIDI editor.

This is probably another bug in Metal, since the same workaround code works perfectly in Windows and Linux and non-Metal OSX.

Last edited by juliansader; 05-13-2020 at 03:52 PM.
juliansader is offline   Reply With Quote
Old 05-13-2020, 03:49 PM   #1184
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,599
Default

The script makes 1-2 cycles more compositing (we had one issue and I pass renderining few more cycles to solve it). Maybe try with auto refresh off in Compositing call (11th argument)
Sexan is offline   Reply With Quote
Old 05-13-2020, 03:50 PM   #1185
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Multi Script:
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:54 PM   #1186
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

And the amagalma guide:
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 03:55 PM   #1187
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Oops, sorry, I forgot that the Multi Script actually skips compositing if Metal is enabled.

To enable compositing, line 4658, which is currently:
Code:
if macOS and reaper.JS_Window_EnableMetal(windowUnderMouse) > 0 then
can be changed to
Code:
if false then
juliansader is offline   Reply With Quote
Old 05-13-2020, 04:07 PM   #1188
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

@Julian: enabled the composite mode that you mentioned:

__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-13-2020, 04:09 PM   #1189
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Also set the auto refresh to false in AS51:

__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-14-2020, 03:44 AM   #1190
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,599
Default

My brain went 404, I want to draw on the most right part of TCP but I cannot get right coordinates, it also needs to update them on resizing.

Have no problem on the left side, but cannot get client right side


Code:
local TCPhwnd = reaper.JS_Window_FindEx( reaper.GetMainHwnd(), nil, "REAPERTCPDisplay", "" )
 retval, left, top, right, bottom = reaper.JS_Window_GetRect( windowHWND )
Tried this (converted to client since it gives screen) but nothing.

I need automatically detected right edge

EDIT: I got it, left and right need to be subtracted

Last edited by Sexan; 05-14-2020 at 04:06 AM.
Sexan is offline   Reply With Quote
Old 05-14-2020, 03:52 AM   #1191
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Alas, Justin has confirmed that the "workaround" functions that I tried to use are also not yet implemented for Metal, so we are out of luck.
juliansader is offline   Reply With Quote
Old 05-14-2020, 06:50 AM   #1192
Ideosound
Human being with feelings
 
Ideosound's Avatar
 
Join Date: Oct 2017
Location: U.K
Posts: 542
Default

Quote:
Originally Posted by juliansader View Post
Alas, Justin has confirmed that the "workaround" functions that I tried to use are also not yet implemented for Metal, so we are out of luck.
Bummer, did he mention if this will get looked at? Really appreciate everyone who is trying to help improve the metal/scripting support. I will keep an eye on this thread too.
Ideosound is offline   Reply With Quote
Old 05-14-2020, 12:10 PM   #1193
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Any ideas how to get rid of the tearing?
Happens on Windows and macOS, when play is activated and my split tool is running:




Using this in the init:

Code:
local line = reaper.JS_LICE_CreateBitmap(true, 1, 1)
reaper.JS_LICE_Clear(line, 0x66FFFFFF)
And this in the defer main:

Code:
if x ~= prev_x or y ~= prev_y then 
   DrawArrangeLine(x, y, height, mouse_proj_pos)
end

And here's the function
Code:
function DrawArrangeLine(x, y, height, mouse_proj_pos)

    if reaper.JS_Window_FromPoint(x, y) == arrange_view then
        
        -- check for snap and return snapped x or x
        local x = GetLinePos(x, mouse_proj_pos)
        
        reaper.JS_Composite(arrange_view, x-1, 0, 3, height, line, 0, 0, 1, 1, true)
    else 
        reaper.JS_Composite(arrange_view, 0, 0, 0, 0, line, 0, 0, 1, 1, true) -- erase line
    end 
end
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom

Last edited by _Stevie_; 05-14-2020 at 12:18 PM.
_Stevie_ is offline   Reply With Quote
Old 05-14-2020, 07:05 PM   #1194
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

The latest +dev build should fix the issues re: Metal, I hope!
Justin is online now   Reply With Quote
Old 05-15-2020, 01:23 AM   #1195
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,451
Default

Quote:
Originally Posted by Justin View Post
The latest +dev build should fix the issues re: Metal, I hope!

This is great news! Thank you Justin!
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-15-2020, 08:11 AM   #1196
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Just tested with AS51 and Multi Tool. Not working with the latest pre build in metal mode. Same issues as before.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-15-2020, 08:32 AM   #1197
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by _Stevie_ View Post
Just tested with AS51 and Multi Tool. Not working with the latest pre build in metal mode. Same issues as before.
Justin has just replied that BitBlt doesn't yet work *from* Metal windows, and that is the function that I used apply in my attempted workaround in the latest version of the extension. So, ironically, the previous versions of the extension should work better.
juliansader is offline   Reply With Quote
Old 05-15-2020, 08:33 AM   #1198
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Reverting and checking!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-15-2020, 08:36 AM   #1199
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Okay, checked with 1.002 and AS + Multi Tool and it works in Metal mode!
However, in certain circumstances a lot of flickering is involved.
Trying to capture with LiceCap...
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 05-15-2020, 08:44 AM   #1200
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,054
Default

Okay, that worked: sidenote, if you want to capture flickering use the same fps as your monitor

__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:30 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.