Jump to content

Devious Devices Framework Development/Beta


Kimy

Recommended Posts

Posted (edited)
20 hours ago, kaxat said:

I encountered an SMP physics issue with the new RestrictiveBootsHarnessSMP.xml file in 5.2. When someone in the area is wearing Iron Chain Harness (Ankles) I will sometimes get a massive frame rate drop. From a solid 60FPS to 0.4FPS. It does not always happen instantly when someone equips these boots. But stick around long enough and the FPS will suddenly tank. Selecting the actor, opening inventory, and removing the item from them, will restore me to 60 FPS.

I am the second person I am aware of with this issue. Both of us are experiencing it on the latest version of FasterSMP. Both of us have fast CPUs and typically experience no FPS drops with SMP clothing. Other DD HDT clothes also work fine. So far it is only the ones that load the above XML which cause issue. One other commonality we both have is that we are running 3BA and have compiled those versions of the BodySlide files.

 

I believe the following was the "commit" that started causing an issue. @leakim found that reverting that one XML file to the DD 5.2-beta10 RC1 version was sufficient to patch this issue. Leakim did all the hard work isolating this. When I encountered this issue I knew almost instantly what the cause was because I had already read his post.

 


I hope that info helps. I can do more testing as needed.

 

The only tweaks to that XML was to bring it in line with recommendations from the FSMP discord, since we've been trying to resolve the chains not connecting.  All I changed were some numbers, I doubt that would be causing your frame drops. It's more likely an issue with a lot of SMP outfits going at the same time. When I was getting frame drops was when I moved the bones around or add/removed bones. What is shipped with 5.2 doesn't drop frames for me any worse than SMP in general.

 

Additionally, those xmls use the same values as the ankle chains. Are you seeing the same thing with ankle chains like the iron fetters?

Have you tried doing an smp reset?

 

If the older xml works for you, fine. But I was apparently breaking several physics rules with them, so they aren't right and I won't be reverting the changes.

 

Edit: That sounds a little more final than I meant. I am still tweaking XMLs from time to time. Next time I play with them, I might have more tweaks along the same lines, and if I get something good enough, I will put a SMP patch out. But the ones in the earlier betas and 5.1 are not the right way to implement SMP on the chains, which is why the statement 'not reverting'. The XMLs are actually partially (or maybe even wholely I don't know anymomre) responsible for why they aren't connecting at this point when using FSMP.

Edited by zarantha
Posted
On 3/18/2023 at 5:12 PM, zarantha said:

 

The only tweaks to that XML was to bring it in line with recommendations from the FSMP discord, since we've been trying to resolve the chains not connecting.  All I changed were some numbers, I doubt that would be causing your frame drops. It's more likely an issue with a lot of SMP outfits going at the same time. When I was getting frame drops was when I moved the bones around or add/removed bones. What is shipped with 5.2 doesn't drop frames for me any worse than SMP in general.

 

Additionally, those xmls use the same values as the ankle chains. Are you seeing the same thing with ankle chains like the iron fetters?

Have you tried doing an smp reset?

 

If the older xml works for you, fine. But I was apparently breaking several physics rules with them, so they aren't right and I won't be reverting the changes.

 

Edit: That sounds a little more final than I meant. I am still tweaking XMLs from time to time. Next time I play with them, I might have more tweaks along the same lines, and if I get something good enough, I will put a SMP patch out. But the ones in the earlier betas and 5.1 are not the right way to implement SMP on the chains, which is why the statement 'not reverting'. The XMLs are actually partially (or maybe even wholely I don't know anymomre) responsible for why they aren't connecting at this point when using FSMP.

 

I understand the skepticism. I shared it. In the linked thread my first couple posts were helping Leakim ease his SMP load a little bit. I suspected the frame rate would gradually rise. I was wrong.

I have experienced SMP overload in the past. With 50-100 SMP clothes in the area my FPS would drop to around 40. As the NPCs would leave it would gradually return to 60. This issue has different symptoms. I suddenly go from 60FPS to less than 1FPS. It is instantaneous. And the instant I unequipped those boots I jumped back to 60 FPS. I did try an smp reset with the boots still on. That did nothing. As luck would have it I had this issue occur with only one SMP clothing item in the area (those boots) + SMP physics on the player. And again <1 FPS until I unequipped those boots. Suddenly 60 FPS.

 

If you are interested in replicating this issue I want to note a few details that might be important:

  • We are both using the latest version of FSMP. Personally I enabled the AVX512 extensions but not CUDA.
  • The issue does not usually happen instantly when the boots are equipped. It can take a minute or two after the boots are equipped. When it does happen you will know. The game becomes unplayable.
  • We are both using 3BA versions of the models and the 3BA body. But it does not matter whether the actor is in CBPC mode.
  • Leakim switched to the old .xml file a while ago and the issue went away.

If you need me to do more testing just ask. I will test the prisoner chains. It is possible those cause this too.

 

This is probably more of an SMP bug than anything else. A tweak to your mod might prevent FSMP from experiencing the bug. But as I understand it FSMP limits its CPU time to only 30% of the frame render time. That percent can be altered in its config. I do not believe it should cause such a drastic plummet in FPS when it is working properly.

Posted (edited)
16 hours ago, Mister X said:

Heyho,

 

I just scribbled some stuff into an INI file, to try and get certain Devious Devices to provide some warmth for the CC survival DLC. Requires Keyword Item Distributor (KID). 

All based on Keywords, I'd be happy about your thoughts; more stuff, less stuff, does it work at all?

Devious Devices_KID.ini 320 B · 4 downloads

 

I wonder if it works with sunhelm too.

 

Edit: Looks like it should, sunhelm also uses the Survival_ArmorWarm and Survival_ArmorCold keywords. But it doesn't show the warmth on the inventory card, probably because rendered (which has the keyword) and inventory (which doesn't) are different records.

Edited by zarantha
Posted
4 hours ago, zarantha said:

But it doesn't show the warmth on the inventory card, probably because rendered (which has the keyword) and inventory (which doesn't) are different records.

 

Well, it's based on deviceType keywords. So everything that carries zad_DeviousSuit gets the warmth keyword. I'm not sure which of device pair is actually seen as worn by the game, rendered or inventory, but that's the one that should carry zad_DeviousSuit. I skimmed a few of the base framework, and there both of the pair carried said keyword.

 

I didn't want to simply give the keyword to anything by DD, as it wouldn't make sense for normal shackles to warm you up, as example.

Posted (edited)
4 hours ago, Mister X said:

I'm not sure which of device pair is actually seen as worn by the game, rendered or inventory,

 

Rendered or script is what is seen as worn. I can't think of a better way to do this other than how you have. It was more an observation than a criticism.

 

The inventory catsuits don't seem to be set up that way to have the zad_DeviousSuit keyword, nor are the first two straitjacket dresses i just spot checked in DDx . inventory records have zad_InventoryDevice, but that seems to be everything and not something you'd want to attach the warm or cold keywords to. There's no distinction between suits or not with that keyword. So basically, I think it's just a limitation with how DD is configured. We won't see the warmth on the cards, but the keywords should be applied and used when the item is worn.

 

Examples of items without zad_DeviousSuit:

Spoiler


image.png.c760d19490ee8a99cc628a20f49ee4e6.png

 

image.png.389e3c0b3887cd5fd50b34609beb8ac6.png

 

 

 

As to actual functionality, I could see the armorcold keyword distributed by checking the console, but not the armor warm.

 

I'm wearing a pink oil body suit (devious lore, same as pink catsuit) no keyword is attached:

Spoiler


image.png.6937eda79e0c95cacc754d8cc28be915.png

 


But the pony boots and paw mittens have the keyword:
 

Spoiler


paw mittens:
image.png.7fbedcc3c4186c2af1845833e1990b5a.png

 

pony boots:
image.png.0431715123bade105449d8cc7affdc16.png

 

So the ini is half working for me. po3_KeywordItemDistributor.log shows some skipping because I don't have those mods. I'm not sure why the armorwarm isn't applied. As far as I understand it from the mod page, those filters should be ignored but not the first keyword.

 

[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorWarm [0x2ED9~Update.esm] INFO - using existing keyword
[06:50:47:682]             [Devious Devices_KID.ini] Filter (*Thermal) SKIP - form doesn't exist
[06:50:47:682]             [Devious Devices_KID.ini] Filter (SLUTS.esp) SKIP - mod cannot be found
[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorCold [0x2ED8~Update.esm] INFO - using existing keyword

 

Changed the ini to remove thermal and sluts as a test and now I see it applied to the catsuit too in the console.

Spoiler


image.png.7e8e5256a69c47d3229e6e8976fbd5d0.png

 

 

So this works for me:

 

; add survival Warm Armor keyword to all Devious suits
;Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit,*Thermal+SLUTS.esp|-T
Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit|-T

; add Survival Cold Armor keyword to all smaller Devious Items
Keyword = Survival_ArmorCold|Armor|zad_DeviousBoots,zad_DeviousBra,zad_DeviousCorset,zad_DeviousGloves,zad_DeviousHarness|-T

 

 

This is really cool, hopefully this will be sufficient to keep me from freezing while I'm wandering around. :)

I've wanted to apply the warmth keywords for a while, but the last time I thought of doing it was before KID, so it would have involved a lot of patching I didn't feel like doing.

Edited by zarantha
Posted
13 minutes ago, zarantha said:

 

Rendered or script is what is seen as worn. I can't think of a better way to do this other than how you have. It was more an observation than a criticism.

 

The inventory catsuits don't seem to be set up that way to have the zad_DeviousSuit keyword, nor are the first two straitjacket dresses i just spot checked in DDx . inventory records have zad_InventoryDevice, but that seems to be everything and not something you'd want to attach the warm or cold keywords to. There's no distinction between suits or not with that keyword. So basically, I think it's just a limitation with how DD is configured. We won't see the warmth on the cards, but the keywords should be applied and used when the item is worn.

 

Examples of items without zad_DeviousSuit:

  Reveal hidden contents


image.png.c760d19490ee8a99cc628a20f49ee4e6.png

 

image.png.389e3c0b3887cd5fd50b34609beb8ac6.png

 

 

 

As to actual functionality, I could see the armorcold keyword distributed by checking the console, but not the armor warm.

 

I'm wearing a pink oil body suit (devious lore, same as pink catsuit) no keyword is attached:

  Reveal hidden contents


image.png.6937eda79e0c95cacc754d8cc28be915.png

 


But the pony boots and paw mittens have the keyword:
 

  Reveal hidden contents


paw mittens:
image.png.7fbedcc3c4186c2af1845833e1990b5a.png

 

pony boots:
image.png.0431715123bade105449d8cc7affdc16.png

 

So the ini is half working for me. po3_KeywordItemDistributor.log shows some skipping because I don't have those mods. I'm not sure why the armorwarm isn't applied. As far as I understand it from the mod page, those filters should be ignored but not the first keyword.

 

[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorWarm [0x2ED9~Update.esm] INFO - using existing keyword
[06:50:47:682]             [Devious Devices_KID.ini] Filter (*Thermal) SKIP - form doesn't exist
[06:50:47:682]             [Devious Devices_KID.ini] Filter (SLUTS.esp) SKIP - mod cannot be found
[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorCold [0x2ED8~Update.esm] INFO - using existing keyword

 

Changed the ini to remove thermal and sluts as a test and now I see it applied to the catsuit too in the console.

  Reveal hidden contents


image.png.7e8e5256a69c47d3229e6e8976fbd5d0.png

 

 

So this works for me:

 

; add survival Warm Armor keyword to all Devious suits
;Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit,*Thermal+SLUTS.esp|-T
Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit|-T

; add Survival Cold Armor keyword to all smaller Devious Items
Keyword = Survival_ArmorCold|Armor|zad_DeviousBoots,zad_DeviousBra,zad_DeviousCorset,zad_DeviousGloves,zad_DeviousHarness|-T

 

 

This is really cool, hopefully this will be sufficient to keep me from freezing while I'm wandering around. :)

I've wanted to apply the warmth keywords for a while, but the last time I thought of doing it was before KID, so it would have involved a lot of patching I didn't feel like doing.

 

Besides KID, you can also try SPID, FormList Manipulator 

Posted
18 hours ago, zarantha said:

 

Rendered or script is what is seen as worn. I can't think of a better way to do this other than how you have. It was more an observation than a criticism.

 

The inventory catsuits don't seem to be set up that way to have the zad_DeviousSuit keyword, nor are the first two straitjacket dresses i just spot checked in DDx . inventory records have zad_InventoryDevice, but that seems to be everything and not something you'd want to attach the warm or cold keywords to. There's no distinction between suits or not with that keyword. So basically, I think it's just a limitation with how DD is configured. We won't see the warmth on the cards, but the keywords should be applied and used when the item is worn.

 

Examples of items without zad_DeviousSuit:

  Reveal hidden contents


image.png.c760d19490ee8a99cc628a20f49ee4e6.png

 

image.png.389e3c0b3887cd5fd50b34609beb8ac6.png

 

 

 

As to actual functionality, I could see the armorcold keyword distributed by checking the console, but not the armor warm.

 

I'm wearing a pink oil body suit (devious lore, same as pink catsuit) no keyword is attached:

  Reveal hidden contents


image.png.6937eda79e0c95cacc754d8cc28be915.png

 


But the pony boots and paw mittens have the keyword:
 

  Reveal hidden contents


paw mittens:
image.png.7fbedcc3c4186c2af1845833e1990b5a.png

 

pony boots:
image.png.0431715123bade105449d8cc7affdc16.png

 

So the ini is half working for me. po3_KeywordItemDistributor.log shows some skipping because I don't have those mods. I'm not sure why the armorwarm isn't applied. As far as I understand it from the mod page, those filters should be ignored but not the first keyword.

 

[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorWarm [0x2ED9~Update.esm] INFO - using existing keyword
[06:50:47:682]             [Devious Devices_KID.ini] Filter (*Thermal) SKIP - form doesn't exist
[06:50:47:682]             [Devious Devices_KID.ini] Filter (SLUTS.esp) SKIP - mod cannot be found
[06:50:47:682]         [Devious Devices_KID.ini] Survival_ArmorCold [0x2ED8~Update.esm] INFO - using existing keyword

 

Changed the ini to remove thermal and sluts as a test and now I see it applied to the catsuit too in the console.

  Reveal hidden contents


image.png.7e8e5256a69c47d3229e6e8976fbd5d0.png

 

 

So this works for me:

 

; add survival Warm Armor keyword to all Devious suits
;Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit,*Thermal+SLUTS.esp|-T
Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit|-T

; add Survival Cold Armor keyword to all smaller Devious Items
Keyword = Survival_ArmorCold|Armor|zad_DeviousBoots,zad_DeviousBra,zad_DeviousCorset,zad_DeviousGloves,zad_DeviousHarness|-T

 

 

This is really cool, hopefully this will be sufficient to keep me from freezing while I'm wandering around. :)

I've wanted to apply the warmth keywords for a while, but the last time I thought of doing it was before KID, so it would have involved a lot of patching I didn't feel like doing.

 

Well, no idea why it didn't want to use it in the first place, but ok. So, I've simply split it up like that, should work better :D 

;;; BASIC FRAMEWORK
; add survival Warm Armor keyword to all Devious suits
Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit|-T

; add Survival Cold Armor keyword to all smaller Devious Items
Keyword = Survival_ArmorCold|Armor|zad_DeviousBoots,zad_DeviousBra,zad_DeviousCorset,zad_DeviousGloves,zad_DeviousHarness|-T

;;; ADDON PATCHES
; add survival Warm Armor keyword to all Thermal items from S.L.U.T.S
Keyword = Survival_ArmorWarm|Armor|*Thermal+SLUTS.esp|-T

 

18 hours ago, tznvlw said:

 

Besides KID, you can also try SPID, FormList Manipulator 

 

This then will need a totally different approach than mine, as those tools can't distribute keywords to items, but that's the way to go here.

Devious Devices_KID.ini

Posted
3 hours ago, Mister X said:

 

Well, no idea why it didn't want to use it in the first place, but ok. So, I've simply split it up like that, should work better :D 

;;; BASIC FRAMEWORK
; add survival Warm Armor keyword to all Devious suits
Keyword = Survival_ArmorWarm|Armor|zad_DeviousSuit|-T

; add Survival Cold Armor keyword to all smaller Devious Items
Keyword = Survival_ArmorCold|Armor|zad_DeviousBoots,zad_DeviousBra,zad_DeviousCorset,zad_DeviousGloves,zad_DeviousHarness|-T

;;; ADDON PATCHES
; add survival Warm Armor keyword to all Thermal items from S.L.U.T.S
Keyword = Survival_ArmorWarm|Armor|*Thermal+SLUTS.esp|-T

 

 

This then will need a totally different approach than mine, as those tools can't distribute keywords to items, but that's the way to go here.

Devious Devices_KID.ini 472 B · 1 download

 

The SPID already includes the functionality of kid. but i didn't dig into it ?

Posted
2 hours ago, tznvlw said:

 

The SPID already includes the functionality of kid. but i didn't dig into it ?

 

Nope SPID gives stuff to NPCs, KID gives stuff to Items

Posted
1 hour ago, Mister X said:

 

Nope SPID gives stuff to NPCs, KID gives stuff to Items

 

That's right, thanks for the explanation?

Posted (edited)

Love your work but I had a question on the implementation of how your character triggers devious devices.  Currently any time you perform certain actions such as looting stuff or opening doors via the Cursed Loot mod there's a chance that you might find and equip a devious device or trigger an event based on a percentage chance.  In a future version of the Cursed Loot it would be cool if you had the option of instead of using a set percentage of finding something you could choose instead to automatically trigger a devious device event by breaking a lockpick while trying to unlock a lock, stepping on a trap plate, or tripping a trip wire.  This would add to the system more of a trap avoidance test as opposed to just reacting to whatever the RNG happens to do.  What do you guys think?  Take care and goodnight :)

Edited by SkyTem
Posted
3 hours ago, SkyTem said:

Love your work but I had a question on the implementation of how your character triggers devious devices.  Currently any time you perform certain actions such as looting stuff or opening doors via the Cursed Loot mod there's a chance that you might find and equip a devious device or trigger an event based on a percentage chance.  In a future version of the Cursed Loot it would be cool if you had the option of instead of using a set percentage of finding something you could choose instead to automatically trigger a devious device event by breaking a lockpick while trying to unlock a lock, stepping on a trap plate, or tripping a trip wire.  This would add to the system more of a trap avoidance test as opposed to just reacting to whatever the RNG happens to do.  What do you guys think?  Take care and goodnight :)

You should probably ask this in the Cursed Loot thread. This thread is for the main DD framework.

Posted
1 hour ago, Murphiee said:

Do devices send a modevent on device orgasm? from testing it doesn't send a default sexlab orgasm event, do you have something internal?

Yes, it's "DeviceActorOrgasm"

 

You can get the "SendModEvent" from the main script (zadLibs.psc) to see what events are used.

Posted
1 hour ago, naaitsab said:

Yes, it's "DeviceActorOrgasm"

 

You can get the "SendModEvent" from the main script (zadLibs.psc) to see what events are used.

Will take a look at that, thnx.

Posted

I have found a problem when I am using DD 5.2. I can replace the devices with other armor when the devices still lock on me. After that, I can take off the devices without keys and struggle.

(sorry for my poor English because it is not my first language)

Posted
9 hours ago, JACKY22333 said:

I have found a problem when I am using DD 5.2. I can replace the devices with other armor when the devices still lock on me. After that, I can take off the devices without keys and struggle.

(sorry for my poor English because it is not my first language)

 

You have a conflict. Make sure you do not have any old versions of DD installed, or patches for old versions of DD, or the separate old versions of DDa, DDi, DDx, DDc, DD for Him, or DD BRRF.

 

Also check the known issues in the troubleshooting post.

Posted
On 3/26/2023 at 1:01 AM, zarantha said:

 

You have a conflict. Make sure you do not have any old versions of DD installed, or patches for old versions of DD, or the separate old versions of DDa, DDi, DDx, DDc, DD for Him, or DD BRRF.

 

Also check the known issues in the troubleshooting post.

 

I am having the same problem with the same easy removal problem.
I have checked the troubleshooting but there does not seem to be any applicable items.

Posted
12 hours ago, NeitoMitoRonn said:

 

I am having the same problem with the same easy removal problem.
I have checked the troubleshooting but there does not seem to be any applicable items.

 

And nothing is overwriting DD? The easy removal is because scripts are broken. Installing the old mods DDa, DDi, DDx, DDc, DD for Him, or DD BRRF over DD SE 5.2 will do this, as will installing any old patches for previous versions of DD from anywhere.

Posted
2 hours ago, zarantha said:

 

And nothing is overwriting DD? The easy removal is because scripts are broken. Installing the old mods DDa, DDi, DDx, DDc, DD for Him, or DD BRRF over DD SE 5.2 will do this, as will installing any old patches for previous versions of DD from anywhere.

 

I have dd5.2 and dcl9.0 installed and both have slif patches installed.

Other than that, there is no overwriting of scripts.

However, I am using Japanese translation including the scripts. Does this have anything to do with it?

Posted
20 minutes ago, NeitoMitoRonn said:

However, I am using Japanese translation including the scripts. Does this have anything to do with it?

That might well be, if someone made a mistake packing it and putting old scripts in the zip file, or missing some.

If you're able to read english, try the original mod and see if the problem persists.

Posted
On 6/25/2022 at 7:30 PM, Kimy said:

 

Sure thing, go ahead! You know that particular part of the framework better than me anyway. As I said above, I never really touched the device hider code after you handed DD over to me. :)

 

If you need to work on the ESM, just give me a holler first, so I can make sure you're working with the newest/correct version. I don't use GitHub for DD anymore, as its size is waaaaay over GitHub's free limit these days. And for most of the time I was the only one working on the code anyway, so hosting the code online isn't that much a priority anymore. People contributing code typically post code fragments here, or send me a patch archive against the newest beta version. It's low-tech, but it works! :D

I totally forget about this, but I don't think that will be a problem. GitHub is great only for storing code, so the easy solution is to just store there the papyrus scripts sources, and other text files and esps. I think that using GitHub can make it much easier for both contributors, and you. I'm using GitHub for more than a year for developing my mods, and it makes it much easier to manage the merging when multiple people are contributing their work. It works in the following way

  • There are no compiled papyrus scripts (.pex) as binary files can't be merged. Instead, everyone has to compile the scripts themselves. But lately I managed to create GitHub action for creating compiling scripts once every time there is merge to main branch, so contributors can just use compiled scripts from there.
  • Esp are like binary files, and so can't be merged as text. The solution was to use esp patches on every pull request. Once the pull request is merged, I only merge the esp and delete the patch from main branch. This is pretty much how it is also currently done in this thread.
  • My mod doesn't have any meshes and only few textures, so I let them on repository as they don't that much space. In case of DD, these would need to be added to .gitignored, so they don't get merged to main branch. Like 99% of size of DD is only meshes, textures, sounds and animations, so removing them will help. They can be edited as they were till now using this thread. Looks like everything else have at most ~5 MB.
  • All pull request can be only merged after at least one review is done. So you would have to first check if it works, so it doesn't break the main branch. You can also make other trustworthy people contributors, so they can also do the review.

In case you change your mind regarding the GitHub, I would be happy to help you revive the GitHub repo, so it can work similarly.

 

Also, if you want to take a look at the repository in question, here it is https://github.com/IHateMyKite/UnforgivingDevices

Posted (edited)
9 hours ago, CaptainJ03 said:

That might well be, if someone made a mistake packing it and putting old scripts in the zip file, or missing some.

If you're able to read english, try the original mod and see if the problem persists.

For me, I have tried to reinstall the original mod, but the problem still appears. However, my game language is traditional Chinese(translation mod), I don't know will it cause the problem or not. This problem doesn't appear in DD5.1 and also don't remember it have appear in DD5.2 early beta versions.

Edited by JACKY22333

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...