Monday, 2009-03-02

*** tpb has joined #melange00:00
*** madrazr has quit IRC00:26
*** madrazr has joined #melange00:26
*** chx is now known as chx_sleeping00:47
*** AlexUA has quit IRC00:58
*** madrazr has left #melange01:00
*** lyaunzbe has left #melange01:40
*** penyaskito has quit IRC01:47
*** SRabbelier has joined #melange02:02
*** ChanServ sets mode: +o SRabbelier02:02
*** haoyu has quit IRC02:23
*** osgeo_wolf has quit IRC02:45
*** bhy has joined #melange02:47
*** madrazr has joined #melange02:55
tansellSRabbelier, poke poke03:01
SRabbeliertansell: pong03:03
tansellSRabbelier, so..03:03
SRabbeliertansell: so?03:03
tansellSRabbelier, It would be really great if you could do a bunch of things for me regarding the load testing03:03
SRabbeliertansell: ah, do tell03:03
tansell1) add about 100 applications to the app03:04
tansell2) Give me a dump of a populated datastore03:04
SRabbeliertansell: you can use for that03:04
SRabbeliertansell: it defaults to adding 15, but you can easily change that to 10003:04
tanselloh cool03:05
tansellwhat does it seed?03:05
SRabbeliertansell: if you want it to work on a live instance, go to sitemap/, and change the "if isDebug..." line to 'if True' or something03:05
SRabbeliertansell: a whole bunch of stuff, including some org apps, and a whole bunch of orgs03:05
tansellwell they want me to do the load testing on some stuff running in the development cluster03:06
tansellrather then on the production cluster03:06
SRabbeliertansell: the script thingy is hooked to http://localhost:8080/seed_db by default03:07
SRabbeliertansell: but not when on appspot03:07
SRabbeliertansell: all I'm saying is that you can turn it on on appspot too :)03:07
tansellhow does it get through the authentication?03:07
SRabbeliertansell: how does what go through authentication?03:08
tansellthe needing to be signed in to submit apps and such03:13
SRabbeliertansell: that's why it's only enabled when running locally normally03:13
SRabbeliertansell: it makes sure there's an account for the current user; then does everything as if the current user did it03:13
*** dmitrig01 has quit IRC03:21
SRabbeliertansell: is the script readable enough?03:22
tanselldunno have yet to look at it03:25
*** osgeo_wolf has joined #melange03:29
*** madrazr has left #melange03:39
*** mithro has quit IRC04:39
*** osgeo_wolf has joined #melange05:05
*** mithro has joined #melange05:05
*** ChanServ sets mode: +v mithro05:05
*** gloob has quit IRC05:18
*** MatthewWilkes has joined #melange06:09
*** MatthewWilkes has quit IRC06:12
*** madrazr has joined #melange08:06
*** madrazr has quit IRC08:29
*** chx_sleeping is now known as chx09:21
*** madrazr has joined #melange10:11
*** AlexUA has joined #melange10:30
*** spsneo has joined #melange10:41
*** tlarsen has joined #melange11:03
*** ChanServ sets mode: +o tlarsen11:03
*** spsneo has quit IRC12:22
*** solydzajs has joined #melange12:23
*** ChanServ sets mode: +o solydzajs12:23
solydzajstlarsen: ping12:24
tlarsensolydzajs: I just wanted to find out if the official Melange release was going to be ready before the conference call.12:25
solydzajstlarsen: yes, I'm going to finish code review and then will prepare new release12:25
tlarsenDid you see the new simplified release instructions in the README?12:26
solydzajstlarsen: the new simplified process of creating release should take max 15 minutes12:26
solydzajsyes exactly12:26
solydzajsjust reviewed them12:26
tlarsenOK.  I will fork an official /p/soc-google/ release after the conference call and push it up to socghop.12:27
tlarsen(sometime this afternoon CDT)12:27
tlarsenErr, "CST" actually.12:27
solydzajstlarsen: ok great.12:28
tlarsenMonday pushes and reporting bugs is going to be the extent of my contributions for a while.12:29
tlarsenI got re-enlisted as a Python readability reviewer at Google.12:29
tlarsenThat will take up most of my 20% time.12:29
solydzajsoh ok, happens.12:30
solydzajshow is your app going ?12:30
*** spsneo has joined #melange12:35
*** spearce has joined #melange13:06
*** spsneo has quit IRC13:16
*** lhawthorn has joined #melange13:40
*** lhawthorn is now known as lh13:40
*** ChanServ sets mode: +o lh13:40
*** Alex_UA has joined #melange13:41
*** dhaun has joined #melange13:50
*** AlexUA has quit IRC13:53
dhaunI wonder if someone could put a note on the "list of participating organizations" pointing out that it's not real yet13:56
*** Lennie has joined #melange13:56
*** ChanServ sets mode: +o Lennie13:56
dhaunat least one person on google-summer-of-code-discuss apparently thought that list had any relevance ...13:56
solydzajsit's on the main page13:57
solydzajsthat this is testing period13:57
solydzajsand there is link to Testing Guide13:57
dhaunI know that :) some people apparently don't ...13:58
dberkholzmaybe there needs to be a huge watermark14:00
* Lennie drives over solydzajs14:01
* Lennie persuades SRabbelier to eat the cyanide sandwich14:01
SRabbelierLennie: EEP!14:01
SRabbelierLennie: evil bastid!14:01
Lenniecall :P14:01
Lennieslow people :)14:01
solydzajsLennie: looking for the number one sec14:02
solydzajsI cannot dial in14:03
solydzajsone sec14:03
eeanKDE was just accepted and I filled in the info, but its not actually showing up under accepted14:06
dberkholzit showed up for me after i explicitly clicked accept14:07
eeanand I don't have a "role" of any sort14:07
dberkholzkind of a weird UI, as i don't know what org would refuse acceptance into the program..14:07
SRabbeliereean: because you didn't fill in your org profile14:07
eeandespite the creepy message from myself telling me that I'm an admin :)14:07
eeanSRabbelier: I did too!14:08
SRabbeliereean: interesting14:08
eeannow no longer works14:08
tpb<> (at
SRabbeliereean: try org/edit/google/gsoc2009/kde/your_link_id14:08
eean404 for
SRabbeliernot org :)14:09
eeanThere is no such active entity.14:09
SRabbeliereean: I don't see an org admin for kde at all14:10
*** dberkholz has left #melange14:10
eeanwell I submitted, with nightrose as a backup admin14:10
SRabbeliereean: you didn't complete your admin profile...14:11
SRabbeliereean: you did however complete yoru organization profile14:11
SRabbeliereean: did you perhaps confuse the two?14:11
eeanyes quite possibly14:11
SRabbeliereean: ah, in that case, check your notifications14:12
eeanthis is asking personal stuff14:12
eeanso I did accept the organization admin14:12
SRabbeliereean: no....14:12
eeanI did accept the organization14:12
SRabbeliereean: you need to fill in that personal stuff....14:12
eeanbut without an admin its in purgatory14:12
SRabbeliereean: that personal stuff it's asking for is what you need to fill in for your org admin role14:13
eeanthe date widget is pretty horrible14:14
SRabbeliereean: why?14:15
eeanthe little tooltip keeps popping up14:15
SRabbeliereean: the tooltip will be fixed :)14:15
SRabbeliereean: known issue14:15
eeanand its rather easy for it to dismiss itself14:15
SRabbeliereean: (there's an issue for that)14:15
eeandon't ask why then :D14:15
SRabbeliereean: there's actually already a patch submitted for better tooltips I think14:16
eeannormally the tooltips are pretty nice, but its popup overload with the birthday14:16
SRabbeliereean: yup, indeed14:16
eeanwould be easier if it just specificed the format14:16
SRabbeliereean: we will use something growl-like for the tooltips14:16
eeanwow I founded KDE apparently :D, someone tell Ettrich14:17
SRabbeliereean: hehe, gratz14:18
eeanis student proposals going to have a search feature?14:22
SRabbeliereean: uhm, sorta :P14:22
eeanheh what does that mean?14:22
eeanits conspicuously absent from the student proposal page :D14:22
SRabbeliersolydzajs, lh, tlarsen, Lennie: I lost connection14:25
LennieSRabbelier, stop dropping out :P14:40
*** chx has quit IRC14:48
tlarsensolydzajs: OK, so do we need to remove some entities from the socghop Datastore?14:58
solydzajstlarsen: yes before we switch to new version, we need to remove all orgs, org applications, org admin and mentor roles and their documents14:59
solydzajstlarsen: I asked Sverre to make a diff between previous and current release for models15:01
tlarsensolydzajs: Ugh.  Shouldn't we just wipe the Datastore, then?15:01
tlarsensolydzajs: Except, maybe for the ToS and FAQ Documents?15:01
Lennietlarsen, if you do that you cant really wipe the program since those are program documents15:01
tlarsenIf SRabbelier is making the diff, maybe he would know best what entities to delete?15:01
solydzajsyep waiting for the diff from SRabbelier15:02
solydzajslet's wait and we will decide15:02
SRabbeliersolydzajs: one sec, fixing document thing first15:02
solydzajstlarsen: new release has been tagged15:02
tlarsensolydzajs: So, I shouldn't activate a new version on socghop until SRabbelier says it is OK?15:02
SRabbelierwell, shouldn't tlarsen wait for those fixes instead?15:02
solydzajsSRabbelier: yes15:02
SRabbeliertlarsen: If you push it I can activate it once all models are deleted if needed15:03
solydzajstlarsen: we have some fixes on the way15:03
tlarsenSRabbelier: OK.15:03
tlarsensolydzajs: Does that mean you want me to go ahead and fork /p/soc-google/ and then cherry-pick these fixes?15:03
solydzajs1. prevent from deleting used documents15:03
solydzajs2. end date for maintenance mode15:03
solydzajs3. possibility to put HTML for side-wide message15:03
solydzajstlarsen: yes correct15:04
*** MatthewWilkes has joined #melange15:08
tlarsensolydzajs: OK, then I can go ahead and start the /p/soc-google/ release process now?15:09
*** tlarsen is now known as tlarsen|afk15:10
SRabbeliersolydzajs: in notice area it now says "Cannot delete Document."15:11
solydzajstlarsen|afk: yes15:15
solydzajsSRabbelier: if the document is used as home page or ToS ?15:15
solydzajsSRabbelier: or as agreement ?15:15
SRabbeliersolydzajs: just home page15:16
SRabbeliersolydzajs: as we don't record anything else... :(15:16
SRabbeliersolydzajs: we could use a reference count?15:16
SRabbelierso up the document.reference_count if you start using it15:16
SRabbelierand decrement it if you stop using it?15:16
solydzajsSRabbelier: hmmm yep we could15:16
solydzajsSRabbelier: we need to check for agreements and tos too, so yep that would work15:17
SRabbeliersolydzajs: do you want me to implement that now?15:17
*** tlarsen|afk is now known as tlarsen15:17
solydzajstlarsen: what do you think about reference count for documents ?15:17
tlarsensolydzajs: How do you know when to decrement them?15:18
Lennie(wishes that references would actually work as they are suppossed to)15:18
SRabbeliertlarsen: whenever a user of a document stops using it?15:18
SRabbelierLennie: +10015:18
tlarsensolydzajs: Can't you just query to see if anything is referencing the Document?15:18
Lenniewe have more pressing issues then being able to delete a document :D15:18
SRabbelier(how do you unmute a conversation in gmail?)15:19
SRabbeliertlarsen: what would you query?15:19
SRabbeliertlarsen: there's quite a few different entity kinds using it15:19
tlarsensolydzajs: Every ReferenceProperty has a corresponding back-reference, right?15:19
SRabbeliertlarsen: except those don't work15:19
tlarsensolydzajs: That back-reference is implemented as a query.15:19
SRabbeliertlarsen: (since we use inheretance)15:19
* SRabbelier will shut up now15:19
solydzajstlarsen: oh right that's true15:20
tlarsenSRabbelier: the back-reference queries auto-added to the Model objects don't work?15:20
SRabbeliertlarsen: nope15:20
solydzajsSRabbelier: those should work15:20
SRabbeliersolydzajs: they don't15:20
Lennieroflmao :D15:20
Lenniethey never did15:20
tlarsenSRabbelier: Those should not depend on entity type.15:20
solydzajsSRabbelier: it has nothing to do with inheritance15:20
SRabbeliertlarsen: but they do15:20
SRabbeliersolydzajs: it does15:20
SRabbelierask Lennie ;)15:20
SRabbelierhe'll confirm15:20
SRabbelierand if they do, well that'd be nice15:21
SRabbelierand I'd be happily surprised15:21
solydzajsoh ok I know why15:21
solydzajswe probably cannot fix that :/15:21
SRabbeliersolydzajs: no, we can't15:21
LennieGAE fail :)15:21
solydzajsyep GAE fail15:21
SRabbeliersolydzajs: we've know this since PolyModel15:22
solydzajsSRabbelier: I forgot :-)15:22
SRabbeliersolydzajs: that's ok :)15:22
LennieI would say forget about deleting documents for a while15:22
Lenniego do something more useful :D15:22
SRabbelierI'll commit it as-is15:23
SRabbelierand Host/Dev should be careful not to delete referenced docs15:23
tlarsenI still find it odd that there is no way to craft a query to produce "ReferenceProperties that refer to me".15:23
SRabbeliertlarsen: that's because GAE can't query across entity types15:23
Lenniefind a way and we'll happily use it :D15:23
SRabbeliertlarsen: they'd have to do something like "SELECT ... FROM BaseType ... JOIN .. ", and then join in all the sub classes15:24
SRabbelierwhich we all know doesn't work too hot :P15:24
tlarsenSRabbelier: Sounds like we just need to be more robust about references that are missing the referrent.15:24
SRabbeliertlarsen: mhhh, yes, I agree15:24
SRabbeliermaybe we can write a trivial helper15:24
tlarsenThe ReferenceProperty documentation never promises that the referred-to entity will exist.15:24
SRabbelierthat tries to retrieve it, excepts the database error, and returns15:24
tlarsenThat is part of the non-relationalness of the Datastore and what allows sharding.15:25
SRabbeliertlarsen: isn't it possible to make a RP required?15:25
durin42SRabbelier: You could require it, but there's no promise that the row you're referring to would exist.15:25
tlarsenSRabbelier: the ReferenceProperty is required, but it doesn't have to refer to an existing entity.15:26
durin42Just because there's a value in an int * doesn't mean that you can successfully derefrence the pointer.15:26
SRabbelierdurin42: fair enough15:26
SRabbelierwell actually15:26
SRabbelier    """Get reference object.15:26
SRabbelier    This method will fetch unresolved entities from the datastore if15:26
SRabbelier    they are not already loaded.15:26
SRabbelier    Returns:15:26
SRabbelier      ReferenceProperty to Model object if property is set, else None.15:26
SRabbelierit makes a rather strong promise that it _will_ return the object, if it's set15:27
durin42That doesn't contradict what I said.15:27
durin42Well, ReferenceProperty if set15:27
SRabbelierdurin42: it does; they're saying that as long as you put something in the int* in the first place, it'll be there15:27
durin42Not the way I read it15:27
SRabbelierdurin42: yes, so if we set the property (which we do...)15:27
durin42I'd interpret that as "we'll get you the int*, but it might fail to resolve when you go to use it."15:27
SRabbelierdurin42: I dont' agree at all, it should say "ReferenceProperty to Model object if property can be retrieved, migth return None even if set"15:28
SRabbelier(if the semantics you mention hold)15:28
durin42SRabbelier: then submit a patch to the appengine guys15:28
SRabbelierdurin42: no, because I don't think you're right15:29
*** madrazr has quit IRC15:29
tlarsenSRabbelier: ReferenceProperties can be set to point to an entity, and that entity can later be removed.  The ReferenceProperty will still contain the (now useless) reference.15:29
*** Merio has joined #melange15:29
SRabbelierdurin42: i think it will always return the object if it has been set before; or raise an exception if the object is no longer valid15:29
SRabbeliertlarsen: in that case it will raise15:29
SRabbelier        if instance is None:15:29
SRabbelier          raise Error('ReferenceProperty failed to be resolved')15:29
tlarsenSRabbelier: Yes, it will raise an exception if you try to refer to the no-longer-existing entity.15:29
*** madrazr has joined #melange15:30
tlarsendurin42: I believe it only returns None if the property was never set.15:31
durin42tlarsen: ah, ok15:31
SRabbeliertlarsen: yes, that's what I meant15:31
durin42tlarsen: what does it return if it's a pointer to a dead entity?15:31
SRabbelierdurin42: i just told you, it raises an exception :P15:31
SRabbeliersolydzajs: committing fix for document deletion now15:32
SRabbelierlh: ping15:32
SRabbelierlh: we need to document that "Cannot delete Document" message will be displayed if you try to delete a document that's used as home page15:33
tlarsendurin42: SRabbelier is correct, it raises an exception.15:33
tlarsendurin42: It means that we need to wrap accesses to ReferenceProperties pointing to entities that can be deleted in try/except blocks.15:33
SRabbelieror a helper :)15:33
solydzajsSRabbelier: can we check that if you are deleting document that has program scope that you also check for agreements and tos ?15:33
SRabbeliersolydzajs: mhhh....15:34
SRabbeliersolydzajs: blech15:34
SRabbeliersolydzajs: make an issue for that15:34
SRabbeliersolydzajs: There's only have a few more hours left in today15:34
tlarsensolydzajs: Anyway, I am going to go ahead and fork the /p/soc-google/ release shortly.15:34
*** madrazr1 has joined #melange15:35
solydzajstlarsen: ok sounds good15:37
solydzajsSRabbelier: ok this is not so important right now15:37
durin42tlarsen: how thrilling15:37
tlarsensolydzajs: If it is not critical, then just record it in the issue tracker, please.15:37
tlarsendurin42: What is thrilling?15:37
tlarsendurin42: I've been doing these socghop releases.  :)15:38
durin42tlarsen: raising an exception on the referenceproperty15:38
tpb<> (at
tlarsendurin42: Ah, that.15:38
tlarsendurin42: What else did you expect?15:38
durin42I dunno, I sort of expected it'd be silent until you tried to use it15:38
tlarsendurin42: A scalable object store isn't a relational database, so it is going to require the app to maintain referential integrity.15:38
tlarsendurin42: De-referencing it *is* using it?15:39
durin42I guess I'm not clear when it raises.15:39
*** parren has joined #melange15:39
tlarsendurin42: If bar has a reference property named foo, then any right-hand side use of would raise.15:39
durin42Does it raise when you read the parent (referencing) entity, or when you try and follow the reference to the deleted entity?15:39
tlarsendurin42: Should be the latter.15:39
durin42tlarsen: ok, that's what I expected. I had understood what SRabbelier said backwards.15:39
* durin42 feels better now, goes back to finding his brokenness.15:40
solydzajstlarsen: will add to issue tracker15:40
parrenAnyone else get annoying temporary hangs with high CPU load in Firefox on Ubuntu (org application form)?15:41
* parren nods to durin4215:41
*** Lennie is now known as Lennie|Gone15:41
* SRabbelier wonders who parren is15:42
durin42SRabbelier: hg guy15:42
SRabbelierkk :)15:42
durin42SRabbelier: he's the Peter Arren<can't remember> that just emailed the list15:43
*** solydzajs_ has joined #melange15:43
* SRabbelier isn't seeing a mail yet15:43
parrenNo worries. It got answered already.15:43
SRabbelieroh, ok :)15:44
solydzajs_SRabbelier: how is it going with models diff ?15:46
SRabbeliersolydzajs_: I can do that now :)15:46
solydzajs_SRabbelier: thank you15:46
solydzajs_SRabbelier: just reply to my CHanges between previous release email with the information that this new release affects those models15:47
solydzajs_SRabbelier: ok ?15:47
tlarsensolydzajs solydzajs_ SRabbelier: please be sure to send me an email with the revisions that I need to cherry-pick (at your convenience).  Thanks.15:48
*** Alex_UA has quit IRC15:48
*** tlarsen is now known as tlarsen|afk15:49
solydzajs_tlarsen|afk: email sent15:49
tlarsen|afkHeh, acronym fail.15:49
SRabbeliersolydzajs_: sure, will do15:50
parrenAm I too dumb or is there really no search on the "List participating Orgs" page?15:50
solydzajs_parren: there is no searching functionality for lists yet, would you like to write a patch ?:P15:50
parrenDon't know Django at all, which I gather I would have to. :(15:50
*** madrazr has quit IRC15:51
solydzajs_I hate when people complain and don't do a thing.15:51
solydzajs_parren: you just have to be willing to learn15:51
parrenWell, my bandwith is currently allocated to my day job and hg. I just thought I'd give melange a quick spin as you guys were looking for testers. This is not making me feel very welcome in that role.15:53
SRabbelierparren: the comment was not really directed at you :)15:53
solydzajs_parren: don't worry ;-) I'm just having a bad day.15:54
parrenOK, fire away then. :)15:54
durin42parren: the testing is welcome, and the suggestion is probably a good one - might be worth an enhancement ticket :)15:54
solydzajs_hg is cool :-)15:54
SRabbelierparren: your efforts as tester are very welcome; please don't feel too obliged to submit a patch when you find a bug, it'd be awesome if you did though15:54
SRabbelierdurin42: there's already one :)15:54
parrenCan someone here accept the application for Mercurial?15:56
solydzajs_parren: one sec15:58
solydzajs_parren: the datastore will be cleared shortly but I will accept it now :-)15:58
solydzajs_parren: done15:58
solydzajs_bb in 40 minutes15:59
*** spearce has quit IRC15:59
solydzajs_parren: later today new release of melange will be deployed to socghop15:59
*** solydzajs has quit IRC15:59
*** madrazr1 has left #melange16:20
*** Jeff_S has joined #melange16:23
Jeff_Shi :)16:23
SRabbelierJeff_S: heya16:23
Jeff_SI'm filling out a mentor profile (accepted invite page) and have a couple small bugs.  Should I file them at ?  or is there someplace more specific to the socghop instance?16:26
tpbTitle: Issues - soc - Google Code (at
SRabbelierJeff_S: no, please file them there16:26
Jeff_SSRabbelier: thanks16:27
SRabbelierJeff_S: atm Melange == socghop :)16:27
Jeff_SSRabbelier: I thought so, but wanted to double check :)16:27
SRabbelierJeff_S: in the future we might start using soc-google for specific things, but there are none yet, so file away! :)16:27
SRabbelierJeff_S: np :)16:27
*** parren has left #melange16:35
Jeff_SI guess I'm too slow, already been reported and patch submitted :)16:36
SRabbelierJeff_S: hhehe :)16:36
Jeff_SI'm seeing very wide checkboxes with ffx (#258)16:37
SRabbelierJeff_S: known issue :)16:37
Jeff_Syep, clearly I don't keep up with the melange email list... there's the patch already ;)16:37
*** N4L|Lennie has joined #melange16:38
*** SRabbelier has quit IRC16:38
*** Lennie|Gone has quit IRC16:38
*** SRabbelier has joined #melange16:39
*** ChanServ sets mode: +o SRabbelier16:39
*** N4L|Lennie is now known as Lennie16:42
*** ChanServ sets mode: +o Lennie16:42 fell offline, did it?16:42
SRabbelierMatthewWilkes: hehehe, looks like it :P16:42
* SRabbelier kicks AMS-IX16:43
SRabbelierwell, that explains why it broked:
tpb<> (at
SRabbelierthe elastic band mustof snapped16:44
MatthewWilkes - the light is still on…16:46
tpb<> (at
SRabbelierMatthewWilkes: LOL! :D16:46
MatthewWilkes(You guys seen the IT Crowd?)16:46
* SRabbelier shakes16:46
tpbTitle: YouTube - It Crowd - The Internet // Czech subs (at
LennieMatthewWilkes yes16:47
Lennieits a nice show16:47
Lenniebut I prefer Big Bang Theory ^^16:47
MatthewWilkesnonsense :)16:49
tlarsen|afkUgh.  Lots and lots of dots...  Will they ever end?17:02
tlarsen|afk"Transmitting file data ................."  etc.17:02
SRabbeliertlarsen|afk: the joy of svn? ^_^17:02
*** tlarsen|afk is now known as tlarsen17:02
SRabbeliertime for Hg!17:02
tlarsenSRabbelier: Yeah, exactly.17:02
solydzajs_tlarsen: I had the same thing remember ?17:02
tlarsenSRabbelier: So, if hg were to be available in Google Code, do you think we would move Melange to it?17:03
SRabbeliertlarsen: _yes please_!17:03
solydzajs_we would for sure17:03
SRabbeliertlarsen: I'd work on getting git-hg to be good myself :)17:04
tlarsenWho knows.  It might happen some day.17:05
solydzajs_the issue has been accepted :-)17:05
SRabbelier#define "some day" Q217:05
tlarsenSRabbelier: "Google does not pre-announce products..."17:06
SRabbeliertlarsen: that's fine :)17:06
SRabbeliertlarsen: I'm pre-guessing :D17:06
tpb<> (at

Generated by 2.17.2 by Marius Gedminas - find it at!