Overview
SMA is a German company who produces DC to AC inverters used with PV systems and other renewable energy sources (for grid connection etc.). Many models include a Bluetooth interface.
Importing data into Open Energy Monitor
Two approaches have been used to make this data available to Open Energy Monitor:
- Stuart Pittaway's code (see below) runs on Arduino / Nanode hardware.
- Using sma-bluetooth (see bottom of article) running on a suitable computer (e.g. a Raspberry Pi).
The choice of which one to use will be determined by the other components in use in your Open Energy Monitor system, and whether they can reliably communicate with the Inverter using the Bluetooth protocol.
Arduino / Nanode based
I've just ordered a Nanode in preparation for my contribution to the OpenEnergyMonitor project. (Oct 2011)
I'm going to be looking at interfacing a Nanode to the SMA SunnyBoy range of PV inverters (http://www.sma.de/en/products/solar-inverters/sunny-boy.html)
Newer inverters have a Bluetooth interface for accessing their internal readings, including measurements for DC voltage/current (from solar panels) mains AC, current, voltage and generation history.
Most of the inverters also contain an inbuilt relay which can be toggled via bluetooth by issuing the proper commands.
Unfortunately the protocols used via Bluetooth have not been released to the public, but I've managed to create a working prototype (written in C# also ported to Python) that exports PV data to my website (www.solarstats.co.uk) every 10 minutes.
Hopefully, OpenEnergyMonitor can eventually display PV performance on its gLCD display as well as the other measurements.
Update Feb 7th 2012
I've uploaded the first version of my monitoring code to Github https://github.com/stuartpittaway/nanodesmapvmonitor
Its a big sketch - compiles to nearly 30.5Kbytes !
https://github.com/stuartpittaway/nanodesmapvmonitor/blob/master/README on GITHUB has more detail.
Tested with SMA3000HF, 3000TL, 4000TL - but in theory should work with all Bluetooth enabled inverters. Please email me your success/failure stories and I'll update/fix!
You will need to modify the code (see APIKey.h for constants) to configure your passwords/keys for Pachube/SolarStats.co.uk and PVOutput.org sites and disable the ones you don’t need.
You can set your location's lat/long and the code will automatically determine when to start monitoring your PV system.
Once the code is uploaded to the Arduino/nanode device, make PIN14 high, and power on the board. This forces an automatic SMA inverter Bluetoth scan/discovery. Once the address has been retrieved, it is stored in EEPROM.
Connect a serial cable to the Nanode board (115000,8,n,1 baud rates) to see debug messages.
You should see messages like...
PWR UP
free mem=401
MAC=0004A32C1F88
DHCP
IP:<IP_ADDRESS>
GW:<IP_ADDRESS>
DNS:<IP_ADDRESS>
LOOP..
free mem=341
*Logon*
Fake time resync
*LOOP*
22:16:27 20120207
22:16:29 20120207
22:16:32 20120207
22:16:34 20120207
The code needs integration with OpenEnergyMonitor and heavy reduction in program space. Approximately 300 bytes of RAM are free during operation.
Its currently updating emonCMS, Pachube, SolarStats.co.uk and PVOutput.org at the same time
On Pachube, I'm uploading the free RAM and millis() counter once per minut. So far, I've managed to go 4 days without a restart.
You can see the output at
http://pvoutput.org/list.jsp?userid=4206
https://pachube.com/feeds/40789
Update 21 Feb
Happy to report my code and Nanode 5 have been running continuously for 10 days straight now without a single reboot or restart of the BT chip. I'm using Pachube to monitor uptime. http://binaereoptionen.over-blog.com/
You can see where the code "goes to sleep" (dotted line) then wakes up at sunrise to begin data capture - during this time, the Bluetooth and Ethernet are kept awake, although I plan to shut both of them down and put the CPU in sleep mode.
There's no RAM leaks. I'm also logging this to Pachube, and the value has been constant for 10 days.
Using sma-bluetooth on a Raspberry Pi etc.
Your chosen hardware will require a Bluetooth radio (a £5 GPB USB <-> Bluetooth adaptor has been used successfully). Known-working on Debian 8.0 i386.
- Compile and install the code at https://github.com/sma-bluetooth - verify standalone operation via the command line.
- Use the emonhub patches detailed in https://openenergymonitor.org/emon/node/10683 to import data into Open Energy Monitor.
- Improve this documentation.
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
Thanks for publishing this. As mentioned elsewhere you've saved us a great deal of time. I have just downloaded the sketches so tonight have cleared the decks to have a read, digest, and hopefully find places we can cut some corners off to add our other functionality. Hoping to have a test rig setup on the SMC5000A from this weekend.
Will keep you informed of progress Geoff
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
So isn't there any software you could use to make this job easier? It sounds pretty tricky to me, I don't know if I could handle it myself without any form of support. I'd probably start though by installing an updated regcure to set some order in my system before engaging in a complex operation like this one.
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
Hi Stuart
Any chance you'll be publishing the C# code?
Thanks
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
No sure yet, I might be making a iPhone/Android app based on my code (ported over to Java) which I'm tempted to do as a commercial app.
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
just spent the past 1.5hrs building my nanode, serial number 628. blinking light working!!
its been several years since i did any soldering or work with micro contollers and pcbs, forgot what fun and just realised how expensive solder is now !!
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
I've ordered 2 bluetooth modules for interfacing to Nanode.
One from SparkFun which I know will work okay, and another from a chinese website for £5 :-)
Strangely enough, the one from China turns up in the UK in only 4 days, I'm still waiting for the USPS to deliver the SparkFun one!
The cheap bluetooth unit turns out to be a HC06 device - which is practically useless as I need to use it in master mode to connect to my SMA inverter.
I've found an interesting website at http://byron76.blogspot.com/2011/09/i-hope-you-have-good-time-soldering....
which indicates you can re-flash the bluetooth chips to add updated firmware onto them. I might give it a go!
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
Hi Stu
After our short 'chat' on the sma-bluetooth forum, as mentioned I'd be delighted to help with testing or code if you can use it.
Cheers, Geoff
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
I can confirm that the HC range of Bluetooth chipsets (based on CSR chips) can be re-programmed and have their firmware updated as per the above link.
My useless HC06 is now a HC05 model with a newer firmware - apart from the LED being on a different PIO pin, it's working fine.
I used the circuit from the website above, built on a bit of breadboard and 4 wires soldered to the Bluetooth board.
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
This sounds very exciting. I'm soon to have PV panels installed with an SMA inverter. It would be pretty cool to be able to be able to post the data up online using a Nanode+bluetooth. There would probably be a market for such a product since it would be cheaper than the £300 SMA web box. The Android app sounds pretty good too.
Although possibly an easier way to monitor output from a PV system is to use a CT sensor clipped round the 230V AC output from the inverter. I have setup a few PV monitoring systems using the emonTx, emonBase posting to emoncms system. The screen grab below shows two different PV systems installed in similar locations being compared. The advantage of the CT based monitoring system is that its not inverter specific and not relient on manufacture protocols (which will probably change over time).
What are the advantages interfacing directly with the inverter using bluetooth over monitoring the AC output from the inverter? After all its the AC output that you get paid for. Is it possible to get other interesting information other than power output by interfacing directly with the inverter?
All the best, Glyn.
P.S When posting in the future please could you use the forums rather than creating a random page on the site. Its much more organised that way!
Re: Interfacing with SMA SunnyBoy PV Inverters (Bluetooth)
When posting in the future please could you use the forums rather than creating a random page on the site. Its much more organised that way!
No problem, I was trying to put a link into the "Build" and that suggested to create a new page - wrists slapped accordingly
By interfacing directly with the inverter you can also get the DC stats from the panels, voltage and current, this in turn allows you to see the efficency of the inverter when compared to the ac output.
I agree that monitoring the ac cables using a clip is fine, however if this is to be a device open to the public and "easy" to install then I think the fewer clips and hunting down wiring the better, especially as the inverter cabling is likely to be enclosed in twin & earth cabling so you'd have to tease out a single core.
Ideally I want to control my hot water heating from surplus energy, but I also have the same problem as some of the forum members have in that my mains ac is blended with the PV inverter output (no seperate fuse/wiring panel for the mains AC for the PV setup).
I expect a lot of installations have been done in this way.


val requiresTimePeriod: Boolean
If this sorting option needs to be combined also with a TimePeriod, to be sent to the Api. e.g. Top / Last Month
requiresTimePeriod
- If this sorting option needs
to be combined also with a TimePeriod, to be sent to the Api.
e.g. Top / Last Month


|
|
|
How to set up your Deriv MT5 account
|
|
Dear trader,
|
We recently sent you an email with the steps to create your real Deriv MetaTrader 5 account.
|
It seems like you missed it, but no worries. You can just follow these steps to set it up within a few minutes.
|
|
|
|
From the DTrader interface, click the platforms tab and select DMT5 from the dropdown list
|
|
|
|
|
|
|
|
Sign up for a Deriv account and verify your email ID.
|
|
|
|
|
|
|
|
Choose your account currency and complete the setup.
|
|
|
|
|
|
Once you’ve created your Deriv currency account, follow these additional steps to add the type of MT5 account that you want.
|
|
|
|
|
|
Congratulations! That’s all it takes to create a real MT5 account on Deriv. If you’ve any questions, please feel free to contact our customer support team via the live chat on our website.
|
|
|
|
|
|


Pirate (ARRR) is a cryptocurrency that solves the issue of financial privacy on the blockchain through forced anonymous transactions. Protect your wallet and transactions with Pirate’s completely anonymous network. With forced private transactions, your privacy cannot be compromised by another users’ activity on the network. If you wish to learn more, please join the official Pirate Discord at https://pirate.black/discord/ or message FishyGuts#5085, who will be happy to help out.
Yarr olde name be bob deposit. But we'll now call ye:
Cap'n Garrick Redbeard
wookie02-Oct-18 03:43 PM
is there a reason why the #zerozed channel was moved into the pirate channel?
FishyGuts02-Oct-18 03:51 PM
They just wanted in on some of this infamy
ComputerGenie 👴👴👴02-Oct-18 04:52 PM
48439 notarizing the notarization of a notarization .... shexy
mato12102-Oct-18 06:16 PM
Would be nice if Piratebay would accept PIRATE
ComputerGenie 👴👴👴02-Oct-18 06:17 PM
If you want to donate PIRATE that bad, I accept all donations
zcUhBwFYvaqR61AXqQSQ9mDMiHpEz3gt7KQzZk8z4ZcpeBJWo8xjY18e5KTMJnEiTDM5ACHouzPQqC3YEjwphnSrTKbrCbf
1
xRobeSx02-Oct-18 06:22 PM
I'll pass them along to PirateBay
jl777c02-Oct-18 06:23 PM
it is indeed strange XMR adds piratespeak to their GUI right now
1
1
2
xRobeSx02-Oct-18 06:24 PM
super strange, they felt the pressure to have something similar
jl777c02-Oct-18 06:24 PM
yes, pirate speaks makes 10way mixing the same as zero knowledge, just ask the parrot
Ross Kemp investigates the boom in piracy on the world's oceans, traveling to some of the planet’s biggest trouble spots to discover the problems faced by po...
FishyGuts02-Oct-18 06:27 PM
Get the shop plugin done and I will get Pirate Bay to take ARRR
It's only logical
xRobeSx02-Oct-18 06:28 PM
doesn't PiratePay just take donations? I don't think there's anything to purchase that would require a plugin
Llama02-Oct-18 06:28 PM
this is not false
ComputerGenie 👴👴👴02-Oct-18 06:29 PM
Monetizing a torrent site who's main focus is illegal torrents is the antithesis of the point of torrents for illegal downloads
Hot02-Oct-18 06:37 PM
wasn't bittorrent bought by tron or something
jl777c02-Oct-18 06:39 PM
yes
FishyGuts02-Oct-18 06:49 PM
Then I will get them to take Pirate.
1
Dr Debt02-Oct-18 06:58 PM
wts 1000 Pirate for 400 kmd lol
1
Flexatron02-Oct-18 07:00 PM
You from the future?(edited)
1
Dr Debt02-Oct-18 07:00 PM
not only did I front it, I created it in my own image
Pirate will be worth 0.00239 btc in 9 months..
you're basically robbing me at that rate, but I am ok with it
ComputerGenie 👴👴👴02-Oct-18 07:01 PM
CPU mining at 0.000001 diff and selling at 4x market.... shexy (edited)
Flexatron02-Oct-18 07:02 PM
9 months and it's gonna give me birth
To a big treasure
Dr Debt02-Oct-18 07:04 PM
well the treasure is in your hands already, you are just unable to realize it. As I said I am from the future.
Flexatron02-Oct-18 07:04 PM
Piratepool's growing:)
94 workahs
wookie02-Oct-18 07:04 PM
if "Pirate will be worth 0.00239 btc in 9 months.." this happens....I will......[fill in the blank]....
AHOY MATEYS!
We be givin' away booty!!!
Just testin' our Pirate vote track'n cuz we can't count due to this hook.
Bonus: FREE 77.7 $ARRR inside
To Enter:
Retweet this tweet and tag three pirate mates + #ARRRforprivacy
You must also complete this form:
https://t.co/HiX...
You know what to do!
Share with your crypto friends! Especially the ones who don't know about KMD.
ComputerGenie 👴👴👴02-Oct-18 07:09 PM
You know what to do!
iggy you so we stop getting spammed?
 It's not to everyone!
(edited)
1
1
1
1
Zach02-Oct-18 07:10 PM
Is there a way to set a difficulty level for the piratepool.io pool?
ComputerGenie 👴👴👴02-Oct-18 07:10 PM
why would you want to?
Zach02-Oct-18 07:11 PM
a rig i am gonna rent says it has to have a diff> 32768
and the only time it went over 300m was during 18 blocks(edited)
Flexatron02-Oct-18 08:34 PM
We were steady at 1M for sure
ComputerGenie 👴👴👴02-Oct-18 08:35 PM
@CHMEX fwiw, this is literally why I did what I did this morning and yesterday
CHMEX02-Oct-18 08:36 PM
do we know when when we had the first notarization?
ComputerGenie 👴👴👴02-Oct-18 08:38 PM
@Alright
CHMEX02-Oct-18 08:38 PM
not nice
Alright02-Oct-18 08:38 PM
what?
ComputerGenie 👴👴👴02-Oct-18 08:38 PM
I didn't mean that the way it looks
CHMEX02-Oct-18 08:39 PM
ow ok sorry than
Do we know when the first pIRATE notarization happened
ComputerGenie 👴👴👴02-Oct-18 08:39 PM
I figured if anyone paid attention to the fork block height it would have been you
Alright02-Oct-18 08:39 PM
not sure search for from:Alright fuck this in this channel
2
Flexatron02-Oct-18 08:41 PM
Lal
ComputerGenie 👴👴👴02-Oct-18 08:42 PM
For those that don't know, which is pretty much everyone, @Alright is generally the 1st person I ask such things and it honestly wasn't a troll (he's just generally that knowledgeable about what we do)
Alright02-Oct-18 08:42 PM
was a good troll though
ComputerGenie 👴👴👴02-Oct-18 08:43 PM
yes, but unintentionally so
CHMEX02-Oct-18 08:43 PM
thanks webworker so around block 37700 around the time it increased from 10m to 100m


Meck Ljudteknik is a audio engineering and software company run by Johan “meck” Eklund.
We provide consultancy services in the fields of arcane magic, poetry, bassoon playing, knighthood, big-game hunting, mountaineering, haberdashery, solo sailing and exorcism.
Other areas of expertise includes spiritualism, eschatology research, secondhand smoking and hyperboles. Located in Sweden.


Evers vetoes honorary highway, bridge naming criteria bill
MADISON, Wis. - Gov. Tony Evers has vetoed a bipartisan bill that set criteria for honorary highway and bridge designations.
Evers says he vetoed the measure Tuesday because he objects to limiting the ability to commemorate those who have made significant contributions or sacrifices for the people of Wisconsin. For example, Evers says under the criteria, honoring victims of the 9/11 terrorist attacks would not have been allowed.
The bill was sponsored by Republican Assembly Speaker Robin Vos and passed both the state Senate and Assembly earlier this month with bipartisan support.
Vos says the bill was "intended to preserve the integrity of the tradition of honoring worthy individuals in our state."
Also Tuesday, Evers signed a bill designating a portion of State Highway 33 between Portage and Baraboo as "Staff Sergeant Daniel D. Busch Memorial Highway."
Busch was an Army Ranger who fought and died in Somalia during the operation depicted into the Academy Award winning movie "Black Hawk Down."


#--
/**********************************************************************************
* $URL: https://source.sakaiproject.org/contrib/etudes/sakai-jforum/tags/2.8.1/jforum-tool/src/webapp/templates/default/forum_list.htm $
* $Id: forum_list.htm 71155 2010-11-03 20:10:44Z<EMAIL_ADDRESS>$
***********************************************************************************
*
* Copyright (c) 2008, 2009, 2010 Etudes, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Portions completed before July 1, 2004 Copyright (c) 2003, 2004 Rafael Steil, All rights reserved, licensed under the BSD license.
* http://www.opensource.org/licenses/bsd-license.php
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* 1) Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* 2) Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or
* other materials provided with the distribution.
* 3) Neither the name of "Rafael Steil" nor
* the names of its contributors may be used to endorse
* or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
***********************************************************************************/
-->
<#include "header.htm"/>
<#-- Rules:
(1) If access is "Site Participants," then the forum type icon
wins (Normal/blank, read-only, or reply-only).
(2) If access is "Deny Access," no matter what type of forum
is selected (Normal, Reply-only, or Read-only), the "Deny Access" icon ALWAYS wins!
(3) If access is "selected group," and forum type is Normal OR Reply-only,
then group/people icon wins.
(4) if access is "selected group" and forum type is Read-only (locked! -
no posting allowed anymore), let's use an additional icon that is a
combo of groups with a lock (like the read-only). I'll attach it next.
Access Type: 0 - Site Access, 1 - Deny Access, 2 - Groups Access
Forum Type: 0 - Normal, 1 - Reply Only, 2 - Read only
* invisible forums have the deny access icon when they are NOT open -- ALONG WITH THE DATE
("Opens: date, time), just like we display the locked at x date, time, so that teachers
see when it will become visible.
* when an invisible forum opens, the deny access icon is replaced with the forum type
(normal, read-only, etc.)
* with regard to export, invisible forums are exported, even if they are not open yet,
but with NO dates (I don't think we want dates).
--forum visible date(start date)
-If the visible date is after now i.e. form is not accessible, show deny icon
-If the visible date is before now i.e. form is accessible, apply access and type rules
--forum lock date(end date)
-If the lock date is before now i.e. form is not accessible, show read only icon
-If the visible date is after now i.e. form is accessible, apply access and type rules
--05/28/2008 forums under archived category always have forum type as normal
--05/28/2008 forums under archived category should not be visible to students
-->
<#list category.getForums() as forum>
<#--check forum special access-->
<#--special access-->
<#assign specialAccessUserForum = false/>
<#assign generalUserAccessForum = false/>
<#assign specialAccessUserAccessForum = false/>
<#assign specialAccessUserAccessForumLocked = false/>
<#if !facilitator>
<#list forum.specialAccessList as specialAccess>
<#list specialAccess.userIds as specialAccessuserId>
<#if (session.userId == specialAccessuserId)>
<#assign specialAccessUserForum = true/>
<#assign userSpecialAccess = specialAccess/>
<#if (specialAccess.endDateFormatted??)>
<#assign userSpecialAccessForumEndDateFormatted = specialAccess.endDateFormatted>
#if>
<#if (specialAccess.startDate??)>
<#if (specialAccess.startDate?datetime lt nowDate?datetime)>
<#if (specialAccess.endDate??)>
<#if (specialAccess.endDate?datetime lt nowDate?datetime)>
<#assign specialAccessUserAccessForum = true/>
<#if (specialAccess.lockOnEndDate)>
<#assign specialAccessUserAccessForumLocked = true/>
#if>
<#else>
<#assign specialAccessUserAccessForum = true/>
#if>
<#else>
<#assign specialAccessUserAccessForum = true/>
#if>
#if>
<#else>
<#if (specialAccess.endDate??)>
<#if (specialAccess.endDate?datetime lt nowDate?datetime)>
<#assign specialAccessUserAccessForum = true/>
<#if (specialAccess.lockOnEndDate)>
<#assign specialAccessUserAccessForumLocked = true/>
#if>
<#else>
<#assign specialAccessUserAccessForum = true/>
#if>
<#else>
<#assign specialAccessUserAccessForum = true/>
#if>
#if>
<#break>
#if>
#list>
#list>
#if>
<#if (!specialAccessUserForum)>
<#assign generalUserAccessForum = true/>
#if>
<#if (facilitator || specialAccessUserAccessForum || generalUserAccessForum)>
<#assign lpi = fir.getLastPostInfo(forum.id)/>


pass
Add player
Base points
Remove all players
Throw darts by
clicking on them
x - throw
r - pass
Use Chrome for
better experience
Play again


The "FIT INDIA “ MISSION had been launched by the GOVERNMENT of INDIA to informed all student friends studying in the college that awareness about fitness and active lifestyle could been created among all citizens of INDIA and to spread FITNESS awareness to as many people as possible through students.
 Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |
| Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in venenatis enim... Read more... |


A triangle is a polygon with three edges and three vertices. It is one of the basic shapes in geometry. A triangle with vertices A, B, and C is denoted.
For a triangle to be constructed side A squared plus B squared is equal to C squared.When you add the base and the height it should be greater than the hypotenuse
A*A +B*B=C*C
An equilateral triangle has all sides the same length.
An isosceles triangle has two sides of equal length.
An isosceles triangle also has two angles of the same measure, namely the angles opposite to the two sides of the same length; this fact is the content of the isosceles triangle theorem, which was known by Euclid. Some mathematicians define an isosceles triangle to have exactly two equal sides, whereas others define an isosceles triangle as one with at least two equal sides.The latter definition would make all equilateral triangles isosceles triangles. The 45–45–90 right triangle, which appears in the tetrakis square tiling, is isosceles.
A scalene triangle has all its sides of different lengths. Equivalently, it has all angles of different measure.


The request.
Protected Properties | |
| Upload[][] | $fileGroups = [] |
| Grouped file uploads (multiple). More... | |
| Upload[] | $files = [] |
| File uploads (singular). More... | |
| string[] | $headers = [] |
| Request headers, keyed in lowercase. More... | |
| string | $path |
| The request path, without arguments, cleaned up. More... | |
| string[] | $proxies = [] |
| Trust client IP forwarding from these proxies. More... | |
Public Methods | |
| __construct () | |
| Constructs using CGI data. More... | |
| string | __toString () |
| array | getArgs () |
Returns POST args merged over GET args. More... | |
| string | getClient () |
| Returns the client IP, which may have been forwarded. More... | |
| null Upload | getFile (string $name) |
| Upload[] | getFileGroup (string $name) |
| Upload[][] | getFileGroups () |
| Upload[] | getFiles () |
| string[] | getHeaders () |
| string | getMethod () |
| string | getPath () |
| string[] | getProxies () |
| bool | isDelete () |
| bool | isGet () |
| bool | isHead () |
| bool | isMuting () |
| Whether the request can produce side-effects. More... | |
| bool | isPost () |
| bool | offsetExists ($key) |
| Checks for a request header. More... | |
| null string | offsetGet ($key) |
| Returns a request header. More... | |
| void | offsetSet ($key, $value) |
| Throws. More... | |
| void | offsetUnset ($key) |
| Throws. More... | |
| $this | setProxies (array $proxies) |
|
protected |
Request headers, keyed in lowercase.
|
protected |
The request path, without arguments, cleaned up.
|
protected |
Trust client IP forwarding from these proxies.
| __construct | ( | ) |
Constructs using CGI data.
|
final |
| array getArgs | ( | ) |
Returns POST
args merged over GET
args.
| string getClient | ( | ) |
Returns the client IP, which may have been forwarded.
|
final |
| string | $name |
| string [] getHeaders | ( | ) |
|
final |
|
final |
| string [] getProxies | ( | ) |
|
final |
|
final |
|
final |
|
final |
Whether the request can produce side-effects.
|
final |
| bool offsetExists | ( | $key | ) |
Checks for a request header.
| string | $key |
| null string offsetGet | ( | $key | ) |
Returns a request header.
| string | $key |
|
final |
Throws.
| mixed | $key | |
| mixed | $value |
| LogicException |
|
final |
Throws.
| mixed | $key |
| LogicException |
| $this setProxies | ( | array | $proxies | ) |
| string[] | $proxies |


Returns the set of descendants of a member at a specified level or distance, optionally including or excluding descendants in other levels. The members are returned in hierarchized order; for example, parent members are followed by child members.
Syntax
Descendants ( member , [{ layer | index }[, Desc_flags ]])
| Parameter | Description |
|---|---|
|
The member for which descendants are sought. |
|
|
Optional. Layer specification indicating the depth of the descendants to return. |
|
index |
Optional. A number of hierarchical steps down from member, locating the descendants you want returned. |
Desc_flags |
Optional. Keywords which further indicate which members to return. These keywords are available only if layer or index was specified. For all flags, SELF refers to layer; therefore, BEFORE indicates "before the layer" and AFTER indicates "after the layer." Values:
|
Example
The following query
SELECT Descendants ( [Year] ) ON COLUMNS FROM sample.basic
returns the grid:
| Year | Qtr1 | Jan | Feb | Mar | Qtr2 | Apr | May | Jun | Qtr3 | Jul | Aug | Sep | Qtr4 | Oct | Nov | Dec |
| 12656 | 2747 | 924 | 888 | 935 | 3352 | 1011 | 1071 | 1270 | 3740 | 1334 | 1304 | 1102 | 2817 | 907 | 884 | 1026 |
The following expressions return the following sets
Descendants ( [Year], 2 )
returns {([Jan]:[Dec])}, which is the range of members found two steps below Year.
Descendants ( [Year], 2, BEFORE )
returns {[Year], [Qtr1], [Qtr2], [Qtr3], [Qtr4]}, which is the set of Year and its descendants that occur BEFORE the layer that is two steps below Year.
Descendants ( [Market], [West].level )
returns {[East], [West], [South], [Central]}, which is the set of Market's descendants found at the level of West.
Descendants([Market])
is equivalent to Descendants([Market], [Market].level, SELF_BEFORE_AFTER). It returns all descendants of Market:
{[Market], [East], [New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire], [West], [California], [Oregon], [Washington], [Utah], [Nevada], [South], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Central], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado] } Descendants([Market], [Region])
is equivalent to Descendants([Market], [Region]), SELF), where [Region] is an alias. It returns all members at [Region] level:
{[East], [West], [South], [Central]} Descendants([Market], [State], SELF)
returns all descendants of [Market] at [State] level:
{[New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire], [California], [Oregon], [Washington], [Utah], [Nevada], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado]} Descendants([Market], [State], BEFORE)
returns all regions and [Market]:
{[Market], [East], [West], [South], [Central]} Descendants([Market], [State], AFTER)
returns an empty set, because there are no levels below [State] level in the [Market] dimension:
{} Descendants([Market], [Region], AFTER)
returns all states in the [Market] dimension:
{[New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire], [California], [Oregon], [Washington], [Utah], [Nevada], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado]} Descendants([Market], [State], LEAVES)
returns all level-0 members between [Market] level and [State] level, including both levels:
{[New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire], [California], [Oregon], [Washington], [Utah], [Nevada], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado]} Descendants([Market], 1)
The second argument specifies a distance of 1 from [Market] level, which is [Region] level. So this expression is equivalent to Descendants([Market], [Region]). It returns:
{[East], [West], [South], [Central]} Descendants([Market], 2, SELF_BEFORE_AFTER)
is equivalent to Descendants([Market], [State], SELF_BEFORE_AFTER). It returns:
{[Market], [East], [New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire] [West], [California], [Oregon], [Washington], [Utah], [Nevada], [South], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Central], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado] } Descendants([Market], -1, SELF_BEFORE_AFTER)
prints a warning in application log, because a negative distance argument is not valid. The expression returns an empty set:
{} Descendants([Market], 10, SELF)
returns an empty set, because there are no descendants of [Market] at a distance of 10 from [Market] level.
Descendants([Market], 10, BEFORE)
returns all descendants of [Market]:
{[Market], [East], [New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire] [West], [California], [Oregon], [Washington], [Utah], [Nevada], [South], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Central], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado] } Descendants([Market], 10, LEAVES)
returns all level-0 descendants of [Market]:
{[New York], [Massachusetts], [Florida], [Connecticut], [New Hampshire], [California], [Oregon], [Washington], [Utah], [Nevada], [Texas], [Oklahoma], [Louisiana], [New Mexico], [Illinois], [Ohio], [Wisconsin], [Missouri], [Iowa], [Colorado]}


Lesson 10 - Specifying 3D Structures
Introduction
This lesson is very simple, almost trivial. It was written in the days when writing any simple 3D game that involved moving from place to place was new and different. Today, with the far more complex types of games and other 3D adventures, this example seems pretty trivial. Nonetheless, it is part of the NeHe demos, so we include it here.
The Model
The demo consists of the datafile which specifies a series of triangles that form a very simple structure that resembles nothing more than house of cards. Each of the "walls" and floor and ceiling consist of a pair of triangles, expressed as a JavaScript array. Here is the floor:
var world =
[
// Floor
[-3.0, 0.0, -3.0, 0.0, 6.0],
[-3.0, 0.0, 3.0, 0.0, 0.0],
[ 3.0, 0.0, 3.0, 6.0, 0.0],
[-3.0, 0.0, -3.0, 0.0, 6.0],
[ 3.0, 0.0, -3.0, 6.0, 6.0],
[ 3.0, 0.0, 3.0, 6.0, 0.0],
etc.
]
First we read in the image and create a texture we will apply to the resulting triangles. Note that we map the texture onto both sides of each object. The original demo used a mud-like image of the original author's face I liked my puppy better (sadly Sammy developed cancer in January 2017 and had to be put to sleep. RIP Sammy), but you can get the original texture swapping "mud" for "sammy" in the code.
var texture = new THREE.ImageUtils.loadTexture("Data/Sammy.jpg");
var material = new THREE.MeshBasicMaterial( { map: texture, side:THREE.DoubleSide } );
Loading the Model
The JS array is then simply read via a link and automatically instantiated. The number of triangles is computed from the length of the array. Then the code simply loops through the array fetching three rows at a time (being the three verticies) and creates a plain Geometry and pushes the verticies into it, creating a triangular mesh.
var i1 = i * 3;
var i2 = i * 3 + 1;
var i3 = i * 3 + 2;
var triGeom = new THREE.Geometry();
triGeom.vertices.push(new THREE.Vector3(world[i1][V_X],world[i1][V_Y],world[i1][V_Z]));
triGeom.vertices.push(new THREE.Vector3(world[i2][V_X],world[i2][V_Y],world[i2][V_Z]));
triGeom.vertices.push(new THREE.Vector3(world[i3][V_X],world[i3][V_Y],world[i3][V_Z]));
Create a new Face3, whose indices point into the vertices we created above
triGeom.faces.push( new THREE.Face3( 0, 1, 2 ) );
Then we need to create the mapping between our texture and the two triangles that comprise the faces (just like the previous lesson).
var uvs = [];
if ((i & 1) == 1) {
uvs.push( new THREE.Vector2( 0.0, 1.0 ) );
uvs.push( new THREE.Vector2( 1.0, 1.0 ) );
uvs.push( new THREE.Vector2( 1.0, 0.0 ) );
}
else {
uvs.push( new THREE.Vector2( 0.0, 1.0 ) );
uvs.push( new THREE.Vector2( 0.0, 0.0 ) );
uvs.push( new THREE.Vector2( 1.0, 0.0 ) );
}
Then set corresponding UV vertices, re-compute the normals, create the actual mesh, and add it to the scene.
triGeom.faceVertexUvs[ 0 ].push( [ uvs[0], uvs[1], uvs[2] ] );
triGeom.computeFaceNormals();
triGeom.computeVertexNormals();
var mesh = new THREE.Mesh( triGeom, material);
gfxScene.add(mesh);
Do this for each triangle and that's it. And that's it! Click on this link to see the "House of Sammy" in all his glory!
As always, the original sources are on github here.


--- status: publish layout: page tags: - data author: display_name: JP email<EMAIL_ADDRESS>published: true date: 2011-11-18 15:41:42 -0700 title: Renewable Energy categories: [] ---
Data Type: GIS Data Layer
Steward(s): AGRC & UREZ
Abstract:
This dataset contains Utah Renewable Energy Zone (UREZ) locations and areas with renewable energy potential for wind, solar and geothermal resources.
Data Content:
The following data is available for download:
Other links for this dataset:
Other links for this dataset:
Other datasets:


Preparation time
less than 30 mins
Cooking time
over 2 hours
Serves
Serves 4
Dietary
Michel Roux serves up an exotic dessert of roasted pineapple that's the ideal finish to a spicy Asian dinner.
For the ice cream, heat the milk, coconut milk and two-thirds of the sugar in a heavy-based saucepan and slowly bring to the boil.
Meanwhile, whisk the egg yolks and remaining sugar together in a heatproof bowl. Continue to whisk until the mixture becomes pale and has a light ribbon consistency.
Pour the boiling milk onto the egg yolks, whisking continuously, then pour the mixture back into the saucepan.
Cook over a low heat, stirring with a wooden spatula or spoon; do not let it boil or it will curdle. The custard is ready when it has thickened slightly – just enough to lightly coat the back of the spatula. When you run your finger through, it should leave a clear trace. Immediately take off the heat and pour into a bowl.
Stir in the desiccated coconut and double cream.
Leave to cool, stirring occasionally to prevent a skin forming. Stir in the rum.
Pour the cool mixture through a fine sieve before churning in an ice-cream maker for about 20 minutes, until the ice cream is firm but still creamy.
Transfer the ice cream to a chilled freezerproof container and keep it in the freezer until ready to serve.
For the syrup, place all of the ingredients into a saucepan. Slowly bring to the boil over a gentle heat, stirring occasionally. Simmer over a medium heat to reduce by three-quarters, until it makes a thick syrup. Set aside.
Preheat the oven to180C/350F/Gas 4.
Using a serrated knife, cut a 3cm/1in slice from the top of the pineapple, removing the leaves, and a 2cm/¾in slice from the base to enable the pineapple to stand upright. Now working from top to bottom and following the curve of the fruit, remove the peel.

Stud the flesh evenly all over with the cloves.
Heat the oil in an oval pan (or one that will take the whole fruit) until very hot, then add the pineapple and lightly colour all over.
Transfer the pineapple to a roasting dish, standing it upright.
Baste the pineapple with the reduced syrup and roast in the oven for 35-40 minutes, depending on the ripeness of the fruit. Baste every five minutes or so with the syrup.
Leave the roasted pineapple to stand for 10-15 minutes before serving, basting from time to time with the syrup.
To serve, slice the pineapple into 1cm/½in slices.
Arrange in a serving dish, retaining the star anise for decoration, and serve the ice cream alongside.


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface CellEditor
This interface defines the methods any general editor should be able to implement.
Having this interface enables complex components (the client of the
editor) such as JList
, JTree
, and
JTable
to allow any generic editor to
edit values in a table cell, or tree cell, etc. Without this generic
editor interface, JTable
would have to know about specific editors,
such as JTextField
, JCheckBox
, JComboBox
,
etc. In addition, without this interface, clients of editors such as
JTable
would not be able
to work with any editors developed in the future by the user
or a 3rd party ISV.
To use this interface, a developer creating a new editor can have the
new component implement the interface. Or the developer can
choose a wrapper based approach and provide a companion object which
implements the CellEditor
interface (See
JCellEditor
for example). The wrapper approach
is particularly useful if the user want to use a 3rd party ISV
editor with JTable
, but the ISV didn't implement the
CellEditor
interface. The user can simply create an object
that contains an instance of the 3rd party editor object and "translate"
the CellEditor
API into the 3rd party editor's API.
CellEditorListener
| Method Summary | |
|---|---|
void |
addCellEditorListener(CellEditorListener l)
Adds a listener to the list that's notified when the editor stops, or cancels editing. |
void |
cancelCellEditing()
Tells the editor to cancel editing and not accept any partially edited value. |
Object |
getCellEditorValue()
Returns the value contained in the editor. |
boolean |
isCellEditable(EventObject anEvent)
Asks the editor if it can start editing using anEvent . |
void |
removeCellEditorListener(CellEditorListener l)
Removes a listener from the list that's notified |
boolean |
shouldSelectCell(EventObject anEvent)
Returns true if the editing cell should be selected, false otherwise. |
boolean |
stopCellEditing()
Tells the editor to stop editing and accept any partially edited value as the value of the editor. |
| Method Detail |
|---|
Object getCellEditorValue()
boolean isCellEditable(EventObject anEvent)
anEvent
.
anEvent
is in the invoking component coordinate system.
The editor can not assume the Component returned by
getCellEditorComponent
is installed. This method
is intended for the use of client to avoid the cost of setting up
and installing the editor component if editing is not possible.
If editing can be started this method returns true.
anEvent
- the event the editor should use to consider
whether to begin editing or not
shouldSelectCell(java.util.EventObject)
boolean shouldSelectCell(EventObject anEvent)
anEvent
- the event the editor should use to start
editing
isCellEditable(java.util.EventObject)
boolean stopCellEditing()
void cancelCellEditing()
void addCellEditorListener(CellEditorListener l)
l
- the CellEditorListenervoid removeCellEditorListener(CellEditorListener l)
l
- the CellEditorListener
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


{% extends 'base.html'%}
{% import 'macros.html' as macro%}
{% import 'bootstrap/wtf.html' as wtf %}
{% block styles%}
{{ super() }}
{% endblock %}
{% block content %}
In just 60 seconds test your skills and Write a pitch


Create a Trello Card
×
Card Title
Card Description
For which Board?
{{org.displayName}}
×
★
{{board.name}}
On which deck?
{{deck.name}}


EFA enquiries
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Guidance
This guide is for all institutions with a 16 to 18 Residential Support Scheme (RSS) allocation in the 2017 to 2018 academic year.
This guide sets out:
Institutions must ensure RSS is administered in line with the scheme rules set out in this guide.
RSS is designed to provide financial help with residential costs for eligible students living away from home because the substantial Level 2 or Level 3 qualification that is part of their study programme is not available locally.
Institutions may use up to 5% of their RSS allocation to cover scheme administrative costs.
To be eligible for RSS support in the 2017 to 2018 academic year, a student must meet the following criteria:
Students must be 16 or over but under 19 years old on 31 August 2017.
Students aged 19 or over are only eligible for RSS if they are continuing on a study programme they began aged 16 to 18 (‘19+ continuers’) or have an Education, Health and Care Plan (EHCP).
Students must meet the residency criteria set out in the 2017 to 2018 academic year EFA Funding Regulations .
Students must have a household income of £30,993 or less in the previous tax year. For the 2017 to 2018 academic year, this is the 2016 to 2017 tax year. EFA defines a household as the student and the adults they live with who are mainly responsible for them.
The amount of RSS a student is awarded is based on an income-assessment that uses the following thresholds:
| Gross income level | Up to £21, 000 | £21,001 - £25,704 | £25,705 - £30,993 | £30,994 and over |
|---|---|---|---|---|
| Maximum RSS award - outside London | £3,458 | £2,305 | £1,152 | nil |
| Maximum RSS award - inside London * | £4,079 | £ 2,685 | £1,355 | nil |
These amounts are the maximum available for each income bracket. Students will be awarded the actual cost of their accommodation if this is less than the figures shown. If the study programme lasts for less than one year, the amount of RSS support will be on a proportional basis.
Students cannot receive RSS if they are in receipt of housing benefit.
London boroughs eligible for the London weighting
*The following London Boroughs are eligible for the London weighting: Barking & Dagenham, Barnet, Bexley, Brent, Bromley, Camden, Croydon, Ealing, Enfield, Greenwich, Hackney & City of London, Hammersmith & Fulham, Haringey, Harrow, Havering, Hillingdon, Hounslow, Islington, Kensington & Chelsea, Kingston-upon-Thames, Lambeth, Lewisham, Merton, Newham, Redbridge, Richmond-upon-Thames, Southwark, Sutton, Tower Hamlets, Waltham Forest, Wandsworth and Westminster.
 The programme must be directly 16 to 19 funded by EFA. Study programmes delivered by institutions that have a sub-contracting relationship with an EFA funded institution are not eligible for RSS funding.
Institutions should refer to EFA Funding Regulations for the 2017 to 2018 academic year for more detail about programme funding.
The full Level 2 or full Level 3 substantial qualification should normally be the student’s first qualification at those levels. In exceptional circumstances, RSS may be available to students undertaking additional qualifications at the same level they already hold. For example, if a student:
It is the responsibility of institutions to assess where exceptions to the first full Level 2 or first full Level 3 substantial qualification criteria are appropriate. Any such support must be a genuine exception; EFA does not expect RSS to be used for this purpose on a routine basis. Institutions should refer to EFA if they have any doubts about particular cases.
The student’s substantial Level 2 or Level 3 qualification must not be available within reasonable daily travelling distance of their home address.
When assessing RSS eligibility, it is the substantial EFA funded qualification that is key. The study programme as a whole or the combination of different modules within it is not considered as part of the assessment of eligibility. If a student can access the substantial qualification within daily travelling distance of their home, they will not be eligible for RSS.
EFA defines reasonable daily travelling distance as a daily return journey that takes 2 hours or less on public transport; or a distance of under 15 miles from the student’s home or term-time lodgings to the institution.
Students must apply for RSS each academic year they need support from the scheme. This is to enable the institution to check that students still meet all the criteria for support, including household income.
Students apply for RSS directly from their chosen institution. Students must have an unconditional offer of a place before they can apply.
Institutions are reminded that if students apply for RSS part way through the year they may only award RSS from the beginning of the term in which the student applied.
Institutions should have their own application forms which students complete to seek RSS funding. They may wish to continue to use the example application form provided by EFA in the 2015 to 2016 academic year, updated each year as appropriate, or can use any alternative application of their own design. All application forms used by students to apply for RSS must include all the information required to assess if students meet the eligibility requirements set out in this guide.
It is important for audit purposes that the student and responsible adult(s) sign and date the RSS application form.
Institutions should ensure that they obtain evidence of the student’s term accommodation arrangement, for example, a copy of the student’s tenancy agreement. The tenancy agreement (or other evidence accepted by the institution) must have been agreed and signed by the student. It must include the following information:
The student’s term time lodgings must be no further than 15 miles from campus.
Institutions must not release any RSS payments until all the required information/evidence has been provided by the student and they have fully assessed the application. This includes obtaining confirmation from EFA that each student’s substantial qualification meets the conditions.
Institutions must make payments directly to eligible students’ landlords for their rental costs. Proof of payment should be kept for audit purposes.
Institutions should not make RSS payments to students. The only exception to this rule would be in circumstances where a student has already paid some of their rent before the institution has fully assessed their RSS application. In this instance, institutions may reimburse these costs, as long as the rental period the student has paid for is within the agreed period of the RSS award. Institutions must keep proof of payment.
Institutions must complete a course verification proforma to ask EFA to verify each student’s substantial qualification as part of the RSS application process.
Institutions can verify eligibility of a new student’s substantial qualification with EFA before they have assessed the student against the other eligibility criteria or afterwards.
Institutions may send one proforma for all new students seeking RSS funding for verification or separate proformas to verify individuals. EFA request, however, that institutions submit course verification proformas as soon as possible in the academic year. This ensures students do not make financial commitments on the assumption they will receive RSS funding when they may not be entitled to it.
EFA will sent institutions with an RSS allocation for the 2017 to 2018 academic year a new course verification proforma in April 2017.
Institutions must complete the proforma in full, providing the following information:
EFA cannot verify any proforma institutions send with missing or incomplete information. Any such proformas will be returned to the institution.
Completed proformas should be sent to:
Contact form https://form.education...
For all enquiries for the Education Funding Agency
EFA will use the information on the proforma to check if the substantial Level 2 or 3 qualifications each student is enrolled on is available within daily travelling distance of their home address.
EFA will notify institutions of the outcome of the proforma check within 7 working days. The outcome will be either confirmation of the student’s eligibility or a rejection because the qualification is available close to home.
Institutions must keep a copy of EFA’s response as part of their auditable records.
Under no circumstances should institutions give any guarantees of RSS funding to students (or their parents) or make any RSS payments before EFA has confirmed in writing that the student’s substantial qualification meets the eligibility conditions.
If the student fails to attend the study programme including the substantial qualification that EFA has verified, or transfers to a different study programme with a different substantial qualification, RSS funding should be withdrawn immediately. Any changes in substantial qualifications must be re-verified with EFA.
Any withdrawals or changes should be noted in the RSS October MI return EFA will send to institutions. Once EFA has rejected an application because of the substantial qualification being available within daily travelling distance, the institution must reject the student’s RSS application.
Institutions must not make any RSS payments to students who have not been confirmed as eligible by EFA.
Students returning to the second or subsequent year of their study programme who are continuing on the same substantial qualification EFA verified in their first year do not need to be checked with EFA again. Continuing students still need to meet the household income criterion and institutions will need to confirm this via an application from the student each year.
Any student verified by EFA who changes their substantial qualification in a subsequent year must be submitted by the institution to EFA for a new verification.
The course verification form includes a pre-populated tab which institutions should complete to confirm to EFA that continuing students have returned as planned.
EFA generates RSS allocations using information submitted by institution on the previous academic year course verification proforma.
The allocations methodology takes account of the number of eligible students who received RSS support in the previous year who will be returning in the 2017 to 2018 academic year. This number is multiplied by the maximum RSS funding amount per student (set out in the Household Income table).
Additional funding is then added to this total to make funds available for any eligible new students in the 2017 to 2018 academic year.
Only institutions with new RSS supported students in the 2016 to 2017 academic year will be given an RSS allocation in the 2017 to 2018 academic year.
If a student approaches an institutions without an RSS allocation for help with residential costs the institution should ask EFA for a course verification proforma by contacting:
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Institutions should then complete and return the proforma to EFA. EFA will carry out the verification check in the normal way and the student’s substantial qualification is eligible, EFA will release RSS funding for the student to the institution.
Institutions should use the funding allocated to them for RSS solely to support eligible students with residential costs in line with the RSS scheme rules. The funding cannot be used for any other purpose and cannot be carried forward to future years.
Institutions receive RSS allocations in 3 instalments, 50% in August 2017; 25% in December 2017 and 25% in March 2018.
EFA will ask institutions to complete a short management information return in October to report the number of new and returning students who received RSS and the amount of funding spent. Any unspent funds will be recovered.
Data supplied in this return is used to generate future allocations. Institutions who fail to complete the return by the deadline may be subject to recovery of funds. Non-return may also affect future year’s allocations. In the longer term, EFA will use data from the ILR (Learner Funding and Monitoring (FAM); learner support reason) to identify students assessed as eligible for RSS who have taken up the funding to generate allocations. Institutions are strongly encouraged to complete these fields.
EFA will review ILR data periodically throughout the year including R14. This information will support the development of RSS policy and help target RSS funding.
Institutions should keep accurate and up to date records to evidence which students get RSS funding; show that students are eligible for funding and show appropriate use of funds.
RSS funding is subject to the institution’s normal governance and audit regimes and is also subject to EFA checks using data submitted as part of the RSS process (to verify student eligibility). Institutions should note that, following an audit or check that identifies any use of funds that is not in accordance with this guide, EFA may recover funding.
Institutions who would like further information about RSS should contact EFA via our
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Published: 2 March 2017


Add row
Submit
Nick Freear, 22 March 2013. * https://gist.github.com/nfreear/5223248 * http://jsdelivr.com/#!mustache * http://cdnjs.com/#!mustache


Get the latest news on how your code is doing right in your inbox
Select the newsletter you would like to receive
Newletter Format
How did you heared about us?
Would you recommend us to a friend?
Other topic you'de like to hear about


{% extends "registration/base.html" %} {% block title %}Failed activation - {{ block.super }}{% endblock title %} {% block section_title %} Failed to Activate Registration {% endblock section_title %} {% block section %}
The activation key that you have enter is invalid or can't be activated
{% endblock section %}


Ramadan 2019 / 1440h
The IAR would like to wish you and your family a blessed Ramadan that is filled with joy and happiness. The following is a snapshot of IAR's 2019 Ramadan Program along with important dates:
- The first day of Ramadan will be Monday, May 6, 2019. The Taraweeh prayers will start on the evening of Sunday, May 5, 2019.
- The Ishaa and Taraweeh prayers will be led by Imam AbuTaleb, Sh. Hossain and a young huffad from An-Noor school.
- The IAR will offer the Iftar meal on the days of Monday, Tuesday, Wednesday and Thursday during Ramadan. Suhoor will be offered during the last 10 days of Ramadan.
- Community members can reserve the gymnasium for "private Iftars" on Saturday or Sunday.
- IAR fundraising will be on Friday, May 17th, 2019 during the Friday Khutbah for each of the three prayer shifts and during the Taraweeh prayers.
- Zakat Ul-Fitr is $13 per person. Fidya is $7/day/person
- Safety and security is important to all of us. The IAR asks that you please follow the guidelines of IAR's Security Team and local police officers. Please do not block the driveways of our neighbors. Towing will be enforced.
- Babysitting is available for children aged between 3-7 years at the 'Red Brick Building'. Children 7 years and older must stay with their parents. Please follow the guidelines laid out by the organizers of the babysitting team.
- Eid Al Fitr will be celebrated on Tuesday, June 4th at the Exposition Center at the Fairground in two shifts. The first shift gathering is at 6:30 am and prayer at 7:30 am sharp. The second shift gathering is at 8:30 am and prayer is at 9:30 am Sharp.
 Ameen.
Ramadan Time Table (Imsakiyah)
Ramadan Program
| Prayer Iqama Times | Fajr | Isha | Taraweeh |
|---|---|---|---|
| Ramadan 1 - 10 | 5:00 AM | 9:30 PM | 9:50 PM |
| Ramadan 11 - 20 | 4:45 AM | 9:45 PM | 10:05 PM |
| Ramadan 21 - 30 | 4:35 AM | 9:45 PM | 10:05 PM |
- Evening Taraweeh Prayers
- First 8 raka'at & 1st Witr led by Imam AbuTaleb and Sk. Hoosain Dalvi
- Last 12 raka'at & Witr led by Sk. Hoosain Dalvi and young An-Noor huffadh
- Prophetic Character
- Daily short talk (khatera) after 4 raka'at taraweeh with Imam Mohamed AbuTaleb
- Ever Inclined to Allah: Prophet Ibrahim in the Quran
- Saturday, June 1st : From 1:30 to 5:30PM, Ramadan Qur'an Retreat for the whole family with Imam Mohamed AbuTaleb & Imam Muamar Dahnoun
- Ask the Imams
- An imam will be available in the lobby every night to answer your Islamic questions after the first Witr of taraweeh prayers
- Quran Recitation Halaqa
- Monday-Friday after Fajr
- Short talk after Fajr and Khatira on weekends
- Last Ten Night Prayers
- Qiyaam
- Itikaf (participants must register with the Safety and Security office for guidelines)
- Ramadan Fundraising
- Friday May 17th during Jumua and Taraweeh


Guido Dedene of KU Leuven, Leuven (ku leuven) | Read 208 publications, and contact Guido Dedene on ResearchGate, the professional network for scientists.
Malti10-May-19 02:17 PM
confirmed
dukeleto10-May-19 02:17 PM
@Cryptoon sorry to hear that
az10-May-19 02:17 PM
yeah I did this just because it's a woman. I did it because after crosschecking LinkedIn account and RG account, nothing was matching. Then I found out that nobody checked if she was from IBM.

Did you just assume my gender?
2
1
Malti10-May-19 02:27 PM
uh-oh here we goooo
crumb10-May-19 02:28 PM
no wonder some people wish to remain anonymous in crypto space. sooner or later someone disagrees with them on some issue and when they are out of technical arguments, someone digs up some post from decade ago and sh*itstorm follows.
like people can't be versatile or make some questionable choices in their lives. does it make the code less effective if it turns out a person was a marine biologist before discovering crypto?
I am looking at all this new data and taking it all in
This is some really weird stuff
1
Cryptoon10-May-19 02:32 PM
multiple people can have the same username no?
1
Anyway, let ca333 talk to the ibm people
ComputerGenie 👴👴👴10-May-19 02:32 PM
Every other ComputerGenie on the planet must be me
Cryptoon10-May-19 02:32 PM
even if dear Lydia is a fake profile, at least we are in contact with the kind people of IBM after all
1
#winning
private account, dont feel like requesting to follow her
jl777c10-May-19 02:36 PM
it could be she is using a pseudonym
Cryptoon10-May-19 02:37 PM
now who does such a thing
it was a joke, as I assume james lee is a pseudonym :p
ca33310-May-19 02:39 PM
still waiting for reply from IBM - if fake then the twitter accounts were just bought
jl777c10-May-19 02:40 PM
if she isnt using her realname, we wont be able to confirm her status
seems we need to ask her
1
Cryptoon10-May-19 02:41 PM
confirmed by whom?
az10-May-19 02:41 PM
I ask her on twitter, got block in 5 minutes.
Cryptoon10-May-19 02:41 PM
emman arent you a purple name normally?
ca33310-May-19 02:41 PM
same for the profiles she has been refering to
long-term silence is such an indicator
jorian10-May-19 02:42 PM
@ca333 didn't she tag you in a lot of tweets, weeks ago?
ca33310-May-19 02:43 PM
thanks @Deleted User - in this case its a confirmed fake. I guess no need to wait for IBM reply and just report her on twitter, linkedin, and so on.
2
1
1
2
klein10-May-19 02:45 PM
interesting if true these type of games being played
jorian10-May-19 02:45 PM
what i mean with tagging is that i assumed ca333 and that lydia were in contact. but apparently ca333 only contacted them yesterday, so i wondered if he noticed someone (allegedly) from IBM tagged him weeks ago
not that it matters now anyways
another question: but why?
someone from here trying to boost the price?
why would anyone else do this
klein10-May-19 02:46 PM
pump and dump long term bad
Cryptoon10-May-19 02:46 PM
arent there more easy coins for such a p&d?
klein10-May-19 02:46 PM
should not be trying to attract these type of people
az10-May-19 02:47 PM
@jorian 100 $ she will soon ask for money or something on behalf of IBM to mislead KMD users
klein10-May-19 02:47 PM
actually yeah that sounds more likely
ComputerGenie 👴👴👴10-May-19 02:48 PM
thinks @az could only make that bet if controlling the account
1
1
ca33310-May-19 02:49 PM
many potential reasons:
a) trying to indirectly harm komodo by getting us to RT, share, etc. and make it look like we are involved in the fake - with a well coordinated and organized strategy this can lead to even further (legal) issues
b) p&d strategy not excluding a)
c) just for the lulz - building up a fake ID persona with good reputation - can likely get her/thenm some $$
d) and so on
jl777c10-May-19 02:49 PM
it is possible theyhave some real projects, just not official ibm ones
the screen shots had some plausible content on them
Cryptoon10-May-19 02:50 PM
just try to contact them and ask who they really are
now I'm curious for the reasons why
jorian10-May-19 02:50 PM
yes, the screenshots are a thing too.. very weird scenario. someone wanna call them?
ca33310-May-19 02:54 PM
@jorian - call whom?
Malti10-May-19 02:54 PM
@ca333 you are in contact with her in twitter right? could you ask in DM?
ca33310-May-19 02:54 PM
i already did @Malti - i sent her a DM as soon as i talked to IBM.
Malti10-May-19 02:55 PM
alright
now it's a matter of waiting
ca33310-May-19 02:55 PM
i had a phonecall with IBM Research & Development GmbH and with IBM Germany GmbH yesterday - and both assured me that there is no Lydia Schafer or Lydia Schäfer working for them.
az10-May-19 02:55 PM
@ca333 no answer yet ? I talked to her today by DM and she banned me.(edited)
Malti10-May-19 02:56 PM
my key takeaway from wat you say is that in any case KMD is in contact with IBM
ca33310-May-19 02:56 PM
however - there was still the possibility of her being an external employee - that is what we tried to verify/validate hence why we wanted to wait for official response from IBM. But since Emmanuel was able to validate the fake through the former account-owner its sorted.
klein10-May-19 02:57 PM
IBM blockchain twitter follows allot of people
Malti10-May-19 02:57 PM
what about Dennovak ?
klein10-May-19 02:57 PM
and doesn't follow any of these three peoplle
LocoMB10-May-19 02:58 PM
lool.. I worked at a place near IBM headquarters in the outskirts of Berlin in 2011


|
|
The Rule button will create a new SIEVE rule. |
|
|
The Script button will create a new SIEVE script. |
|
|
The Edit button edits the selected rule or script. |
|
|
The Delete button deletes the selected rule or script. |
|
|
The Write button will write the selected script to disk as a text file in the Mulberry application directory. |


S
- The type of the service to be loaded by this loaderpublic final class ServiceLoader<S> extends Object implements Iterable<S>
A service is a well-known set of interfaces and (usually abstract) classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the interfaces and subclass the classes defined in the service itself. Service providers can be installed in an implementation of the Java platform in the form of extensions, that is, jar files placed into any of the usual extension directories. Providers can also be made available by adding them to the application's class path or by some other platform-specific means.
For the purpose of loading, a service is represented by a single type, that is, a single interface or abstract class. (A concrete class can be used, but this is not recommended.) A provider of a given service contains one or more concrete classes that extend this service type with data and code specific to the provider. The provider class is typically not the entire provider itself but rather a proxy which contains enough information to decide whether the provider is able to satisfy a particular request together with code that can create the actual provider on demand. The details of provider classes tend to be highly service-specific; no single class or interface could possibly unify them, so no such type is defined here. The only requirement enforced by this facility is that provider classes must have a zero-argument constructor so that they can be instantiated during loading.
A service provider is identified by placing a provider-configuration file in the resource directory META-INF/services. The file's name is the fully-qualified binary name of the service's type. The file contains a list of fully-qualified binary names of concrete provider classes, one per line. Space and tab characters surrounding each name, as well as blank lines, are ignored. The comment character is '#' ('\u0023', NUMBER SIGN); on each line all characters following the first comment character are ignored. The file must be encoded in UTF-8.
If a particular concrete provider class is named in more than one configuration file, or is named in the same configuration file more than once, then the duplicates are ignored. The configuration file naming a particular provider need not be in the same jar file or other distribution unit as the provider itself. The provider must be accessible from the same class loader that was initially queried to locate the configuration file; note that this is not necessarily the class loader from which the file was actually loaded.
Providers are located and instantiated lazily, that is, on demand. A
service loader maintains a cache of the providers that have been loaded so
far. Each invocation of the iterator
method returns an
iterator that first yields all of the elements of the cache, in
instantiation order, and then lazily locates and instantiates any remaining
providers, adding each one to the cache in turn. The cache can be cleared
via the reload
method.
Service loaders always execute in the security context of the caller. Trusted system code should typically invoke the methods in this class, and the methods of the iterators which they return, from within a privileged security context.
Instances of this class are not safe for use by multiple concurrent threads.
Unless otherwise specified, passing a null argument to any
method in this class will cause a NullPointerException
to be thrown.
Example Suppose we have a service type com.example.CodecSet which is intended to represent sets of encoder/decoder pairs for some protocol. In this case it is an abstract class with two abstract methods:
Each method returns an appropriate object or null if the provider does not support the given encoding. Typical providers support more than one encoding.public abstract Encoder getEncoder(String encodingName); public abstract Decoder getDecoder(String encodingName);
If com.example.impl.StandardCodecs is an implementation of the CodecSet service then its jar file also contains a file named
META-INF/services/com.example.CodecSet
This file contains the single line:
com.example.impl.StandardCodecs # Standard codecs
The CodecSet class creates and saves a single service instance at initialization:
private static ServiceLoader<CodecSet> codecSetLoader = ServiceLoader.load(CodecSet.class);
To locate an encoder for a given encoding name it defines a static factory method which iterates through the known and available providers, returning only when it has located a suitable encoder or has run out of providers.
public static Encoder getEncoder(String encodingName) { for (CodecSet cp : codecSetLoader) { Encoder enc = cp.getEncoder(encodingName); if (enc != null) return enc; } return null; }
A getDecoder method is defined similarly.
Usage Note If the class path of a class loader that is used for provider loading includes remote network URLs then those URLs will be dereferenced in the process of searching for provider-configuration files.
This activity is normal, although it may cause puzzling entries to be created in web-server logs. If a web server is not configured correctly, however, then this activity may cause the provider-loading algorithm to fail spuriously.
A web server should return an HTTP 404 (Not Found) response when a
requested resource does not exist. Sometimes, however, web servers are
erroneously configured to return an HTTP 200 (OK) response along with a
helpful HTML error page in such cases. This will cause a ServiceConfigurationError
to be thrown when this class attempts to parse
the HTML page as a provider-configuration file. The best solution to this
problem is to fix the misconfigured web server to return the correct
response code (HTTP 404) along with the HTML error page.
| Modifier and Type | Method and Description |
|---|---|
Iterator<S> |
iterator()
Lazily loads the available providers of this loader's service.
|
static <S> ServiceLoader<S> |
load(Class<S> service)
Creates a new service loader for the given service type, using the
current thread's context class loader.
|
static <S> ServiceLoader<S> |
load(Class<S> service,
ClassLoader loader)
Creates a new service loader for the given service type and class
loader.
|
static <S> ServiceLoader<S> |
loadInstalled(Class<S> service)
Creates a new service loader for the given service type, using the
extension class loader.
|
void |
reload()
Clear this loader's provider cache so that all providers will be
reloaded.
|
String |
toString()
Returns a string describing this service.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
forEach, spliterator
public void reload()
After invoking this method, subsequent invocations of the iterator
method will lazily look up and instantiate
providers from scratch, just as is done by a newly-created loader.
This method is intended for use in situations in which new providers can be installed into a running Java virtual machine.
public Iterator<S> iterator()
The iterator returned by this method first yields all of the elements of the provider cache, in instantiation order. It then lazily loads and instantiates any remaining providers, adding each one to the cache in turn.
To achieve laziness the actual work of parsing the available
provider-configuration files and instantiating providers must be done by
the iterator itself. Its hasNext
and
next
methods can therefore throw a
ServiceConfigurationError
if a provider-configuration file
violates the specified format, or if it names a provider class that
cannot be found and instantiated, or if the result of instantiating the
class is not assignable to the service type, or if any other kind of
exception or error is thrown as the next provider is located and
instantiated. To write robust code it is only necessary to catch ServiceConfigurationError
when using a service iterator.
If such an error is thrown then subsequent invocations of the iterator will make a best effort to locate and instantiate the next available provider, but in general such recovery cannot be guaranteed.
Design Note Throwing an error in these cases may seem extreme. The rationale for this behavior is that a malformed provider-configuration file, like a malformed class file, indicates a serious problem with the way the Java virtual machine is configured or is being used. As such it is preferable to throw an error rather than try to recover or, even worse, fail silently.
The iterator returned by this method does not support removal.
Invoking its remove
method will
cause an UnsupportedOperationException
to be thrown.
public static <S> ServiceLoader<S> load(Class<S> service, ClassLoader loader)
S
- the class of the service typeservice
- The interface or abstract class representing the serviceloader
- The class loader to be used to load provider-configuration files
and provider classes, or null if the system class
loader (or, failing that, the bootstrap class loader) is to be
usedpublic static <S> ServiceLoader<S> load(Class<S> service)
An invocation of this convenience method of the form
is equivalent toServiceLoader.load(service)
ServiceLoader.load(service, Thread.currentThread().getContextClassLoader())
S
- the class of the service typeservice
- The interface or abstract class representing the servicepublic static <S> ServiceLoader<S> loadInstalled(Class<S> service)
This convenience method simply locates the extension class loader, call it extClassLoader, and then returns
ServiceLoader.load(service, extClassLoader)
If the extension class loader cannot be found then the system class loader is used; if there is no system class loader then the bootstrap class loader is used.
This method is intended for use when only installed providers are desired. The resulting service will only find and load providers that have been installed into the current Java virtual machine; providers on the application's class path will be ignored.
S
- the class of the service typeservice
- The interface or abstract class representing the serviceDracula Javadoc Sample, Made with Allan Im.


Available veriety of cake designs & customisation. Includeing from your favorite character to your passion.
Trufullo is all about an entangled experience of layers, flavours and taste. Its our USP in a way. Click below to check
Now renounce your cravings with veriety of trufullo bites like some jars, pastry, teak cakes and many more.


cb-card
is a content container for text, photos, chips in the context of a single subject.
The most basic card needs only a cb-card
element with some content. However, it provides a number of preset sections that you can use inside of a cb-card.
| Element | Description |
|---|---|
| cb-card-title | Adds a title inside the card |
| cb-card-pretitle | Adds a pretitle inside the card |
| cb-card-description | Adds a description inside card |
| cb-card-images | Adds a card image the card |
| cb-card-info | Adds card info |
| cb-card-footer | Section anchored to the bottom of the card |
| cb-card-header | Section anchored to the top of the card |


This entry provides a rank ordering of trading partners starting with the most important; it sometimes includes the percent of total dollar value.
| Country | IMPORTS - PARTNERS(%) |
|---|---|
| Afghanistan |
Pakistan 28%, US 18.6%, Russia 7.6%, India 6.3%, Kazakhstan 4.5%, China 4.3% (2013) |
| Albania |
Italy 36.1%, Greece 9.6%, China 7.2%, Turkey 5.7%, Germany 4% (2013) |
| Algeria |
France 15.1%, China 11.6%, Italy 10.8%, Spain 9.8%, Germany 4.6% (2013) |
| Angola |
Portugal 19.5%, China 19.1%, US 7%, South Africa 6.9%, Brazil 6.1%, South Korea 6% (2013) |
| Argentina |
Brazil 27.8%, US 14.5%, China 12.4%, Germany 4.6% (2013) |
| Armenia |
Russia 24.8%, China 8.6%, Germany 6.3%, Ukraine 5.1%, Turkey 4.7%, Iran 4.4% (2013) |
| Aruba |
US 49.6%, Netherlands 11.1%, UK 6.8% (2013) |
| Australia |
China 19.5%, US 10.4%, Japan 7.8%, Singapore 5.4%, Germany 4.7%, Thailand 4.7%, South Korea 4.2% (2013) |
| Austria |
Germany 41.7%, Italy 6.4%, Switzerland 4.8%, Czech Republic 4.2% (2013) |
| Azerbaijan |
Turkey 15.8%, Russia 14.1%, UK 11.1%, Germany 7.8%, China 6%, Ukraine 5.5% (2013) |
| Bahamas, The |
US 36.6%, South Korea 10%, Singapore 9.7%, India 8%, Colombia 5.8%, Japan 5.7% (2013) |
| Bahrain |
Saudi Arabia 27.9%, China 10.1%, US 8.3%, Japan 6.2%, India 5.5%, Australia 5.2% (2013) |
| Bangladesh |
China 21.9%, India 14%, Singapore 5.8%, Malaysia 5.3% (2013) |
| Barbados |
Trinidad and Tobago 35%, US 24.6%, Canada 8% (2013) |
| Belarus |
Russia 53.2%, Germany 7.1%, China 6.6%, Ukraine 4.8% (2013) |
| Belgium |
Netherlands 20.7%, Germany 13.6%, France 10.6%, US 6.8%, UK 5.3% (2013) |
| Belize |
US 23.3%, Mexico 14.1%, China 11.8%, Cuba 9.6%, Guatemala 5.5%, Trinidad and Tobago 4.3% (2013) |
| Benin |
China 37.1%, India 10.3%, US 7.5%, Malaysia 6.7%, Thailand 6.1%, France 4.4% (2013) |
| Bermuda |
Germany 35.2%, South Korea 34.5%, US 11.5%, Singapore 7.6%, China 4.1% (2013) |
| Bhutan |
India 72.3%, South Korea 6% (2013 est.) |
| Bolivia |
Brazil 17%, China 13%, US 13%, Argentina 11%, Peru 6%, Japan 5% (2013) |
| Bosnia and Herzegovina |
Croatia 20.5%, Germany 13%, Slovenia 12.3%, Italy 10.1%, Russia 8%, Austria 6.2%, Hungary 5.4% (2013) |
| Brazil |
China 15.6%, US 15.1%, Argentina 6.9%, Germany 6.3%, Nigeria 4% (2013) |
| Brunei |
Singapore 28.6%, China 22.1%, UK 18.9%, Malaysia 10.8%, US 7.2% (2013) |
| Bulgaria |
Russia 18.6%, Germany 10.9%, Italy 7.5%, Romania 6.7%, Turkey 5.7%, Greece 5.6%, Spain 5.2% (2013) |
| Burkina Faso |
Cote dIvoire 18.9%, France 18.1%, Ghana 4.5%, India 4.3%, China 4.3%, Togo 4.2% (2013) |
| Burma |
China 40%, Thailand 20.3%, Singapore 12.2%, Japan 5.7% (2013) |
| Burundi |
Saudi Arabia 13.3%, China 8.7%, Tanzania 8%, Belgium 7.6%, Kenya 7.5%, Uganda 7%, Zambia 5.6%, India 5.2%, South Africa 4.6% (2013) |
| Cabo Verde |
Portugal 33.5%, Netherlands 25.2%, China 7.7%, Spain 6.4%, Belgium 5.6% (2013) |
| Cambodia |
Thailand 27%, China 22%, Vietnam 19.3%, Singapore 7.2%, Hong Kong 6% (2013) |
| Cameroon |
China 23.2%, France 14%, Nigeria 10.8%, Belgium 5.6%, US 5.1%, India 4.4% (2013) |
| Canada |
US 52.1%, China 11.1%, Mexico 5.6% (2013) |
| Central African Republic |
South Korea 17.4%, Netherlands 12.9%, Singapore 9%, Cameroon 8.5%, France 6.2% (2013) |
| Chad |
China 31%, Cameroon 13.2%, France 11.6%, Belgium 5.4%, India 4.3% (2013) |
| Chile |
US 20.3%, China 19.7%, Brazil 6.5%, Argentina 5%, Germany 4% (2013) |
| China |
South Korea 9.4%, Japan 8.3%, Taiwan 8%, United States 7.5%, Germany 4.8%, Australia 4.7% (2013) |
| Colombia |
US 28%, China 18%, Mexico 9%, Brazil 4% (2013) |
| Comoros |
France 16.9%, Pakistan 15.8%, China 12.8%, UAE 11%, India 6.7%, Kenya 6.1% (2013) |
| Congo, Democratic Republic of the |
South Africa 20.7%, China 15.4%, Zambia 12.3%, Belgium 7.2%, Zimbabwe 5.2%, France 4.8% (2013) |
| Congo, Republic of the |
China 19%, France 18.7%, Italy 6.2%, US 5.5%, India 5.1%, Belgium 4.5% (2013) |
| Costa Rica |
US 47.6%, Mexico 6.4%, China 6.1%, Japan 5.2% (2013) |
| Cote d'Ivoire |
Nigeria 23.1%, France 12.1%, China 8.7%, Bahamas, The 6.4% (2013) |
| Croatia |
Italy 14.3%, Germany 13.6%, Slovenia 7.5%, Russia 7.1%, Austria 6.4%, China 6%, Hungary 4.8% (2013) |
| Cuba |
Venezuela 37.4%, China 12.3%, Spain 9.4%, Brazil 4.7%, Canada 4.1% (2013) |
| Cyprus |
Greece 23.6%, Israel 13.7%, Italy 7.1%, Germany 6.6%, UK 6.5%, France 6.4%, Netherlands 6.2%, Spain 4.4%, China 4.3% (2013) |
| Czech Republic |
Germany 30.3%, Poland 8.1%, Slovakia 7.2%, China 5.8%, Netherlands 5.5%, Russia 5.1%, Austria 4.1% (2013) |
| Denmark |
Germany 21.3%, Sweden 13.2%, Netherlands 7.8%, Norway 6.8%, China 6%, UK 5.4% (2013) |
| Djibouti |
China 27.3%, Saudi Arabia 16.4%, India 9.7%, Indonesia 7.7%, US 4.5% (2013) |
| Dominica |
Japan 36.3%, US 16.7%, Trinidad and Tobago 15.4%, China 4.9% (2013) |
| Dominican Republic |
US 44.7%, Venezuela 7.8%, China 6.5%, Mexico 6.3%, Trinidad and Tobago 4.2% (2013) |
| Ecuador |
US 29.1%, China 12.9%, Colombia 8.5%, Panama 6.8%, Peru 4.1% (2013) |
| Egypt |
China 12.5%, US 7.8%, Italy 5.4%, Ukraine 5.1%, Turkey 4.8%, Germany 4.5% (2013) |
| El Salvador |
US 38.2%, Guatemala 8.7%, Mexico 6.8%, China 6.1%, Honduras 5.2% (2013) |
| Equatorial Guinea |
US 28%, Spain 16.5%, China 13.2%, France 5.7%, Italy 5.1%, Cote dIvoire 4.1% (2013) |
| Estonia |
Finland 15.1%, Germany 10.8%, Sweden 10.4%, Latvia 9.5%, Lithuania 8.9%, Poland 8.2%, Russia 4.7%, China 4.3%, UK 4.3% (2013) |
| Ethiopia |
China 15.3%, Saudi Arabia 8.1%, India 7.2%, US 5.6% (2013) |
| Faroe Islands |
Denmark 47.9%, Norway 28%, Iceland 5.2%, Germany 4.2% (2013) |
| Fiji |
Singapore 17.5%, France 16.1%, NZ 13.6%, Australia 12%, China 10.1%, Malaysia 9.8% (2013) |
| Finland |
Russia 18%, Sweden 16.1%, Germany 14.1%, Netherlands 8.3% (2013) |
| France |
Germany 19.6%, Belgium 11.4%, Italy 7.6%, Netherlands 7.5%, Spain 6.8%, UK 4.9%, China 4.8% (2013) |
| Gabon |
France 21.8%, Cote dIvoire 16.6%, China 10%, Belgium 5.6%, US 5.5%, Netherlands 5.1% (2013) |
| Gambia, The |
China 30.3%, Senegal 9.1%, Brazil 8.2%, India 6.7% (2013) |
| Georgia |
Turkey 16%, China 8.3%, Ukraine 7.7%, Azerbaijan 7.3%, Russia 6.7%, Germany 5.6%, Romania 4.5%, US 4.3%, Japan 4% (2013) |
| Germany |
Netherlands 14.2%, France 7.7%, Belgium 6.4%, China 6.4%, Italy 5.4%, UK 4.9%, Austria 4.4%, Russia 4.3%, Poland 4.3%, Switzerland 4.1%, Czech Republic 4% (2013) |
| Ghana |
China 22.3%, Nigeria 11.7%, Netherlands 6.4%, Cote dIvoire 6.3%, US 6%, India 4.8% (2013) |
| Greece |
Russia 14.1%, Germany 9.7%, Italy 8%, Iraq 7.7%, China 4.7%, France 4.7%, Netherlands 4.7% (2013) |
| Greenland |
Denmark 65.8%, Sweden 19.5% (2013) |
| Grenada |
Trinidad and Tobago 43.5%, US 20.4% (2013) |
| Guatemala |
US 36.4%, Mexico 11.4%, China 9.7%, El Salvador 4.7%, Colombia 4.4% (2013) |
| Guinea-Bissau |
Portugal 27.4%, Senegal 24.1%, India 4.4% (2013) |
| Guinea |
China 15.3%, Netherlands 9.8%, UK 4.2% (2013) |
| Guyana |
Trinidad and Tobago 23.9%, US 20.2%, China 10.2%, Cuba 6.6%, Suriname 4.4% (2013) |
| Haiti |
Dominican Republic 35%, US 26.8%, Netherlands Antilles 8.7%, China 7% (2013) |
| Honduras |
US 49.8%, Guatemala 7.4%, El Salvador 6.1%, China 5.8%, Mexico 5.2% (2013) |
| Hong Kong |
China 47.8%, Japan 7.1%, Singapore 6.1%, US 5.4% (2013) |
| Hungary |
Germany 25.5%, Russia 8.6%, Austria 6.8%, China 6.7%, Slovakia 5.8%, Poland 4.9%, Italy 4.4%, Czech Republic 4.2% (2013) |
| Iceland |
Norway 15.6%, US 10%, Germany 8.4%, China 8.2%, Brazil 7.7%, Denmark 6.3%, Netherlands 5.2%, UK 4.7%, Sweden 4.2% (2013) |
| India |
China 11%, Saudi Arabia 7.8%, UAE 7.1%, Switzerland 5.5%, US 4.8%, Iraq 4.3% (2013) |
| Indonesia |
China 16%, Singapore 13.7%, Japan 10.3%, Malaysia 7.1%, South Korea 6.2%, Thailand 5.7%, US 4.9% (2013) |
| Iran |
UAE 35.8%, China 18.6%, India 6.4%, South Korea 5.8%, Turkey 5.4% (2013) |
| Iraq |
Turkey 25.4%, China 15.5%, Syria 14.3%, US 4.6%, South Korea 4.4% (2013) |
| Ireland |
UK 39.8%, US 9.9%, Germany 8.6%, Netherlands 6.3%, China 4.1% (2013) |
| Israel |
US 11.3%, China 7.8%, Germany 6.5%, Switzerland 6.1%, Belgium 5.3% (2013) |
| Italy |
Germany 15.5%, France 8.9%, China 6.7%, Netherlands 6.1%, Spain 4.7%, Belgium 4.4% (2013) |
| Jamaica |
US 33.7%, Venezuela 15.7%, Trinidad and Tobago 11.4%, China 10.6% (2013) |
| Japan |
China 21.7%, US 8.6%, Australia 6.1%, Saudi Arabia 6%, UAE 5.1%, Qatar 4.4%, South Korea 4.3% (2013) |
| Jordan |
Saudi Arabia 18.5%, China 10.3%, US 6.3%, India 5.1%, Italy 4.8% (2013) |
| Kazakhstan |
China 30.6%, Russia 20.5%, Ukraine 6.8%, Germany 6.2% (2013) |
| Kenya |
India 19.9%, China 17.8%, UAE 8.8%, Japan 5% (2013) |
| Korea, North |
China 78%, South Korea 11% (2013) |
| Korea, South |
China 16.1%, Japan 11.6%, US 8.1%, Saudi Arabia 7.3%, Qatar 5%, Australia 4% (2013) |
| Kosovo |
Germany 11.9%, Macedonia 11.5%, Serbia 11.1%, Italy 8.5%, Turkey 9%, China 6.4%, Albania 4.4% (2012 est.) |
| Kuwait |
China 10.9%, US 10.6%, Saudi Arabia 7.9%, Japan 7.6%, Germany 5.3%, South Korea 4.6%, France 4.6%, India 4.3%, Italy 4.2%, UAE 4% (2013) |
| Kyrgyzstan |
China 51.9%, Russia 21.2%, Kazakhstan 7.8% (2013) |
| Laos |
Thailand 56%, China 26.1%, Vietnam 6.7% (2013) |
| Latvia |
Lithuania 19.3%, Germany 11.3%, Poland 9.4%, Estonia 8.3%, Russia 8%, Finland 4.5%, Italy 4% (2013) |
| Lebanon |
China 11.9%, Italy 8.1%, France 6.7%, United States 6.2%, Germany 5.7% (2013) |
| Liberia |
Singapore 29.6%, South Korea 26.9%, China 17.9%, Japan 13.8% (2013) |
| Libya |
Italy 13.1%, China 11.9%, Turkey 11.3%, Egypt 6.7%, Tunisia 5.8%, Germany 5.3%, South Korea 4.5%, France 4.3% (2013) |
| Lithuania |
Russia 29.4%, Germany 10.4%, Poland 9.5%, Latvia 6.2%, Netherlands 5.2% (2013) |
| Luxembourg |
Belgium 31.5%, Germany 24.3%, France 10.9%, US 8.3%, China 6.4%, Netherlands 4.6% (2013) |
| Macau |
China 53.8%, Hong Kong 21.4%, France 14.2%, Japan 9.7%, United States 8.3%, Germany 4.1% (2013) |
| Macedonia |
Greece 16.8%, Germany 12.5%, UK 11.3%, Serbia 9.8%, Bulgaria 7.8%, Italy 4.8%, Turkey 4.6% (2013) |
| Madagascar |
China 19.4%, France 11.9%, India 6.4%, South Africa 5.6%, Bahrain 4.6%, Kuwait 4.3%, Mauritius 4.2% (2013) |
| Malawi |
South Africa 25.1%, China 12.7%, India 12%, Zambia 11.7%, Tanzania 4.8% (2013) |
| Malaysia |
China 17%, Singapore 13.2%, Japan 8.5%, US 7.6%, Thailand 5.9%, South Korea 4.6%, Indonesia 4.3% (2013) |
| Maldives |
Thailand 37%, France 13%, Iran 6%, Germany 6%, Sri Lanka 6% (2013) |
| Mali |
France 11%, Senegal 10.1%, Cote dIvoire 9.2%, China 7.6% (2013) |
| Malta |
Italy 30.3%, Germany 6.9%, UK 6.7%, France 6.1%, Netherlands 4.4% (2013) |
| Mauritania |
China 15.8%, Netherlands 13.6%, France 7.6%, US 6.5%, Brazil 4.8%, Spain 4.7%, Belgium 4.5% (2013) |
| Mauritius |
India 24.3%, China 14.7%, France 8.2%, South Africa 6.2% (2013) |
| Mexico |
US 49.1%, China 16.1%, Japan 4.5% (2013) |
| Moldova |
Russia 23.3%, Romania 15.1%, Ukraine 14%, Germany 7.6%, Italy 4.6%, Belarus 4.3% (2013) |
| Monaco |
Europe 70.4%, Asia 20.8%, America 4.4%, Africa 4.1% (2013 est.) |
| Mongolia |
China 37.8%, Russia 27.6%, South Korea 6.2%, Japan 4.6%, US 4.4% (2013) |
| Montenegro |
Serbia 29.3%, Greece 8.7%, China 7.1% (2012 est.) |
| Morocco |
Spain 14%, France 12.7%, China 7.1%, US 6.9%, Saudi Arabia 6.5%, Italy 5.3%, Germany 4.7%, Russia 4.5% (2013) |
| Mozambique |
South Africa 26%, India 13.9%, China 12.6%, Portugal 4.5%, Australia 4.3% (2013) |
| Nepal |
India 50.6%, China 35% (2013) |
| Netherlands |
Germany 14.5%, China 12%, Belgium 8.5%, UK 6.6%, Russia 6.5%, US 6.3% (2013) |
| New Caledonia |
France 37%, Singapore 21%, Australia 10%, China 3% (2013) |
| New Zealand |
China 17.5%, Australia 13.3%, US 9.4%, Japan 6.4%, Germany 4.6%, Malaysia 4.1% (2013) |
| Nicaragua |
US 17.6%, Venezuela 14.7%, Mexico 13%, Costa Rica 8.8%, China 8.7%, Guatemala 8.3%, El Salvador 5.6% (2013) |
| Nigeria |
China 20.8%, US 11.2%, India 4.5% (2013) |
| Niger |
France 13.6%, China 11.6%, Nigeria 9.1%, French Polynesia 8.6%, Belgium 5.6%, India 5.3%, Togo 4.8%, Cote dIvoire 4.1% (2013) |
| Norway |
Sweden 13.3%, Germany 12.4%, China 9.1%, UK 6.3%, Denmark 6%, US 5.9% (2013) |
| Oman |
UAE 24.1%, Japan 11%, India 10.4%, China 6.7%, US 5.3% (2013) |
| Pakistan |
China 17.1%, UAE 16.4%, Saudi Arabia 9.9%, Kuwait 7.5%, India 4.5% (2013) |
| Panama |
US 19%, China 14.8%, Singapore 13.1%, Japan 9.5%, Brazil 8.2%, Colombia 5.1% (2013) |
| Papua New Guinea |
Australia 37.9%, Singapore 13.6%, Malaysia 8.8%, China 8.7%, Japan 4.9% (2013) |
| Paraguay |
China 28.5%, Brazil 26.5%, Argentina 14.2%, US 6.5% (2013) |
| Peru |
US 24.8%, China 15.3%, Brazil 5.3%, Argentina 4.8%, Chile 4.7%, Ecuador 4.6%, Mexico 4.4% (2013) |
| Philippines |
China 13%, US 10.8%, Japan 8.4%, South Korea 7.8%, Singapore 6.8%, Thailand 5.5%, Saudi Arabia 4.6%, Indonesia 4.4% (2013) |
| Poland |
Germany 27.5%, Russia 10.6%, Netherlands 6%, China 5.7%, Italy 5.3%, Czech Republic 4.3%, France 4.2% (2013) |
| Portugal |
Spain 32.5%, Germany 11.5%, France 6.8%, Italy 5.2%, Netherlands 5%, Angola 4.7% (2013) |
| Qatar |
US 14.2%, UAE 11.1%, Saudi Arabia 8.6%, UK 6.4%, Japan 6%, China 4.8%, Germany 4.7%, Italy 4.4%, France 4.4% (2013) |
| Romania |
Germany 18.7%, Italy 11%, Hungary 8.3%, France 5.8%, Poland 4.5%, Russia 4.3%, Austria 4% (2013) |
| Russia |
China 16.5%, Germany 12.5%, Ukraine 5.2%, Belarus 4.9%, Italy 4.4%, US 4.3% (2013) |
| Rwanda |
Uganda 15.9%, Kenya 15.2%, China 10.4%, UAE 8.6%, India 6.8%, Tanzania 5.1%, Belgium 4.6% (2013) |
| Saint Kitts and Nevis |
US 28.3%, Germany 16.3%, Trinidad and Tobago 14.4%, Italy 9.7%, Russia 4.3% (2013) |
| Saint Lucia |
US 47.5%, Trinidad and Tobago 14.9%, Argentina 9.1%, Brazil 7.2%, Colombia 4.3% (2013) |
| Saint Vincent and the Grenadines |
Trinidad and Tobago 20.8%, Singapore 17.4%, US 15.7%, Denmark 10.9%, Switzerland 4.8%, Barbados 4.6%, China 4.3%, Italy 4.1% (2013) |
| Samoa |
NZ 21.6%, Fiji 19.5%, Singapore 15%, China 12.6%, US 6.5%, Australia 5.7% (2013) |
| San Marino |
Italy 81.8% (2012 est.) |
| Sao Tome and Principe |
Portugal 67.2%, Gabon 5.6%, China 5.2% (2013) |
| Saudi Arabia |
US 13.1%, China 12.9%, India 8.1%, Germany 7.4%, South Korea 6.1%, Japan 4.7% (2013) |
| Senegal |
France 17.7%, Nigeria 11.6%, China 8.2%, Netherlands 5.8%, India 5.5%, Spain 4.5% (2013) |
| Seychelles |
Saudi Arabia 21.9%, Spain 11.8%, France 7.4%, India 4.7% (2013) |
| Sierra Leone |
China 11.4%, India 9.8%, South Africa 8.5%, UK 8.2%, US 6.2%, Belgium 6.1%, Netherlands 4.2% (2013) |
| Singapore |
China 11.7%, Malaysia 10.9%, US 10.4%, South Korea 6.4%, Japan 5.5%, Indonesia 5.1%, UAE 4.4% (2013) |
| Slovakia |
Germany 18.5%, Czech Republic 16.7%, Russia 10%, Austria 9.5%, Hungary 6.2%, Poland 6.2%, South Korea 4.5%, China 4% (2013) |
| Slovenia |
Germany 16.9%, Italy 13.8%, Austria 10%, Croatia 4.7%, Hungary 4.2%, China 4% (2013) |
| Solomon Islands |
Australia 27.2%, Singapore 24.1%, China 7%, Malaysia 4.2%, NZ 4.2% (2013) |
| Somalia |
Djibouti 24.6%, Kenya 12.8%, India 9.6%, China 7.6%, Pakistan 5.8%, Oman 4.4%, UAE 4.3% (2013) |
| South Africa |
China 16.2%, Germany 9.4%, Saudi Arabia 8%, US 7%, India 4.8% (2013) |
| Spain |
Germany 12.2%, France 11.8%, Italy 6.3%, China 5.7%, Netherlands 5%, Portugal 4.1%, UK 4.1% (2013) |
| Sri Lanka |
India 21.5%, China 17.6%, Singapore 10.1%, UAE 6.1%, Iran 4.9% (2013) |
| Sudan |
China 25.9%, India 8.5%, Saudi Arabia 7.3%, Egypt 6.6%, UAE 4.8% (2013) |
| Suriname |
US 21.6%, Netherlands 13.6%, Italy 8.6%, China 8.3%, UAE 7.5%, Antigua and Barbuda 6.5%, Netherlands Antilles 4.8% (2013) |
| Sweden |
Germany 17.6%, Norway 8.2%, Denmark 8.1%, Netherlands 7.6%, UK 6%, Finland 5.5%, China 5.1%, Russia 4.6%, France 4.1% (2013) |
| Switzerland |
Germany 28.2%, Italy 10.1%, France 8.2%, China 6.2%, US 6.1%, Austria 4.3% (2013) |
| Syria |
Saudi Arabia 24.5%, UAE 12.1%, Iran 8.9%, Iraq 7.3%, Turkey 6%, China 4.6%, Ukraine 4.1% (2013) |
| Taiwan |
Japan 17.6%, China 16.1%, US 9.5% (2013 est.) |
| Tajikistan |
China 41.3%, Russia 15.8%, Kazakhstan 12.5%, Turkey 6% (2013) |
| Tanzania |
India 25%, China 24.6%, South Africa 5.1%, Kenya 4.4% (2013) |
| Thailand |
Japan 16.4%, China 15%, UAE 6.9%, US 5.9%, Malaysia 5.3% (2013) |
| Togo |
China 29.3%, Belgium 12.8%, US 11.5%, France 6.2%, Netherlands 6.1%, India 5.6% (2013) |
| Tonga |
Fiji 34%, NZ 18.9%, China 17.6%, US 8.8% (2013) |
| Trinidad and Tobago |
US 31.6%, Brazil 6.3%, Colombia 5.9%, Gabon 5.3%, Russia 5%, Canada 4.4%, China 4.2% (2013) |
| Tunisia |
France 20.7%, Italy 18.1%, Germany 7.4%, China 5.4%, Spain 5.1%, Algeria 4.4% (2013) |
| Turkey |
Russia 10%, China 9.8%, Germany 9.6%, Italy 5.1%, US 5%, Iran 4.1% (2013) |
| Turkmenistan |
Turkey 22.3%, Russia 15.3%, China 13%, UAE 6.8%, Ukraine 6.3%, Germany 6% (2013) |
| Uganda |
Kenya 19.4%, UAE 14.1%, India 12.2%, China 10.7% (2013) |
| Ukraine |
Russia 29.6%, China 9.8%, Germany 8.4%, Poland 6.9%, Belarus 5.3% (2013) |
| United Arab Emirates |
China 14.7%, India 14%, US 10.8%, UK 6%, Germany 5.1% (2013) |
| United Kingdom |
Germany 13.9%, China 8.5%, Netherlands 8.5%, France 6%, US 5.6%, Belgium 5% (2013) |
| United States |
China 19.6%, Canada 14.6%, Mexico 12.3%, Japan 6.1%, Germany 5% (2013) |
| Uruguay |
China 16.4%, Brazil 14.6%, Argentina 14%, US 12.4% (2013) |
| Uzbekistan |
China 20.5%, Russia 19.9%, South Korea 15.4%, Kazakhstan 11.1%, Germany 4.3%, Turkey 4% (2013) |
| Vanuatu |
China 43.5%, Japan 17%, Singapore 7.9%, Australia 7.4%, Fiji 4.2% (2013) |
| Venezuela |
US 27.4%, China 12.6%, Brazil 10%, Russia 7.1%, Argentina 5.1%, Colombia 4.7%, Mexico 4.5% (2013) |
| Vietnam |
China 32%, South Korea 13.9%, Singapore 7.2%, Japan 6.9%, Hong Kong 5%, Thailand 4.6% (2013) |
| Yemen |
China 15.5%, UAE 13.4%, India 9.5%, Saudi Arabia 6.3%, Kuwait 4.7%, Turkey 4.4% (2013) |
| Zambia |
South Africa 36%, Democratic Republic of the Congo 15.7%, China 9.5%, Kuwait 6.5%, India 4.5% (2013) |
| Zimbabwe |
South Africa 49.1%, Zambia 9.6%, China 8.7% (2013) |