Files
hpr-knowledge-base/hpr_transcripts/hpr0417.txt
Lee Hanken 7c8efd2228 Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use
- Search episodes, transcripts, hosts, and series
- 4,511 episodes with metadata and transcripts
- Data loader with in-memory JSON storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 10:54:13 +00:00

337 lines
31 KiB
Plaintext

Episode: 417
Title: HPR0417: Mozilla Addon usability
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0417/hpr0417.mp3
Transcribed: 2025-10-07 20:10:07
---
Okay?
Hi, my name is Gordon Zincler, my handle on IRC is this whole web. This hacker-public
radio edition is going to be a little bit different. It's on the add-on framework in Mozilla
Firefox and Mozilla Thunderbird as well as the other Mozilla products. I only use those two so
that's what I'm going to concentrate on. The reason it's a little bit different is because I am
recording this as a screencast with GTK recording my desktop. The audio of the screencast is
going to be the MP3 file and the video will be an optional download on IRC. The reason I'm doing
this is because it's easier to show what I'm talking about than to explain. I'm going to keep
trying to keep in mind that there's going to be an audio only section or audio only version. I'm
going to try to remember to describe everything that I'm doing that you could see in the video.
Ideally, I want this video to be seen by developers of the Mozilla applications as well as the
add-ons for the Firefox and Thunderbird and whatever. In part, it's trying to suggest
more user-friendly ways of reorganising things, changes that could be made to make these applications
much smoother for the users. After the ramblin explanation, I'm going to start off with Firefox
as I'll go on to Thunderbird later on. I've got this as if you're watching the video. You'll see
this as the Linux Mint default start page with Firefox. It's also the XFCE Mint for those that are
curious. It's not the default skin, but not the default theme even, default icons but not
default theme. Anyway, so what's that off? We're looking at the add-ons. This whole thing is
about the add-on framework that the Mozilla has. First of all, you bring up the add-on window
in Firefox. The first thing that you could use for is you can search and the Firefox one you can
search. In Thunderbird, you can't. It doesn't have a search option. It's different, basically.
But the search feature is only as good as a result you can get from it. So if you hear, for example,
on a podcast, they say, right, no scripts is brilliant. You've got to try no scripts.
Well, so, okay, nope, if I can spell it out, no scripts. So you come in here and you search for it.
Expecting it to come up and, well, nothing. There's a few there, but no script. No, no script
theme. So what was it? Was it a no space in there? A no space?
Oh, nothing. Take away the space. It's not that. So was it somewhere?
No script. No, there you go. No script with no space.
Now, if that's something that you know the name of, I keep getting mixed up with.
Is it singular or is it plural? That shouldn't really make any difference. It's not
the all of the add-ons for the whole Mozilla suite are hosted with the odd exception.
And they're almost all hosted on addons.mozilla.org sub domain of Mozilla.org.
Now, with that, you've got surely there's one group of administrators that are keeping track of that.
So how is it not, is it possible? I don't see why it's not possible to map various variations on
that, you know, like the singular with no space script or no scripts, no space scripts.
I don't see why it's not to map all these variations to the same add-on because that's essentially
what they're looking for. The site is certainly large, there are a lot of extensions,
there are a lot of add-ons, but they're not, it's not as if it's Google, you know, it's not as if it's
going out and having to find some robot rules to go and index the entire internet.
And, you know, this, especially for the mature add-ons, I've been going on for a while,
and I've had quite a few revisions, this shouldn't be too difficult to do, it really shouldn't,
and it would certainly make it so much easier to do that. And, on top of that,
if the search could actually pick up stuff, not just in the names, but in the,
in the descriptions as well, it would certainly help. Now, with that in mind, the next thing is the,
what you've got here, the add-ons section, is basically it's a package manager,
but not a real package manager, it's a sort of a, something could become a package manager.
If it was, if it was done right. Now, for those who don't know what a package manager is,
that's basically the Linux users have been, have had the experience of a package manager for a long,
long time, whether it's Yum or Yast or Synaptic or whatever. That same principle could very easily be
applied to the Mozilla Suite as a separate program to handle all the updates to the extensions,
and installation removal of the extensions right across Thunderbird, Firefox,
Songbird, CMUNK, whatever. I mean, you could use the package manager model
and the repository model to do that. And, I mean, that one advantage would be, it would give
Windows users the, the, the joy and the experience of using a proper,
meta-proper software manager to install stuff, which gives them a much better head space to
understand why Linux is, is one of the reasons why Linux is so good, because with Linux,
you do that with your, with all your packages. You've already got plenty of, of categories and
plenty of ways to split it up and filter it out. So, so there's that. Now, the, the other part
that makes this not a package manager is the fact that you've got to install them one at a time.
With a package manager in Linux, you can search for different things, you can click on it to say
install, and it won't install yet, what it will do is add it to the queue and let you search for
more stuff and click and install this next program and, you know, remove that program and install
this one. And only when you, when you're ready, you can then tick apply or okay or accept or whatever
that the button's called. And that'll then give you the, the summary. It'll switch to a summary tab
or a summary window that says that lists all the things that you, all the changes you've made.
And then, let's, let's just okay it and it'll start downloading and installing them.
Or you can go back and cancel and go back and, and remove stuff if you've made a mistake.
Well, you could, you could apply the same thing here and have a queue icon, a queue tab up at the
corner of here. Call it a queue, call a basket, call an installation, call it whatever you want.
But something there that would just when you click to add it to Firefox and remember what I'm
talking about is a, an add-on manager that would cope with, that would cover Thunderboard and,
and all the different other Mozilla apps as well. So it'll be add to Firefox, add to Thunderboard,
add to whatever. And it would just silently add them onto this list. Then,
and, um, which point you could then, 20 already, just click on to the, on the queue or the installation
tab and see the list and it would all be pre-ticked. You can then go down and, and un-tick the ones
you've made a mistake with or clear them or whatever, clear them from the list or, and then,
uninstall button in the bottom. And once you click install, then it'll go and do them all at once.
You could even have a running total, you know, it'll take up six meg of, uh,
of download time, uh, download space or whatever, you know. There's plenty of ways you could,
you could sort of look at that. Um, you could also set it so that when you, when you close Firefox
or when you restart it, if you've got stuff in, in your, in your installation queue,
it could then pop up with a little warming. I mean, at the moment, if I go to close Firefox,
it'll tell me there's tabs open, there's multiple tabs open. Uh, you're about to close two tabs,
are you sure you want to continue? I'll cancel that for now. But that's picking up that there's,
there's something you might want to get a pay attention to. Uh, when you, you can set it so that
if you're in the middle of downloading something and you go to close it or warn you as well, uh, you can
set, like, down them all, uh, to continue downloading after Firefox is closed. So you could also have
that triggered to, uh, if you've still got stuff in the, in the installation queue to, uh, to, to figure
that and say, look, uh, a little, a little warning that says, or you've, you've got, uh, add-ons, uh,
that are in, in your, in your installation queue, what do you want to do with them? Uh, and you could
have various options like, uh, just install all of them or, uh, close or restart without installing
any of them or open up the manager and let me see them, open up the queue and let me see it,
which is basically opening this window with that installation queue. So you've got various,
uh, various options in the way you could do it. Um, what you could also have it triggered
and they do as well is in the themes. Now, the reason I mentioned this is because ages and ages ago
when I first came to Firefox, I, I've, I've, I've realized, um, that, oh, there's, there add-ons
themes and I installed three or four themes and it said when you restart, uh, to, uh, to install
the themes and I did that and none of the themes that still looked the same until I realized that
I had to actually come in here and click on the, on the theme I wanted and use theme in the end
restart. So you could also have that same, uh, installation trigger or the closing trigger, um,
thing to remember to work out that, hey, you've just installed a, you've, if you've installed
any themes in that session, in that browsing session, for that, that to pop up and say, oh,
you've installed new themes, do you want to switch to a new theme when, when you Firefox
re-starch, no, or, uh, if it's yes, it brings up the, this themes, uh, part of the, of the add-on
manager, you can select it and then continue to, to restart or close down or whatever, whatever
it was you were trying to do. So that sort of integrates things and off a lot more in the, in
the add-on manager. And even if you have the one add-on manager as a separate application,
rather than, uh, something that's built into Firefox or built into Thunderbird, um, not only
can you tie it together, but you could also run that on its own without Firefox and then go through
and create a new profile and add this set of, of preset, uh, add-ons into it and have it install
with various settings into that profile or export that profile out to a file, uh, out to a USB
stick or, uh, you know, and you, you could do, um, I mean, right now, I don't have Thunderbird open,
but with that add-on manager, I could say, right, I'll add this to Thunderbird, this, this, this,
I'll add that theme, I'll use that theme, uh, I'll add this, this, this, oh, songbird as well,
I'll add this, this, and this, this to songbird. I don't actually use songbird, but that, that was a, um,
if you've listened to my other episode, I'd rather, I'm rather fond of my audacious, uh, just here, um,
so that's, there's lots of advantages to doing the package manager style approach,
to Thunderbird, um, and that package manager could be basically a separate program that ties in,
uh, to, to every other, uh, Mozilla, uh, application.
Oh, right, so with that in mind, um, onwards, this, so at the moment, as I said, you have to
install, uh, manually one at a time with, with Firefox and Thunderbird. Now, if you see down here,
um, happened to be on, on the page, that's the Firefox up, the Firefox, um, add on. You can install
add on two ways as, as people know, you can click on it here, uh, and then the, the, the window opens up,
uh, a huge, huge window, uh, that covers the add on, add on manager of the add on menu, add on window
even, uh, it, it's huge. I mean, there's a lot of wasted space there, as well as it's covering buttons
and, and all the rest of it, but we'll install that for now anyway, because we won't know.
Um, the,
right, this is another issue as well, um, the, the fact that the, the menu comes down, this,
not menu, this notification, slides down there. Now, any application that comes in at the top
like that, and slides, uh, everything else below it down is not a good idea. I'll just install
something else here, uh, save your eye, just to point out something, or point out why, so if I add that,
and install. So if we're going to, uh, crystal quote, that happened rather quickly. The point
or what I was trying to do there, um, but you can imagine it anyway, is if while that's installing,
and when there's no message there, you can line up to press, uh, to, to have a button underneath
the mouse. Underneath the pointer, just about to click it, and this, this thing kicks in,
and as a result, everything below it slides down a little bit. Now, that, that could mean that,
whatever you're trying to click on, just slides out from underneath your pointer.
Now, I'm, I'm not the only one, but that drives me absolutely mental. I hate that. I absolutely hate
that. That to me is, is one of the, one of the cardinal sins of a UI, uh, design, is something
that slides in like that, that make, that forces, uh, stuff to move from underneath your pointer.
I absolutely detest that. It's one thing to have that space always free, so that it doesn't,
nothing moves below it. That's, that's one thing. Uh, but to have it slide in like that,
or even have it slide in at the bottom, where it's not affecting anything else. That's, that's fine.
Um, well, at their point, that's, that's fine. So, what I was, the other thing that I started
on the side track from there was in, uh, Firefox has, it knows, if I click on, uh, on a, an, an add-on
here, and on the website, it knows that, oh, I'm, I'm a Firefox, a typical Facebook, the
UI, right? Uh, the, the add-ons for Firefox and for Thunderbird are XPI. There you go at the
bottom there. Um, add-on 8442, uh, latest.exp, XPI. What Thunderbird is the same, their XPI as well.
But if, for some reason, except an install, well, most, most add-ons don't have ULS, so it'd
just be installed. Um, you click on it, and it comes up with the usual installer. It knows that
it's supposed to be Thunderbird, it knows that it's supposed to be Firefox. Uh, so if we go
and check the Thunderbird once, uh, let's pick the first Thunderbird one that it comes up with
without any mail. Download now. I mean, where's the install? You have to get all these instructions
right click and save it as a link and then open it from the tool. It's an XPI file just like the,
just like the Firefox one. Oh, excuse me. It's an XPI file. Now, whatever is in the Firefox XPI
to tell it that it's a Firefox, uh, add-on, why can't that same thing apply to the Thunderbird?
To tell it's a Thunderbird, uh, add-on, so that if you click on that, it knows. Oh, I'm Thunderbird.
I won't try to install in, uh, in Firefox, I'll install Thunderbird.
What, I don't, I don't understand why that's, why that's not done. Uh, it just, it seems awkward
to, to do it the way there is, uh, where it could just be a single, a single click. Uh, the same
obviously if you're doing what the package, the package manager type approach, you could include
Thunderbird, uh, in here and it would be the same thing. Add to Thunderbird or add to songbird, add to
C1K, whatever. Um, I don't understand why that's not done here. Um, I mean, even if, if it,
if it could be, but if it can't be done in, in like any sort of normal, or hesitate to say normal
way, really. Um, even if it's a, like some XML statement that reads it as Thunderbird, or even a
different extension, you know, XPM for mail, or XPT for Thunderbird or something, just something
that, that can distinguish it. Because this, this is not a good idea at all.
So, uh, that I have no idea, uh, I've never used a save URI or the, the Facebook one,
uh, I come on here for no script to do this demo. But anyway, so we've got that all
on done with. The next thing is the restart. Now, why, why, um, the Mozilla applications have to
restart to apply plugins? I don't know. Um, I thought that, that was history when I left Windows.
I guess, um, when you're too used to something working well, um, you kind of resent the fact that,
you see me be going back in time, um, with, uh, with some, some applications. Now, the, um, in Linux,
uh, the only time you have to restart to apply anything is when it's a kernel update, or where it's
a, uh, uh, a video card, uh, a video driver update. That's it. Other than that, everything, every
update, uh, every installation or removal, uh, is applied on the fly. Now, it might be that,
because, uh, this, that's just how Zool works. I don't know. It might be that, um, the, the fact that
it's, it's cross-platform, that it's, it's got to, to deal essentially with the worst common
denominator, uh, to, to be able to be the same across, um, Windows, Apple and, and Linux. Uh,
that could be another reason for it. I don't know, uh, but certainly one of the strengths of, uh,
opera is the fact that when you, you apply or when you install a theme or a plugin,
uh, it loads it in the switches to it, uh, instantly without having to restart. So you can,
you can try the, the theme out, you can, uh, you can try the, the add-on out. And if, uh, if you like it,
one of the one, the, the window that opens up, uh, there's a little, little box opens up and it says,
do you want to keep this? Yes or no? If you say no, it'll uninstall it and revert back to the way it was.
Uh, if you say yes, that window, I'll go away and it's already installed. Um, so I would love to see
that functionality in, uh, in Firefox. Is this restarting? Um, that's, uh, that's very much like,
it reminds me of too much of Windows. It's not a pleasant, it's not a pleasant thing. Uh, there's,
anyway, so we'll restart just now. Um, you'll notice here there's two, uh, there's two tabs.
Now, uh, I state that because there's going to be more than two tabs when it opens up, which is my next point.
Uh, there may be, well, we'll see.
Oh, right. Now, we're back in here. Um, the reason I picked, uh, what there you go,
we've got the Linux Mint, start and page, the Thunderbird add-ons, that was the two that we left.
And this new one is the no script tab. Now, the reason I've picked no script and the reason
they're not the only ones that do it. Uh, there's, there's quite a few of the, uh, the add-on
developers are doing the same trick as when you install, uh, their add-on or when you update
the, uh, the add-on. It opens up a nice new tab without giving you any option to switch off
uh, and, and visits their website. Now, in this case, quite often, uh, is their, their page of
thanks for installing, whatever. Now, it's fair enough. Sometimes it's, it's, uh, like in this,
in this case, it's like, change logs and things like that. Um, things have been added to the,
the extension and new features, that type of thing. Now, the, the point I'm making with this is,
first of all, with no script, what do people use no script for? It's to give them control
over what scripts open and what, what ones don't. Uh, and no script to make sure their own page gets
a hit. Uh, I've decided to just exempt themselves from that, uh, on the installation or update.
Uh, the, as far as the, the information that it's given you, most people couldn't give two hoots
about any of this. This is just a page of text that only means something to the people who are
interested in it. Average users couldn't care less about any of this. I understand some of it,
not very much, but I'm not interested in looking at it. The people who are interested, uh,
in, in finding out which cross-side script and updates have been, have been fixed and, you know,
that's fine. They can look into that. They, they know they can look into that. For most people,
they couldn't care. So why have these, this tab open up, uh, to, to, to destroy them that,
you know, what they do care about is, is it installed properly? Now, if that's the, if it was a,
a tab that opened up in the case of an error, to say, or the, the, the add-on was corrupted.
The download was corrupted. Something went wrong, you know, read, read, download it or whatever.
That's fine. I have no problem with that. Or if it's a, if it's something else you have to do
to take and figure the add-on after it's installed, then that's, that's fair enough, but I'll,
I'll get to that in a minute. If it's just a change log or a thank you for installing whatever,
then please, for the love of God, leave it out. Don't have these tabs opening up.
Because, I mean, I'm at the point now where there's, there's a few, uh, add-on websites that I'm
really tempted to block because of this behavior. No script is one of them. Um, every update.
I mean, if you install 8, 9, 10 add-ons and one go and then you restart and you open up and you
find all of a sudden you've got boom, boom, boom, boom, boom, you've got five or six tabs opening up.
To me, I don't care what these tabs are. My response is going to be close, close, close, close, close, close.
I don't need to, to be thanked for installing something. I don't want these tabs to open up.
Now, it's one thing to do them when, when they're initially installed. But, to keep doing it every
time they're updated as well. You know, it just seems like a cheap trick to get extra, extra hits
to bump up the rankings, the search rankings. You know, I respect the fact that these add-ons are
free, free of charge. In a lot of cases, the, the free software as well, like, like no script as,
as GPL, it's open source. I respect that. And I respect the fact that they need to, they need to,
to help raise their profile on, and, and the seating donations. I respect that. It just gets
really annoying to have these, these tabs keep in, opening up like that. So, that's, that's one
of them. As I said, the, there are reasons why, reasons why it's acceptable, or understandable.
And Foxy Proxies, the, the example of that. And, I don't know if I mentioned earlier on. I've,
this is about the eighth take of this. I want to do it all on, on one go, because I'm doing a
screencast essentially. But anyway, Foxy Proxies is one of the, the add-ons that, it will find that
whether there's a space or not, in between the Foxy and Proxie, or if it finds it. Some don't,
customize Google, doesn't, no scripts as I've shown, doesn't, Foxy Proxie does.
Now, once we install Foxy Proxie, that also opens up a tab.
And we'll restart there. Foxy Proxie also opens up a tab once it installs or once it restarts.
But that tab is, it's understandable, because in part it tells you that you still have stuff to do
before it's configured and ready to run.
Which is fair enough. It's disabled. Now, again, we'll come in or wizard. Now, this is an
expert. Some add-ons do need this, these extra steps to configure to set up different things.
Foxy Proxie is one of them. There are, there are a lot. But why does it need multiple boxes?
I mean, if you open that one box, the wizard guide, you get one question. So, you assume that's it.
Would you like to configure Foxy Proxie to use with Tor? For use with Tor? Well, yes, that's
that one question. You can't move on. There's another question. Are you using Tor with Proxie
or without? Okay, without. And that's, no, there's more information it needs.
About the porch. So, okay, that. Do you like DNS requests? Oh, yes. And at this point,
if you don't know, you're starting to wonder just how many questions are going to be sitting?
Haven't you answered? Before this thing starts to run.
And there's another page in the ProxySens. Now, you've got, okay, usually when you get to that stage,
you're looking at the okay and thinking, right, that's it. I'll just click that and all the rest
will close and it'll be installed and it'll be run. No, okay. No, there's another window coming up.
Congratulations. Okay, in another window, do you want to restart to, for it to take effect? Yes.
Now, why is it not possible? If you, if you've got an add on requires all these extra steps
and after it's installed to get it working, why can't you design that to be in one window?
Pop up one window and ask for all that information and then hit okay.
Sometimes it might not be possible. It might need two windows, but it's certainly a lot better than
five or six. Just one after the other. I mean, not whole. Yes, yes, yes, yes, yes, yes, except, yes,
that's window stuff. That's, that's like, that's like, that's like, 1990s installing stuff, you know.
There's a better way to do that. You don't need all these, yes, yes, yes, yes, yes,
10 stock stuff. So, that about covers it for Firefox. Now, the,
I'll just quit that. The next one is Thunderbird. Now, Thunderbird has different issues.
As I say, it's a, excuse me, it's a different, a different add on.
It's a different add on a window in Thunderbird. Now, actually, I should have mentioned
the, in fact, I'll close that again. No, I'll start back up again. Now, you'll notice that I don't
have any accounts set up here, any email accounts. Well, I've done a clean profile of Firefox,
a clean profile of Thunderbird for this, this HPR episode. So, that's the reason.
You'll notice here, account was up. Now, that, I don't know whether it's a good idea to have
this keeping popping up every time. I don't know. It just annoys me. Every time I've done this,
screencast, each time I open Thunderbird to start this part of it, I have to cancel and then confirm
exit. There's no, there's no reason why it couldn't start like this, essentially, with, with no
pop-up, no windows to close, because you can always have a new account, a new, new, new account.
You can always click from there, but then again, some users might not know how to do that,
so having that window pop-up, I suppose it's fair enough. It's a bit inconvenient for me,
but I sort of understand why it's there, or having like a button somewhere, you know, for a new account,
but anyway, back to the add-ons. This Thunderbird has a different add-on window. First of all,
there's no search feature here, so that's one kind of downer. With the add-on, add-on,
manager, along the lines of a sort of a package manager, that could all be combined, which is
said behind it. But in its current state, when you go to install a package, you would expect that
install opens up the web page, but it doesn't, it opens up your local stuff you've already had
download. So, the first thing to notice is you cannot select more than one at a time.
You cannot select more than one at a time, you've got to do them just once. So,
well, down them all. Then again, big window popping up, three seconds to wait, installed one at a time,
yes. And this is the point that jumps over to the installation tab. Now, to install the next
plug-in of the next add-on, you've got to first go back to extensions and then down to install
to get the next one. Okay, three seconds to one install now. And again, back to the installation,
that gets really tedious, especially if you have to do one at a time and you've got quite a few.
The same with the themes, again, you're installing themes from the same way, install three, two, one,
yes, install now. Again, the same thing applies from
as far as having to use the theme, I don't know. That could be a thing in the installation,
it's picked up that, oh, you've installed a theme, we'd like to switch to a foreign reboot.
So, the other thing that I noticed here, I don't remember if I mentioned it,
not in this in this take, was the restart option. Now, given that you have to restart in both
Firefox and Thunderbird to apply these updates, why is restart not an option in here?
Why is it not part of the core function of these programs because you have to restart to do it?
To my mind, it should be there. That way, I could close that just now,
go on, I mean, if I had an email account set up at the moment, and this profile, I could go on,
send, do some stuff for email, and then think, oh, right, I should, I've got updates to do.
Come in here, restart. Rather than having to come back into the add-ons,
and then installation, and then restart, it just seems a bit more to give more options and more
flex about it, and the way things are done. So, I think I've rambled a wee bit there.
So, what I'm going to do is sign off that, let's say the audio of this is going to be the MP3
file in the HPR feed, and the video will be the optional download. Now, I hope that
that Mozilla developers are going to look at this and take some of these ideas on board
and do what they can with them. I understand there may be limitations with
Zoom itself, or with other complications that I don't understand. I'm not a programmer,
but hopefully some of that can be implemented somehow into these applications, because
both of them are fantastic. They are really, really good apps, but they could be better.
And if we can give a wee and a free software community, if we can give Windows users a taste
of package management, it will blow down minds, because that's one of the things that always
seems to be to impress people when you show them Linux and how to install things, you show them
the package manager, how they can just search through a big catalog, and click, oh, hover that,
I'll hover that, I'll hover that, and it's not just trial versions, it's proper software.
So at least the add-on manager would give them a taste of that, still within Windows,
but for the Firefox, further Mozilla add-ons.
Then you've dangled the little sweetener out in front of them, and then you can say, look,
you come over to Linux, your whole system can be managed like that,
and just watch the eyes light up, and have them hopefully begging you for more information,
and free disks and things. So anyway, I was ending on a bit of a positive note, I think.
So, I'm going to end it there, my name is Gordon Sinclair, my IRC handle is Thistleweb,
my, if you want to contact me by email, it's Thistle.webcast at googlemail.com.
I have no doubt missed some things, because as I said, this is a bit of fifth or sixth take
that I've done. I think I've covered everything this time, I hope. So anyway,
this has been another episode of the Factor Public Radio, and thank you for, for
going to the time to watch it. Have a good day.
So, thank you very much, thank you very much, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you
Thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you, thank you