text:
Keno Information
Keno Information for Beginners
No Cost Keno Casinos
Keno No Comments »
Keno is a game of luck with a rich and acclaimed background. The game that we are currently familiar with has experienced remarkable changes since its initial creation. Gambling historians have followed its background as far back as 200 Before Christ to a Chinese style of amusement called 'The Game of the White Dove.' It is a well-recorded certainty that a variation of keno was played in a bingo-like arrangement on the eastern seaboard right about the time of the huge Chinese immigration at the time of the gold rush.
In its latest form, keno is a bit like bingo in that the pair of games are based upon numbers. A single keno card comes with 80 numbers and the player is able to pick as many as he or she would like. This is completed by circling or otherwise marking them with a pen. Once the player has checked off the numbers, s/he must bring the card back to the nice person at the keno booth. The cashier will then issue a receipt after marking down the gambler's numbers. It's the responsibility of the player to trade in any winning keno card before the the next round begins, so stragglers must remain alert.
Now that we've reviewed a little bit of keno's captivating background and basics of game play, you're almost certainly itching to find out where you can gamble on keno on the web. And that is just a acceptable thing for an aspiring keno gambler. Rest assured you have a lot of choices to choose from when it comes to some big-time web keno fun with all the charm you might expect.
The History of Keno
Keno was first played in 200 BC by the Chinese military commander, Cheung Leung who used this game as a monetary resource for his declining army. The city of Cheung was waging a battle, and after some time seemed to be looking at a country wide famine with the excessive decrease in supplies. Cheung Leung needed to develop a fast response for the economic adversity and to produce income for his forces. He, as it follows developed the game we know today as keno and it was a fantastic success.
Keno used to be referred to as the White Pigeon Game, because the winning numbers were delivered by pigeons from bigger locations to the lesser villages. The lotto 'Keno' was imported to America in the 1800s by Chinese migrants who came to the States to jobs. In those times, Keno was played with one hundred and twenty numbers.
Today, Keno is typically enjoyed with just 80 numbers in just about all of American brick and mortar casinos as well as online casinos. Keno is largely liked today because of the laid back nature of gambling the game and the basic reality that there are no expertise needed to enjoy Keno. Despite the fact that the chances of getting a win are terrible, there is constantly the chance that you will hit quite large with very little gambling investment.
Keno is played with 80 numbers with 20 numbers picked each round. Players of Keno can pick from 2 to 10 numbers and gamble on them, whatever amount they are able to. The payout of Keno is dependent on the bets made and the roll out of matching numbers.
Keno has grown in universal appeal in the United States since the close of the 19th century when the Chinese letters were replaced with , American numbers. Lotteries weren't covered under the laws of wagering in Nevada State in 1931. The casinos renamed the 'Chinese lottery' to 'horse race keno' employing the notion that the numbers are horses and you want your horses to come in. When a law passed that taxed off track betting, the casinos swiftly altered the name to 'Keno'.
Keno (345)
DryIcons
© 2009 Sayontan Sinha | Suffusion WordPress theme

redpajama_set_name: RedPajamaCommonCrawl


Known for its versatility and reliability in the kitchen, the Asian Precision 7.25" Kullenschliff Santoku Knife from Messermeister is a Japanese take on a Western Chef's Knife. Translating to "3 good things," the Santoku Knife can effortlessly handle cutting, chopping, and slicing produce, meat, and fish. The compact, straight-edge blade is expertly balanced and puts the control in your hand, so you can maximize your precision and accuracy. Alternating kullens (a.k.a. kullenschliff's, grantons, or hollows) reduce friction and allow food to fall easily from the blade. Don't be surprised when you find yourself reaching for this knife for 90% of all your mincing, dicing, and slicing tasks.


text:
Q: List remains unaltered even after commiting a swap function in python I am a newbie to python so just a simple question about how python functions work since I am accustomed to C/C++ so here is my problem that I have a list:
a = ['0','1','2','3','4','5','6','7','8','9']

and I have a function which takes two elements of list and swap them:
def swap(d,e):
    temp = e
    e = d
    d = temp

now when I pass it arguments like suppose
swap(a[0],a[5])

it doesn't do anything I mean list remains unaltered.Also I have defined my function at the very begining of the py file so also when I insert print temp like
def swap(d,e):
    temp = e
    print temp
    e = d
    d = temp

it gives me correct value say what a[5] is
I mean if I have done anything like this in C

A: When you assign temp to e, you're just creating a new reference to the object e, but what you take, has nothing to do with the list.
def swap(l, o, n): #pass the list, old position, new position
    l[n], l[o] = l[o], l[n]

This way, you do change the list.

A: When you pass the objects from the list to swap, they are bound locally to the argument names d and e. You then swap d with e but that doesn't change the list. You could return the values:
def swap(d, e):
    return e, d

Then call it like:
a[0], a[5] = swap(a[0], a[5])

But clearly you might as well just do:
a[0], a[5] = a[5], a[0]

Alternatively, pass the list and indices, per alKid's answer.

redpajama_set_name: RedPajamaStackExchange


I've narrowed Saturday's Group 1 Champagne Stakes (1600m) down to three main chances, and one of them looks over the odds and history on his side.
Deposit $400, get $600 in bonus bets at CrownBet*.
The Inglis Sires' is by far the best guide to the Champagne Stakes with 10 of the past 11 runners coming through that race.
El Dorado Dreaming was a deserving winner of the Sires', but she did get her chance when swooping down the outside while a couple of others were inconvenienced in the ruck and can turn the tables.
There were two unlucky runs that stand out, the first being Not A Single Cent (10th) and the other being Outrageous (3rd).
Not A Single Cent was snagged back from the wide barrier and had no clear running in the straight yet finished just three lengths from the winner.
Likewise, Outrageous was checked at the start and got back in the run, and he only saw daylight at the 125m mark and dived through to grab 3rd.
Both of these runners came through the VRC Sires' where Not A Single Cent won, while Outrageous was beaten eight lengths.
However, Outrageous was the unlucky runner on this occasion, and after being snagged back from his wide gate and then being severely checked entering the straight, he seemed to give up.
He improved significantly in the Inglis Sires' and is trending the right way to be peaking on Saturday – I have him on top of that pair.
But, the horse I'm leaning to in the Champagne Stakes is the Matt Cumani-trained Akkadian who finished 3rd behind Not A Single Cent in the VRC Sires'.
He maintained a length margin behind Not A Single Cent from the 300m mark to the winning post and was coming down what was deemed to be the slower part of the track.
He then went to Rosehill for the Baillieu Handicap (1400m) where he was held up in the straight and was severely checked at the 100m mark when starting to build momentum.
He lost all chance with the interference, and the form from that race has been franked with Futooh and Aristocratic Miss subsequently finishing 1st and 3rd respectively in last Saturday's Fernhill Handicap (1600m) where they ran three lengths slower than Alizee in the Group 1 Coolmore Legacy Stakes – and she beat those quality mares by two lengths.
Akkadian has drawn barrier 6 which has freakishly produced five of the past seven Champagne Stakes winners, and in-form rider Jordan Childs sticks with him.
And although Akkadian doesn't come through the Inglis Sires', he does have good form around horses that do.
At odds of $17 and $4.60, Akkadian represents great each-way value in an open race.
Also, I'll have a saver on Outrageous at $7.


text:
Experimenting with Lilypond and MIDI
One amazing package that came with Cygwin is Lilypond. It converts simple text descriptions of songs into gorgeously artistic sheetmusic and standard MIDI files. I'm planning on creating a number of these files of popular songs for karaoke use and posting them here. I'm just worried about the copyright issues.
To help me enter the music, I hacked together this little python script which lets me try out different notes with the computer keyboard; if you play one note long enough, its Lilypond representation will stay in the textarea. When you're done you can cut and paste the output into a Lilypond source file. The script is really bad and probably has a memory leak, but you can use it if you feel courageous. It's GPL-licensed, and you're welcome to use and modify it however you wish. It requires the pymidi DLL or beep.py.
On a related note (pun intended), I'm also hacking a sound editing program using Tkinter. "How many projects can you work on at the same time?" you might ask. I haven't yet determined the upper limit...
And now (January 2004) I'm playing with MIDI seriously again, something I hadn't done since 1987-88 when my work made it as the cover story of Portable 100 magazine. See ../src/midi/ for midi.py, and the pymidi subdirectory for the DLL code. This is cygwin-specific, although you could probably port it to Windows with little difficulty. You can thank Jeff Glatt, as I do, for sharing his wealth of knowledge of Windows Multimedia, without which this project would not be progressing nearly as fast. As you may have noticed above, I've updated pyano.py to work with the new DLL.
I'll probably be hacking a lot more on those tools, but as I'm fast running out of money, what I want to do with these is to perform some songs and make a few bucks. So now that midi.py's 'midiplay' routine can transpose a song and drop the melody track, I wrote these two bash scripts, perform and practice, the latter (actually a symlink to the same script) which leaves the melody track (actually channel) in, and the former which removes it. To get this working on your XP/cygwin system, make a text database of song pathnames relative to "My Documents/My Music", followed by the transpose number (-8 to +8 half-steps), followed by the channel to drop. Leave off the ".mid" extension. For example, a file named songs.db:
shout 3 3
everybody_wants_to_rule_the_world 3 3
Then, assuming you have in your path the files 'practice', 'perform', 'pymidi.dll', and 'midiplay' (a symlink to midi.py), you should be able to:
perform songs.db
And it will play the songs one after the other, correctly transposed for your voice and with the melody tracks removed. If you want to find a lot of MIDI sequences to use, try googling '"index of" midi'. If you have the same filename ending in '.html' it will display the lyrics too.
If you aren't able to get this to work, let me know and I'll correct the instructions.
It may be more than obvious, but I'm very proud of these scripts. They allow me to do a lot of MIDI manipulation that would be prohibitively tedious using Windows tools, even Jeff Glatt's very friendly and lightweight programs. I hope you get some good use out of them, too.
November 2006: I finally can scratch this off my to-do list; I've made lilypond representations of a song my Dad wrote for my sister Ellen (PDF) (MIDI) and sang to both of us when we were babies, and another song my Dad used to sing (PDF) (MIDI), which, as I remember, he said one of his war buddies wrote while in Italy or France during WWII. This latter song, it turns out, was written by a James Cavenaugh, with quite different words, and was recorded in 1940, long before the U.S. got involved in the war! So much for my memory, or for my Dad's accuracy, or both!


Stroll through forest areas in the middle of the city. Jog to work through the park. Look at tropical animals. Soak up the sun in the middle of one of Germany's largest and most complete Art Nouveau developments. Cycle along the Rhine and Neckar rivers. Discover a foreign world in the Chinese Garden. Exercise in the sports park... And all in one city: Mannheim.
More than the Luisenpark's little brother. The Herzogenriedpark invites you not only to relax surrounded by greenery - you can also get up close with animals and experience the 'Wonder of Mannheim'.
An enchanted fairytale forest in the big city. Put everday life to one side for a while in the forest park and on the Reißinsel.
Experience rare animal and plant species. Whether walking, jogging or cycling, there is always something to discover between the dunes and the pines.
Not for nothing the most visited extra-urban forest in Baden-Wuerttemberg. Experience game animals up close in the Käfertal forest.
Lean back and relax in Mannheim's green heart. The Luisenpark turns every day into a short vacation.


Although arthritis is more common in dogs, it also afflicts many elderly cats, particularly those that are overweight or have suffered dislocations or fractures. Glucosamine and chondroitin, which have been used successfully for years to treat arthritis in people, can also reduce arthritis symptoms in cats, dogs, and horses.
Chondroprotectants such as glucosamine and chondroitin are considered nutraceuticals because they are somewhere between drugs and nutrients. Chondroprotectants are used to treat a variety of osteoarthritis conditions in pets, including hip dysplasia, as well as to promote healing after spinal disc injuries and joint surgery.
Glucosamine and chondroitin exist in the bodies of living animals, with the highest concentrations in the cartilage. Glucosamine helps the body to build new cartilage, whereas chondroitin blocks enzymes that break down joint cartilage. When animals get older they are unable to produce enough of these substances to meet the body's needs.
Providing glucosamine and chondroitin supplements often alleviates arthritis symptoms. Pets with arthritis that begin supplementation should continue taking the supplements for the rest of their lives. If they stop, the cartilage in their joints will again degenerate. However, when supplements are prescribed following injury or surgery, they may be used for only about 3 months or so.
Few side effects have been noted with glucosamine and chondroitin supplements that are obtained from reputable companies. While a few pets have experienced vomiting or diarrhea, these side effects are uncommon and usually go away if the supplement is given with food rather than on an empty stomach.
Glucosamine and chondroitin supplements have been used for more than 20 years in Europe without complications or serious side effects recorded for long-term use, and they are not known to have interactions with most commonly used medications or vitamins. However, pet owners should consult a veterinarian before giving supplements as there are a few substances and conditions for which certain nutraceuticals may be contraindicated.
There are many different types of glucosamine and chondroitin supplements, and the two substances are often combined in a single pill. Quality of supplements is quite variable. Some contain ingredients of higher purity, and the concentrations of glucosamine and chondroitin differ from one product to the next.
There are two forms of glucosamine available – glucosamine sulphate and glucosamine hydrochloride (HCL). Glucosamine HCL is gaining popularity because it has a higher purity and concentration of glucosamine, and less residual ash.
Although the glucosamine and chondroitin that pets take are the same substances used in supplements designed for humans, animals should not be given human supplements because the dose will be incorrect. Also, supplements designed for animals often have flavourings that pets like, which makes them more palatable.
Glucosamine-chondroitin supplements can be purchased from veterinary clinics and pet supply catalogues. Additional supplements that may be beneficial are vitamins C and E and essential fatty acids.
Always consult a veterinarian before giving your pet supplements.
For information on feline arthritis symptoms and treatments, see Arthritis in Cats.
Veterinary & Aquatic Services Department, Drs. Foster & Smith Inc. (2011). "Glucosamine & Chondroitin for Arthritis in Cats" and "Glucosamine & Chondroitin for Hip Dysplasia and Arthritis in Dogs." PetEducation.com.


while maintaining a low rate of inflation.
Of course, that is a lot easier said than done.
the People's Bank of China have four basic tools.
the setting of the reserve ratio or the reserve requirement.
a higher the money supply multiplier.
create through the borrowing and lending process.
recession or contract the economy to control inflation.
fall below a safe level of reserves and thereby undermine the stability of the system.
a banker's bank by lending money to private banks when they need such funds.
And the rate charged by the central bank is typically called the discount rate.
charges banks when these banks borrow money from the central bank.
a lower discount rate makes it cheaper for banks to borrow funds.
expensive and such a step is likely to contract the money supply.
monetary policy is, open market operations.
government securities to expand or contract the money supply.
expand the money supply and thereby lower interest rates to stimulate economic growth.
thereby raise interest rates to contract the economy to control inflation.
that ultimately determine the total supply of money.
A fourth major tool the monetary policy is known as quantitative easing or QE for short.
the recessionary aftermath of the 2007 financial crisis.
discretionary monetary policy through the setting of rates like the discount rate.
long-term bonds would follow and have the desired monetary policy effect.
almost to zero and the economy still wasn't recovered.
that is longer-term interest rates.
buying long-term bonds with newly printed central bank money.
drives down long-term bond yields which are inversely related to prices.
a monetary policy used by nations to close recessionary and inflationary gaps.
and thereby put a damper on the inflationary pressures that are building.
So, what should the Open Market Committee do in this case?
In this case, the Fed will sell bonds.
here's one variation on how that might work.
the open market that includes dealers and government bonds.
big corporations, other financial institutions and individual.
Hence the term, open market operations.
the Federal Reserve drawn from an account in a commercial bank.
she writes a check on the coyote bank of Santa Fe, New Mexico.
The Fed then presents this check at the Coyote Bank.
the reserves in the entire commercial banking system by $10,000.
the form of reduced lending and thereby a reduced supply of money.
In fact, it is precisely this ripple effect that drives monetary policy.
monetary policy may be used to close recessionary and inflationary gaps.
For now however, take a rest.


text:
Subscribe to Newsletters & Discounts
Share our Website
View Desktop Version of Website
Booksಸಾ�...
ಸಾವನ್ನು ಸ್ವಾಗತಿಸಿ: Savannu Arasi in Kannada (Set of 2 Volumes)
Description Read Full Description
Foreword As one would expect, death, its existence, acceptance, pursuit, rejection, transcendence, and its various other aspects has been the subject of deep speculation by all the great Indian religions. It appears to me, however, that the Jainas, more than the others, have studied it in the most meticulous and awesome detail, particularly during the period extending from about the sixth century A.D., into the fourteenth and fifteenth centuries A.D.. Besides the theor...
As one would expect, death, its existence, acceptance, pursuit, rejection, transcendence, and its various other aspects has been the subject of deep speculation by all the great Indian religions. It appears to me, however, that the Jainas, more than the others, have studied it in the most meticulous and awesome detail, particularly during the period extending from about the sixth century A.D., into the fourteenth and fifteenth centuries A.D.. Besides the theory there was developed an elaborate typology of the various kinds of death sometimes as many as forty-eight in number; those which were to be rejected and those which were acceptable, those which were the most foolish and those which were the wisest, and how the wiser ones could be ritually accomplished for the highest spiritual benefit. All this was laid out fearlessly and unflinchingly.
Professor S. Settar's work is a remarkable study of this aspect of Jaina religious¬ thought, emphasizing the practice in its historical context, particularly in Karnataka, and drawing upon a great variety of sources to paint a picture at once vivid and authentic. Copious use, of course, is made of the canonical texts, but what they have to say is greatly enhanced by recourse to the relatively unexplored Kannada literature. Here the author has found vivid and profound insights and a penetrating immediacy that is not generally available elsewhere. A sense of dealing with real things and events is further enhanced by a careful reference to the historical records such as it is, particularly the epigraphs. The precious and concrete testimony of the monuments of art is also exploited skilfully so that we have in Professor Settars work a truly interdisciplinary study based on a mastery of each of the individual disciplines, providing a model worthy of emulation. There is on one side the theory of voluntary and ritual-death in the context of Jaina thought, why it is to be pursued for spiritual benefit, and the carefully prescribed paths set up for it by the texts. On the other hand, there are those who actually follow this difficult path and the constant compromises that have to be made with theoretical perfection and the exigencies imposed by this world. There is thus always a tension between the dictates of religion and ritual on the one hand and what is demanded by worldly obligations on the other. The strength of Professor Settar's work is that this is all very clearly brought out, giving us a comprehensive and well rounded picture of ritual-death in the Jaina community of Karnataka. The minute examination of inscriptions, the history and frequency of the use of the various words denoting death and other key terms and their meanings is symptomatic of the author's circumspect approach to his subject that avoids all superficial generalization. The frequent citations of actual deaths as engraved or sculpted in stone provide us with a most believable insight into an aspect of the life of the past. Among the most interesting is the propensity for Jaina ritual-death displayed by the chieftains of Hire Avali, 'a family that loved death' and resorted to it as heroically as 'other warriors of the' time were taking to the battlefield'.
Writing on religious and philosophical ideas in language other than that of the culture in which these ideas were originally expressed presents many difficulties for the new language and its terms carry associations and preconceptions that the original terms did not posses. Even at best, translated words carry vibrations of meaning that constantly impede a true understanding of what was originally said and meant. This is a basic problem of scholarship that has been coming into increasing .prominence and has been here obviated to a great extent by a frequent use of the original terms and their careful explanation. The painstaking emphasis on detail both by Professor Settar and the texts and documents he studies also helps in the presentation of Jain¬a ideas of death and its practice in a scholarly work of great objectivity, sympathy, clarity and eloquence.
Item Code: NZJ706 Author: N. Ravi Kumar Cover: Paperback Edition: 2004 Publisher: Abhinav Publication ISBN: Vol I: 9789381055366
Vol II: 9789381055526 Language: Kannada Size: 9.5 inch X 6.5 inch Pages: 668 (Throughout B/W Illustrations) Other Details: weight of the Book: 1.0 kg
Best Deal: $41.60
Shipping Free - 4 to 6 days
Viewed 4176 times since 26th May, 2016
Items Related to ಸಾವನ್ನು ಸ್ವಾಗತಿಸಿ: Savannu Arasi in... ( | Books)
ಶ್ರೀ ಗಣಪತಿ ಖಂಡ: Shri Ganapathi Khanda (Kannada)
ಶ್ರೀ ತಾರಾ ಪ್ರತ್ಯಂಗಿರಾ ಯಂತ್ರ ಮಂತ್ರ ತಂತ್ರ: Sri Tara Pratyangira Yantra, Mantra and Tantra (Kannada)
ಶ್ರೀ ಶರಭ ಕಲ್ಪಃ - Sri Sharabha Kalpah (Kannada)
ಬ್ರಹ್ಮಸೂತ್ರಭಾಷ್ಯ: Brahma Sutra Bhashyam in Kannada (Set of 2 Volumes)
ಮಹಾಪುರಣಗಳ ಮಹಾಪತ್ರಗಳು: Epic Characters of Puranas in Kannada (Set of 10 Books)
ತಂತ್ರಶಾಸ್ತ್ರ ಪ್ರವೇಶ: Tantra Shastra Pravesha (Kannada)
ಶ್ರೀ ಪ್ರತ್ಯಂಗಿರಾ ಉಪಾಸನಾ ಕಲ್ಪ: Sri Pratyangira Upasana Kalpa (Kannada)
55 ದಿನಗಳಲ್ಲಿ ಜ್ಯೋಥ್: Learn Astrology in 55 Days (Kannada)
ಮಂತ್ರ ಮಹೋದಧಿ: Mantra Mahodadhi (Kannada)
ಸಂಪೂರ್ಣ ಮಹಾಭಾರತ: Sampurna Mahabharata(Kannada)
ಶಿವಪುರಾಣ: Shiva Purana (Kannada)
ಶ್ರೀವಾಲ್ಮೀಕಿರಾಮಾಯಣ: Valmiki Ramayana in Kannada (Set of 11 Volumes)
ಶ್ರೀ ಸ್ಕಾಂದ ಮಹಾಪುರಣಂ: Skanda Purana in Kannada (Set of 25 Volumes)
ಶ್ರೀ ಬ್ರಹ್ಮ ವೈವರ್ತ ಮಹಾಪುರಣಂ: Sri Brahmavaivarta Purana in Kannada (Set of 3 Volumes)
Browse Exotic India


Fishing is an addicting activity, and when you've made your very first rod purchase you will be certain to be making more. In short, it is an actual brain vacation. Aside from that, it is believed to have health benefits for the human body too. The very first step to fishing is understanding the fundamental parts which make up the rod.
Depending on the kind of rod you've got, there are two strategies to learn if it's balanced. A fishing rod may be a stick that you insert in the water in a bid to find enjoyment catching fish. The very best fishing rods will cause you to be a more successful fisherman.
If you aren't able, be confident that you're going to lose your fishing rod. You might also wish to take into account where you are going to employ your fishing rod. Fishing rods are produced for certain strategies and species of fish, along with for use in freshwater or saltwater. A superb fishing rod is one which satisfies your purposes.
There are different kinds of fishing rods out there in the on-line industry. So that you are able to continue to keep the fishing rod. So once you choose the fishing rod, you must think about the aspects to judge the Fishing Rod. You must also understand how to balance your fishing rod, which usually means you must have the correct sort of rod for your reel. There are four unique things to think about before you choose the best fishing rod for your requirements.


A free, public event is planned for Saturday, Oct. 7, to provide area residents with information on the contributions and skills of workers with disabilities and resources available for those with disabilities. The centerpiece of the day is a 5-K Disabilities Awareness Walk starting and ending on the College of Menominee Nation campus, N172 State Highway 47/55 in Keshena.
The walk is under the sponsorship of the Menominee Vocational Rehabilitation Program (MVR) and the Menominee Tribal Clinic's Diabetes, Diabetes Prevention and Wellness Programs. The event includes a variety of information booths on programs and services, refreshments, and prizes for walkers and other attendees. Walkers will register at 8:30 a.m. near the College's Cultural Learning Center for the 9 a.m. to 12 noon walk. Information booths will be open for visitors throughout the morning. Tribal entities are sponsoring the event but participation in the walk and information fair is open to everyone.
Information on the rain-or-shine Disabilities Awareness Walk is available from 715-799-6226, ext. 3203. A PDF map of the walk course and more information on the event may be seen here.


text:
Philippine Embassy - Tokyo, Japan > Philippine Festival in Tokyo Showcases Filipino Christmas Spirit and Community Unity
Philippine Festival in Tokyo Showcases Filipino Christmas Spirit and Community Unity
The Philippine Embassy in Tokyo joined the Filipino Community in celebrating the Philippine Festival 2019 held at the Yoyogi Park from 30 November to 1 December 2019. Attracting over 100,000 visitors over a 2-day period, the Festival was organized by the Philippine Festival Organizing Committee (PFOC) composed of various Filipino community organizations under the chairmanship of Ms. Jenavilla Bibal Shigemizu, with the support of the Philippine Embassy and Japan's Ministry of Foreign Affairs.
With the theme "Pasko ng Bayan", the Festival celebrated Christmas in a uniquely Filipino way, along with the taste, sights, and sounds of Filipino cuisine, music, crafts, products, and a variety of inter-cultural performances which showcased how "it's more fun in the Philippines". The Festival aimed to gather the growing Filipino Community in Japan and promote intercultural exchange to foster greater understanding and meaningful friendship between Filipinos and the Japanese people.
Ambassador Jose C. Laurel V with guests of honor and members of the Philippine Festival Organizing Committee
During the opening ceremony on 30 November, Ambassador Jose C. Laurel V, underscored how Christmas is a shared experience of Filipinos overseas, including the over 300,000 Filipinos currently living, working and studying in Japan. Commemorating Bonifacio Day, Ambassador Laurel urged Filipinos to be inspired by the courage, bravery and patriotism of our great revolutionaries as we continue to safeguard and celebrate the freedoms they won for us. He also expressed his deep gratitude to the Government of Japan for providing a second home for Filipinos, and for remaining a reliable partner in the Philippines' economic development.
Gracing the occasion were Japanese government officials and politicians and members of the diplomatic corps, including former ambassadors of Japan to the Philippines. In their messages, Mr. Yasuo Fukuda, former Prime Minister of Japan, Mr. Norihiro Nakayama, Parliamentary Vice-Minister for Foreign Affairs, Mr. Taku Otsuka, State Minister of the Cabinet Office and Director-General of the Japan-Philippines Parliamentary Friendship League, and Mr. Masataka Fujita, Secretary-General of the ASEAN-Japan Center, highlighted the robust bilateral relationship between the Philippines and Japan which continues to be strengthened by people-to-people exchanges.
Members and volunteers of the Philippine Festival Organizing Committee (top) With Ms. Yeng Constantino and a cheering crowd (bottom)
Under the concept of a Philippine Christmas Village, the Philippine Embassy in partnership with the offices of the Tourism Attaché, Agriculture Attaché and the Philippine Trade and Investment Center in Tokyo promoted tourism, investment, and Filipino MSMEs who exhibited various crafts and products. The Embassy's Consular Section and the Philippine Overseas Labor Office, on the other hand, provided consular and labor-related consultations. The Embassy also organized an Anti-Red Tape Act (ARTA) Caravan to provide frontline government services to Filipinos in partnership with NBI, PAG-IBIG, PhilHealth and SSS.
The Philippine Festival attracts a large crowd (top); booths featuring MSMEs from the Philippines
The Festival's intercultural program was top billed by the Guimaras Manggahan Festival dancers and various artists from the Philippines including Ms. Yeng Constantino. Together with Japanese performers, the Filipino performers showcased a tapestry of Filipino culture through songs and dance, including a choir and karaoke competition.
Prior to the Festival, the Guimaras Manggahan Dancers led by Governor Samuel Gumarin were welcomed at the Philippine Embassy during a Cultural and Welcome Night on 28 November 2019, organized by the PFOC and the Federation of World Youth, a Japanese non-profit organization. During the event, the Guimaras Manggahan Dancers presented traditional folk dances while the Japanese performers rendered enka songs and a tea ceremony demonstration.
Part of the Festival's ceremonies was dedicated to celebrating the 156th birth anniversary of Andres Bonifacio. Songs about nationhood and patriotism were featured, including Bonifacio's composition, "Pag-Ibig sa Tinubuang Lupa". Embassy DCM Robespierre Bolivar delivered Bonifacio Day remarks, where he called for unity among the Filipino community and declared that every Filipino's success contributes to the nation's progress.
Guimaras Manggahan Festival Dancers perform a harvest dance
The Philippine Festival is the biggest Filipino annual cultural event in Japan organized by the Filipino Community in partnership with the Philippine Embassy.
Photo Credits: PFOC
Tagged as: festival 2019


text:
LEGO Super Heroes - LEGO Marvel Super Heroes 2 Season Pass Content
LEGO Marvel Super Heroes 2 Season Pass Content
October 11, 2017 / Michael Tran / 0 Comments
If you missed out on the announcement of the LEGO Marvel Super Heroes 2 Season Pass content during NYCC 2017 last week, there's a new graphic showing what will be included. As mentioned before, there will be six Level Packs comprising of Guardians of the Galaxy: Vol. 2, Black Panther, Cloak and Dagger, Avengers: Infinity War, Ant-Man and the Wasp, and the Runaways. There are also four Character Packs that will be in the Season Pass including Agents of Atlas, Out of Time, Champions, and Classic Guardians of the Galaxy.
The Season Pass is packaged with the Deluxe Edition of LEGO Marvel Super Heroes 2 which is just a part of the bundle. Along with it is the exclusive Giant-Man/Goliath LEGO minifigure polybag (30610), the comic art poster of the cover art, and the recently revealed poster of Thanos, Black Panther, Ant-Man, and the Wasp seen above. The game will be available November 14 but I'm sure there will be more reveals between now and then.
Michael Tran
LEGO Games, LEGO Super Heroes
LEGOLEGO Marvel Super Heroes 2Season Pass
LEGO Jurassic World: Fallen Kingdom Sets Confirmed for Spring 2018
The LEGO Ninjago Movie Keychain Offer from i Newspaper


Several districts of South Tyrol, Austria, unofficially united into Ski-Welt region, the largest alpine skiing area in Austria. Placed in the middle of Kitzbühel Alps, Ski-Welt landscape is a 800-2500m peaks galore which suits perfectly for winter skiing activities and riding a bike across great variety of trails during summer.
WELT bikes, founded in 2012, owes its name to the region, where an idea of manufacturing bikes (with main focus on MTB range) of unprecedented quality to price ratio was born. This is the very region where WELT bikes are tested.
ACHIEVED WITH UNCONVENTIONAL ROBOTIC APPLICATIONS.
New Ridge 1.0 and Edelweiss 1.0 models are equipped with 100mm travel suspension forks featuring preaload adjustmentand mechanical lockout. These seemingly entry level bikes boast forks with solid crown aluminium lower legs assembly. Not all such pricepoint and even more expensive bikes feature these technologies. Increased 100mm suspension travel absorbs rough bumps providing confidence when on challenging trails. Preaload adjustment comes handy when fitting a bike for your riding style while lockout eliminates bobbing when riding hard surfaces and tarmac.
One of the most important components you have got on your bike is brakes. All 2016 WELT bikes featuring hydraulic disc are equipped with classic 160/160mm rotors Shimano Acera M-396 brakes. It is worth noting that owerwhleming majority of bike manufacturers use this model for much more expensive bikes, often targeted as performance sport bikes where top performance is a key and all the components should stand to high stress racing. WELT bikes provide you with the same performance at much lower price.
New WELT fixie bike features flip-flop rear hub. This hub is equipped with both fixed cogs as well as a freewheel on the opposite side. So, you can flip the wheel depending on your preferred braking style (U-brakes or fixed gear). By the way, new frame features brake cable routing missing on the last years model.


You will be absolutely amazed at how life-like our Nature's Gallery collection of animals is. A mixture of stonedust and polyresin, these high quality sculptures are an adorable and playful addition to your front porch, backyard, or even indoors!
Dimensions: 11" x 7.5" x 13.75"


Sorry, no results were found in Portland Indiana.
Please see other listings near Portland Indiana.
This 672 square foot single family home has 3 bedrooms and 1.0 bathrooms. It is located at 715 E Shackley St Geneva, Indiana. Quiet little town in the middle of everything. 1 hr south of FT Wayne, IN. It is also located less than a block from a VFW.
This 1220 square foot single family home has 3 bedrooms and 2.0 bathrooms. It is located at 8 WOODCREST AVE WINCHESTER, Indiana.


text:
import conf
import g

from item import link_value
from item.util.item_type import Item_Type

# NOTE This module is the item/type package since it's similar to the other
#      item types, but it's not really meant to be instantiated by the item
#      factory.

log = g.log.getLogger('tag_counts')

class One(link_value.One):

   item_type_id = Item_Type.LINK_VALUE
   item_type_table = 'link_value'
   item_gwis_abbrev = 'lv'
   child_item_types = None

   __slots__ = ()

   def __init__(self, qb=None, row=None, req=None, copy_from=None):
      link_value.One.__init__(self, qb, row, req, copy_from)
      g.assurt(False) # This class shouldn't be called

   # *** GML/XML Processing

   def from_gml(self, qb, elem):
      g.assurt(False) # Invalid request.
      link_value.One.from_gml(self, qb, elem)

   # *** Saving to the Database

   def save_core(self, qb):
      g.assurt(False) # Invalid request.
      link_value.One.save_core(self, qb)

class Many(link_value.Many):

   one_class = One

   sql_clauses_cols_name = link_value.Many.sql_clauses_cols_name.clone()

   # The other item classes tend to use +=, that is, they add on to the
   # exisiting SQL bits. In contrast, this class just overwrites them. That's
   # because we're fudging the request: we don't want link_value stack IDs, we
   # want one lhs_stack_id (the tag) and a count of rhs_stack_ids (the number
   # of byways to which that tag is applied).

   # NOTE: This class doesn't account for branches... it counts _all_ tag
   # applications that the user can see in all branches the user can see.

   g.assurt(not sql_clauses_cols_name.outer.enabled)
   sql_clauses_cols_name.outer.enabled = True

# FIXME: Should count_byways be computed in the outer select? I think this
# number might be a little inflated here...
   sql_clauses_cols_name.outer.select = (
      """
      group_item.lhs_stack_id
      , COUNT(DISTINCT group_item.rhs_stack_id) AS count
      """
      )

   sql_clauses_cols_name.outer.shared = ""

   g.assurt(not sql_clauses_cols_name.outer.group_by_enable)
   sql_clauses_cols_name.outer.group_by_enable = True
   sql_clauses_cols_name.outer.group_by = (
      """
      group_item.deleted
      , group_item.lhs_stack_id
      """)

   # *** Constructor

   __slots__ = ()

   def __init__(self, feat_type=None):
      link_value.Many.__init__(self, 'tag', feat_type)

redpajama_set_name: RedPajamaGithub


We post all opportunities on the ODI website. Select which position you would like to apply for and submit an online application.
Unfortunately due to the high volume of applicants ODI receives we are unable to accept CVs.
Closing date for applications are specified on each advert.
If a position that I am looking for isn't currently being advertised can I apply anyway?
Register for job alerts and ODI will email you when your preferred role becomes available.
How will I be updated on the progress of my application?
You can log into your application and follow its progress throughout the recruitment process.
Does ODI provide visa sponsorship for overseas workers?
ODI can apply for a certificate of sponsorship for a skilled job only. ODI must confirm to the Home Office that the candidate has completed a resident labour market test as set out in the relevant code of practice and cannot fill the post with a qualified settled worker.
How do I apply for an internship at ODI?
Internships are managed separately by each of the programmes within ODI. Please email the relevant Programme Officer directly to express your interest in an internship – enclose your CV, describe your area of specialism or interest, and state your availability (including whether full-time or part-time). Please note that to apply for an internship you must be a postgraduate with a relevant MA/MSc or occasionally even a PhD.
Does ODI offer work experience opportunities?
Unfortunately ODI is unable to offer work experience opportunities.


text:
YUI.add('console', function (Y, NAME) {

/**
 * Console creates a visualization for messages logged through calls to a YUI
 * instance's Y.log( message, category, source ) method.  The
 * debug versions of YUI modules will include logging statements to offer some
 * insight into the steps executed during that module's operation.  Including
 * log statements in your code will cause those messages to also appear in the
 * Console.  Use Console to aid in developing your page or application.
 *
 * Entry categories "info", "warn", and "error"
 * are also referred to as the log level, and entries are filtered against the
 * configured logLevel.
 *
 * @module console
 * @class Console
 * @extends Widget
 * @param conf {Object} Configuration object (see Configuration attributes)
 * @constructor
 */
var getCN = Y.ClassNameManager.getClassName,
    CHECKED        = 'checked',
    CLEAR          = 'clear',
    CLICK          = 'click',
    COLLAPSED      = 'collapsed',
    CONSOLE        = 'console',
    CONTENT_BOX    = 'contentBox',
    DISABLED       = 'disabled',
    ENTRY          = 'entry',
    ERROR          = 'error',
    HEIGHT         = 'height',
    INFO           = 'info',
    LAST_TIME      = 'lastTime',
    PAUSE          = 'pause',
    PAUSED         = 'paused',
    RESET          = 'reset',
    START_TIME     = 'startTime',
    TITLE          = 'title',
    WARN           = 'warn',

    DOT = '.',

    C_BUTTON           = getCN(CONSOLE,'button'),
    C_CHECKBOX         = getCN(CONSOLE,'checkbox'),
    C_CLEAR            = getCN(CONSOLE,CLEAR),
    C_COLLAPSE         = getCN(CONSOLE,'collapse'),
    C_COLLAPSED        = getCN(CONSOLE,COLLAPSED),
    C_CONSOLE_CONTROLS = getCN(CONSOLE,'controls'),
    C_CONSOLE_HD       = getCN(CONSOLE,'hd'),
    C_CONSOLE_BD       = getCN(CONSOLE,'bd'),
    C_CONSOLE_FT       = getCN(CONSOLE,'ft'),
    C_CONSOLE_TITLE    = getCN(CONSOLE,TITLE),
    C_ENTRY            = getCN(CONSOLE,ENTRY),
    C_ENTRY_CAT        = getCN(CONSOLE,ENTRY,'cat'),
    C_ENTRY_CONTENT    = getCN(CONSOLE,ENTRY,'content'),
    C_ENTRY_META       = getCN(CONSOLE,ENTRY,'meta'),
    C_ENTRY_SRC        = getCN(CONSOLE,ENTRY,'src'),
    C_ENTRY_TIME       = getCN(CONSOLE,ENTRY,'time'),
    C_PAUSE            = getCN(CONSOLE,PAUSE),
    C_PAUSE_LABEL      = getCN(CONSOLE,PAUSE,'label'),

    RE_INLINE_SOURCE = /^(\S+)\s/,
    RE_AMP = /&(?!#?[a-z0-9]+;)/g,
    RE_GT  = />/g,
    RE_LT  = /</g,

    ESC_AMP = '&',
    ESC_GT  = '>',
    ESC_LT  = '<',

    ENTRY_TEMPLATE_STR =
        '
'+
            '
'+
                ''+
                    '{sourceAndDetail}'+
                ''+
                ''+
                    '{category}'+
                ''+
                    ' {totalTime}ms (+{elapsedTime}) {localTime}'+
                ''+
            '
'+
            '
{message}
'+
        '
',

    L = Y.Lang,
    create     = Y.Node.create,
    isNumber   = L.isNumber,
    isString   = L.isString,
    merge      = Y.merge,
    substitute = Y.Lang.sub;

function Console() {
    Console.superclass.constructor.apply(this,arguments);
}

Y.Console = Y.extend(Console, Y.Widget,

// Y.Console prototype
{
    /**
     * Category to prefix all event subscriptions to allow for ease of detach
     * during destroy.
     *
     * @property _evtCat
     * @type string
     * @protected
     */
    _evtCat : null,

    /**
     * Reference to the Node instance containing the header contents.
     *
     * @property _head
     * @type Node
     * @default null
     * @protected
     */
    _head    : null,

    /**
     * Reference to the Node instance that will house the console messages.
     *
     * @property _body
     * @type Node
     * @default null
     * @protected
     */
    _body    : null,

    /**
     * Reference to the Node instance containing the footer contents.
     *
     * @property _foot
     * @type Node
     * @default null
     * @protected
     */
    _foot    : null,

    /**
     * Holds the object API returned from Y.later for the print
     * loop interval.
     *
     * @property _printLoop
     * @type Object
     * @default null
     * @protected
     */
    _printLoop : null,

    /**
     * Array of normalized message objects awaiting printing.
     *
     * @property buffer
     * @type Array
     * @default null
     * @protected
     */
    buffer   : null,

    /**
     * Wrapper for Y.log.
     *
     * @method log
     * @param arg* {MIXED} (all arguments passed through to Y.log)
     * @chainable
     */
    log : function () {
        Y.log.apply(Y,arguments);

        return this;
    },

    /**
     * Clear the console of messages and flush the buffer of pending messages.
     *
     * @method clearConsole
     * @chainable
     */
    clearConsole : function () {
        // TODO: clear event listeners from console contents
        this._body.empty();

        this._cancelPrintLoop();

        this.buffer = [];

        return this;
    },

    /**
     * Clears the console and resets internal timers.
     *
     * @method reset
     * @chainable
     */
    reset : function () {
        this.fire(RESET);

        return this;
    },

    /**
     * Collapses the body and footer.
     *
     * @method collapse
     * @chainable
     */
    collapse : function () {
        this.set(COLLAPSED, true);

        return this;
    },

    /**
     * Expands the body and footer if collapsed.
     *
     * @method expand
     * @chainable
     */
    expand : function () {
        this.set(COLLAPSED, false);

        return this;
    },

    /**
     * Outputs buffered messages to the console UI.  This is typically called
     * from a scheduled interval until the buffer is empty (referred to as the
     * print loop).  The number of buffered messages output to the Console is
     * limited to the number provided as an argument.  If no limit is passed,
     * all buffered messages are rendered.
     *
     * @method printBuffer
     * @param limit {Number} (optional) max number of buffered entries to write
     * @chainable
     */
    printBuffer: function (limit) {
        var messages    = this.buffer,
            debug       = Y.config.debug,
            entries     = [],
            consoleLimit= this.get('consoleLimit'),
            newestOnTop = this.get('newestOnTop'),
            anchor      = newestOnTop ? this._body.get('firstChild') : null,
            i;

        if (messages.length > consoleLimit) {
            messages.splice(0, messages.length - consoleLimit);
        }

        limit = Math.min(messages.length, (limit || messages.length));

        // turn off logging system
        Y.config.debug = false;

        if (!this.get(PAUSED) && this.get('rendered')) {

            for (i = 0; i < limit && messages.length; ++i) {
                entries[i] = this._createEntryHTML(messages.shift());
            }

            if (!messages.length) {
                this._cancelPrintLoop();
            }

            if (entries.length) {
                if (newestOnTop) {
                    entries.reverse();
                }

                this._body.insertBefore(create(entries.join('')), anchor);

                if (this.get('scrollIntoView')) {
                    this.scrollToLatest();
                }

                this._trimOldEntries();
            }
        }

        // restore logging system
        Y.config.debug = debug;

        return this;
    },

    /**
     * Constructor code.  Set up the buffer and entry template, publish
     * internal events, and subscribe to the configured logEvent.
     *
     * @method initializer
     * @protected
     */
    initializer : function () {
        this._evtCat = Y.stamp(this) + '|';

        this.buffer = [];

        this.get('logSource').on(this._evtCat +
            this.get('logEvent'),Y.bind("_onLogEvent",this));

        /**
         * Transfers a received message to the print loop buffer.  Default
         * behavior defined in _defEntryFn.
         *
         * @event entry
         * @param event {Event.Facade} An Event Facade object with the following attribute specific properties added:
         *

         *
message

         *
The message data normalized into an object literal (see _normalizeMessage)

         *

         * @preventable _defEntryFn
         */
        this.publish(ENTRY, { defaultFn: this._defEntryFn });

        /**
         * Triggers the reset behavior via the default logic in _defResetFn.
         *
         * @event reset
         * @param event {Event.Facade} Event Facade object
         * @preventable _defResetFn
         */
        this.publish(RESET, { defaultFn: this._defResetFn });

        this.after('rendered', this._schedulePrint);
    },

    /**
     * Tears down the instance, flushing event subscriptions and purging the UI.
     *
     * @method destructor
     * @protected
     */
    destructor : function () {
        var bb = this.get('boundingBox');

        this._cancelPrintLoop();

        this.get('logSource').detach(this._evtCat + '*');

        bb.purge(true);
    },

    /**
     * Generate the Console UI.
     *
     * @method renderUI
     * @protected
     */
    renderUI : function () {
        this._initHead();
        this._initBody();
        this._initFoot();

        // Apply positioning to the bounding box if appropriate
        var style = this.get('style');
        if (style !== 'block') {
            this.get('boundingBox').addClass(this.getClassName(style));
        }
    },

    /**
     * Sync the UI state to the current attribute state.
     *
     * @method syncUI
     */
    syncUI : function () {
        this._uiUpdatePaused(this.get(PAUSED));
        this._uiUpdateCollapsed(this.get(COLLAPSED));
        this._uiSetHeight(this.get(HEIGHT));
    },

    /**
     * Set up event listeners to wire up the UI to the internal state.
     *
     * @method bindUI
     * @protected
     */
    bindUI : function () {
        this.get(CONTENT_BOX).one('button.'+C_COLLAPSE).
            on(CLICK,this._onCollapseClick,this);

        this.get(CONTENT_BOX).one('input[type=checkbox].'+C_PAUSE).
            on(CLICK,this._onPauseClick,this);

        this.get(CONTENT_BOX).one('button.'+C_CLEAR).
            on(CLICK,this._onClearClick,this);

        // Attribute changes
        this.after(this._evtCat + 'stringsChange',
            this._afterStringsChange);
        this.after(this._evtCat + 'pausedChange',
            this._afterPausedChange);
        this.after(this._evtCat + 'consoleLimitChange',
            this._afterConsoleLimitChange);
        this.after(this._evtCat + 'collapsedChange',
            this._afterCollapsedChange);
    },

    /**
     * Create the DOM structure for the header elements.
     *
     * @method _initHead
     * @protected
     */
    _initHead : function () {
        var cb   = this.get(CONTENT_BOX),
            info = merge(Console.CHROME_CLASSES, {
                        str_collapse : this.get('strings.collapse'),
                        str_title : this.get('strings.title')
                    });

        this._head = create(substitute(Console.HEADER_TEMPLATE,info));

        cb.insertBefore(this._head,cb.get('firstChild'));
    },

    /**
     * Create the DOM structure for the console body—where messages are
     * rendered.
     *
     * @method _initBody
     * @protected
     */
    _initBody : function () {
        this._body = create(substitute(
                            Console.BODY_TEMPLATE,
                            Console.CHROME_CLASSES));

        this.get(CONTENT_BOX).appendChild(this._body);
    },

    /**
     * Create the DOM structure for the footer elements.
     *
     * @method _initFoot
     * @protected
     */
    _initFoot : function () {
        var info = merge(Console.CHROME_CLASSES, {
                id_guid   : Y.guid(),
                str_pause : this.get('strings.pause'),
                str_clear : this.get('strings.clear')
            });

        this._foot = create(substitute(Console.FOOTER_TEMPLATE,info));

        this.get(CONTENT_BOX).appendChild(this._foot);
    },

    /**
     * Determine if incoming log messages are within the configured logLevel
     * to be buffered for printing.
     *
     * @method _isInLogLevel
     * @protected
     */
    _isInLogLevel : function (e) {
        var cat = e.cat, lvl = this.get('logLevel');

        if (lvl !== INFO) {
            cat = cat || INFO;

            if (isString(cat)) {
                cat = cat.toLowerCase();
            }

            if ((cat === WARN && lvl === ERROR) ||
                (cat === INFO && lvl !== INFO)) {
                return false;
            }
        }

        return true;
    },

    /**
     * Create a log entry message from the inputs including the following keys:
     *

     *
time - this moment

     *
message - leg message

     *
category - logLevel or custom category for the message

     *
source - when provided, the widget or util calling Y.log

     *
sourceAndDetail - same as source but can include instance info

     *
localTime - readable version of time

     *
elapsedTime - ms since last entry

     *
totalTime - ms since Console was instantiated or reset

     *

     *
     * @method _normalizeMessage
     * @param e {Event} custom event containing the log message
     * @return Object the message object
     * @protected
     */
    _normalizeMessage : function (e) {

        var msg = e.msg,
            cat = e.cat,
            src = e.src,

            m = {
                time            : new Date(),
                message         : msg,
                category        : cat || this.get('defaultCategory'),
                sourceAndDetail : src || this.get('defaultSource'),
                source          : null,
                localTime       : null,
                elapsedTime     : null,
                totalTime       : null
            };

        // Extract m.source "Foo" from m.sourceAndDetail "Foo bar baz"
        m.source          = RE_INLINE_SOURCE.test(m.sourceAndDetail) ?
                                RegExp.$1 : m.sourceAndDetail;
        m.localTime       = m.time.toLocaleTimeString ?
                            m.time.toLocaleTimeString() : (m.time + '');
        m.elapsedTime     = m.time - this.get(LAST_TIME);
        m.totalTime       = m.time - this.get(START_TIME);

        this._set(LAST_TIME,m.time);

        return m;
    },

    /**
     * Sets an interval for buffered messages to be output to the console.
     *
     * @method _schedulePrint
     * @protected
     */
    _schedulePrint : function () {
        if (!this._printLoop && !this.get(PAUSED) && this.get('rendered')) {
            this._printLoop = Y.later(
                                this.get('printTimeout'),
                                this, this.printBuffer,
                                this.get('printLimit'), true);
        }
    },

    /**
     * Translates message meta into the markup for a console entry.
     *
     * @method _createEntryHTML
     * @param m {Object} object literal containing normalized message metadata
     * @return String
     * @protected
     */
    _createEntryHTML : function (m) {
        m = merge(
                this._htmlEscapeMessage(m),
                Console.ENTRY_CLASSES,
                {
                    cat_class : this.getClassName(ENTRY,m.category),
                    src_class : this.getClassName(ENTRY,m.source)
                });

        return this.get('entryTemplate').replace(/\{(\w+)\}/g,
            function (_,token) {
                return token in m ? m[token] : '';
            });
    },

    /**
     * Scrolls to the most recent entry
     *
     * @method scrollToLatest
     * @chainable
     */
    scrollToLatest : function () {
        var scrollTop = this.get('newestOnTop') ?
                            0 :
                            this._body.get('scrollHeight');

        this._body.set('scrollTop', scrollTop);
    },

    /**
     * Performs HTML escaping on strings in the message object.
     *
     * @method _htmlEscapeMessage
     * @param m {Object} the normalized message object
     * @return Object the message object with proper escapement
     * @protected
     */
    _htmlEscapeMessage : function (m) {
        m.message         = this._encodeHTML(m.message);
        m.source          = this._encodeHTML(m.source);
        m.sourceAndDetail = this._encodeHTML(m.sourceAndDetail);
        m.category        = this._encodeHTML(m.category);

        return m;
    },

    /**
     * Removes the oldest message entries from the UI to maintain the limit
     * specified in the consoleLimit configuration.
     *
     * @method _trimOldEntries
     * @protected
     */
    _trimOldEntries : function () {
        // Turn off the logging system for the duration of this operation
        // to prevent an infinite loop
        Y.config.debug = false;

        var bd = this._body,
            limit = this.get('consoleLimit'),
            debug = Y.config.debug,
            entries,e,i,l;

        if (bd) {
            entries = bd.all(DOT+C_ENTRY);
            l = entries.size() - limit;

            if (l > 0) {
                if (this.get('newestOnTop')) {
                    i = limit;
                    l = entries.size();
                } else {
                    i = 0;
                }

                this._body.setStyle('display','none');

                for (;i < l; ++i) {
                    e = entries.item(i);
                    if (e) {
                        e.remove();
                    }
                }

                this._body.setStyle('display','');
            }

        }

        Y.config.debug = debug;
    },

    /**
     * Returns the input string with ampersands (&), &lt, and > encoded
     * as HTML entities.
     *
     * @method _encodeHTML
     * @param s {String} the raw string
     * @return String the encoded string
     * @protected
     */
    _encodeHTML : function (s) {
        return isString(s) ?
            s.replace(RE_AMP,ESC_AMP).
              replace(RE_LT, ESC_LT).
              replace(RE_GT, ESC_GT) :
            s;
    },

    /**
     * Clears the timeout for printing buffered messages.
     *
     * @method _cancelPrintLoop
     * @protected
     */
    _cancelPrintLoop : function () {
        if (this._printLoop) {
            this._printLoop.cancel();
            this._printLoop = null;
        }
    },

    /**
     * Validates input value for style attribute.  Accepts only values 'inline',
     * 'block', and 'separate'.
     *
     * @method _validateStyle
     * @param style {String} the proposed value
     * @return {Boolean} pass/fail
     * @protected
     */
    _validateStyle : function (style) {
        return style === 'inline' || style === 'block' || style === 'separate';
    },

    /**
     * Event handler for clicking on the Pause checkbox to update the paused
     * attribute.
     *
     * @method _onPauseClick
     * @param e {Event} DOM event facade for the click event
     * @protected
     */
    _onPauseClick : function (e) {
        this.set(PAUSED,e.target.get(CHECKED));
    },

    /**
     * Event handler for clicking on the Clear button.  Pass-through to
     * this.clearConsole().
     *
     * @method _onClearClick
     * @param e {Event} DOM event facade for the click event
     * @protected
     */
    _onClearClick : function (e) {
        this.clearConsole();
    },

    /**
     * Event handler for clicking on the Collapse/Expand button. Sets the
     * "collapsed" attribute accordingly.
     *
     * @method _onCollapseClick
     * @param e {Event} DOM event facade for the click event
     * @protected
     */
    _onCollapseClick : function (e) {
        this.set(COLLAPSED, !this.get(COLLAPSED));
    },

    /**
     * Validator for logSource attribute.
     *
     * @method _validateLogSource
     * @param v {Object} the desired logSource
     * @return {Boolean} true if the input is an object with an on
     *                   method
     * @protected
     */
    _validateLogSource: function (v) {
        return v && Y.Lang.isFunction(v.on);
    },

    /**
     * Setter method for logLevel attribute.  Acceptable values are
     * "error&quot, "warn&quot, and "info&quot (case
     * insensitive).  Other values are treated as "info".
     *
     * @method _setLogLevel
     * @param v {String} the desired log level
     * @return String One of Console.LOG_LEVEL_INFO, _WARN, or _ERROR
     * @protected
     */
    _setLogLevel : function (v) {
        if (isString(v)) {
            v = v.toLowerCase();
        }

        return (v === WARN || v === ERROR) ? v : INFO;
    },

    /**
     * Getter method for useBrowserConsole attribute.  Just a pass through to
     * the YUI instance configuration setting.
     *
     * @method _getUseBrowserConsole
     * @return {Boolean} or null if logSource is not a YUI instance
     * @protected
     */
    _getUseBrowserConsole: function () {
        var logSource = this.get('logSource');
        return logSource instanceof YUI ?
            logSource.config.useBrowserConsole : null;
    },

    /**
     * Setter method for useBrowserConsole attributes.  Only functional if the
     * logSource attribute points to a YUI instance.  Passes the value down to
     * the YUI instance.  NOTE: multiple Console instances cannot maintain
     * independent useBrowserConsole values, since it is just a pass through to
     * the YUI instance configuration.
     *
     * @method _setUseBrowserConsole
     * @param v {Boolean} false to disable browser console printing (default)
     * @return {Boolean} true|false if logSource is a YUI instance
     * @protected
     */
    _setUseBrowserConsole: function (v) {
        var logSource = this.get('logSource');
        if (logSource instanceof YUI) {
            v = !!v;
            logSource.config.useBrowserConsole = v;
            return v;
        } else {
            return Y.Attribute.INVALID_VALUE;
        }
    },

    /**
     * Set the height of the Console container.  Set the body height to the
     * difference between the configured height and the calculated heights of
     * the header and footer.
     * Overrides Widget.prototype._uiSetHeight.
     *
     * @method _uiSetHeight
     * @param v {String|Number} the new height
     * @protected
     */
    _uiSetHeight : function (v) {
        Console.superclass._uiSetHeight.apply(this,arguments);

        if (this._head && this._foot) {
            var h = this.get('boundingBox').get('offsetHeight') -
                    this._head.get('offsetHeight') -
                    this._foot.get('offsetHeight');

            this._body.setStyle(HEIGHT,h+'px');
        }
    },

    /**
     * Over-ride default content box sizing to do nothing, since we're sizing
     * the body section to fill out height ourselves.
     *
     * @method _uiSizeCB
     * @protected
     */
    _uiSizeCB : function() {
        // Do Nothing. Ideally want to move to Widget-StdMod, which accounts for
        // _uiSizeCB
    },

    /**
     * Updates the UI if changes are made to any of the strings in the strings
     * attribute.
     *
     * @method _afterStringsChange
     * @param e {Event} Custom event for the attribute change
     * @protected
     */
    _afterStringsChange : function (e) {
        var prop   = e.subAttrName ? e.subAttrName.split(DOT)[1] : null,
            cb     = this.get(CONTENT_BOX),
            before = e.prevVal,
            after  = e.newVal;

        if ((!prop || prop === TITLE) && before.title !== after.title) {
            cb.all(DOT+C_CONSOLE_TITLE).setHTML(after.title);
        }

        if ((!prop || prop === PAUSE) && before.pause !== after.pause) {
            cb.all(DOT+C_PAUSE_LABEL).setHTML(after.pause);
        }

        if ((!prop || prop === CLEAR) && before.clear !== after.clear) {
            cb.all(DOT+C_CLEAR).set('value',after.clear);
        }
    },

    /**
     * Updates the UI and schedules or cancels the print loop.
     *
     * @method _afterPausedChange
     * @param e {Event} Custom event for the attribute change
     * @protected
     */
    _afterPausedChange : function (e) {
        var paused = e.newVal;

        if (e.src !== Y.Widget.SRC_UI) {
            this._uiUpdatePaused(paused);
        }

        if (!paused) {
            this._schedulePrint();
        } else if (this._printLoop) {
            this._cancelPrintLoop();
        }
    },

    /**
     * Checks or unchecks the paused checkbox
     *
     * @method _uiUpdatePaused
     * @param on {Boolean} the new checked state
     * @protected
     */
    _uiUpdatePaused : function (on) {
        var node = this._foot.all('input[type=checkbox].'+C_PAUSE);

        if (node) {
            node.set(CHECKED,on);
        }
    },

    /**
     * Calls this._trimOldEntries() in response to changes in the configured
     * consoleLimit attribute.
     *
     * @method _afterConsoleLimitChange
     * @param e {Event} Custom event for the attribute change
     * @protected
     */
    _afterConsoleLimitChange : function () {
        this._trimOldEntries();
    },

    /**
     * Updates the className of the contentBox, which should trigger CSS to
     * hide or show the body and footer sections depending on the new value.
     *
     * @method _afterCollapsedChange
     * @param e {Event} Custom event for the attribute change
     * @protected
     */
    _afterCollapsedChange : function (e) {
        this._uiUpdateCollapsed(e.newVal);
    },

    /**
     * Updates the UI to reflect the new Collapsed state
     *
     * @method _uiUpdateCollapsed
     * @param v {Boolean} true for collapsed, false for expanded
     * @protected
     */
    _uiUpdateCollapsed : function (v) {
        var bb     = this.get('boundingBox'),
            button = bb.all('button.'+C_COLLAPSE),
            method = v ? 'addClass' : 'removeClass',
            str    = this.get('strings.'+(v ? 'expand' : 'collapse'));

        bb[method](C_COLLAPSED);

        if (button) {
            button.setHTML(str);
        }

        this._uiSetHeight(v ? this._head.get('offsetHeight'): this.get(HEIGHT));
    },

    /**
     * Makes adjustments to the UI if needed when the Console is hidden or shown
     *
     * @method _afterVisibleChange
     * @param e {Event} the visibleChange event
     * @protected
     */
    _afterVisibleChange : function (e) {
        Console.superclass._afterVisibleChange.apply(this,arguments);

        this._uiUpdateFromHideShow(e.newVal);
    },

    /**
     * Recalculates dimensions and updates appropriately when shown
     *
     * @method _uiUpdateFromHideShow
     * @param v {Boolean} true for visible, false for hidden
     * @protected
     */
    _uiUpdateFromHideShow : function (v) {
        if (v) {
            this._uiSetHeight(this.get(HEIGHT));
        }
    },

    /**
     * Responds to log events by normalizing qualifying messages and passing
     * them along through the entry event for buffering etc.
     *
     * @method _onLogEvent
     * @param msg {String} the log message
     * @param cat {String} OPTIONAL the category or logLevel of the message
     * @param src {String} OPTIONAL the source of the message (e.g. widget name)
     * @protected
     */
    _onLogEvent : function (e) {

        if (!this.get(DISABLED) && this._isInLogLevel(e)) {

            var debug = Y.config.debug;

            /* TODO: needed? */
            Y.config.debug = false;

            this.fire(ENTRY, {
                message : this._normalizeMessage(e)
            });

            Y.config.debug = debug;
        }
    },

    /**
     * Clears the console, resets the startTime attribute, enables and
     * unpauses the widget.
     *
     * @method _defResetFn
     * @protected
     */
    _defResetFn : function () {
        this.clearConsole();
        this.set(START_TIME,new Date());
        this.set(DISABLED,false);
        this.set(PAUSED,false);
    },

    /**
     * Buffers incoming message objects and schedules the printing.
     *
     * @method _defEntryFn
     * @param e {Event} The Custom event carrying the message in its payload
     * @protected
     */
    _defEntryFn : function (e) {
        if (e.message) {
            this.buffer.push(e.message);
            this._schedulePrint();
        }
    }

},

// Y.Console static properties
{
    /**
     * The identity of the widget.
     *
     * @property NAME
     * @type String
     * @static
     */
    NAME : CONSOLE,

    /**
     * Static identifier for logLevel configuration setting to allow all
     * incoming messages to generate Console entries.
     *
     * @property LOG_LEVEL_INFO
     * @type String
     * @static
     */
    LOG_LEVEL_INFO  : INFO,

    /**
     * Static identifier for logLevel configuration setting to allow only
     * incoming messages of logLevel "warn" or "error"
     * to generate Console entries.
     *
     * @property LOG_LEVEL_WARN
     * @type String
     * @static
     */
    LOG_LEVEL_WARN  : WARN,

    /**
     * Static identifier for logLevel configuration setting to allow only
     * incoming messages of logLevel "error" to generate
     * Console entries.
     *
     * @property LOG_LEVEL_ERROR
     * @type String
     * @static
     */
    LOG_LEVEL_ERROR : ERROR,

    /**
     * Map (object) of classNames used to populate the placeholders in the
     * Console.ENTRY_TEMPLATE markup when rendering a new Console entry.
     *
     *
By default, the keys contained in the object are:

     *

     *
entry_class

     *
entry_meta_class

     *
entry_cat_class

     *
entry_src_class

     *
entry_time_class

     *
entry_content_class

     *

     *
     * @property ENTRY_CLASSES
     * @type Object
     * @static
     */
    ENTRY_CLASSES   : {
        entry_class         : C_ENTRY,
        entry_meta_class    : C_ENTRY_META,
        entry_cat_class     : C_ENTRY_CAT,
        entry_src_class     : C_ENTRY_SRC,
        entry_time_class    : C_ENTRY_TIME,
        entry_content_class : C_ENTRY_CONTENT
    },

    /**
     * Map (object) of classNames used to populate the placeholders in the
     * Console.HEADER_TEMPLATE, Console.BODY_TEMPLATE, and
     * Console.FOOTER_TEMPLATE markup when rendering the Console UI.
     *
     *
By default, the keys contained in the object are:

     *

     *
console_hd_class

     *
console_bd_class

     *
console_ft_class

     *
console_controls_class

     *
console_checkbox_class

     *
console_pause_class

     *
console_pause_label_class

     *
console_button_class

     *
console_clear_class

     *
console_collapse_class

     *
console_title_class

     *

     *
     * @property CHROME_CLASSES
     * @type Object
     * @static
     */
    CHROME_CLASSES  : {
        console_hd_class       : C_CONSOLE_HD,
        console_bd_class       : C_CONSOLE_BD,
        console_ft_class       : C_CONSOLE_FT,
        console_controls_class : C_CONSOLE_CONTROLS,
        console_checkbox_class : C_CHECKBOX,
        console_pause_class    : C_PAUSE,
        console_pause_label_class : C_PAUSE_LABEL,
        console_button_class   : C_BUTTON,
        console_clear_class    : C_CLEAR,
        console_collapse_class : C_COLLAPSE,
        console_title_class    : C_CONSOLE_TITLE
    },

    /**
     * Markup template used to generate the DOM structure for the header
     * section of the Console when it is rendered.  The template includes
     * these {placeholder}s:
     *
     *

     *
console_button_class - contributed by Console.CHROME_CLASSES

     *
console_collapse_class - contributed by Console.CHROME_CLASSES

     *
console_hd_class - contributed by Console.CHROME_CLASSES

     *
console_title_class - contributed by Console.CHROME_CLASSES

     *
str_collapse - pulled from attribute strings.collapse

     *
str_title - pulled from attribute strings.title

     *

     *
     * @property HEADER_TEMPLATE
     * @type String
     * @static
     */
    HEADER_TEMPLATE :
        '
'+
            '
{str_title}
'+
            '<button type="button" class="'+
                '{console_button_class} {console_collapse_class}">{str_collapse}'+
            '</button>'+
        '
',

    /**
     * Markup template used to generate the DOM structure for the Console body
     * (where the messages are inserted) when it is rendered.  The template
     * includes only the {placeholder} "console_bd_class", which is
     * constributed by Console.CHROME_CLASSES.
     *
     * @property BODY_TEMPLATE
     * @type String
     * @static
     */
    BODY_TEMPLATE : '

',

    /**
     * Markup template used to generate the DOM structure for the footer
     * section of the Console when it is rendered.  The template includes
     * many of the {placeholder}s from Console.CHROME_CLASSES as well as:
     *
     *

     *
id_guid - generated unique id, relates the label and checkbox

     *
str_pause - pulled from attribute strings.pause

     *
str_clear - pulled from attribute strings.clear

     *

     *
     * @property FOOTER_TEMPLATE
     * @type String
     * @static
     */
    FOOTER_TEMPLATE :
        '
'+
            '
'+
                '<input type="checkbox" class="{console_checkbox_class} {console_pause_class}" value="1" id="{id_guid}"> {str_pause}' +
                '<button type="button" class="'+
                    '{console_button_class} {console_clear_class}">{str_clear}'+
                '</button>'+
            '
'+
        '
',

    /**
     * Default markup template used to create the DOM structure for Console
     * entries. The markup contains {placeholder}s for content and classes
     * that are replaced via Y.Lang.sub.  The default template contains
     * the {placeholder}s identified in Console.ENTRY_CLASSES as well as the
     * following placeholders that will be populated by the log entry data:
     *
     *

     *
cat_class

     *
src_class

     *
totalTime

     *
elapsedTime

     *
localTime

     *
sourceAndDetail

     *
message

     *

     *
     * @property ENTRY_TEMPLATE
     * @type String
     * @static
     */
    ENTRY_TEMPLATE : ENTRY_TEMPLATE_STR,

    /**
     * Static property used to define the default attribute configuration of
     * the Widget.
     *
     * @property ATTRS
     * @Type Object
     * @static
     */
    ATTRS : {

        /**
         * Name of the custom event that will communicate log messages.
         *
         * @attribute logEvent
         * @type String
         * @default "yui:log"
         */
        logEvent : {
            value : 'yui:log',
            writeOnce : true,
            validator : isString
        },

        /**
         * Object that will emit the log events.  By default the YUI instance.
         * To have a single Console capture events from all YUI instances, set
         * this to the Y.Global object.
         *
         * @attribute logSource
         * @type EventTarget
         * @default Y
         */
        logSource : {
            value : Y,
            writeOnce : true,
            validator : function (v) {
                return this._validateLogSource(v);
            }
        },

        /**
         * Collection of strings used to label elements in the Console UI.
         * Default collection contains the following name:value pairs:
         *
         *

         *
title : "Log Console"

         *
pause : "Pause"

         *
clear : "Clear"

         *
collapse : "Collapse"

         *
expand : "Expand"

         *

         *
         * @attribute strings
         * @type Object
         */
        strings : {
            valueFn: function() { return Y.Intl.get("console"); }
        },

        /**
         * Boolean to pause the outputting of new messages to the console.
         * When paused, messages will accumulate in the buffer.
         *
         * @attribute paused
         * @type boolean
         * @default false
         */
        paused : {
            value : false,
            validator : L.isBoolean
        },

        /**
         * If a category is not specified in the Y.log(..) statement, this
         * category will be used. Categories "info",
         * "warn", and "error" are also called log level.
         *
         * @attribute defaultCategory
         * @type String
         * @default "info"
         */
        defaultCategory : {
            value : INFO,
            validator : isString
        },

        /**
         * If a source is not specified in the Y.log(..) statement, this
         * source will be used.
         *
         * @attribute defaultSource
         * @type String
         * @default "global"
         */
        defaultSource   : {
            value : 'global',
            validator : isString
        },

        /**
         * Markup template used to create the DOM structure for Console entries.
         *
         * @attribute entryTemplate
         * @type String
         * @default Console.ENTRY_TEMPLATE
         */
        entryTemplate : {
            value : ENTRY_TEMPLATE_STR,
            validator : isString
        },

        /**
         * Minimum entry log level to render into the Console.  The initial
         * logLevel value for all Console instances defaults from the
         * Y.config.logLevel YUI configuration, or Console.LOG_LEVEL_INFO if
         * that configuration is not set.
         *
         * Possible values are "info", "warn",
         * "error" (case insensitive), or their corresponding statics
         * Console.LOG_LEVEL_INFO and so on.
         *
         * @attribute logLevel
         * @type String
         * @default Y.config.logLevel or Console.LOG_LEVEL_INFO
         */
        logLevel : {
            value : Y.config.logLevel || INFO,
            setter : function (v) {
                return this._setLogLevel(v);
            }
        },

        /**
         * Millisecond timeout between iterations of the print loop, moving
         * entries from the buffer to the UI.
         *
         * @attribute printTimeout
         * @type Number
         * @default 100
         */
        printTimeout : {
            value : 100,
            validator : isNumber
        },

        /**
         * Maximum number of entries printed in each iteration of the print
         * loop. This is used to prevent excessive logging locking the page UI.
         *
         * @attribute printLimit
         * @type Number
         * @default 50
         */
        printLimit : {
            value : 50,
            validator : isNumber
        },

        /**
         * Maximum number of Console entries allowed in the Console body at one
         * time.  This is used to keep acquired messages from exploding the
         * DOM tree and impacting page performance.
         *
         * @attribute consoleLimit
         * @type Number
         * @default 300
         */
        consoleLimit : {
            value : 300,
            validator : isNumber
        },

        /**
         * New entries should display at the top of the Console or the bottom?
         *
         * @attribute newestOnTop
         * @type Boolean
         * @default true
         */
        newestOnTop : {
            value : true
        },

        /**
         * When new entries are added to the Console UI, should they be
         * scrolled into view?
         *
         * @attribute scrollIntoView
         * @type Boolean
         * @default true
         */
        scrollIntoView : {
            value : true
        },

        /**
         * The baseline time for this Console instance, used to measure elapsed
         * time from the moment the console module is used to the
         * moment each new entry is logged (not rendered).
         *
         * This value is reset by the instance method myConsole.reset().
         *
         * @attribute startTime
         * @type Date
         * @default The moment the console module is used
         */
        startTime : {
            value : new Date()
        },

        /**
         * The precise time the last entry was logged.  Used to measure elapsed
         * time between log messages.
         *
         * @attribute lastTime
         * @type Date
         * @default The moment the console module is used
         */
        lastTime : {
            value : new Date(),
            readOnly: true
        },

        /**
         * Controls the collapsed state of the Console
         *
         * @attribute collapsed
         * @type Boolean
         * @default false
         */
        collapsed : {
            value : false
        },

        /**
        * String with units, or number, representing the height of the Console,
        * inclusive of header and footer. If a number is provided, the default
        * unit, defined by Widget's DEF_UNIT, property is used.
        *
        * @attribute height
        * @default "300px"
        * @type {String | Number}
        */
        height: {
            value: "300px"
        },

        /**
        * String with units, or number, representing the width of the Console.
        * If a number is provided, the default unit, defined by Widget's
        * DEF_UNIT, property is used.
        *
        * @attribute width
        * @default "300px"
        * @type {String | Number}
        */
        width: {
            value: "300px"
        },

        /**
         * Pass through to the YUI instance useBrowserConsole configuration.
         * By default this is set to false, which will disable logging to the
         * browser console when a Console instance is created.  If the
         * logSource is not a YUI instance, this has no effect.
         *
         * @attribute useBrowserConsole
         * @type {Boolean}
         * @default false
         */
         useBrowserConsole : {
            lazyAdd: false,
            value: false,
            getter : function () {
                return this._getUseBrowserConsole();
            },
            setter : function (v) {
                return this._setUseBrowserConsole(v);
            }
         },

         /**
          * Allows the Console to flow in the document.  Available values are
          * 'inline', 'block', and 'separate' (the default).
          *
          * @attribute style
          * @type {String}
          * @default 'separate'
          */
         style : {
            value : 'separate',
            writeOnce : true,
            validator : function (v) {
                return this._validateStyle(v);
            }
         }
    }

});

}, '3.9.1', {"requires": ["yui-log", "widget"], "skinnable": true, "lang": ["en", "es", "ja"]});