Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
bumnuts
Dec 10, 2004
mmm...crunchy

Ender.uNF posted:

I don't understand how large companies deal with the asinine device limit... or is it just that they use enterprise distribution? I have a 6 ++ (it's huge) and we can't test on it because our device list is full and can't be reset yet. Seriously Apple, we're not trying to bypass the app store and sell unapproved apps just because we'd like to have more than 100 devices registered.

The extra flexibility an enterprise cert gives you is well worth it. I've always used it at companies that already had a DUNS number though.

Adbot
ADBOT LOVES YOU

kitten smoothie
Dec 29, 2001

Yeah, for internal dogfood and QA we sign stuff with an enterprise cert so no UDID bookkeeping is necessary.

Edit: and I believe now you need a DUNS number to register any App Store distribution account now anyway, even if you're a single person LLC, so that part is moot these days too.

dc3k
Feb 18, 2003

what.
I have no idea how the enterprise stuff really works, but we have three development profiles and a distribution profile that we use. Any device can run builds signed with the distribution profile (QA builds), and our devices are all on one of the three development profiles. I think we have about 300-400 iWhatevers in total now.

Toady
Jan 12, 2009

Xcode 6.1 GM seed 2 is out.

quote:

Semantic coloring and command-key highlighting no longer become out-of-sync with the editor text while editing. (18456969)

Doc Block
Apr 15, 2003
Fun Shoe
Yeah, even a one person LLC needs a DUNS number now, but Apple has their own thing to make it easier and faster to get one. I'd post the link if I wasn't phoneposting.

edit: I was expecting D&B's verification to be more in depth, but instead they just call and ask stuff like what your business address is.

Doh004
Apr 22, 2007

Mmmmm Donuts...
Hey I think I'm missing something here. I present a view controller modally and do the old set the view's superview's bounds to change the size of it when it's displayed. That still works fine in iOS8; however, the content in the viewController isn't being resized along with its superview's bounds changing.

I *think* this has to do with the changing over to use - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator in iOS8, but I'm unsure of how to get this to work for just a simple viewController I'm presenting modally. I think it's simple but I'm a bit stumped.

Hmmm, I'm thinking I need to do this UIPresentationController thingy majiggy?

*edit #2* UIPopoverPresentationController it seems, and prefferredContentSize on the content viewController I think?

Doh004 fucked around with this message at 23:22 on Oct 7, 2014

Doh004
Apr 22, 2007

Mmmmm Donuts...
Ended up setting the prefferedContentSize on the viewController as well as manually setting the viewController's view.frame to the size I wanted to fix it. I guess it's better than setting the superview's bounds.

ManicJason
Oct 27, 2003

He doesn't really stop the puck, but he scares the hell out of the other team.
edit: I found a bomb I left for myself in my own code. Carry on.

ManicJason fucked around with this message at 18:59 on Oct 8, 2014

mrbass21
Feb 1, 2009
Why is importing RSA keys such an absolute pain on the entire Apple platform?

The way I've read that Apple wants you to import them is from a p12 where the client certificate is your public key, and include your private key in the p12.

What I get from the server that I have no control over is a PEM RSA Private key. Through examples and keyboard smashing I found that you can add an RSA private key to keychain with SecItemAdd(), if you load the dictionary with the key data. The key data being the ASN.1 formatted key with no ASN.1 headers.

I wrote a system to format the keys properly and it works for key sizes 4096 and lower, and fails above that. By "fails", I of course mean that keychain add returns a success code, but the persistence reference is nil. Further research tells me Apple restricts RSA keys to be no larger 4096 and if you try to use one larger, the application will crash.

My company is a security company that has documentation stating we can use key sizes up to 15384. I really wanted to be able to drop OpenSSL, but it doesn't look like I'll be able to.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
TBH my default assumption about any product that claims to support 16384-bit RSA keys is that is not designed by people who know enough about cryptography to be remotely trustable. It shows both a lack of understanding of the security of keys of various sizes, and a lack of knowledge about what key sizes are actually supported by other software (CommonCrypto is far from the only thing that currently doesn't support anything over 4k).

mrbass21
Feb 1, 2009

Plorkyeran posted:

TBH my default assumption about any product that claims to support 16384-bit RSA keys is that is not designed by people who know enough about cryptography to be remotely trustable. It shows both a lack of understanding of the security of keys of various sizes, and a lack of knowledge about what key sizes are actually supported by other software (CommonCrypto is far from the only thing that currently doesn't support anything over 4k).

The reason I believe it was picked is because it's the equivalent(roughly) strength to a 256 bit AES key and was displayed in a marketing graph comparing strengths between AES and RSA. 4096 is completely reasonable for most data with compatibility for 8192 being recommended for the future for an RSA key, but even 8192 is probably overkill.

I'm not sure if anyone even really implemented it to that level yet, and my project leader even said it's not set in stone, it was just a general goal. I'm not on the security team, I'm just the iOS client developer, but the other client developers were doing way worse poo poo like writing to user defaults. I'm just trying to do the right thing and put it into keychain, which we do now, but it's as a generic object that we use OpenSSL for encryption/decryption. I was really hoping I could store it as the proper RSAPrivateKey type and use Apple crypto instead of maintaining a third party library.

But key size aside, it's still a pain to import RSA keys not generated by the iOS device itself, unless you jump through the hoops to create a p12 and extract from that or learn the ASN.1 structure.

mrbass21 fucked around with this message at 00:08 on Oct 9, 2014

lord funk
Feb 16, 2004

Anyone else seeing [an error occurred while processing this directive] on the Apple.com main page?

edit: seems they fixed it

lord funk fucked around with this message at 17:31 on Oct 9, 2014

lord funk
Feb 16, 2004

So I've been fighting with UITableView backgrounds suddenly and intermittently turning white (reminder what that looks like). I think I found the line of code that was causing it, but I'm no closer to figuring out why.

After gutting my app, I found a child view controller that was being instantiated from a storyboard. If I alloc / init the view controller instead, the white backgrounds don't happen. I have no idea what could be the issue. Even stranger is that it is one of three view controllers that was instantiated that way, so :wtc:

I actually used an Apple tech request for this, but the technician couldn't get it to ever happen on his end. Sigh.

Doc Block
Apr 15, 2003
Fun Shoe
Ugh. Submitting an app update that adds iPhone 6+ support, everything works fine, blah blah blah, but to test it I borrowed a relative's iPhone 6+. I need to take screenshots, and didn't think to take them when I had access to their 6+. Tried taking them on the simulator, but to show off the app and get the screenshots I want/need requires multitouch gestures, and now said relative is out of town.

So: anybody have any ideas for doing multitouch gestures on the iOS Simulator? I don't have a Magic Trackpad.

Doc Block fucked around with this message at 00:52 on Oct 13, 2014

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

Depends what kind. Holding Option when you click will give you a second finger for some gestures, as noted here: https://developer.apple.com/library...SSimulator.html

Doc Block
Apr 15, 2003
Fun Shoe
Forgot about that. Did the trick, thanks.

HiriseSoftware
Dec 3, 2004

Two tips for the wise:
1. Buy an AK-97 assault rifle.
2. If there's someone hanging around your neighborhood you don't know, shoot him.
Man gently caress this orientation-dependent bullshit on iOS 8. My view code for my educational game works just fine on < 8, but of course totally breaks on 8. My app is landscape, and I figured out how to get things to display correctly, but I have a problem with touches - with I get a TouchPhaseBegan touch, the touch coordinate is not correct - it's like the bounds of the view for the touches is rotated and the touch coordinates are on the border of the "view". Then when I get other events for the same touch, the touch coordinates are correct! I'm not sure kind of information it's using and what's changing between the Began phase and the others, but it's driving me nuts. I tried using "self" in locationInView, "nil", and a bunch of others, but nothing works.

Edit: VVVV It's my own engine but I just can't figure out why it's giving me wrong coordinates at the start of the touch but they're fine afterwards. I don't think I'm making any view changes between the two events. I was hoping it was a bug in the simulator when I first experienced it but I just updated my 5S and it's doing the same thing.

HiriseSoftware fucked around with this message at 03:32 on Oct 13, 2014

Doc Block
Apr 15, 2003
Fun Shoe
I've never heard of TouchPhaseBegan. Maybe it's a bug in the game engine you're using? The landscape-only game I'm working on doesn't seem to have any problems handling touches.

HaB
Jan 5, 2001

What are the odds?
Er...

What event is fired when you click the Clear button on a textfield?

I have a text field that the user can clear, but not actually edit (the value is selected with a picker). Problem is, when you tap the Clear button, the field goes into edit mode, and textFieldShouldBeginEditing is not fired.

HLEP?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

HaB posted:

Er...

What event is fired when you click the Clear button on a textfield?

I have a text field that the user can clear, but not actually edit (the value is selected with a picker). Problem is, when you tap the Clear button, the field goes into edit mode, and textFieldShouldBeginEditing is not fired.

HLEP?

UIControlEventValueChanged?

HaB
Jan 5, 2001

What are the odds?

pokeyman posted:

UIControlEventValueChanged?

No dice, seemingly.

Using that specific event, my selector never gets called. I changed it to UIControlEventAllEvents and it gets called twice, but event.description looks the same both times:
pre:
event: <UITextField: 0x14e4f7a0; frame = (80 34; 208 30); 
text = ''; clipsToBounds = YES; opaque = NO; 
autoresize = RM+BM; gestureRecognizers = <NSArray: 0x14d2a0c0>; 
layer = <CALayer: 0x14e4f9b0>>
And calling resignFirstResponder on the field seemingly has no effect.

Here is how I am setting up the event:
pre:
[self.friendNameTextField addTarget:self action:@selector(nameValueCleared:WithEvent:) forControlEvents:UIControlEventAllEvents];
and the selector:
pre:
- (void)nameValueCleared:(id)sender WithEvent:(UIEvent *)event
{
    NSLog(@"event: %@", event.description);
    [self.friendNameTextField resignFirstResponder];
}

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
Interesting. I'm out of ideas, aside from the fairly useless suggestion that a text field might not be what you actually want.

HaB
Jan 5, 2001

What are the odds?

pokeyman posted:

Interesting. I'm out of ideas, aside from the fairly useless suggestion that a text field might not be what you actually want.

Weird. So I had set the VC as the textfield's delegate in IB, but I guess it didn't 'take' ?

Setting it explicitly via
pre:
[self.friendNameTextField setDelegate:self];
works. Weeeeird.

lord funk
Feb 16, 2004

HiriseSoftware posted:

Man gently caress this orientation-dependent bullshit on iOS 8. My view code for my educational game works just fine on < 8, but of course totally breaks on 8. My app is landscape, and I figured out how to get things to display correctly, but I have a problem with touches - with I get a TouchPhaseBegan touch, the touch coordinate is not correct - it's like the bounds of the view for the touches is rotated and the touch coordinates are on the border of the "view". Then when I get other events for the same touch, the touch coordinates are correct! I'm not sure kind of information it's using and what's changing between the Began phase and the others, but it's driving me nuts. I tried using "self" in locationInView, "nil", and a bunch of others, but nothing works.

Edit: VVVV It's my own engine but I just can't figure out why it's giving me wrong coordinates at the start of the touch but they're fine afterwards. I don't think I'm making any view changes between the two events. I was hoping it was a bug in the simulator when I first experienced it but I just updated my 5S and it's doing the same thing.

Don't use nil anymore for locationInView. iOS 8 changed the way the window bounds are calculated, so always do it in the view that fits your expected coordinates.

HiriseSoftware
Dec 3, 2004

Two tips for the wise:
1. Buy an AK-97 assault rifle.
2. If there's someone hanging around your neighborhood you don't know, shoot him.

lord funk posted:

Don't use nil anymore for locationInView. iOS 8 changed the way the window bounds are calculated, so always do it in the view that fits your expected coordinates.

Oh believe me I've tried a bunch of things to pass into locationInView, but nothing seems to be working. I even created a standalone view to just receive touches (as opposed to the GL view), but that doesn't work either. Here's some of my debug output (with comments):

code:
[iOS Touch Event] *** UITouchesBegan ***
[iOS Touch Event] POPULATING EVENT
/* View hierarchy - locationInView and previousLocationInView both are always being passed "self" (for the ApplicationTouchView instance) */
ApplicationTouchView 0x16f8de70
-T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0 /* The view's transform, frame, and bounds */
  ApplicationView 0x16ea8720
  -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
    UIWindow 0x16f7f360
    -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
[iOS Touch Event] New touch (phase 0) 0 0: 72.50 320.00 -> 72.50 320.00 (0) /* Values returned by previousLocationInView and locationInView - the Y should not be 320.00 */
[iOS Touch Event] *** UITouchesMoved ***
[iOS Touch Event] POPULATING EVENT
ApplicationTouchView 0x16f8de70
-T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
  ApplicationView 0x16ea8720
  -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
    UIWindow 0x16f7f360
    -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
[iOS Touch Event] Updated touch (phase 1) 0 16f98ff0: 72.50 320.00 -> 72.50 530.00 (17472080) /* Here the value returned by locationInView is the expected XY */
[iOS Touch Event] *** UITouchesEnded ***
[iOS Touch Event] POPULATING EVENT
ApplicationTouchView 0x16f8de70
-T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
  ApplicationView 0x16ea8720
  -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
    UIWindow 0x16f7f360
    -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
Updated touch (phase 3) 0 16f98ff0: 72.50 530.00 -> 72.50 531.00 (17472080) /* Here the XYs returned are correct */

Edit: If there are just UITouchPhaseBegan and UITouchPhaseEnded for the touch, for example the first phase would be 72.50 320.00 -> 72.50 320.00 and the last phase is 72.5 320.00 -> 72.50 530.00

HiriseSoftware fucked around with this message at 15:12 on Oct 13, 2014

Doh004
Apr 22, 2007

Mmmmm Donuts...
Does anyone else use the new(ish) HTML to NSAttributedString stuff that was added in iOS7? IE:

code:
NSMutableAttributedString *htmlString = [[NSMutableAttributedString alloc] initWithData:[[myString dataUsingEncoding:NSUnicodeStringEncoding] 
       options:@{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType } 
       documentAttributes:nil error:nil];
About half of the time, and this is even with me debugging, it'll take like 2-5 seconds to actually render everything into the UITextView. The text is never that large and the most that it contains is like one image and one link. CPU/Memory are fine. I thought it was maybe because it wasn't running on the main thread, but it is.

Doc Block
Apr 15, 2003
Fun Shoe

HiriseSoftware posted:

Oh believe me I've tried a bunch of things to pass into locationInView, but nothing seems to be working. I even created a standalone view to just receive touches (as opposed to the GL view), but that doesn't work either. Here's some of my debug output (with comments):

code:
[iOS Touch Event] *** UITouchesBegan ***
[iOS Touch Event] POPULATING EVENT
/* View hierarchy - locationInView and previousLocationInView both are always being passed "self" (for the ApplicationTouchView instance) */
ApplicationTouchView 0x16f8de70
-T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0 /* The view's transform, frame, and bounds */
  ApplicationView 0x16ea8720
  -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
    UIWindow 0x16f7f360
    -T=(1.00 0.00 0.00 1.00 0.00 0.00) F=(0.00 0.00 320.00 568.00) B=(0.00 0.00 320.00 568.00) Clip=0
Edit: If there are just UITouchPhaseBegan and UITouchPhaseEnded for the touch, for example the first phase would be 72.50 320.00 -> 72.50 320.00 and the last phase is 72.5 320.00 -> 72.50 530.00

How exactly are you detecting the touches? Something other than -touchesBegan... etc. ? Also, the fact that it's reporting your view as being 320x568 instead of 568x320 might be part of your problem.

Anyway, I made a little test app, and it doesn't exhibit any touch weirdness despite being landscape-only;

HiriseSoftware
Dec 3, 2004

Two tips for the wise:
1. Buy an AK-97 assault rifle.
2. If there's someone hanging around your neighborhood you don't know, shoot him.

Doc Block posted:

How exactly are you detecting the touches? Something other than -touchesBegan... etc. ? Also, the fact that it's reporting your view as being 320x568 instead of 568x320 might be part of your problem.

Anyway, I made a little test app, and it doesn't exhibit any touch weirdness despite being landscape-only;

No, I use touchesBegan. I'm starting to rethink all of my view/orientation code for iOS8 and start from scratch because what I was doing for pre-8 was kinda hacky and lot of trial and error (mostly because I just didn't understand it) but it worked great. There's probably something fundamentally wrong with what I'm doing with regards to 8, it's just weird that it reports a wrong touch location and THEN the correct one, even seemingly with the width/height in the wrong place. In addition to this problem I discovered issues with modal views appearing correctly (e.g. Game Center dashboards) so I think starting over will be best. Thanks for the help though! I'll take a look at your test when I have a moment.

Doctor w-rw-rw-
Jun 24, 2008

lord funk posted:

Don't use nil anymore for locationInView. iOS 8 changed the way the window bounds are calculated, so always do it in the view that fits your expected coordinates.

I usually use the gesture recognizer's view, then convert to window coordinates, then convert back into whatever target view is desired. Seems the most foolproof way to do it.

Doc Block
Apr 15, 2003
Fun Shoe
:ninja: You saw nothing :ninja:

Doc Block fucked around with this message at 09:44 on Oct 14, 2014

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
gently caress me, NSOperation KVOs on the keys isExecuting and isFinished, not executing and finished. No wonder my concurrentasynchronous operation was deadlocking everything.

I want those two hours back :doh:

WORLDS BEST BABY
Aug 26, 2006

Was there ever any more to Apple supposedly rolling out promo codes for IAP? I remember they tested it with EA, but has there been any news on it since?

HiriseSoftware
Dec 3, 2004

Two tips for the wise:
1. Buy an AK-97 assault rifle.
2. If there's someone hanging around your neighborhood you don't know, shoot him.
I resolved my issue(s). Like I said, I basically threw out all the hacky stuff that I did for <= 7.0 and let iOS take care of lot of orientation handling and it's been working well. I'll still keep the <= 7.0 stuff for legacy though, just because it already works.

ManicJason
Oct 27, 2003

He doesn't really stop the puck, but he scares the hell out of the other team.

pokeyman posted:

gently caress me, NSOperation KVOs on the keys isExecuting and isFinished, not executing and finished. No wonder my concurrentasynchronous operation was deadlocking everything.

I want those two hours back :doh:
Appending is in front of boolean properties is one of those weird Objective-C-isms that gets me every once in awhile. I don't understand why it's so important.

I'm not sure this is relevant to your current problem, but I always have an ugly NSStringFromSelector(@selector(keyName)) around my KVO stuff instead of using strings because of similar problems. I wish there were a prettier way, but it has saved my rear end a few times, especially times I've changed a property's name and unknowingly broken a contract somewhere else.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

ManicJason posted:

Appending is in front of boolean properties is one of those weird Objective-C-isms that gets me every once in awhile. I don't understand why it's so important.

I don't get it either, I think it's just a style thing. Usually I just follow along when I come across it, and since the default @synthesize'd KVC keys drop the "is", the only time it tends to bite me is when I try to (lldb) p [operation finished]. And, well, subclassing NSOperation.

quote:

I'm not sure this is relevant to your current problem, but I always have an ugly NSStringFromSelector(@selector(keyName)) around my KVO stuff instead of using strings because of similar problems. I wish there were a prettier way, but it has saved my rear end a few times, especially times I've changed a property's name and unknowingly broken a contract somewhere else.

Oh yeah, I've seen that before. I passed on it because I didn't think its utility outweighed its ugliness. But I think it would've saved me most of that two hours, so I'm definitely reconsidering. Plus will/didSetValueForKey: is already kinda ugly, so maybe I'll start using it there.

edit: Depending on your love of the C preprocessor, this might be a less ugly version.

pokeyman fucked around with this message at 19:41 on Oct 14, 2014

ManicJason
Oct 27, 2003

He doesn't really stop the puck, but he scares the hell out of the other team.

pokeyman posted:

edit: Depending on your love of the C preprocessor, this might be a less ugly version.
That's an interesting attempt to solve the problem of multiple level key paths as well. It seems a step too far for me to actually use, though interesting.

dizzywhip
Dec 23, 2005

ManicJason posted:

Appending is in front of boolean properties is one of those weird Objective-C-isms that gets me every once in awhile. I don't understand why it's so important.

It just goes along with the convention of favoring readability over brevity. object.isEnabled reads more naturally than object.enabled. I like it, but I really don't understand the convention of dropping the is for the setter. Fortunately I don't think Swift even lets you do that outside of importing from Objective-C, since you can't have a property that only has a setter.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

ManicJason posted:

That's an interesting attempt to solve the problem of multiple level key paths as well. It seems a step too far for me to actually use, though interesting.

We use it, just get over it and use it already. It prevents a lot of stupid bugs.

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

I thought the good doctor would beat me to it, but: the Paper team's AsyncDisplayKit is released at last. http://asyncdisplaykit.org/

Adbot
ADBOT LOVES YOU

Toady
Jan 12, 2009

I don't understand NSVisualEffectView well enough. I'm implementing a layout like Messages on OS X: a WKWebView sitting above a view containing an input text field. I want the containing view to have "within window" vibrancy in the area around the text field, but this does not occur when scrolling the web view. The root view in this hierarchy is set to use a CoreAnimation layer in IB.

Note that WKWebView can't be instantiated directly in IB, so I have a view that I manually add a WKWebView to. I've got "within window" vibrancy working fine in the window's title bar, but not the containing view sitting beneath the web view.

Edit: I realize I didn't properly understand "within window" vibrancy. I extended the bottom of the scroll view so that it was behind the containing view itself, and vibrancy is now visible in that view. However, I don't see a way to access the scroll view of a WKWebView on OS X so that I can adjust the contentInsets.

Toady fucked around with this message at 22:14 on Oct 15, 2014

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply