Updated US Dollar prices

Exchanges rates change over time. And as we calculate our prices in Euro, we have to adjust our prices regularly. Of course you can always decide which currency you use for your payment. Often it is cheaper to order in Euro/USD as your credit card company may have the better exchange rate than the payment service you use.

Last year you paid $294 for a commercial Complete plugin license. Earlier this year we lowed it to $274, but today we recalculated and today you can buy the same license for $245. A saving of $49 US Dollars.

Map of blog readers

Last week I had the idea to try clustrmaps.com and make the visitors of the blog visible. After one week we have this result:

Please not that this does only count people browsing to the blog with a browser and not all the RSS readers or search machines.

REAL Studio Training

English text below.

REAL Studio Training München

Nachdem im Jahr 2008 bereits eine Schulung in Frankfurt guten Anklang fand, organisierte Application Systems Heidelberg als deutscher REAL Studio Distributor zusammen mit Brainworks Training eine REAL Studio Schulung für den 28. und 29. Mai 2010 in München.

Einige Teilnehmer waren schon Donnerstags in München, so dass wir uns am Abend vorher zum Abendessen treffen konnten. Im Restaurant Löwenbräu, direkt neben Brainworks gelegen, genossen wir bayrische Spezialitäten und diskutierten über Wünsche für das Training und Erfahrungen mit REALbasic.

Am Freitag starte unsere Schulung in den brainworks Schulungsräumen. Beim ersten Mal weiß man nie, wie viele sich anmelden, aber mit 6 Teilnehmern waren wir gut besetzt, darunter sogar einige mit weiterer Anreise von der Nordseeküste. Nach einer kleinen Vorstellungsrunde hatte jeder Teilnehmer die Gelegenheit seine Themenwünsche zu äußern, die alle an den zwei Tagen berücksichtigt wurden. Mit einem kleinen Programm für eine Einkaufsliste stiegen wir in REAL Studio ein. Den ganzen Vormittag verbrachten wir mit diesem Beispiel, wobei wir viel über Steuerelemente, Dateien und Druckfunktionen lernten. Zur Mittagspause gingen wir gemeinsam zum Griechen in den Biergarten. Die gesamte Verpflegung bei der Schulung ist übrigens in der Kursgebühr enthalten. Nachmittags ging es weiter mit einer Bilderdatenbank, einigen Beispielen zur Container Klasse, dem Declare Befehl und RBScript. Am Abend waren wir dann noch zu viert beim Italiener Abendessen. Gelegenheit Fragen zu stellen, Themen für Samstag zu besprechen und sich auszutauschen.

Am Samstag standen Netzwerkfunktionen auf dem Plan. Zuerst einmal ein einfacher Dateidownload von einer Webseite, dann das Verschicken einer Email. Ein weiters Beispielprogramm lädt mit einem HTTPSocket den aktuellen Euro/USD Wechselkurs von einer Webseite. Danach beschäftigten wir uns mit einem Chat Programm. Zuerst mit UDP Sockets ganz ohne Verbindungen mit Broadcasts im lokalen Netzwerk. Danach mit TCP Sockets zwischen zwei Computern. Mit dem ServerSocket konnten im 3. Chat Projekt dann mehrere Chats gleichzeitig laufen. Und durch die AutoDiscovery Klasse fanden sich dann die Chatpartner direkt ohne die IPs eintippen zu müssen. Da jedes Programm Einstellungen speichern muss, haben wir ein Projekt mit einem Modul für Preferences geschrieben. Zum Mittagessen ging es Samstags zum Italiener mit großen 32cm Pizzen. Nach der Mittagspause schauten wir uns anhand von zwei Beispielen intensiv die Dictionary Klasse an. An einem weiteren Beispiel haben wir uns Threads angeschaut um Aufgaben im Hintergrund zu erledigen. Danach beschäftigten wir uns mit den PDF Funktionen des MBS REALbasic DynaPDF Plugins: Rechnungen bzw. Briefe als PDF schreiben mit einem vorhanden PDF Dokument als Briefpapier. Zurück zum Netzwerk kamen wir mit einem Projekt, welches ein Formular auf einer Webseite abschickt. Dazu programmierten wir ein kleines Projekt für Twitter. Gegen Ende kamen wir zu den XML Funktionen in REAL Studio mit Beispielen zum Schreiben und Lesen von XML Dateien. Zum Schluss schauten wir uns noch ein paar Beispiele mit Diagrammen des MBS REALbasic ChartDirector Plugins an. Erfreulich war noch, dass zwei Teilnehmer von der Schulung am Freitag so begeistert waren, dass Sie spontan für Samstag verlängerten.

Wir danken Herrn Josef Neumaier und seinen Mitarbeitern für die nette Betreuung. Alle Teilnehmer bekamen von Application Systems Heidelberg das Buch "REALbasic für Einsteiger und Umsteiger" und von Monkeybread Software einen Gutschein über ein 6 Monatsabo für das REALbasic Developer Magazin geschenkt. Natürlich konnten die Teilnehmer alle Beispielprojekte mit nach Hause nehmen und wir freuen uns sie auf einer weiteren Schulung wieder zu sehen.

Euer Trainer Christian

REAL Studio Training in Munich, Germany.

After the training in Frankfurt in the year 2008 received good feedback, Application Systems Heidelberg, the official REAL Studio Distributor in Germany, organized together with Brainworks a REAL Studio training in Munich on 28th and 29th May 2010.

A few participants arrived on thursday, so we met for dinner. In the restaurant Löwenbräu, located next to brainworks, they serve excellent bavarian specialties. We discussed about REALbasic and expectations on the training.

We started friday in one of the training rooms in the brainworks office. On the first time, you never know how many attendees register, but with six attendees we were well-staffed. Not to mention that a few people had a long trip to come to Munich from the North Sea coast. All participants introduced themselves and expressed their wishes and topics to cover, which have been borne in mind. We started with a little shopping list project. We spend the whole morning to learn about controls, saving and loading text files and printing our shopping list. For lunch we went to a Greece restaurant with a beautiful beer garden. By the way all lunches, drinks and snacks are included in the training fee. On the afternoon we developed a picture database project. Also we learnt about the Container control, the declare command and RBScript with a couple of projects. For the evening a few of us met for dinner in a nice italian restaurant. The opportunity to ask questions, discuss topics for saturday and exchange experiences.

On saturday we had networking on the agenda: First a little file download from a website, second sending an email. Another sample project queried a website with a HTTPSocket for the current Euro/USD exchange rate. Next we started with a series of chat applications. First one using UDP Sockets with broadcasts in our local area network. Next one with TCP sockets between two computers. The third version uses a ServerSocket to allow several connections. Finally we added the AutoDiscovery class to find chat partners automatically on the local network without entering IP addresses. As every application needs to store settings, we wrote a project with a module to handle preferences. For our saturday lunch, we went to an italian restaurant with excellent 12.5 inches big pizzas. After lunch, we checked all the features of the dictionary class in two sample projects. In another sample we used threads to do work in background. Next we checked the PDF functions in the MBS REALbasic DynaPDF Plugin: How to write invoices/letters as PDF files using an existing PDF file as stationery. Back to networking we write a project to send a webform to a server. Our example posted messages to Twitter. Towards the end of our training we wrote two projects to write and read XML files. Finally we checked the chart options in the MBS REALbasic ChartDirector Plugin. We were happy that two participants were so excited about our Friday training, so they extended to stay for our Saturday training.

Thank you to mister Josef Neumaier and his staff for the excellent support. For our participants Application Systems Heidelberg donated a REALbasic book and Monkeybread Software donated a six month subscription for REALbasic Developer Magazine. Of course all participants received all example projects and we hope to see them again on one of the next trainings.

Your trainer Christian

MBS REALbasic Plugins, version 10.3pr6

New in the 6th prerelease of the 10.3 plugins:
  • QTMovieExporterMBS.SetupDialog functions can now be called with nil movie to show the generic dialog without a preview.
  • Added NSUserDefaultsMBS class.
  • Updated DynaPDF to version 2.5.0.523.
Download: macsw.de/plugin/Prerelease/

Frohe Pfingsten / Happy Pentecost

Enjoy a nice weekend!

For us here in Germany the sunday and the monday are both holidays, so offices are closed. But we will certainly find time to check emails.

This picture is from the St. Peter's Basilica in Rome.


MBS REALbasic Plugins, version 10.3pr5

New in the 5th prerelease of the 10.3 plugins:
  • Now more than 4000 inline example code pieces in the documentation.
  • Fixed SignedInteger64MBS.UnsignedInteger64.
  • Fixed UnsignedInteger64MBS.SignedInteger64.
  • PictureMBS.CopyPixels now returns boolean value for success or failure.
  • Added PictureMBS.Combine functions.
  • Added PDFPageMBS.Render.
  • Added constructors to NSBoxMBS and other Cocoa view classes.
  • Updated DynaPDF to version 2.5.0.522.
Download: macsw.de/plugin/Prerelease/

Last minute orders for our REAL Studio trainings in Germany?

Only one week is left until we have our REAL Studio trainings with brainworks in Munich on 28th and 29th May 2010.
Who has a ticket? Who needs a ticket? There are still seats available.
Do you have wishes for topics on those trainings? Email me.

More information: www.realsoftware.de/schulungen/

Neue Ausgabe der Hakin9

Es gibt eine neue Ausgabe vom Hakin9 Magazin:

Download: download.hakin9.org/de/Hakin9_DE_04_2010_DE.pdf
Website: hakin9.org/de/magazine/1066-download-mai-ausgabe-von-hakin9

English: There is a German magazine about IT security and you can download here the newest issue.


Change on the prereleases

Over the last year I uploaded a lot of prerelease plugin versions, but the bigger the plugin collection gets, the more time it needs.

Typically the process of compiling all projects on Mac, Windows and Linux, packaging and uploading can take 3 hours. But often it starts with adding some documentation for the latest additions and in that case I often find a bug, so I need to recompile again some plugins. Often it takes half a day for me.

So for the future we will reduce the frequency and only upload new plugins once a week. And we will publish the changes on the mailinglist and this blog.
If you find a bug and you need an urgent fix, we can email you the plugin file which changed and avoid uploading everything.

Plugins not registered? II

In addition to my recent blog post and the FAQ Entry, we can add another situation where registration can fail:

If you use remote debugging, make sure you clear the tempory files there, too. Else you may have old DLLs on your hard disc which may disturb your application.

A sale on REALbasic books

Seems like there is a sale going on some REALbasic related books:

At least I got an email with a coupon code so I can order them at discounted prices. But I have those books already so if you did not get this email, you can email me (or comment here) and I can forward you the email and you may use the coupon...

About an unique machine ID

From time to time I'm asked to add a plugin function for an unique machine ID. With the 10.3pr4 plugins we got a function for this: SystemInformationMBS.MachineID. I think a few people will be happy, but I need to warn about it. This ID may not be unique. Virtual machines can have the same ID as well as cloned installations. Also the ID may change over time. Maybe some values used for the machine ID or even the algorithm to calculate it can change. So whenever the MachineID does not match a stored one, you know that something changed. Maybe a new computer, maybe the same. But that is the time to reask for license information like a license key.

Now the Machine ID in my plugins is based on the serial number of the first hard disc in the computer, the brand string of the main CPU, the serial number of a Mac or it's model name. Those 4 values typically only change if you replace the harddisc or get a new computer. All the functions we use are exposed in the SystemInformationMBS module, so check them. You can build your own ID yourself if you like.

We do not use the MAC Address for the ID as it changes if you switch between wireless network and wired network. Also not counted in is the physical memory size as people like to upgrade their memory and the ID should not break too often.

More information: http://www.monkeybreadsoftware.net/pluginpart-systeminformation.shtml

MBS REALbasic Plugins, version 10.3pr4

New in the 4th prerelease of the 10.3 plugins:
  • Improved NSViewMBS.RenderImage and added new parameter for subviews which makes it working better with WebViewMBS.
  • Added to PictureMBS: FillRectRandom and CompareImages and added some speed improvements on FillRect and CopyPixels.
  • Splitted PDFKit plugin part internally into two parts. One with views and one without. So you can get a little bit smaller applications if you don't use the views.
  • Added PDFPageMBS.Render.
  • Added CustomPDFViewMBS class.
  • Added coordinate convert methods to NSViewMBS and PDFViewMBS.
  • Fixed bug with CustomNSViewMBS mouse handling.
  • Added new functions to SystemInformationMBS module: MachineID, HardDiscSerial and CPUBrandString.
  • Splitted WIADeviceManagerMBS into WIADeviceManager1MBS and WIADeviceManager2MBS. On Windows Vista you will want to use WIADeviceManager1MBS for digital cameras and WIADeviceManager2MBS for scanners.
  • Fixed WIAItemMBS.DeviceDialog
  • Fixed WIADeviceManagerMBS.GetImageDialog
  • Fixed a couple of WIA constants.
  • Improved PictureMBS.CopyPixels. In special case for RGB/BGR data the copy is done much faster if the images are similar constructed. We could optimize for other image formats in the future.
  • Updated DynaPDF to version 2.5.0.521.
  • Added classes to use USB HID Devices on Linux: LinuxHIDInterfaceMBS, LinuxUSBBusMBS, LinuxUSBDeviceDescriptionMBS, LinuxUSBDeviceHandleMBS and LinuxUSBDeviceMBS.
  • Added options to PNGReaderMBS class to support reading PNG pictures in iPhone format.
  • Changed most CURL examples to use CURLSMBS instead of CURLMBS to make them working on Windows right away.
  • Added QTGrabberMBS.DisableDecode property so you can reduce CPU time if you don't need frames currently.
  • QTGrabberMBS now does creating RB picture of CurrentFrame on demand to reduce CPU usage.
  • Added SummaryMBS class.
Download here: www.macsw.de/plugin/Prerelease/

USD vs. Euro

Just a little hint: If you sit in the USA and you want to order some plugins, the price can be lower if you order in Euro than in USD. So please compare.
We adjust our prices from time to time and it seems this week as if the rates change faster than we want to update our price lists.


Soon in the MBS Plugins

One customer ordered HID classes for Linux, so they will come soon to our plugins.
The WIA classes should be finished now and work on Windows Vista for digital cameras now. So from Windows 2000 to Windows 7 you should be able to get your photos imported.
Last week I got a request to support reading PNG images in the iPhone format. I'm not sure, but when I have time I'll look into that.
And it looks like Mac OS X has a nice set of functions for making text summaries. Eventually we get a class for that, too.
So, look forward for 10.3pr4 next week.

Update on our REAL Studio trainings in Germany

As you may know we have REAL Studio trainings with brainworks in Munich on 28th and 29th May 2010.
Today I got a notice that we have enough people, so the training will take place. Still there are seats available and you can order your ticket.
In one of the announcement emails there was a note saying that registration would end today, but that is wrong. Registration is still open next week.

More information: www.realsoftware.de/schulungen/

Runtime Revolution?

Every year someone asks for Runtime Revolution. Of course, if a company would call and say "We order the function x for Runtime Revolution", I would start and write them that function. But in general is there an interest into plugins for Runtime Revolution?

The plugin API for Runtime Revolution has this features. You can
  • declare custom commands and functions
  • send messages to current card
  • evaluate expressions
  • get and set global variables
  • get and set local variables which includes access to key/value dictionary and arrays
  • get and set fields by name, index or id.
  • redraw images by name, index or id.
This means you can not:
  • declare classes, modules or controls
  • pass arrays or dictionaries as function parameters
  • access image objects directly
This limits possible plugins to basicly have only global functions. Functions that take an array would take the name of the local array variable and lookup the array values using that name.
So is there someone who has interest? And especially companies who want to order custom plugins?

Improvements on the Documentation

Today I modified the documentation utility here to add three new things:If you have more ideas, please email us or post a comment.

One year since church wedding

Today we close the office and celebrate our first year being married. (more)

Another Feedback item you may be interested

Internal REAL Studio Plugin DLLs should have build number inside
feedback://showreport?report_id=12178
Our MBS Plugins have build numbers in the DLL so putting libs together from different plugin versions would never be a problem. But REAL Studio in different versions may have incompatible plugin dlls, so this could get you into trouble over the years. To avoid, we suggest to add build numbers.

Plugins not registered?

Sometimes people email me. They have an application made with REAL Studio and it complains about unregistered plugins. In this case I can only suggest to the user to reinstall the application for the case it is broken and suggest he emails the developer.
For the developer I can point you to our FAQ Entry.

Podcast birthday

Last week friday our podcast turned 2 years and I forgot to tell you.
Nevertheless you can go on monkeybreadsoftware.de/realbasic/movies/ and enjoy our videos.

And you can subscribe to our podcast on iTunes: iPhone/iPod or High Resolution.

Do not hesitate to send us suggestions and wishes for new videos.

MBS Filemaker Plugin 2.1 prerelease 2

On our website you find a new version of our Filemaker plug-in.
  • Improved WebView.GetFormSelectValue and WebView.SetFormSelectValue to work with multiple selections. Multiple values are comma separated.
  • Fixed a bug in the JPEG functions so they work again.
  • Fixed Container.GetTypes which was named Container.GetType in 2.0 release.
  • Fixed a bug with callback from webviewer to Filemaker 11.
Download here: monkeybreadsoftware.de/filemaker/files/

Fix the Spotlight search on Mac for REAL Studio projects

With REAL Studio REAL Software changed a few IDs like the bundle ID and the document type IDs. And that changes breaks Spotlight indexing.

To fix that you can do the following:
(more)

Update on trainings

As you may know we have REAL Studio trainings with brainworks in Munich on 28th and 29th May 2010.
A few people have already ordered their tickets, so I'm very confident that we get a nice training.

And if you registered, you can email me so we can get in contact. Maybe going to dinner together?

More information: www.realsoftware.de/schulungen/

Boat trip on the Rhine

A few pictures of our boat trip today along the Rhine with views to the city of Andernach: (more)

Update for our MBS REALbasic QuickLook Plugin

I updated the QuickLook plugin:
MBSREALbasicQuickLookPlugin.dmg

EmailMessage trouble

Today I sent my email newsletter to my customers. I use a self written application for it which uses the EmailMessage class. Now there is a problem: If you use text from an editfield/textarea control and pass it to the EmailMessage as BodyPlainText, it will use on my Mac the Mac line endings. That is no problem if you use Apple Mail, but if you use Windows Outlook Express 6 or Windows Eudora Version 7 or something else, it can happen that you see the whole text without line endings. All the text in one big paragraph. The solution in REALbasic is easy: BodyPlainText = ReplaceLineEndings(BodyPlainText, EndOfLine.windows). Simply convert line endings to the Windows format and you are done.

If you got my newsletter and can't read it well for any reason, please email back and we send you a PDF file with the content.

Using ServerSocket with a system chosen port

Something I learned today: If you offer an service in your application and you announce it on the network using Bonjour, you can pass a port number. But you don't need to ask the user for a port number or hard code one. You can simply let the operation system pick a port for you:

ServerSocket1.Port = 0
ServerSocket1.Listen
MsgBox str(ServerSocket1.Port)

So you specified 0, you started the socket and now you can read what port you got. If you announce this port now on Bonjour using our DNSServiceRegisterMBS class, your clients will easily find you.

How to Avoid Economic Ruin

A book from Dana Brown and still a good reading. Maybe you want to take a look?

avoideconomicruin.pdf


InStrR Function: Search the last postition of a string in a string

Same as InstrR, but returns the last position, not the first one:
  Function InStrR(Target As String, Find as string) As integer
Dim LastP As integer = 0
Dim P As integer = InStr(Target, Find)

While P>0
LastP = P
P = InStr(LastP + 1, Target, Find)
wend

return LastP
End Function

Macs on ebay

We got a couple of new Macs, so a three older models have to go:
Mac Mini (1,5 GHz Core Solo, 2 GB RAM, 250 GB hard disc & WLAN)
Mac Pro (2,8 GHz 2x Quad Core XEON, 16 GB RAM, 3 hard discs & WLAN)
Macbook 13" in black (2,2 GHz Core 2 Duo, 4 GB RAM, 320 GB hard discs & WLAN)
If you like, make a bid and maybe you win. I could bundle it with a plugin license ;-)

A QuickLook Plugin for REAL Studio Projects

You have several REAL Studio versions in use? Want to know in advance what version a project has?
Well, in that case, try our new plug-in for QuickLook:
MBSREALbasicQuickLookPlugin.dmg
Before you install it, your project icons look like this:

but after you installed our plug-in to /Library/QuickLook and you restarted the Finder or logged in the next time, your icons look like this:

Enjoy! This plug-in is freeware, so tell your friends.

Speed optimization in REALbasic Code.

Today someone asked why this code is very slow:
// Methods
Sub Slow()
// Takes over 15 minutes here

dim t as integer = ticks

dim mem as MemoryBlock = NewMemoryBlock(128*1024*1024)
dim n as integer

for n=0 to len(mem)
mem.Byte(n)=rnd*255
next n

t = ticks-t
MsgBox str(t/60)+" seconds"
End Sub>
now calling len(mem) here does the following:
  • Create a copy of the memoryblock as a string.
  • Lookup the length of this string.
  • Destroy the string.
And this happens all 128 million times! This takes forever. The solution is easy: Use mem.size instead of len(mem) you can save a magnitude of time. Also you should keep the upper bound of the for loop in a local variable for even faster code:
Sub Better()
// Takes 27 seconds here

dim t as integer = ticks

dim mem as MemoryBlock = NewMemoryBlock(128*1024*1024)
dim n as integer

dim c as integer = mem.size-1
for n=0 to c
mem.Byte(n)=rnd*255
next n

t = ticks-t
MsgBox str(t/60)+" seconds"
End Sub
You can even optimize it more by using the Random class and requesting a random value in a given range. Integer math is faster here than double math:
Sub Best()
// Takes 21 seconds here

dim t as integer = ticks

dim mem as MemoryBlock = NewMemoryBlock(128*1024*1024)
dim n as integer
dim r as new Random

dim c as integer = mem.size-1
for n=0 to c
mem.Byte(n)=r.InRange(0,255)
next n

t = ticks-t
MsgBox str(t/60)+" seconds"
End Sub
PS: Code formatted with my format script: monkeybreadsoftware.de/realbasic/format.shtml

REALbasic Developer Magazine 8.4 published

Go and get your copy. And maybe you want to send me comments? I see there are two articles from me in that issue.


REAL Studio 2010r2 released

REAL Studio 2010r2 was release today.
This is a decent update to REAL Studio. I think everyone will find his favorite item in the release notes. And please do not whine about missing Cocoa target. They are working on it, they make progress, but it is not good enough to actually use it in a project. A few of the highlights from the release notes:
  • They fixed several bugs/crashes around exception handling
  • The Libs folder can now be renamed "Libs", so you can share DLLs between several REALbasic applications in the same folder on Windows.
  • Printing a project can now include the pictures from the window editor.
  • The reference will load from the wiki if you are connected to the internet.
  • SSL Sockets now default to SSLv3, so check your code!

The release notes list 17 new things and 68 fixed things.
As far as I see it works well with my plug-ins. If you find an issue, please report as soon as possible.

Macwelt REALbasic Articles in German

Zwischen 2000 und 2002 erschienen in der Macwelt zwei Serien zu REALbasic. Die alten Artikel habe ich damals geschrieben und durfte Sie auch auf meine Webseite setzen. Und hier sind sie nochmal zusammengefasst.

Ich denke als deutsches Tutorial sind sie immer noch gut geeignet und REALbasic Anfänger.

Download: macwelt_realbasic_serien.pdf
siehe auch monkeybreadsoftware.de/realbasic/macwelt.shtml

English: between 2000 and 2002 the Macwelt magazine published two series of REALbasic tutorial articles from me and I think every german speaking REALbasic user may want to take a look.

New REALbasic Developer issue next week

Next Monday (tomorrow), Marc Zeedar will publish a new issue of the REALbasic Developer Magazine.
From my view it is good to have a magazine in the REALbasic world and I like the magazine. It's much more up to date than any of the books. The magazine is currently distributed as PDF files, but you can order the yearly books or get the CD with search options.
I recommend you to buy the available books as well as a subscription to the magazine if you want to learn REALbasic. Also check the back issues.

And for my blog readers we have a little gift: 3 six months subscriptions for free.
If you want one, send us an email, a text message, post a comment or use the feedback form to inform us with your email address. We will select three people randomly on sunday night.

Update: Sunday ended and we got our winners. Thank you.
The biggest plugin in space...

Archives

Nov 2024
Oct 2024
Sep 2024
Aug 2024
Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008