text:
Listen to the story
Change the story
Join the story
Colombia's fragile hold on peace is slipping.
Social leaders are fighting for both their lives and their communities.
Following Colombia's historic peace accord in 2016, a group of activists and human rights defenders—known as social leaders—began the grassroots work of building peace in Afro-Colombian, Indigenous, and rural communities long terrorized by conflict.
MORE THAN 500 SOCIAL LEADERS HAVE LOST THEIR LIVES SINCE 2016
Social leaders are murdered for working to build peace. There have been more than 60 massacres in 2020 alone in many of the communities they work in.
TWICE AS MANY
AS IN 2018
Without the work of social leaders in Afro-Colombian, Indigenous, and rural communities, peace in Colombia is not possible.
Social leaders are calling on us to support their work for peace and protect their lives.
LISTEN TO THE STORY.
CHANGE THE STORY.
JOIN THE STORY.
Rebuilding Peace is a documentary podcast following the stories of four social leaders in Colombia. Together, they paint a picture of the danger of government neglect and armed violence that threatens to unravel the nation's tenuous hold on peace, despite the promises made in the historic 2016 peace accord.
Leyner
Palacios Asprilla
The international community — activists and policymakers alike — must press Colombia to both protect social leaders, and support their work by fully implementing the peace accords. Without the work of social leaders in Afro-Colombian, Indigenous, and rural communities, peace in Colombia is not possible.
Direct actions and activities for people who wish to support the campaign.
Policy recommendations and expert analysis to promote peace in Colombia.
Colombia's Peace Accord is Not Weak, It's Duque Who Insists on Weakening It
WOLA Human Rights Awards Honor Ethnic Working Group of Colombia's Truth Commission
U.S. Actor Kendrick Sampson: 'As Colombia Rises for Social Reform, Afro-Colombians Need Solidarity in Their Fight for Justice and Peace'
Upcoming Event 10/28: Colombian Women Speaking Truth to End Violence: Testimonies and Recommendations to Colombia's Truth Commission under the Peace Accord
Past Event: Con Líderes Hay Paz: Support the Work and Protect the Lives of Colombia's Social Leaders (with English Interpretation)
By subscribing to the Con Líderes Hay Paz campaign, you will receive exclusive access to the stories of courageous social leaders, advocacy materials and resources, expert insights, and news on the progress of peace in Colombia.


The regular opening times of Majestic Wine Duckworth Court in Milton Keynes are Monday to Friday 10AM-8PM, on Saturday 9AM-7PM, on Sunday 10AM-5PM. View the actual opening times of Majestic Wine Duckworth Court in Milton Keynes in our branch locator.
For more information about opening times on Sunday or late night shopping make sure to view the information in the designated blocks. If this Majestic Wine isn't nearby your location you can use the 'Map & Directions' tab to find the fastest route to Duckworth Court in Milton Keynes. This location's coordinates are specifically 52.0293 latitude, -0.7609 longitude. To contact this Liquor Store by phone you can dial 01908691835 during business hours.


Discover the healing benefits of using tea tree oil in your beauty products.
We all know that therapeutic grade essential oils, when used properly, can treat illness and keep us healthy, but did you know that using them in your beauty products can be even more beneficial?
Tea tree essential oil is derived mainly from an Australian plant named Melaleuca alternifolia and has been used for the past 100+ years for its powerful antiseptic properties and its ability to treat wounds. Medical studies demonstrate that it kills many strains of bacteria, viruses and fungi, which makes it a great go-to product any time of year, but especially during the flu season or when you are suffering from skin irritations. A study published in the British Medical Journal found that tea tree essential oil is "a powerful disinfectant and is nonpoisonous and gentle" to the body. In a recent study published in the Journal of Dermatological Sciences, tea tree oil was found to have a rapid effect on reducing cancerous tumors and boosting immunity. Perhaps this is why Australians included it in their first aid kits during World War II.
The natural antiseptic and anti-inflammatory properties of tea tree oil make it a requirement for everyone's natural medicine cabinet. It can be used aromatically and topically, but never internally. According to the National Poison Center tea tree oil should NOT be taken by mouth for any reason.
Soothes cold sores and insect bites. If a little gets in your mouth when treating cold sores) spit out the oil afterwards to prevent possible side effects like digestive issues.
We at in Harmony Naturals love this natural essential oil because it treats skin inflammation and soothes dry, flaking skin and scalps.
Facial toners tighten your facial pores, allowing fewer oils and toxins to settle into the skin. This creates a fresher, cleaner and less oily appearance while preventing acne.
We use tea tree oil in our facial toner because it helps to balance out the skin pH and it naturally treats blemishes and quiets rosacea. It's ideal for all skin types and doesn't cause redness, dryness or peeling that is associated with other acne treatments. One clinical study found that tea tree oil is just as effective as benzoyl peroxide, but doesn't have any of the associated, negative side effects.
We use tea tree essential oil in our hand & body lotion because it prevents the spread of viruses, while treating skin inflammation like dry skin, eczema and psoriasis. It also soothes dry cuticles and prevents infection.
And it's a natural in our shampoo and body wash. It reliefs dry itchy skin and scalps and treats dandruff.


Ok this falls under the epic fail section of my scale of fails.
For sale – IBM PC-compatible computer.
486/33MHz custom-build computer running Phoenix BIOS, 80MB hard disk-drive, 640K of base RAM and 384K of extended RAM installed. Comes with DOS 5.0 and Windows 3.11 For Workgroups and a two-button mouse. Turbo feature still working 100% functional. Great for when you need speed boost. Upgraded graphics to a SVGA 800×600 card that is VESA-compliant and can display 16.7 million colors!!! New-ish 14″ monitor.
Windows 3.11 has MS Paint, Notepad text editing app, and Norton Desktop. Also, 14.4 modem and a trial subscription to both CompuServe and AOL (2.5 software pre-installed). 5.25″/3.5″ dual drive with an open bay in the case if you want to put in a CD-ROM disk drive too. Have plenty of diskettes of shareware including Netscape Navigator, Mosaic browser, and Castle Wolfenstein 3-D! Already has Sim City, SimEarth, Sim Ant, and Sim Tower and Front Page Sports Football.
Canon BubbleJet printer with spare cartridge. Will print all Post-Script and TrueType fonts.
Need to make room in my den for a new Pentium computer that I'm getting.
I built this computer for over $700 so it's a great deal.
Hell of a deal right? Well one of the readers over at Gizmodo managed to get an email out to the poster before the ad was taken off of craigslist here is the response.
Sorry for delay. My Eudora setting was messed up.
No. Is real sale. I need money to buy new Pentium computer that will run the new Windows 95 program. Is supposed to be better than Windows 3 but I don't know. Am too used to finding things in Program Manager. The modem is real fast (by US Robotics) and is much faster than 9600 baud. Even though is 14.4, I got it to run at 28.8 with a program i downloaded.
Am willing to lower ask to $300 for if you have a Apple Mackintosh Quadra (850 preferable).
I REALLLLLY hope this is just a joke and the guy is not serious…Oh well its a fail either way.
Also, don't worry if you don't like Eudora. I have Netscape Communicator Gold although I just use the browser on it because it reads GIF images and JPG images.
I would pay $300 for that! Sounds like and awesome piece of old tech.


Extrabux.com offers a wide selection of Clean Shaven coupon codes and deals and there are 24 amazing offers this April. Check out our 24 online Clean Shaven promo codes and deals this April and get amazing 50% Off discounts. Today's top offer is :Choose Your New Replacement Blades And Save Up To 50% Off Rrp At Clean Shaven.


What's the Soup du Jour? Let your customers know the soup of the day by hanging this decal on your menu board. It's also great for a home kitchen, so your family can stop asking you that never ending question: What's for dinner? Shown here in Black and in size 24 x 6.5"


text:
3D Technologies
Inventions and Machines
Orb Audio Booster, the World's Smallest Integrated Amplifier
[ Image Source : Orb Audio ]
Orb Audio, a leading maker of handmade, highly affordable and décor-friendly audio products, announced the launch of Booster, one of the world's smallest integrated amplifiers. Together with Orb's compact Mod1 and Mod2 speakers, Booster allows consumers to say goodbye to large, complicated home audio receivers without sacrificing sound quality or convenience.
Booster brings high performance sound to up to four audio sources, featuring an easy-to-use remote control, beautiful extruded aluminum cabinet and professional quality speaker connectors. Additionally, Booster is designed with a subwoofer output and small/large speaker size selector, features not normally found on amplifiers of this size.
Booster is also very small, measuring just six inches wide, six inches deep and one and three quarters inches high. When paired with Orb's award-winning compact speakers, Booster delivers luxurious, room-filling sound from an unbelievably small package.
"Booster is a great addition to our product line because it is a problem solver," said Ethan Siegel, co-founder and CEO of Orb Audio. "Our customers have asked us for an easy way to bring home speaker sound to their computers, iPods and TVs without complicated electronics or extensive wiring. Now we have two great solutions to offer consumers -- Mini-T, released earlier this year, which connects one audio source to a pair of speakers, and Booster, which connects up to four sources and also features a subwoofer output and remote control. Between these two choices, we have the bases covered, and consumers can choose the features they need."
"We also hope to expand the market for small home audio components," said Siegel. "Booster is the only amplifier of this size that features multiple inputs, a remote control and a subwoofer output. It really can replace much larger components, and we think this is a winning combination of features, performance, size and price."
Available immediately for $164.00, Booster can also be purchased as a package with two Orb speakers for $396.00. For individuals who desire a more traditional audio setup, Orb Audio also offers complete home theater systems to fit most budgets and room sizes. More information about Orb Audio products, pricing and purchasing can be found at www.orbaudio.com or by calling 877-ORB-AUDIO (877-672-2834).
About Orb Audio :
Orb Audio is committed to being different. From the beginning in 2002, it has been our intention to deliver speaker systems with the finest quality components, an attractive, upscale design and an affordable price. The only way to accomplish all of this was to be different from the other players in the industry, make our speakers in the United States, and to sell them to our clients directly to avoid substantial (and totally unnecessary) markups. Our satellite speakers are manufactured in the United States by craftspeople with years of experience in electronics assembly. We do not have to take mass market considerations into our design, so we can design our speakers for one thing -- performance.
Musk Shares the Truth about Falcon Heavy Booster Landing Failure
SpaceX is Launching the Remains of 152 Dead People Into Orbit
Loukia Papadopoulos
7 German Inventions That Changed The World
How Did Tim Berners-Lee Change the World With the World Wide Web?

redpajama_set_name: RedPajamaCommonCrawl


text:
Amazon just upped the ante in the race for free holiday shipping
Amazon pledged free shipping to all customers through the holiday season. (Mark Lennihan/AP)
By Rachel Siegel
The battle for the hottest prices this holiday season is spilling into a new arena: the fight over free shipping.
As Walmart, Target and Amazon launch a price war for merchandise in the weeks before Thanksgiving, they are now wooing customers with the promise of fast, efficient, no-cost shipping. On Monday, Amazon upped the ante by expanding free shipping to all customers through the holidays, with no minimum purchase required. The retail and tech giant is also offering Prime Members free same-day delivery on more than 3 million items. Prime members, who pay $119 a year for the service, already receive free two-day shipping with no minimum purchase necessary.
It's a move, analysts say, that Amazon hopes will edge out its brick-and-mortar competitors and maybe even lock in new Prime subscribers going into 2019. But with grand promises come high risks: Fall short on getting customers their presents in time, and those shoppers go elsewhere.
(Amazon.com founder and CEO Jeffrey P. Bezos owns The Washington Post.)
"This is going to boil down to: 'How do I want to shop? Who's the cheapest in price. And who do I trust the most?'" said Mark Cohen, director of retail studies at Columbia Business School.
To be sure, Target and Walmart are playing ball. Last month, Target announced that from Nov. 1 to Dec. 22, it will offer free two-day shipping with no minimum purchase or membership required. In March, Target said shoppers who spent at least $35 or used a company credit card could get free two-day shipping. In previous holiday seasons, Target offered free standard shipping.
Walmart will continue to offer free two-day shipping in the United States on purchases of $35 or more. It is also expanding its free two-day shipping to third-party marketplace sellers.
Why Amazon Prime memberships might be 'flattening out'
"Amazon took out a potential challenge to its supremacy," Cohen said. "'Free' is a very addictive drug."
Cohen said Amazon has "a chokehold on competitors" largely because of the revenue generated through Prime memberships, which Bezos most recently put at more than 100 million worldwide in his annual shareholder letter. But dominating e-commerce is particularly crucial for the tech giant. According to market research from Mintel, almost half of holiday shoppers expect free shipping.
Charlie O'Shea, lead retail analyst for Moody's, noted that Amazon isn't selling the majority of its products in physical stores, as is the case with Walmart and Target. O'Shea estimated that brick-and-mortar stores with comparatively strong online presences, like Best Buy, don't even incur 20 percent of revenue through e-commerce.
While free shipping is one of the easiest promotions a retailer can offer, O'Shea said it comes at a steep price. Amazon's shipping costs for fiscal year 2017 totaled nearly $22 billion, O'Shea said, with about $7.4 billion in the fourth quarter. The retailer posted just more than $3 billion in profit in 2017.
Still, the promise of free shipping doesn't guarantee shoppers will get their goods on time. Retailers of all sizes often grapple with a surge of holiday orders carried by FedEx, UPS, the Postal Service and other third-party shippers that must contend with a huge spike in demand.
Amazon is also adding seasonal, full-time drivers to supplement delivery during the holidays. Those drivers will add to the fleet of traditional carriers, smaller-scale delivery partners and independent contractors who earn $18 to $25 an hour delivering Amazon packages through the Amazon Flex program.
Paula Rosenblum, co-founder and managing partner of Retail Systems Research, said Amazon's pledge will be tested through its third-party Prime operators that sell and ship their products through Amazon's website. While those third-party shippers generate profit for Amazon, they "could be a thorn in [Amazon's] side" if they leave customers hanging, Rosenblum said.
An Amazon spokesperson said the offer applies to all items eligible for free shipping, including items from millions of third-party sellers.
As Target and Walmart signal to Amazon that they "are not going to roll over," Rosenblum said Amazon's move is just the latest in the "race to the bottom."
"As far as I can tell, price parity has been achieved," Rosenblum said. "Once you can achieve shipping cost parity, then it becomes very interesting."
O'Shea put it another way.
"I call it a limbo contest," he said. "How low can you go?"
It's not just Amazon. Sam's Club debuts cashier-less store in race for the future of shopping.
Welcome to the first holiday season without Toys R Us
Could the tariffs ruin the holidays for shoppers?


text:
Best Research Awards Student Poster Awards Student Innovation Awards Start-Up and Founder Awards Best Start-Up Awards Rise Awards/ Best Growth Awards National Quality Award/ Best In Category Awards Lifetime Achievement
Evolution in Healthcare Diverse of Engineering Future Agriculture Food Tech Future Animal Biology Space Science Energy Resources Finance Management Education System Digital Marketing
EduTech FinTech GameTech MedTech FoodTech PharmaTech SpaceTech AITech AgriTech Angel Investors
Student Innovation Forum Entrepreneurial Innovation Forum Investor Innovation Forum Scholar Innovation Forum
About Gallery Blog
Agriculture Conference Medicine Conference Pharma Conference Engineering Conference Constructions Minerals Space Science Technology Automobiles Artificial Intelligence Nano Science
Vizag 16-17, Feb-2023
Riyadh 24-25, Apr-2023
Seoul 22-23, May-2023
Toronto 05-06, Jun-2023
Rome 26-27, Jun-2023
Paris 03-04, Jul-2023
New York 24-25, Jul-2023
Melbourne 07-08, Aug-2023
Beijing 28-29, Aug-2023
London 04-05, Sep-2023
Tokyo 25-26, Sep-2023
Future Agriculture
Submit Your Research Proposals
--Select Country-- Afghanistan Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory Brunei Darussalam Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Congo, the Democratic Republic of the Cook Islands Costa Rica Cote D'Ivoire Croatia Cuba Cyprus Czech Republic Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands (Malvinas) Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran, Islamic Republic of Iraq Ireland Israel Italy Jamaica Japan Jordan Kazakhstan Kenya Kiribati Korea, Democratic People's Republic of Korea, Republic of Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libyan Arab Jamahiriya Liechtenstein Lithuania Luxembourg Macao Macedonia, the Former Yugoslav Republic of Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia, Federated States of Moldova, Republic of Monaco Mongolia Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory, Occupied Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia and Montenegro Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Islands Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syrian Arab Republic Taiwan, Province of China Tajikistan Tanzania, United Republic of Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands Uruguay Uzbekistan Vanuatu Venezuela Viet Nam Virgin Islands, British Virgin Islands, U.s. Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Taiwan, Republic of China South Korea
Upload Research Ideas *
Upload Additional Files
LET'S LOOK INTO THE DEPTHS OF OVERHAULING AGRICULTURE
Future agriculture refers to agricultural developments and inventions that are projected to occur in the upcoming years. These innovations are motivated by the requirement to enhance food production in order to meet the requirements of an increasing global population, in addition to addressing environmental concerns such as climate change and soil degradation.
Agriculture's four allied sectors are as follows:
Soil and water conservation
Most importantly, the agriculture sector has been divided into numerous fields that many people are unaware of. Agriculture has been transformed into a sector that meets the world's long-term needs.
Farming, agriculture equipment, fertilizers, pesticides, warehousing, cold chain, food processing, dairy marketing, floriculture, apiculture, sericulture, seeds, fisheries, poultry, animal husbandry, animal feed, and bio-agriculture are among the 17 important sectors in India's agriculture economy.
Agriculture has just given the world a fresh revolution. Food is the most fundamental human requirement. Domestication and cultivation of plants and animals began over a thousand years ago to fulfill this need, and later, these activities coincided with the insatiable human need to understand and control the biosphere. The complex interplay between agriculture and the environment is becoming an increasingly pressing problem. Agricultural science has gotten a lot of attention during the last century as a response to a fast-growing global population, particularly when it comes to food security. Nonetheless, despite technological advances, some emerging challenges are now jeopardizing agricultural science's prospects.
Over the decades, the rate of innovation has accelerated dramatically. Agriculture has been tremendously influenced by technological advancements. The use of technology to increase output, productivity, and profitability in agriculture, horticulture, and aquaculture Agriculture has evolved dramatically over time as a result of technical improvements, from shovels to the Global Positioning System (GPS). We are always attempting to create new irrigation systems or disease-resistant plant varieties. These cycles are essential for sustaining the world's ever-increasing population even while safeguarding freshwater reserves. Farmers of all sizes must cultivate healthier, more productive plants. Climate change, soil erosion, and biodiversity loss, as well as changing consumer tastes and worries about food production, are putting a burden on them.
Agriculture has been a breeding ground for evolutionary change since its start thousands of years ago, and this change permeates agricultural endeavors at all levels of biological organization, from the individual gene to entire communities. Agro-ecosystems, therefore, present one of the most compelling instances of circumstances in which anthropogenic impacts are key drivers of biotic interactions within and among species and groups, implying that evolutionary principles play an important role.
Some of the key trends and technologies that are expected to shape future agriculture include:
Precision agriculture: This technology uses advanced sensors and data analysis to optimize crop yields, reduce waste, and improve efficiency.
Vertical Farming: This technology involves growing crops in stacked layers in controlled indoor environments, which can increase crop yields and reduce water and land use.
Robotics and Automation: Robotics and automation technologies are being developed to help with tasks such as planting, harvesting, and monitoring crops.
Biotechnology: Genetic engineering and other biotechnology techniques are being used to develop crops that are more resistant to pests, diseases, and climate change.
Sustainable Agriculture: This approach focuses on farming practices that are environmentally friendly and economically sustainable, such as regenerative agriculture, agroforestry, and conservation agriculture.
Internet of Things (IoT) in Agriculture: IoT sensors, devices, and platforms are being used to monitor crops, soil, and weather conditions and to help farmers make more informed decisions.
Drones and UAVs in Agriculture: Drones and UAVs are being used for tasks such as crop monitoring, precision spraying, and mapping.
Big Data and Cloud Computing: Big data and cloud computing technologies are being used to analyze large amounts of data from various sources, including weather forecasts, soil moisture, and crop yields, to make better farming decisions.
Bioenergy and Biofuels: Agriculture is also being used to produce bioenergy and biofuels, which can be more sustainable alternatives to fossil fuels.
Overall, future agriculture is expected to be more efficient, sustainable, and technology-driven. These advancements will play a critical role in meeting the food needs of a growing population while reducing the negative impact of farming on the environment. Additionally, future agriculture will be more focused on the production of other energy sources that can be used to power farm machinery, vehicles, and homes.
EVENT SECRETARIAT
© Copyright Global Tech Summit. All Rights Reserved


text:
Celebrating community-led design with Gordonridge
Courtesy of MLSE. Photo: Neil Ta
Working closely with communities to create place-based, local designs is integral to ERA's approach. In September, we celebrated the completion of Gordonridge's new multi-sport court. This project was a collaborative effort through-and-through, with our partners at MLSE Foundation and Canadian Tire Jumpstart Charities, our client at Toronto Community Housing, and its users, the community at Gordonridge.
Gordonridge is ERA's third project in partnership with MLSE and Jumpstart, developing place-based recreational spaces with community stakeholders, providing youth and adults a safe space to play and access a variety of sports and community events within their neighbourhoods.
The court is positioned at the heart of the tight-knit Gordonridge campus, a post-war apartment complex which is home to more than 800 households. Post-war neighbourhoods can sometimes offer disconnected car-centric, sprawling design. By contrast, Gordonridge's "town square" is its collection of community-led initiatives: over the years, Gordonridge residents have built an apiary, community garden, market garden, and fruit orchard. The multi-sport court is designed to be the hub that connects these spokes, tracing accessible routes through the property. Pathways, along with shaded seating and gathering areas, encourage shared multi-generational use of the space — older residents on the way to the apiary, the youth on the basketball courts.
As the Prime Consultant and Landscape Architect, ERA developed and led a series of collaborative community design-workshops, developed a design that responded to what we heard, and provided ongoing communication with the key stakeholders throughout construction to ensure that the outcomes were in line with the neighbourhood's vision.
Over the course of a year, ERA listened, tested ideas, shared meals, and played basketball at Gordonridge. We learned the community was selling honey from the apiary, and that residents were learning to cultivate its fruit orchard – but that access to those initiatives was challenging, so we drew paths along those desire lines. We learned from the youth that the senior residents would like a place to walk, and so we incorporated a walking circuit into the court. We found space for the local gardeners to create a small plot in the court. By the time the court opened late last year, the community were both co-designers and co-owners of the new space.
It's a process that for us is a remarkable and exciting endeavour. We're thrilled the neighbourhood feels the same!
Gordonridge Representative: Nichola shares her perspective on the process. from MLSE Foundation on Vimeo.
We are patiently awaiting the spring when we hope the court will be in full use. The pandemic has not only delayed the use of the court but has underscored the importance of access to safe outdoor gathering spaces for exercise and fresh air.
The Gordonridge Commmunity Multi-Sport Court demonstrates the power of investment in communities, allowing residents of all ages to gather, exercise, play and continue to build local support networks so vital to our thriving cities and neighbourhoods.
MLSE Foundation has pulled together more great content, including the video above, over on their website.
Posted by Editor@ERA on January 29, 2021
← Conservation of Paradise Theatre wins national and provincial awards Revitalizing waterfront sites: Exploring the potential of Ontario Place →
Gordonridge Community Multi-Sport Court wins national landscape architecture award
ERA is thrilled to announce the Gordonridge Community Multi-Sport Court has won a Canadian Society of Landscape…
Ridgeway Community Courts Celebrates the Spirit of Collaboration with Award Win
Ridgeway Community Courts has recently been recognized by the City of Mississauga as a project that is…
Building for the community, with the community
As an architecture firm with values rooted in how we collectively shape and build better cities and…


text:
Ministry of War (; literally Civilizations of Empires), known in the formerly separate European version as Terra Militaris, is a massively multiplayer online browser-based strategy game developed by Chinese developer Suzhou Snail Electronic Co., Ltd. (Snail Games). It is published in the United States and Europe by its U.S. publishing division, Snail Games USA. It was released on November 27, 2010 in Europe. In 2014 the European game service transferred from Webzen to Snail Games USA.

Gameplay
Players are first asked to choose one of four ancient civilizations to play as. The choice is between the historical nations of Rome, Egypt, Persia and China. Each race has different benefits for a starting player, such as Rome's units possessing higher than average health, or China's construction time being shorter than average. Further civilization-specific units are found later in the game, like the Egyptian Anubis Chariot or the Persian War Elephant. After choosing and naming a character, players have the option to take a short tutorial to familiarise themselves with the game. Tasks are appointed to players throughout the game to guide them in learning the game's mechanics and complexities. Players start with a small army and a high-quality hero to command them.

Players start the game with a tiny settlement in the style of their chosen civilization from the character creation process, but are able to expand their territory, develop their city and build new settlements as the game progresses. Initially, within the starting city, there is only a Town Hall, a Barracks and a Civilian House. Through tutorial quests, players learn how to construct additional buildings, upgrade them, train units for their armies and research skills that will improve various aspects of their empire. Each building has a maximum level of 25, and requires progressively more time and resources to construct. There are five resources in Ministry of War from which construction flows: Food, Lumber, Stone, Metal, and Gold. The player's civilisation will accumulate these automatically within their borders, but their rate can be augmented through research and upgrades.

Heroes are the second main element of the game next to building and upgrading one's civilization. Heroes act as leaders in the player's empire. They are used to traverse the world map and can be used to plunder, tax and scout other cities. Furthermore, they are used in ranked arena battles and to conquer neutral territories. These heroes, in classic RPG style, can be levelled up through gaining experience points from battle and have an inventory full of slots in which to equip armour, weapons and accessories.

The game features a persistent world. However, there are events that take place in instanced environments such as lair, arena and neutral city battles.

Combat
Combat is central to Ministry of War. Players are required to destroy NPC monsters and armies in order to gain items and experience for their heroes, to raid neutral territories and shrines, and to attack, or defend themselves from, other players. As heroes become more powerful, they are able to increase the size of their standing army and the strength of their troops. Heroes also possess unique skills that can give armies a boost in battle.

Battles can be controlled manually by players, or they can choose to let them play out automatically; victory or defeat is decided upon through AI. A player can join or leave a battle at any point. Once combat begins, there is a brief waiting period during which players have the choice to command the combat themselves or to relinquish control. After this players will have 3 minutes to defeat their enemy. If an army is defeated, units can be retrained in one's city but heroes themselves never permanently "die".

Gameplay goals
There are a variety of goals for players to achieve depending on their gameplay style. One player may wish to possess the most territory of any civilization and thus will focus on expanding their influence through temples and worship. Other players may wish to ally themselves with a guild and conquer the most territory and plunder enemy cities. Still other players may wish to pit themselves one-on-one against players in the arena and achieve the highest ranking.

Guilds
Ministry of War requires the participation as a member of a guild to achieve any lasting conquests on the world map. Players joining a guild gain the ability to wage war on neutral territories, build new cities and campsites and campaign against the other civilizations. In the future, guilds will be able to vie for control of "Famous Cities" such as Berlin, Alexandria and Milan.

Reception
Terra Militaris received a rating of 8.0 out of 10.0 on gaming website OnRPG.com.

References

External links
 Official website of Ministry of War
 Terra Militaris description and review
 Terra Militaris press release, Gamasutra

Browser games
Browser-based multiplayer online games
Real-time strategy video games
2010 video games
Snail Games games
Video games developed in China

redpajama_set_name: RedPajamaWikipedia


text:
(function () {

  // Action overflow
  var checkActionOverflow = function () {

    var actionBars = document.querySelectorAll('.action-bar'),
        a = actionBars.length,
        cleanUp = document.querySelectorAll('.action-overflow'),
        c = cleanUp.length;

    // Clean up the existing action overflows
    while (cleanUp && c--) cleanUp[c].parentNode.removeChild(cleanUp[c]);

    // Do this only when the screen width is below or equal to 480 pixels
    if (window.innerWidth <= 480) {

      // Iterate over all action bars
      while (a--) {
        var actions = actionBars[a].querySelector('.actions'),
            actionButtons = actionBars[a].querySelectorAll('.actions .action');

        if (actionButtons.length > 2 && actions.getAttribute('data-overflow') !== "false") {

          // Maintain the first item then replace the rest with an action overflow
          var first = actionButtons[0],
              i = actionButtons.length,
              overflowList = document.createElement('ol'), // This goes inside overflowListItem
              overflowListItem = document.createElement('li'),
              overflowButton = document.createElement('a'),
              overflowIcon = document.createElement('i');

          // Reverse the list since we're iterating it backwards
          overflowList.setAttribute('reversed', 'reversed');

          overflowList.classList.add('action-overflow-list');
          overflowList.classList.add('spinner');

          // Hide the overflow
          for (var x = 1; x < i; x++) {
            actionButtons[x].parentNode.classList.add('action-overflow-hidden');

            var li = document.createElement('li'),
                anchor = document.createElement('a');

            anchor.innerHTML = actionButtons[x].getAttribute('title');
            anchor.setAttribute('href', actionButtons[x].getAttribute('href'));

            // Copy over all stack-related data attributes
            anchor.setAttribute('data-transition', actionButtons[x].getAttribute('data-transition'));
            anchor.setAttribute('data-timeout', actionButtons[x].getAttribute('data-timeout'));
            anchor.setAttribute('data-ignore', actionButtons[x].getAttribute('data-ignore'));

            li.classList.add('spinner-item');
            li.appendChild(anchor);
            overflowList.appendChild(li);
          }

          // Add the action overflow button
          overflowButton.classList.add('action');
          overflowButton.classList.add('action-overflow-icon');
          overflowButton.classList.add('toggle-spinner');
          overflowButton.appendChild(overflowIcon);

          overflowListItem.classList.add('action-overflow');
          overflowListItem.appendChild(overflowButton);
          overflowListItem.appendChild(overflowList);

          actionBars[a].querySelector('.actions').appendChild(overflowListItem);
        }
      }

    }
    else {
      // Iterate over all action bars

      while (a--) {
        var ab = actionBars[a].querySelectorAll('.actions .action'),
            l = ab.length;

        // Un-overflow the action buttons
        while (l--) {
          ab[l].parentNode.classList.remove('action-overflow-hidden');
        }
      }
    }
  };

  // Attach the event handlers
  window.addEventListener('load', checkActionOverflow, false);
  window.addEventListener('resize', checkActionOverflow, false);
  window.addEventListener('popstate', checkActionOverflow, false);
  window.addEventListener('push', checkActionOverflow, false);

}());;this.fries = this.fries || {};

(function () {

  var Dialog = function (options) {
    this._init(options);
  };

  Dialog.prototype = {

    _dialog: null,

    _settings: {
      selector: null,
      callbackOk: function () {
        this.hide();
      },
      callbackCancel: function () {
        this.hide();
      }
    },

    _init: function (options) {
      this._settings = fries.utils.merge(this._settings, options);

      if (!this._settings.selector)
        throw new Error('Missing parameter: selector');

      this._dialog = document.querySelector(this._settings.selector);

      // Throw an error if the element isn't on the DOM
      if (!this._dialog) {
        throw new Error('Could not find ' + this._settings.selector + ' in the DOM');
      }

      this.attachEventHandlers();
    },

    attachEventHandlers: function () {
      // Attach the event handlers
      this._dialog.querySelector('.dialog-ok-button').addEventListener('touchend', (this._settings.callbackOk).bind(this), false);
      this._dialog.querySelector('.dialog-cancel-button').addEventListener('touchend', (this._settings.callbackCancel).bind(this), false);
    },

    center: function (target) {
      var computedStyle = getComputedStyle(target),
      width = computedStyle.width,
      height = computedStyle.height;

      width = width.slice(0, width.length - 2);
      height = height.slice(0, height.length - 2);

      var left = (window.innerWidth / 2) - (width / 2),
          top = (window.innerHeight / 2) - (height / 2);

      target.style.marginLeft = left + 'px';
      target.style.marginTop = top + 'px';
    },

    show: function () {
      var that = this;
      var self = this._dialog;
      this.center(self);

      self.parentNode.classList.add('on'); // Shows .dialogs (overlay)

      self.parentNode.removeEventListener('webkitTransitionEnd');
      self.parentNode.addEventListener('webkitTransitionEnd', onTransitionEnd, false);

      setTimeout((function () {
        this._dialog.parentNode.classList.add('fade-in'); // Sets opacity to 1
      }).bind(this), 200);

      function onTransitionEnd() {
        self.parentNode.removeEventListener('webkitTransitionEnd', onTransitionEnd);
        self.classList.add('on');
        self.classList.add('push');

        document.querySelector('.dialogs').addEventListener('touchend', (function(e) {
          if (e.target === document.querySelector('.dialogs')) {
            console.log('Hiding the dialog');
            this.hide();
          }
        }).bind(that), false);
      }
    },

    hide: function () {
      var self = this._dialog;

      self.classList.remove('push');
      self.classList.remove('on');
      self.classList.add('pop');

      self.addEventListener('webkitAnimationEnd', onAnimationEnd, false);

      document.querySelector('.dialogs').removeEventListener('touchend');

      function onAnimationEnd() {
        self.removeEventListener('webkitAnimationEnd', onAnimationEnd);
        self.classList.remove('pop');
        self.parentNode.classList.remove('fade-in');
        self.parentNode.addEventListener('webkitTransitionEnd', onTransitionEnd);
      }

      function onTransitionEnd() {
        self.parentNode.removeEventListener('webkitTransitionEnd', onTransitionEnd);
        self.parentNode.classList.remove('on');
      }

      this.destroy();
    },

    destroy: function () {

    }
  };

  this.fries.Dialog = Dialog;

}());;(function() {

  var prettifyInput = function () {
    var inputs = document.querySelectorAll('.input-text'),
        i = inputs.length;

    while (i--) {
      // Iterate over all input elements and restyle them
      var el = inputs[i],
          wrapper = document.createElement('span');

      // Wrap the input element in span.input-pretty if we haven't yet
      if (!el.parentNode.classList.contains('input-pretty')) {

        if (el.classList.contains('flex1')) {
          wrapper.classList.add('flex1');
          el.classList.remove('flex1');
        }
        else if (el.classList.contains('flex2')) {
          wrapper.classList.add('flex2');
          el.classList.remove('flex2');
        }
        else if (el.classList.contains('flex3')) {
          wrapper.classList.add('flex3');
          el.classList.remove('flex3');
        }

        wrapper.classList.add('input-pretty');
        el.parentNode.insertBefore(wrapper, el);
        el.parentNode.removeChild(el);
        wrapper.appendChild(el);

        // Add the focus/blur event handlers so it matches the style of the input element
        el.addEventListener('focus', toggleFocus, false);
        el.addEventListener('blur', toggleFocus, false);
      }
    }
  };

  var toggleFocus = function (e) {
    var el = e.currentTarget;
    el.parentNode.classList.toggle('focus');
  };

  window.addEventListener('load', prettifyInput);
  window.addEventListener('resize', prettifyInput, false);
  window.addEventListener('popstate', prettifyInput, false);
  window.addEventListener('push', prettifyInput, false);
}());;(function(){

  // Checks whether the event target is a .toggle-spinner button
  var findTarget = function (target) {
    var i, toggles = document.querySelectorAll('.toggle-spinner');
    for (; target && target !== document; target = target.parentNode) {
      for (i = toggles.length; i--;) { if (toggles[i] === target) return target; }
    }
  };

  // Returns the event target if it's a .toggle-spinner button
  var getTarget = function (e) {
    var target = findTarget(e.target);
    if (!target) return;
    return target;
  };

  // Checks whether the event target is a .toggle-spinner button
  var findSpinnerTarget = function (target) {
    var i, toggles = document.querySelectorAll('.spinner-item');
    for (; target && target !== document; target = target.parentNode) {
      for (i = toggles.length; i--;) { if (toggles[i] === target) return target; }
    }
  };

  // Returns the event target if it's a spinner item
  var getSpinnerTarget = function (e) {
    var target = findSpinnerTarget(e.target);
    if (!target) return;
    return target;
  };

  // Event handler to show/hide the spinner
  var handleTouch = function (e) {
    var target = getTarget(e);
    if (!target) return;
    else e.preventDefault();
    showSpinner(target);
  };

  var showSpinner = function(target) {
    var spinner = target.parentNode.querySelectorAll('.spinner')[0];

    if (!spinner.classList.contains('active')) spinner.style.display = 'block';

    setTimeout(function () {
      spinner.classList.toggle('active');
      spinner.addEventListener('webkitTransitionEnd', popEnd);
    }, 20); // Might be better to get the timeout from the CSS transition

    function popEnd () {
      if (!spinner.classList.contains('active')) spinner.style.display = 'none';
    }
  };

  // Attach event handler to close the spinner unless target is a spinner item
  document.addEventListener('touchend', function (e) {
    if (!getSpinnerTarget(e) && !getTarget(e)) {
      var spinners = document.querySelectorAll('.spinner'),
          i = spinners.length;
      while (i--) {
        spinners[i].classList.remove('active');
      }
    }
  });

  // Attach the event handler
  window.addEventListener('touchend', handleTouch, false);

}());;(function(){

  var isScrolling;
  var maxCacheLength = 20;
  var cacheMapping   = sessionStorage;
  var domCache       = {};

  var cacheReplace = function (data, updates) {
    doXHR.id = data.id;
    if (updates) data = getCached(data.id);
    cacheMapping[data.id] = JSON.stringify(data);
    window.history.replaceState(data.id, data.title, data.url);
    domCache[data.id] = document.body.cloneNode(true);
  };

  var cachePush = function () {
    var id = doXHR.id;

    var cacheForwardStack = JSON.parse(cacheMapping.cacheForwardStack || '[]');
    var cacheBackStack    = JSON.parse(cacheMapping.cacheBackStack    || '[]');

    cacheBackStack.push(id);

    while (cacheForwardStack.length)               delete cacheMapping[cacheForwardStack.shift()];
    while (cacheBackStack.length > maxCacheLength) delete cacheMapping[cacheBackStack.shift()];

    window.history.pushState(null, '', cacheMapping[doXHR.id].url);

    cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack);
    cacheMapping.cacheBackStack    = JSON.stringify(cacheBackStack);
  };

  var cachePop = function (id, direction) {
    var forward           = direction == 'forward';
    var cacheForwardStack = JSON.parse(cacheMapping.cacheForwardStack || '[]');
    var cacheBackStack    = JSON.parse(cacheMapping.cacheBackStack    || '[]');
    var pushStack         = forward ? cacheBackStack    : cacheForwardStack;
    var popStack          = forward ? cacheForwardStack : cacheBackStack;

    if (doXHR.id) pushStack.push(doXHR.id);
    popStack.pop();

    cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack);
    cacheMapping.cacheBackStack    = JSON.stringify(cacheBackStack);
  };

  var getCached = function (id) {
    return JSON.parse(cacheMapping[id] || null) || {};
  };

	var handleTouch = function (e) {
    var target = getTarget(e);

    if (!target) return;

    e.preventDefault();

    if (target.getAttribute('data-transition') == 'pop' && !target.classList.contains('up')) {
      window.history.go(-1);
      triggerStateChange();
      return;
    }

    doXHR({
      url: target.getAttribute('href'),
      hash : target.hash,
      container: '.page',
      timeout: target.getAttribute('data-timeout'),
      transition: target.getAttribute('data-transition')
    });

  };

  var handlePopState = function (e) {
    var activeObj;
    var activeDom;
    var direction;
    var transition;
    var transitionFrom;
    var transitionFromObj;
    var id = e.state;

    if (!id || !cacheMapping[id]) return;

    direction = doXHR.id < id ? 'forward' : 'back';

    cachePop(id, direction);

    activeObj = getCached(id);
    activeDom = domCache[id];

    if (activeObj.title) document.title = activeObj.title;

    if (direction == 'back') {
      transitionFrom    = JSON.parse(direction == 'back' ? cacheMapping.cacheForwardStack : cacheMapping.cacheBackStack);
      transitionFromObj = getCached(transitionFrom[transitionFrom.length - 1]);
    } else {
      transitionFromObj = activeObj;
    }

    if (direction == 'back' && !transitionFromObj.id) return doXHR.id = id;

    transition = direction == 'back' ? 'pop' : transitionFromObj.transition;

    if (!activeDom) {
      return doXHR({
        id         : activeObj.id,
        url        : activeObj.url,
        title      : activeObj.title,
        timeout    : activeObj.timeout,
        transition : transition,
        ignorePush : true
      });
    }

    replaceContents(
      (activeObj.contents || activeDom.querySelector('.page')).cloneNode(true),
      document.querySelector('.page'),
      transition
    );

    doXHR.id = id;
  };

  var doXHR = function(options) {
    var xhr = doXHR.xhr;

    options.container = document.querySelector(options.container);
    if (!options.container) options.container = document.querySelector('.page');

    if (xhr && xhr.readyState < 4) {
      xhr.onreadystatechange = function () {};
      xhr.abort();
    }

    xhr = new XMLHttpRequest();
    xhr.open('GET', options.url, false);
    xhr.setRequestHeader('X-DOCUMENT', 'true');

    xhr.onreadystatechange = function () {
      if (options._timeout) clearTimeout(options._timeout);
      if (xhr.readyState == 4) {
        if (xhr.status == 200 || xhr.status === 0) onSuccess(xhr, options);
        else onError(options.url);
      }
    };

    if (!doXHR.id) {
      cacheReplace({
        id         : +new Date(),
        url        : options.url,
        title      : document.title,
        timeout    : options.timeout,
        transition : null
      });
    }

    if (options.timeout) {
      options._timeout = setTimeout(function () {  xhr.abort('timeout'); }, options.timeout);
    }

    xhr.send();

    if (xhr.readyState && !options.ignorePush) cachePush();
  };

  var replaceContents = function (contents, container, transition, callback) {
    // If there's no set transition, just replace the contents of the container
    if (!transition) {
      container.innerHTML = contents.innerHTML;
    }
    else {
      // Else, we'll be needing to animate the transition so keep the container for now
      container.parentNode.insertBefore(contents, container);
    }

    // If there's no set transition, do the callback, there's no use continuing
    if (!transition && callback) callback();

    if (/push/.test(transition)) {
      contents.classList.add(transition);
      container.classList.add('fade');
      contents.addEventListener('webkitAnimationEnd', onPushAnimationEnd, false);

      // Causes a jshint warning. Use --force to ignore
      function onPushAnimationEnd() {
        contents.removeEventListener('webkitAnimationEnd', onPushAnimationEnd, false);
        contents.classList.remove(transition);
        if (container.parentNode) container.parentNode.removeChild(container);
        if (callback) callback();
      }
    }

    if (/pop/.test(transition)) {
      contents.style.opacity = 1;
      container.classList.add('pop');

      container.addEventListener('webkitAnimationEnd', onPopAnimationEnd, false);

      // Causes a jshint warning. Use --force to ignore
      function onPopAnimationEnd() {
        container.classList.add('hidden');
        container.removeEventListener('webkitAnimationEnd', onPopAnimationEnd, false);
        container.parentNode.removeChild(container);
        if (callback) callback();
      }
    }
  };

  var pushCallback = function (data, options) {
      cacheReplace({
        id         : options.id || +new Date(),
        url        : data.url,
        title      : data.title,
        timeout    : options.timeout,
        transition : options.transition
      }, options.id);

      triggerStateChange();
  };

  var onSuccess = function (xhr, options) {
    var data = parseXHR(xhr, options);

    if (!data.contents) {
      window.history.replaceState(null, '', '#');
      window.location.replace(options.url);
      return;
    }

    replaceContents(data.contents, options.container, options.transition, pushCallback(data, options));

    if (data.title) document.title = data.title;

    if (!options.ignorePush && window._gaq) _gaq.push(['_trackPageview']); // Google Analytics
    if (!options.hash) return;
  };

  var onError = function (url) {
    throw new Error('Could not get ' + url);
  };

  var parseXHR = function (xhr, options) {
    var data = {};
    var responseText = xhr.responseText;

    data.url = options.url;

    if (!responseText) return data;

    if (/<html/i.test(responseText)) {
      head           = document.createElement('div');
      body           = document.createElement('div');
      head.innerHTML = responseText.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0];
      body.innerHTML = responseText.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0];
    } else {
      head           = body = document.createElement('div');
      head.innerHTML = responseText;
    }

    // Get the title from the page
    data.title = head.querySelector('title');
    data.title = data.title && data.title.innerText.trim();

    // Get the contents of the page
    data.contents = body.querySelector('.page');

    return data;
  };

  var triggerStateChange = function () {
    // Fix from https://github.com/maker/ratchet/issues/101 where CustomEvent is undefined
    if (typeof CustomEvent === 'undefined') {
      CustomEvent = function(type, eventInitDict) {
        var event = document.createEvent('CustomEvent');
        event.initCustomEvent(type, eventInitDict.bubbles, eventInitDict.cancelable, eventInitDict.detail);
        return event;
      };
    }

    var e = new CustomEvent('push', {
      detail: { state: getCached(doXHR.id) },
      bubbles: true,
      cancelable: true
    });

    setTimeout(function () {
      window.dispatchEvent(e);
    }, 200);
  };

  var findTarget = function (target) {
    var i, toggles = document.querySelectorAll('a');
    for (; target && target !== document; target = target.parentNode) {
      for (i = toggles.length; i--;) { if (toggles[i] === target) return target; }
    }
  };

  var getTarget = function (e) {
    var target = findTarget(e.target);

    if ( !target || e.which > 1 || e.metaKey || e.ctrlKey || isScrolling || location.protocol !== target.protocol || location.host !== target.host || !target.hash && /#/.test(target.href) || target.hash && target.href.replace(target.hash, '') === location.href.replace(location.hash, '') || target.getAttribute('data-ignore') == 'true') return;
    return target;
  };

  // Attach event handlers
  window.addEventListener('touchstart', function () { isScrolling = false; });
  window.addEventListener('touchmove', function () { isScrolling = true; });
  window.addEventListener('touchend', handleTouch);
  window.addEventListener('popstate', handlePopState);
}());
;(function () {
  var getTarget = function (target) {
    var i, tabs = document.querySelectorAll('.tab-fixed li a');
    for (; target && target !== document; target = target.parentNode) {
      for (i = tabs.length; i--;) { if (tabs[i] === target) return target; }
    }
  };

  window.addEventListener('touchend', function (e) {

    var activeTab;
    var activeBody;
    var targetBody;
    var targetTab;
    var className     = 'active';
    var classSelector = '.' + className;
    var targetAnchor  = getTarget(e.target);

    if (!targetAnchor) return;

    e.preventDefault();

    e.preventDefault();

    targetTab = targetAnchor.parentNode;
    activeTab = targetTab.parentNode.querySelector(classSelector);

    // Highlight the target tab
    if (activeTab) activeTab.classList.remove(className);
    targetTab.classList.add(className);

    // If the target body doesn't exist, don't do anything
    targetBody = document.querySelector(targetAnchor.hash);
    if (!targetBody) return;

    // Set the target body as active
    activeBody = targetBody.parentNode.querySelector(classSelector);
    if (activeBody) activeBody.classList.remove(className);
    targetBody.classList.add(className);

    // Look for the index of the target and active bodies
    var sliderItems = document.querySelectorAll('.tab-item'),
        s = sliderItems.length;
    while (s--) {
      // Show the hidden bodies and set their initial position
      sliderItems[s].classList.add('in-transition');
      sliderItems[s].style.left = (s * 100) + "%";
      if (sliderItems[s] == targetBody) targetIndex = s;
      if (sliderItems[s] == activeBody) activeIndex = s;
    }

    // Slide the active body into position
    s = sliderItems.length;
    setTimeout(function () {
      while (s--) {
        sliderItems[s].style.webkitTransform = 'translateX('+ ((targetIndex === 0) ? 0 : '-' + (targetIndex * 100)) +'%)';
        sliderItems[s].addEventListener('webkitTransitionEnd', slideEnd);
      }
    }, 50); // To account for lag when adding the .in-transition class

    function slideEnd (e) {
      // Hide the inactive bodies
      e.target.classList.remove('in-transition');
    }

  });
}());
;this.fries = this.fries || {};

(function () {

  var Toast = function (options) {
    this._init(options);
  };

  Toast.duration = {
    "SHORT": 3000,
    "LONG": 5000
  };

  Toast.prototype = {

    _toast: null,

    _settings: {
      content: 'Please follow @jaunesarmiento on Twitter.',
      duration: Toast.duration.SHORT,
      position: 'bottom' // top, bottom, center
    },

    _init: function (options) {
      this._settings = fries.utils.merge(this._settings, options);

      if (this._settings.content === undefined) throw new Error('Error: missing paramter content.');

      // Create the toast element
      this._toast = document.createElement('div');
      this._toast.classList.add('toast');

      var toastContent = document.createElement('p');
      toastContent.classList.add('toast-message');

      // Set the Toast's position
      switch (this._settings.position) {
        case 'top'    : this._toast.style.top = '72px'; break;
        case 'center' : break;
        default       : this._toast.style.bottom = '72px';
      }

      this._toast.appendChild(toastContent);
      document.body.appendChild(this._toast);

      this.show();
    },

    setContent: function (content) {
      this._settings.content = content.trim();
      this._toast.querySelector('.toast-message').innerHTML = this._settings.content;
    },

    show: function () {
      this.setContent(this._settings.content);

      var toastWidth = getComputedStyle(this._toast.childNodes[0]).width;
      toastWidth = toastWidth.slice(0, toastWidth.length - 2);

      var left = (window.innerWidth / 2) - (toastWidth / 2);

      this._toast.style.marginLeft = left + 'px';
      this._toast.classList.add('on');

      setTimeout((function () {
        this._toast.classList.add('fade-in');
        setTimeout((this.hide).bind(this), this._settings.duration);
      }).bind(this), 50);
    },

    hide: function () {
      this._toast.addEventListener('webkitTransitionEnd', (function (e) {
        e.target.classList.remove('on');
        this.destroy(e.target);
      }).bind(this), false);

      this._toast.classList.remove('fade-in');
    },

    destroy: function (target) {
      document.body.removeChild(target);
    }

  };

  this.fries.Toast = Toast;

}());;this.fries = this.fries || {};

(function () {

  var utils = {

    merge: function (obj1, obj2) {
      var obj3 = {},
          attrname;
      for (attrname in obj1) { obj3[attrname] = obj1[attrname]; }
      for (attrname in obj2) { obj3[attrname] = obj2[attrname]; }
      return obj3;
    }

  };

  fries.utils = utils;

}());

redpajama_set_name: RedPajamaGithub


text:
Isabelle de Borchgrave Cuts a New Cloth with Sartorially Inspired Home Textiles
By Anh-Minh Le | Photographs by Andreas von Einsiedel; René Stoeltie; Fabricut
Like many who have viewed the stunning costume collections at New York's Metropolitan Museum of Art, Isabelle de Borchgrave left in awe. But rather than simply purchase a book in the gift shop to commemorate her 1994 visit, the Belgian artist and designer took things a step further. "I wanted to possess each and every one of those costumes," she recalls. "I wanted to re-create them, to make them mine." She decided that "the easiest way was to make sculptures with the first media I ever used: paper."
Today, thanks to that fateful trip to the Met two decades ago, de Borchgrave may be best known for the meticulous intepretations of historic costumes that she crafts with paper and paint. Her inaugural collection, Papiers à la Mode, debuted in 1998 and has since been exhibited worldwide. "It tells the story of 300 years of fashion," says the artist. In 2011, San Francisco's Legion of Honor hosted de Borchgrave's first major exhibition, "Pulp Fashion."
Now, a selection of her garbs is the basis for a new range of fabrics and trimmings with Fabricut. The eponymous collection features patterns with international inspirations, including Kaftan Suzani, Venetian Tile, and Kermesse and Sablon, each named for her native Brussels. According to de Borchgrave, it was a natural collaboration as colors that we appreciate in fashion translate to décor as well: The line's hues include Indigo, Cobalt and Ocean, a luminous gray-blue evocative of Belgian interiors and perfectly tailored to the Bay Area's coastal color sensibility. Materials in the collection include linens, embroidered cottons and velvets in sartorial patterns like paisleys, stripes and chevrons.
And, as only fitting for a couturier de papier, a collection of wallpaper is also in the works and will be available next spring. "Paper is the most basic material," de Borchgrave explains of her chosen medium. "It is blank and so full of possibilities. You are free to do what you want. It is perfect to add colors, and it lets you create freely. And if you think you failed your creation, you can crumple it and start again!"
A version of this article appeared in the September 2014 issue of San Francisco Cottages & Gardens with the headline: Interior Couture.
14 Pieces Inspired by Ceramicist Edmund de Waal
San Francisco and Paris-based KADIST Curates from a Global Perspective
The Headlands Debuts Three New Exterior Commissions


Getmecab is known the online store to book rental cabs from destination cities Delhi, Gurgaon, Chennai, Mumbai, Hyderabad, Jaipur, Pune, Ahmadabad, Aurangabad. Today we brought fresh Getmecab coupons and offers through which you can get deep discounts on rental cab booking.
User get flat Rs.500 cashback on any tour with Getmecab. This offer is only applicable on online payments. The cashback amount will be credited after completion of your trip.
2. Lowest rate for Outstation ride.
3. Ride For any intercity travel @flat Rate.
Visit here to book rental cabs at Getmecab!
Good service for intercity traveling.
What is the promo code? How do I get the Rs 1000 off offer?


Stop by, come in, slow down.
Find things that will tickle your fancy.
The Art of Simple offers happiness!
Enjoy the simple pleasures of life … from the way a piece of art inspires, or the joy a seashell brings, or a vintage treasure will brighten a home.
Reawaken your senses … the aroma of a handmade beeswax candle; the feel of a favorite – or maybe a new – beauty product; the surprise of learning something new about something old.
The Art of Simple is open seven days a week from 9am until 9pm (in season), to give you plenty of time to squeeze a bit of happiness into your busy day.


Two years ago, the NCAA changed the landscape of declaring for the NBA draft, in a good way.
Starting in 2016, players were allowed to declare for the draft without an agent, go through workouts with NBA scouts, receive feedback, and retain their collegiate eligibility the next season.
Last season, three Hoosiers did not sign with an agent and had the option to return. In the end, Robert Johnson was the only Hoosier to fully utilize this new system. Johnson declared without an agent, received feedback from NBA scouts, and returned for his senior season at IU.
Johnson isn't the only player to utilize this new rule change last season. There's a long list, including some of the best players in the country, that went through this process last offseason.
That's why Juwan Morgan declaring for the NBA Draft makes sense.
Players across the country have declared for the draft without agents, and many greatly benefited from the experience.
Some of the Big Ten's best players tested the waters of the draft before returning and having incredible years.
Three of these players were named to All-Big Ten teams after their 2017-18 efforts. Their statistical improvements speak for themselves.
It wasn't just Big Ten players that improved after testing the waters of the draft. This has become a popular route in only two years of being allowed.
Several of the top players across the country decided to declare and then come back and improve their play.
This is still a fairly new process, only in year three. However, plenty of athletes have used it to their advantage and had great seasons the year after testing the draft. This list above includes four players named to their all-conference teams, including two first team all-conference players.
No, I cannot promise that Morgan would have the statistical increases all of the players above had this season, but it is very possible.
Robert Johnson returned from testing the draft process by increasing his PPG, but most of his other statistics remained the same. However, if you watched his progressions this season, you understand sometimes the results don't appear on the stat sheet.
People may say that these increases in stats come because of another year of experience, and this is true. However, getting graded and receiving advice by NBA scouts is certainly a factor in all of these players' improvements.
There have been plenty of players that go without an agent, get feedback and head to the NBA instead of coming back to college. Take IU last season. Both Thomas Bryant and James Blackman Jr. went to the draft without agents but did not end up coming back to IU.
Is this a possibility for Morgan? Of course.
No matter what decision Morgan makes, it will be the best decision for himself. If he declares and stays in the draft, that means he heard what he wanted to hear from NBA scouts and could be drafted in the 2018 draft. If he comes back, he can use the feedback he got from scouts to make himself the best collegiate player he can next season.
It's important to understand that Morgan declaring doesn't mean he's gone. He can still come back. And if he does, the Big Ten and college basketball as a whole better watch out.
Big Ten Power Rankings Week 3: How good is the Big Ten?


text:
#import <UIKit/UIKit.h>

#import <AddressBook/AddressBook.h>

#import "MXKCellData.h"

#import "MXKEmail.h"
#import "MXKPhoneNumber.h"

/**
 Posted when the contact thumbnail is updated.
 The notification object is a contact Id.
 */
extern NSString *const kMXKContactThumbnailUpdateNotification;

extern NSString *const kMXKContactLocalContactPrefixId;
extern NSString *const kMXKContactMatrixContactPrefixId;
extern NSString *const kMXKContactDefaultContactPrefixId;

@interface MXKContact : MXKCellData <NSCoding>

/**
 The unique identifier
 */
@property (nonatomic, readonly) NSString * contactID;

/**
 The display name
 */
@property (nonatomic, readwrite) NSString *displayName;

/**
 The sorting display name built by trimming the symbols [_!~`@#$%^&*-+();:={}[],.<>?\/"'] from the display name.
 */
@property (nonatomic) NSString* sortingDisplayName;

/**
 The contact thumbnail. Default size: 256 X 256 pixels
 */
@property (nonatomic, copy, readonly) UIImage *thumbnail;

/**
 YES if the contact does not exist in the contacts book
 the contact has been created from a MXUser or MXRoomThirdPartyInvite
 */
@property (nonatomic) BOOL isMatrixContact;

/**
 YES if the contact is coming from MXRoomThirdPartyInvite event (NO by default).
 */
@property (nonatomic) BOOL isThirdPartyInvite;

/**
 The array of MXKPhoneNumber
 */
@property (nonatomic, readonly) NSArray *phoneNumbers;

/**
 The array of MXKEmail
 */
@property (nonatomic, readonly) NSArray *emailAddresses;

/**
 The array of matrix identifiers
 */
@property (nonatomic, readonly) NSArray* matrixIdentifiers;

/**
 The matrix avatar url used (if any) to build the current thumbnail, nil by default.
 */
@property (nonatomic, readonly) NSString* matrixAvatarURL;

/**
 Reset the current thumbnail if it is retrieved from a matrix url. May be used in case of the matrix avatar url change.
 A new thumbnail will be automatically restored from the contact data.
 */
- (void)resetMatrixThumbnail;

/**
 The contact ID from native phonebook record
 */
+ (NSString*)contactID:(ABRecordRef)record;

/**
 Create a local contact from a device contact

 @param record device contact id
 @return MXKContact instance
 */
- (id)initLocalContactWithABRecord:(ABRecordRef)record;

/**
 Create a matrix contact with the dedicated info

 @param displayName the contact display name
 @param matrixID the contact matrix id
 @return MXKContact instance
 */
- (id)initMatrixContactWithDisplayName:(NSString*)displayName andMatrixID:(NSString*)matrixID;

/**
 Create a matrix contact with the dedicated info

 @param displayName the contact display name
 @param matrixID the contact matrix id
 @param matrixAvatarURL the matrix avatar url
 @return MXKContact instance
 */
- (id)initMatrixContactWithDisplayName:(NSString*)displayName matrixID:(NSString*)matrixID andMatrixAvatarURL:(NSString*)matrixAvatarURL;

/**
 Create a contact with the dedicated info

 @param displayName the contact display name
 @param emails an array of emails
 @param phones an array of phone numbers
 @param thumbnail  the contact thumbnail
 @return MXKContact instance
 */
- (id)initContactWithDisplayName:(NSString*)displayName
                          emails:(NSArray<MXKEmail*> *)emails
                    phoneNumbers:(NSArray<MXKPhoneNumber*> *)phones
                    andThumbnail:(UIImage *)thumbnail;

/**
 The contact thumbnail with a prefered size.

 If the thumbnail is already loaded, this method returns this one by ignoring prefered size.
 The prefered size is used only if a server request is required.

 @return thumbnail with a prefered size
 */
- (UIImage*)thumbnailWithPreferedSize:(CGSize)size;

/**
 Tell whether a component of the contact's displayName, or one of his matrix id/email has the provided prefix.

 @param prefix a non empty string.
 @return YES when at least one matrix id, email or a component of the display name has this prefix.
 */
- (BOOL)hasPrefix:(NSString*)prefix;

/**
 Check if the patterns can match with this contact
 */
- (BOOL)matchedWithPatterns:(NSArray*)patterns;

/**
 The default ISO 3166-1 country code used to internationalize the contact phone numbers.
 */
@property (nonatomic) NSString *defaultCountryCode;

@end


text:
Akemi Tsuchitani, Staff Writer|December 7, 2022
Photo courtesy of IMDb
"Bones and All" is a beautifully crafted coming-of-age story between two cannibals that will make you cringe with disgust and cry. An adaption of Camille DeAngelis's novel, "Bones and All" follows Maren Yearly (Taylor Russell), a teenage girl who, due to her cannibalistic urges, is constantly fleeing from city to city with her single father. After one particular incident, Maren's dad abandons her leaving nothing but money, a tape recording and her birth certificate. With nothing tying her down, Maren decides to leave town and search for her mother who she had never met. In her search, she comes across other "eaters" who share the same need for human flesh, which is where she meets Lee (Timothée Chalamet). Together, the two travel across America, running from their painful pasts and finding themselves with each other.
Directed by Luca Guadagnino, "Bones and All" is described as a harmonious blend of the romance and horror genres as well as its coming-of-age themes. Unlike other horror movies "Bones and All" will not make you jump out of your seat, but will make your skin crawl. The gory scenes of flesh being ripped apart are balanced by the tender interactions between Maren and Lee as they slowly create a deeper connection with one another. Although the film touches upon taboo subjects, there is a certain tenderness Guadagnino brings to the film that is undeniably unique for a movie about cannibalism. The film plays with the ideas of morality, with Maren's judgment and virtue clouding her sense of survival, especially after a particular incident in which Lee kills a man with a family so they could feed. "Bones and All" touches upon the struggle of finding one's personal identity and how our pasts can create challenges that we cannot help but let define us.
"Bones and All" does an amazing job of putting the fleetingness of life into perspective. As a cannibal, Maren is constantly trying to find a way to cheat the death of others but the human necessity of survival takes priority. The macabre displays of cannibalism will at first isolate the leads, making audience members feel uneasy, but the unease will slowly turn into sympathy. The flawed leads will tug at your heartstrings as you uncover their gruesome backstories of abuse and abandonment. In Lee's monologue about his father, Chalamet displays his ability to really connect to his character. The held back tears and tension in his voice as he recounts the details of his abusive father are both heart-rending and comically ironic.
Watching "Bones and All" will open your eyes to how fragile life is. The two leads wrestle with this the entire movie: the fact that nothing will last forever. The final ten minutes of the film demonstrate this as a full circle moment of Maren, once again, all alone with no one to rely on. As the cannibalism and dark themes may turn some away, "Bones and All" is a unique take on a coming-of-age story intertwined with a tender and heartfelt romance.
Akemi Tsuchitani, Staff Writer
Akemi Tsuchitani is a current sophomore and a staff writer for The Phoenix. She enjoys baking and dancing outside of school.
"Pearl" Review
The Beauty Industry: Cultural appropriation in the media


AVANDIA ROSIGLITAZONE XR Consulting GLAXOSMITHKLINE, LLC.
Dr. Kenneth Mahaffey was engaged to conduct research-related activities in connection with a Phase III clinical study to evaluate the efficacy of canagliflozin on end stage kidney disease and vascular death in a subset of patients.
No Listed Product Promotional Speaking/Other PURDUE PHARMA L.P.
THE REPORTED PAYMENT REFLECTS THE AMOUNT PROVIDED TO A THIRD PARTY EMPLOYER OR INSTITUTION IN CONNECTION WITH RESEARCH RELATED SERVICES PROVIDED BY THE COVERED RECIPIENT. LILLY DOES NOT KNOW HOW MUCH, IF ANY, OF THIS AMOUNT WAS ACTUALLY RECEIVED BY THE COVERED RECIPIENT.
Payment made to Third Party Organization not to Physician. Provided as part of a research engagement.
STENTS Promotional Speaking/Other MEDTRONIC VASCULAR, INC.
Payment made to Third Party Organization not to Physician. Provided as part of a clinical research engagement.
AVANDIA ROSIGLITAZONE XR Travel and Lodging GLAXOSMITHKLINE, LLC.
AVANDIA ROSIGLITAZONE XR Food and Beverage GLAXOSMITHKLINE, LLC.


My first game was one of my worst recent efforts, but as bad as I was in that game, I was better in my other two to save a 525. I didn't have a game without a split, getting two 7-10s and an 8-10 during the night.
With Barry sick (meaning no Donald, either) and Si working late, we forfeited, but I still had to bowl for virtual league, if nothing else.


text:
Culture Obituaries»
Film Obituaries
Dallas McKennon
Dallas McKennon, who died on July 14 aged 89, was best known for his extensive work over half a century as a character artist for the Walt Disney Studios; his distinctive voice can be heard in such animated classics as The Lady and the Tramp (1955), One Hundred and One Dalmatians (1961), Mary Poppins (1964) and Bedknobs and Broomsticks (1971).
6:34PM BST 28 Jul 2009
He also provided the voices for many Disney theme park attractions, such as the famous Big Thunder Mountain Railroad, in which he exclaimed: "Hold on to your hats and glassese_SLps this here's the wildest ride in the wilderness!"
Beyond the parks and the animated films, McKennon was also a prolific contributor to Disneyland Records, appearing on numerous recordings over many years. Away from Disney, he voiced many other famous cartoon characters for Tex Avery and Walter Lantz, as well as appearing on-screen in a variety of films and television shows, including Dragnet, Lawman, Gunsmoke and The Untouchables.
During the 1960s and 1970s, he provided the original voice of Tony the Tiger for Kellogg's Frosties ("they're g-r-r-r-r-r-eat!"); Corny the Rooster for Kellogg's Cornflakes; and Snap, Crackle, and Pop for Kellogg's Rice Krispies.
Dallas McKennon was born on July 19 1919 at La Grande, Oregon. His mother died when he was a teenager, and because his father was unable to provide for him or his two older sisters, the children were sent to a family friend who looked after them.
A mischievous child who was often in trouble for mimicking his superiors, Dallas applied for a job at the local radio station at the insistence of the head teacher at La Grande high school, where he was a pupil. The job involved reading Charles Dickens and Mark Twain stories during Children's Hour live on air. Following his graduation, he moved to Seattle and briefly lived with his father before joining the Army Corps of Engineers. He was sent to Alaska and later Korea.
In 1941 he married his childhood sweetheart, and together they moved to Hollywood while he searched for work as an actor and recording artist. McKennon was persistent, and he quickly became a fixture at Walter Lantz's production company which distributed animated features through Universal Studios; he was the voice of Buzz Buzzard in Lantz's Woody Woodpecker shorts between 1951 and 1972.
In Lady and the Tramp he voiced the Hyena, Toughy, Professor and Pedro. He voiced the Owl in Sleeping Beauty (1959), and the Fox, Hounds, the Penguin, the Hunting Horse, the Carousel Guard and various news reporters in Mary Poppins.
He was behind many of the animated characters in One Hundred and One Dalmatians and gave life to the Fisherman Bear in Bedknobs and Broomsticks.
On-screen, McKennon played Cincinnatus, the local store keeper opposite Fess Parker in Daniel Boone, which ran for six years. He played opposite Fred MacMurray in Good Day for a Hanging (1959); was the projectionist in the Vincent Price horror film The Tingler (1959); and was cast as Karl Harpane in The Glory Guns (1965). During the 1970s, he voiced characters in animated versions of Treasure Island (1973), Oliver Twist (1974) and Journey Back to Oz (1974).
Dallas McKennon is survived by his wife, Betty, and their eight children.
Published July 29 2009
Culture Obituaries »
In Film Obituaries