text:
Back to HannonArmstrong.com
Approach, Impact & Policies
Corporate Foundation
CarbonCount®
Filings & Financials
Distributable Earnings
Stock Reference
Hannon Armstrong Announces Offering of $350 Million of Senior Unsecured Notes
April 15, 2020 9:00am EDT Download as PDF
ANNAPOLIS, Md.--(BUSINESS WIRE)-- Hannon Armstrong Sustainable Infrastructure Capital, Inc. ("Hannon Armstrong" or the "Company") (NYSE: HASI), a leading investor in climate change solutions, today announced, subject to market conditions, a private offering of $350 million in aggregate principal amount of senior unsecured notes due 2025 (the "Notes") by its indirect subsidiaries, HAT Holdings I LLC ("HAT I") and HAT Holdings II LLC ("HAT II," and together with HAT I, the "Issuers"). At issuance, the Notes will be guaranteed by the Company, Hannon Armstrong Sustainable Infrastructure, L.P., and Hannon Armstrong Capital, LLC.
The Company believes the Notes meet the environmental eligibility criteria for green bonds as defined by the International Capital Market Association's Green Bond Principles. The Company intends to utilize the net proceeds of this offering to acquire or refinance, in whole or in part, eligible green projects, which include assets that are neutral to negative on incremental carbon emissions. In addition, these projects may include projects with disbursements made during the twelve months preceding the issue date of the bonds and those with disbursements to be made following the issue date. Prior to the full investment of such net proceeds, the Company intends to apply the proceeds to repay a portion of the outstanding revolving borrowings under the Company's two senior secured credit facilities. For any net proceeds from the offering not used to repay these credit facilities, the Company intends to invest such net proceeds in interest-bearing accounts and short-term, interest-bearing securities which are consistent with the Company's intention to continue to qualify for taxation as a REIT. Proceeds used to repay our credit facilities may be re-borrowed.
The Notes and the related guarantees will be offered only to persons reasonably believed to be qualified institutional buyers in reliance on Rule 144A under the Securities Act of 1933, as amended (the "Securities Act"), and non-U.S. persons outside the United States pursuant to Regulation S under the Securities Act. The Notes and the related guarantees will not be registered under the Securities Act or any state securities laws and may not be offered or sold in the United States absent an effective registration statement or an applicable exemption from the registration requirements of the Securities Act or any state securities laws.
This press release shall not constitute an offer to sell, or the solicitation of an offer to buy, these securities, nor shall there be any sale of these securities in any state or jurisdiction in which such offer, solicitation or sale would be unlawful prior to registration or qualification under the securities laws of any such state or jurisdiction.
About Hannon Armstrong
Hannon Armstrong (NYSE: HASI) is the first U.S. public company solely dedicated to investments in climate change solutions, providing capital to leading companies in energy efficiency, renewable energy, and other sustainable infrastructure markets. With more than $6 billion in managed assets as of December 31, 2019, Hannon Armstrong's core purpose is to make climate-positive investments with superior risk-adjusted returns.
Some of the information in this press release contains forward-looking statements and within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended. When used in this press release, words such as "believe," "expect," "anticipate," "estimate," "plan," "continue," "intend," "should," "may," "target," or similar expressions, are intended to identify such forward-looking statements. Forward-looking statements are subject to significant risks and uncertainties. Investors are cautioned against placing undue reliance on such statements. Actual results may differ materially from those set forth in the forward-looking statements. Factors that could cause actual results to differ materially from those described in the forward-looking statements include those discussed under the caption "Risk Factors" included in the Company's Annual Report on Form 10-K for the Company's fiscal year ended December 31, 2019, which was filed with the U.S. Securities and Exchange Commission ("SEC"), as well as in other reports that the Company files with the SEC.
Forward-looking statements are based on beliefs, assumptions and expectations as of the date of this press release. The Company disclaims any obligation to publicly release the results of any revisions to these forward-looking statements reflecting new estimates, events or circumstances after the date of this press release.
INVESTOR RELATIONS INQUIRIES
Chad Reed
investors@hannonarmstrong.com
Source: Hannon Armstrong Sustainable Infrastructure Capital, Inc.
© 2023 Hannon Armstrong Sustainable Infrastructure Capital, Inc. All Rights Reserved.
Legal Disclaimer Sitemap


Teaching your puppy to be comfortable and confident being left alone early on is as important as housetraining. You want to work to prevent any separation anxiety since that is one of the most difficulty behavior problems to resolve.
Ongoing socialization is extremely important to prevent behavior problems. Socialization is especially important before the age of 3 months, but should also be done throughout your dog's lifetime. Gentle socialization plays a huge role in preventing aggression and fearful behavior. If you have an older dog that is already fearful or reactive, you will need to 'desensitize' him to new things vs. overwhelming with too much socialization.


This could be something for Groenlo and its rich history! That's what Michaël Lammers thought when he watched co-presenter Alexander Klopping of the Dutch TV-show 'de wereld draait door' bringing up the phenomenon escape rooms.
For many it was a complete novelty. "Some escape rooms already existed in the Netherlands but ever since then it went completely through the roof. I started to call around immidiately and after a nightly brainstorm session we soon hatched a plan and got going. The Escape room 1627 is the result.
A lot of work has been done ever since.
With plenty of short nights." This evening in the middle of the week is that cheerful moment when all volunteers gathered to see the unveiling of the sign on the facade of the historical building in the Beltrumsestraat 10, where the escape room is housed. The four of them pull a rope to unveil the sign.
Niek Molendijk, Bjorn Vije and Nick Oostendorp are the men who made the effort with Lammers to conceive this new attraction in Groenlo, in cooperation with alderman René Hoijtink, who just came down the stairs cheerfully, after Michaël Lammers gave him a tour behind the scenes and a peak behind the 'great secret' of the escape room in Groenlo. "Despite doing 'test runs' for a while this feels kind of official, but we continue to develop the escape room. We like to be amongst the best escape rooms in the Netherlands." From the very start, escape room Groenlo has attracted plenty of attention, according to a happy Niek Molendijk. "It's going well. Visitors just keep showing up. From everywhere. The people even come from North-Holland or Sealand provinces to Groenlo, especially to visit the escape room because this one is very special."
Escape room Groenlo and those who were involved with turning this little part of Groenlo's history into reality, wanted to differentiate from other versions of this real-life game from the very start. "The theme Battle for Grol 1627 was set from the start.
In one escape room you find yourself in prison and you have to escape it some how, but here we wanted to fit Groenlo's history into it. But how?"
The men gave it considerable thought.
"You inquire everywhere and you get in touch with people who are good in coming up with games, or people who know those kind of people and who put in a good word for you. Everybody contributed in their own way to the escape room. We are extremely happy with the final result. History might have an old-fashioned image for some, but we did something very hip with Groenlo's history. Everything is very authentic, in the style of the Battle of Grol."
The initiators's website is flooded with positive reactions weekly; 'what a great experience. excellent idea,' 'a well situated story with nice and challenging puzzles, recommended for everybody. It perfectly fits in with a visit to Groenlo,' "Something we could only dream of," Lammers cheers. "It's great to see how much people are having fun with everything we came up with and implemented.
" For foreign visitors can now also enjoy the German and English version.


Nice shots. You'd think that being able to see skys and horizons like that would be enough to convince people to leave the cities.
Beautiful way to end 2010!
Here's to a happy, healthy and fruitful 2011.
I agree with Muddome. Why anyone would rather see the bright lights of the big city than see beautiful country views is beyond me!


text:
Decoding the Design- Thums Up Charged No Sugar Gets a Special Avengers Look!
By: Richa Sharma | 27/04/2018
Strong, iconic, charged, thunderous and arguably – with dark shades! I could be describing Black Widow (ladies first), Iron Man, Hulk or Thor from the Marvel Cinematic Universe, or even… Thums Up Charged! Clearly, it was a match made in heaven when Thums Up Charged No Sugar collaborated with Marvel Studios' Avengers Infinity War to have these four iconic characters showcased on Thums Up Charged cans – but with an interesting twist. The character designs have been adapted with special care in the Thums Up Charged colours of black, red and grey, with their unique individual abilities and characteristics visually augmented with graphical variations.
If you're an MCU fan (like me) you'll surely be able to spot the subtle nuances and the meanings behind them. Let's see if you agree with my personal interpretations below! If you're not, I promise this will make you look closer when you buy a can!
Black Widow: Ah, the mysterious super spy who can take on any identity - she is depicted with no facial features on the can, perhaps symbolizing the lack of a singular character. She can be anyone you want or need her to be, the only thing that she retains is her ability to kill with the lethal prowess of a black widow spider- which is shown on the can with a strategically placed spider on her face. As typical black widow spiders sometimes have a red hourglass mark on the ventral side of their abdomen, this has been retained in the characteristic red of Thums Up Charged, lending more assimilation of character with beverage. The parallel lines on either side of her suit to me, look like claw marks symbolising the many battle wounds she has endured as an assassin.
Iron man: Billionaire, playboy, philanthropist, genius- that's Tony Stark in a nutshell. This one is the most exciting for me this time because of the massive enhancements to his suit. The new 'Bleeding Edge' armour which Iron Man is getting in Infinity War, including a bionic arm and 'wings' (rocket thrusters) that can take him to Titan (to whip some serious Thanos behind), pulse bolts and an enhanced arc reactor, have all been incorporated into the design. IM's eyes have been replaced with his new armoured avatar. Sounds like someone just got a 'supercharged' makeover- quite literally in this case!
Hulk: Everyone's favourite classic anger management case study, the sharply depicted dual tonality of his hair, face and body denotes his alternation between Dr. Bruce Banner and the Hulk. His power - plain brute force, is brought out in the redesign of his eyes as clenched fists, and in the grey and red quarter circles below his face that outline the shape of his chest muscles. The symbolic angry, open mouth has been retained - maybe he's angry this time because he wants some Thums Up Charged No Sugar and no one's giving it to him (kidding!)
Thor: The God of Thunder himself- if he isn't the epitome of being 'charged' I don't know who is! Though the short haircut and nasty cut on his right eye which he acquired towards the end of Ragnarok have been kept intact, the colour of his hair and beard though have been changed from the classic blonde, to darker shades of grey and red – bringing him ever closer to the character of the beverage than before. With the open wound on his eye (no eye patch) and the absence of the winged helmet, there is a rawness that is emphasised. He is also without his Uru war hammer Mjolnir and now has a thunder-shaped nostril, both of which depict his eventual realisation that the power to control thunder lies within him and not his hammer. A curvy bolt of lightning over his right shoulder accentuates the electrifying energy he exudes.
A key thing to note is the use of shades of grey in every character design. The fact that these superheroes are far too complex and intriguing to be represented in plain black or white- metaphorically speaking, has been a substantial visual takeaway for me, as a fan.
One thing is certain, you can be sure to get supercharged with the power of Marvel Studios' Avengers and thunder of Thums Up Charged No Sugar when you enter the battlefield of Infinity War!
(Disclaimer: The views expressed in this article are personal only. Coca-Cola does not endorse or support any of the information or opinions expressed in this article)
'ICC Cric and Coke' Contest Winners are Geared up and Excited to Watch the Final in London
Adding the Colour of Joy to the Rath Yatra with Maaza
Meet Sara Ali Khan- Fanta's Bubbly New Brand Ambassador
1 Fruits are Becoming the Proverbial 'Apple of the Eye' for Coca-Cola
1 Celebrating Relationships with 'Share A Coke'
Video MarkUp 1 Rabba - Amit Trivedi, Tochi Raina, Jaggi - Coke Studio @ MTV Season 3
1 Aquarius Makes Hydration and Nutrition a Top Priority in Orissa
If Shakespeare' Played Cricket!

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: InvalidArgumentException: Message: invalid argument: invalid locator error coming I was doing a project related to flight price when I truing to web scrape dept time I got the error .
url is https://flight.yatra.com/air-search-ui/dom2/trigger?ADT=1&CHD=0&INF=0&class=Economy&destination=BOM&destinationCountry=IN&flexi=0&flight_depart_date=22%2F01%2F2022&hb=0&noOfSegments=1&origin=DEL&originCountry=IN&type=O&unique=254010891105&viewName=normal
my code was:
dept_time=driver.find_elements("//div[@class='i-b col-4 no-wrap text-right dtime col-3']")
dept= []
for i in dept_time:
    a = i.get_attribute('innerText')
    print(a)
    dept.append(a)
print(dept)

I also tried "//div[@class='i-b pr']
but same error I received

A: Instead of
dept_time=driver.find_elements("//div[@class='i-b col-4 no-wrap text-right dtime col-3']")

Try
dept_time=driver.find_elements_by_xpath("//div[@class='i-b col-4 no-wrap text-right dtime col-3']")

Or
dept_time=driver.find_elements(By.XPATH, "//div[@class='i-b col-4 no-wrap text-right dtime col-3']")

Also, don't forget about wait / delay to use with your code to let the elements loaded before you are reading their inner texts.

redpajama_set_name: RedPajamaStackExchange


text:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<project basedir="." default="all" name="org.yafra.server.openejb">

    <condition property="drive" value="C:/" else="/">
        <os family="windows" />
    </condition>

	<property environment="env"/>
	<property name="projname" value="org.yafra.server.ejb-openejb" />

	<property name="yafraver" value="${env.YAFRAVER}" />
	<property name="yafrarel" value="${env.YAFRAREL}" />
	<property name="workdir" value="${drive}work" />
	<property name="wsdir" value="${env.JAVANODE}" />

	<property name="prg.dir" value="${wsdir}/${projname}" />
	<property name="prg.src" value="${prg.dir}/ejbModule" />
	<property name="build.dir" value="${env.WORKNODE}/java/${projname}" />
	<property name="deploy.dir" value="${workdir}/classes" />
	<property name="cp.dir" value="${workdir}/classes" />

	<property name="ejbjar" value="${deploy.dir}/org.yafra.server.ejb.jar" />
	<property name="ejbstubsjar" value="${deploy.dir}/org.yafra.server.ejbstubs.jar" />
	<property name="ejbear" value="${deploy.dir}/org.yafra.server.ear-openejb.ear" />

	<property name="temp.dir" value="${build.dir}/deploy" />
	<property name="temp.ear" value="${temp.dir}/ear" />
    <property name="temp.ejb" value="${temp.dir}/ejbjar" />
    <property name="temp.ejbstubs" value="${temp.dir}/ejbstubs" />
	<property name="temp.libs" value="${temp.dir}/libs" />
	<property name="temp.classes" value="${temp.dir}/classes" />

    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.7"/>
    <property name="source" value="1.7"/>
    <path id="Apache Tomcat v7.0 [Apache Tomcat v7.0].libraryclasspath">
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-ejbd-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-util.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/xbean-finder-shaded-3.12.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openjpa-asm-shaded-2.2.0.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-hsql-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/geronimo-transaction-3.1.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/slf4j-jdk14-1.7.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-jstl-1.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-mojarra-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-collections-3.2.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/jasper.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/jasper-el.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-spi-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/javaee-api-6.0-5-tomcat.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-loader-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-javaagent.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-jdbc.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/bval-jsr303-0.5.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/catalina-ant.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-http-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-jdbc-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-logging-1.1.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-lang3-3.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-codec-1.7.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-beanutils-core-1.8.3.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-api-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-coyote.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/bval-core-0.5.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/hsqldb-2.2.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/swizzle-stream-1.6.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-jpa-integration-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-ee-common-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/myfaces-impl-2.1.10.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-cli-1.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-api.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/xbean-naming-3.12.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-catalina-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-dbcp.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-loader-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-ee-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-i18n-fr.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/xbean-bundleutils-3.12.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/quartz-2.1.6.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-i18n-es.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-webapp-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-myfaces-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/jaxb-impl.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomcat-i18n-ja.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/geronimo-javamail_1.4_mail-1.8.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/tomee-common-1.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-core-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/catalina.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-impl-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/mbean-annotation-api-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/slf4j-api-1.7.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-dbcp-1.4.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/xbean-reflect-3.12.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-digester-1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/xbean-asm-shaded-3.12.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-lang-2.6.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/javassist-3.17.1-GA.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/servlet-api.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/wsdl4j-1.6.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-server-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/serp-1.13.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/myfaces-api-2.1.10.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/catalina-ha.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/howl-1.0.1-1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/commons-pool-1.5.7.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/jsp-api.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-web-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-ejb-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/ecj-4.2.1.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/catalina-tribes.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-client-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openejb-jee-4.5.2.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/jansi-1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/openwebbeans-jsf-1.1.8.jar"/>
        <pathelement location="../../../../apache-tomee-webprofile-1.5.2/lib/gson-2.1.jar"/>
    </path>
    <filelist id="depjars" dir="${cp.dir}">
        <file name="${cp.dir}/derbyclient.jar"/>
        <file name="${cp.dir}/mysql-connector-java-5.1.21-bin.jar"/>

    	<file name="${cp.dir}/cayenne-server-3.0.2.jar" />
        <file name="${cp.dir}/ashwood-2.0.jar"/>
        <file name="${cp.dir}/commons-collections-3.2.1.jar"/>
        <file name="${cp.dir}/commons-logging-1.1.1.jar"/>
         <file name="${cp.dir}/vpp-2.2.1.jar"/>
        <file name="${cp.dir}/log4j-1.2.17.jar"/>
        <file name="${cp.dir}/org.yafra.utils.jar"/>
        <file name="${cp.dir}/org.yafra.server.core.jar"/>
    </filelist>
    <path id="pathdepjars">
    	<filelist refid="depjars" />
    </path>
    <path id="org.yafra.server.ejb-openejb.classpath">
        <pathelement location="${build.dir}"/>
        <path refid="pathdepjars"/>
        <path refid="Apache Tomcat v7.0 [Apache Tomcat v7.0].libraryclasspath"/>
    </path>

	<target name="all" description="make ejb libs"
		depends="clean, init, ejbear, ejbstub">
	</target>

	<target name="clean">
		<delete file="${ejbjar}" />
		<delete file="${ejbear}" />
		<delete file="${ejbstubsjar}" />
		<delete dir="${build.dir}"/>
		<delete dir="${temp.dir}"/>
	</target>

	<target name="init">
        <echo message="yafra ejb build.xml - ejb init"/>
    	<echo message="${os.name}"/>
		<buildnumber />
		<tstamp />
		<mkdir dir="${build.dir}"/>
        <mkdir dir="${temp.dir}"/>
        <mkdir dir="${temp.libs}/"/>
        <mkdir dir="${temp.classes}/"/>
        <mkdir dir="${temp.ear}/"/>
        <mkdir dir="${temp.ejb}/"/>
        <mkdir dir="${temp.ejbstubs}/"/>
    </target>

	<target name="ejbbuild" depends="init" description="Build ejb server">
        <echo message="yafra ejb build.xml - build server ejb"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="${temp.classes}" source="${source}" target="${target}">
            <src path="${prg.src}"/>
            <classpath refid="org.yafra.server.ejb-openejb.classpath"/>
        </javac>
    </target>

	<target name="ejbjar" description="build.xml - do ejb server jar" depends="ejbbuild">
        <echo message="yafra ejb build.xml - do ejb server jar"/>
		<copy todir="${temp.ejb}/org/yafra/server">
		    <fileset dir="${temp.classes}/org/yafra/server"/>
		</copy>
		<copy file="${prg.src}/log4j.properties" todir="${temp.ejb}"/>
		<copy todir="${temp.ejb}/META-INF">
		    <fileset dir="${prg.src}/META-INF"/>
		</copy>
		<jar jarfile="${ejbjar}" basedir="${temp.ejb}">
			<manifest>
				<attribute name="Author" value="${user.name}" />

					<attribute name="Title" value="org.yafra.server.ejbclient" />
					<attribute name="Vendor" value="yafra.org" />
					<attribute name="Build" value="${build.number}" />
					<attribute name="Date" value="${TODAY}" />
					<attribute name="Version" value="${yafraver}${yafrarel}" />

					<attribute name="Copy" value="(C) yafra.org 2010" />

			</manifest>
		</jar>
	</target>

	<target name="ejbear" depends="ejbbuild, ejbjar">
        <echo message="yafra ejb build.xml - copy jars to distribution lib"/>
		<copy todir="${temp.ear}/lib">
			<filelist refid="depjars"/>
	      </copy>
		<copy file="${ejbjar}" todir="${temp.ear}"/>
		<ear destfile="${ejbear}" appxml="${prg.dir}/application.xml" basedir="${temp.ear}">
			<manifest>
				<attribute name="Author" value="${user.name}" />
				<attribute name="Class-Path" value="org.yafra.server.ejb.jar" />

					<attribute name="Title" value="org.yafra.server.ejb ear" />
					<attribute name="Vendor" value="yafra.org" />
					<attribute name="Build" value="${build.number}" />
					<attribute name="Date" value="${TODAY}" />
					<attribute name="Version" value="${yafraver}${yafrarel}" />
					<attribute name="Copy" value="yafra.org 2010" />

			</manifest>
		</ear>
	</target>

	<target name="ejbstub" description="build.xml - do ejb stubs jar" depends="ejbbuild">
        <echo message="yafra ejb build.xml - do ejb stubs jar"/>
		<copy todir="${temp.ejbstubs}/org/yafra/server/ejbRemote">
		    <fileset dir="${temp.classes}/org/yafra/server/ejbRemote"/>
		</copy>
		<copy file="${prg.src}/log4j.properties" todir="${temp.ejbstubs}"/>
		<jar jarfile="${ejbstubsjar}" basedir="${temp.ejbstubs}">
			<manifest>
				<attribute name="Author" value="${user.name}" />

					<attribute name="Title" value="org.yafra.server.ejbclient" />
					<attribute name="Vendor" value="yafra.org" />
					<attribute name="Build" value="${build.number}" />
					<attribute name="Date" value="${TODAY}" />
					<attribute name="Version" value="${yafraver}${yafrarel}" />

					<attribute name="Copy" value="(C) yafra.org 2010" />

			</manifest>
		</jar>
	</target>

</project>

redpajama_set_name: RedPajamaGithub


text:
Tag Archives: Brands
Chevrolet – that'll be the Daewoo…that I die
December 23, 2013 Brands, CarsBrands, Chevrolet, Daewoo, General Motors, GMmarkcarbery
This week's resignation of Chevrolet's global marketing boss, following the resignation of the brand's European head, is an interesting step. As one of the team who launched Daewoo in the UK, I was sad to see Chevrolet pulled from the region recently by its parent General Motors, which incorporated Daewoo into the Chevrolet brand after acquiring the Korean company in 2001.
After all, Daewoo had had a great start in the UK, Europe's second most important market. The product was several model cycles past its use-by date but a no-dealer, customer-first strategy provided real brand values and record market share for a new entrant – immediately placing it ahead of Hyundai, Mazda and Volvo – and inspired success in Europe.
The rationale for dropping Chevrolet in Europe? It was losing too much money. It was seen as having too much overlap with the Opel and Vauxhall sister brands. Volumes were too low. True, but these were largely the results; the cause was a failure to develop the right product and build a brand for Europe.
While Daewoo had become synonymous with quality customer service, Chevrolet was known more for being American. The big, brash, chrome-lined Americana image didn't fit with compact, Korean-made value products, and the fact that these sat in the same line-up as Corvettes and Camaros with old-world V8s presented a chasm for consumers to cross.
Some have suggested that a value brand simply wasn't right for the company, which has wanted to take the the Opel and Vauxhall products upmarket to fight the tidal wave of new models from the German premium brands. But VW Group has done just fine with Skoda book-ending a brand portfolio with Bugatti, Bentley and Lamborghini. The truth is that GM didn't develop distinctive product and failed to present a coherent brand.
It's ironic that Daewoo, which had come to Europe as an independent in the mid-1990s, taken on the establishment and leap-frogged its Asian value counterparts has – under the ownership of an automotive giant with three-quarters of a century's experience of operating in Europe and with an established brand name – sold just one vehicle for every five clocked up by Hyundai and Kia.
But the ultimate irony is that, having developed a modern, lean and fit-for-purpose approach as Daewoo, Chevrolet has been driven to virtual extinction in Europe while a bankrupt GM Europe has emerged from global recession and Eurozone collapse with great-looking product.
Dropping Chevrolet in Europe may be the best decision for GM financially, and perhaps inevitable in a European market which has shrunk so alarmingly. But with all the places at the premium table taken and no value offering, the lack of strategic investment in the Chevrolet brand will surely prove to be a cause of regret.
Things are different today from when GM acquired Daewoo – excellent product is now a given. But that simply means that the brand is even more important, because it's the differentiator, the I-want-one factor – something GM will be up against when it aims Opel and Vauxhall at those beautifully honed brands at BMW, Audi and Mercedes.
Hyundai needs to avoid joining the mainstream
November 1, 2013 Brands, Cars, DesignBrands, Design, Hyundai, Kiamarkcarbery
While the rise of the premium brands seems to have defined the changing dynamics of the car industry in the last decade, the growth in stature of the value brands is a more remarkable story. Hyundai and Kia in particular.
It's much harder to grow a brand upwards from a budget baseline than it is for a brand to apply premium qualities to more functional vehicles as BMW, Mercedes and Audi have done. And Hyundai and Kia have done it without the resources of an existing group.
The Korean group has experienced phenomenal growth, with a doubling of European sales since 2008. Both brands have reeled customers in with competitive pricing and long warranties, and it's easy to understand why the value brands have prospered in the years since economic meltdown.
But it's not all about value. In a visionary move, in 2006 Kia recruited the European designer of the iconic Audi TT to head its styling. He's since become the boss of all Hyundai-Kia design and the most senior non-Korean in its business globally. In so doing the management has elevated the brands and created a compelling combination of the rational and emotional. They now effectively offer what Toyota did a decade ago – reliable, hassle-free motoring for ordinary consumers – but with added style. And remarkably they've now comfortably overtaken the Japanese giant in Europe: Hyundai's market share this year is 3.5% and steady, Toyota's 4.0% and falling. Kia's is 2.8% and climbing, giving the pair a combined 6.3% of the market, 50% more than Toyota.
And now Hyundai has become one of the world's 50 most valuable brands according to the Interbrand Best 100 Global Brands index. To put that in perspective, we're talking companies in all sectors. Companies like Coca-Cola, Google and Apple. Hyundai's rank is 43, putting it ahead of Sony, Facebook and Heinz.
In automotive terms it's just one place behind Ford at 42. It's seventh out of all automotive manufacturers, with Toyota, Mercedes, BMW, Honda and VW the only other brands to beat it. Over the last five years Hyundai's brand value has grown 96%, mirroring sales.
Like sister brand Kia and Skoda, Hyundai now wants to sell its cars more on quality and less on value. It wants to raise perception and prices, to create more profit. But like the premium brands moving into mainstream territory it faces the possibility of losing some its brand relevance. Unlike the premium brands however, when the value brands move towards the mainstream they risk becoming merely part of the squeezed middle to which they currently offer such an appealing alternative.
Hyundai's challenge now is to grow sustainably: to retain brand differentiation and to nurture a strong enough brand personality to avoid joining the mainstream.
The elastic brand – Land Rover's model explosion
May 17, 2013 Brands, CarsBrands, Land Rover, luxury, premium, Range Rovermarkcarbery
I read today that the replacement for Land Rover's Freelander will drop the model name and become part of a growing Discovery family. So far so simple – Land Rover already has a confusing brand and model name structure and that's about to get much more complicated, with the reported intention to diversify its combined Land Rover/Range Rover offering to as many as 15 distinct variants. That could be stretching it a bit.
Time was when Land Rover meant the iconic Defender, now 65 years old and about to be retired in its current form. Then came the Range Rover, which originally had hoseable seats but now comes with ones which will massage you and competes with luxury limousines from Cheshire to China. And as it's gone upmarket it's become a brand in its own right. However, the car shares the brand's name, whereas the models which have moved into the space underneath the flagship, the Sport and the Evoque, are separately identified. Meantime Land Rover's Discovery has also become something of an icon.
So a strategy of rationalising a rapidly growing range into three model lines – Defender, Discovery, Range Rover – will make sense. It'll also help maintain the integrity of brands which could be at risk of being diluted by the race for sales growth and the drive upmarket.
However, it doesn't tackle the issue of an increasing overlap between the models. There is little, it seems, that the new flagship Range Rover does that the new Sport can't do. At the same time the new Sport will have a seven-seat option which, combined the availability of a four-cylinder diesel engine, jars with its Sport tag – surely practicality should be the preserve of the Land Rover brand, where the Discovery already does practical-meets-cool. Even more so when the next generation, based on the Range Rover, will have the inherent quality at the top end to satisfy all but those who simply must have the Range Rover badge. There's even talk of a seven-seat Evoque, a car whose success is based purely on style over practicality, to the extent of publicising that it was designed with the help of an ex-Spice Girl.
Of course Land Rover can charge more for products with the Range Rover badge and achieve bigger margins. But, especially when you have brands founded on integrity and now luxury, it's a dangerous play to let sales growth and diversification steer the brand rather than the other way round.
Land Rovers and Range Rovers are fantastic products but there are few bad cars these days. Mainstream carmakers have introduced premium products, and premium brands have launched downsized models. An already super-competitive market has converged. As a result, brand differentiation and relevance has become the key to consumers.
Land Rover and Range Rover has always had more of that than any other car company. Its challenge now will be to preserve it.


The fairytale is realized for any princess in training in this licensed Disney Princess bouncer. Cinderella, Snow White, Sleeping Beauty, Belle, and Jasmine are smiling down on each soon-to-be princess as participants enjoy enchanting fun and imaginative play! Ideal for a birthday party or kid-filled event. This jumper is a great way to promote fitness and entertainment!
This jumper has 360-degree mesh windows, so parents and spectators can have a clear view of all the fun. Accommodates 10 to 15 kids. Dimensions: 15 ft x 15 ft.


text:
Q: Using Jackson XmlMapper to serialize to an XML DOM I know it's possible to serialize directly to a String using XmlMapper.writeValueAsString(), but I would like to serialize a DOM tree.  Either a new Document or, preferably, serialize directly to an existing DOM Node.  Can this be done with Jackson?

A: I think I found the solution by using an XMLStreamWriter.
Try the following snippet:
XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.createXMLStreamWriter(new DOMResult(yourNode));

XmlMapper mapper = new XmlMapper();
ToXmlGenerator xmlGenerator = mapper .getFactory().createGenerator(sw);
mapper.writerFor(YourClass.class).writeValue(xmlGenerator, yourInstance);


text:
Gewoon plakkaatmos (Pellia epiphylla) is een een thallose levermos. Het prefereert zure milieus en is te vinden langs sloten en greppels op het Pleistocene afzettingen, maar ook in zure duinvalleien, rietlanden en dergelijke.

Kenmerken
De thalli zijn donkergroen tot lichtgroen, ook roodachtig op blootgestelde plaatsen, bandvormig, onregelmatig gevorkt, hartvormig uitgesneden aan de uiteinden, tot 5 centimeter lang en ongeveer 0,8 tot 1,5 centimeter breed, dunvlezige en enigszins transparant aan de randen. Ze hechten aan het substraat met de rhizoïden die zich aan de onderzijde bevinden.

De brede, onduidelijk gedefinieerde thallusrib is ongeveer 10 tot 15 cellen dik en aan de onderkant licht uitpuilend. De thalluscellen hebben elk 25 tot 35 olielichamen en hebben, vooral in het midden van het thallus, ringvormige of spiraalvormige verdikkingsruggen. Aan de rand van het thallus zijn de cellen langwerpig, 2 tot 4 keer zo lang als breed. De boven- en onderkant van de thalluspunten zijn bedekt met tweecellige slijmharen.

De sporofyt groeit uit een kleine thallusschaal, het perichaetium, die naar de thalluspunt toe open is. De calyptra hangt duidelijk over het perichaetium. Het bolvormige sporenkapsel wordt gedragen door de seta, die vaak meer dan vijf centimeter lang is. Sporen komen regelmatig voor en rijpen in het voorjaar, ze zijn ovaal en ongeveer 70 tot 150 µm lang.

Voorkomen
De soort komt voor in Noord-Amerika, Europa, Noord-Afrika en delen van Azië. Ook in Nederland en België komt het algemeen voor. Het is niet bedreigd en staat niet op de rode lijst.

Foto's

Levermossen
Mossoort

redpajama_set_name: RedPajamaWikipedia


First on the list is Boston's The Gourmet Pizza Restaurant and Sports Bar – "pizza" is literally in the title of this restaurant's name, so you know their pizza is going to be good. Boston's pizza dough is pressed by hand daily and the pizzas range in size from an individual pizza of 8" to a large pizza of 15" (this can be an individual pizza too, if you believe in yourself). Boston's offers 14 different types of pizza, 4 types of flatbread pizzas, 4 types of thin crust pizzas and 2 types of calzones. If none of their combinations tickle your taste buds you can always make your own pizza to get it just right. Plus, this restaurant is in close proximity of Nationwide Arena so it is the perfect spot to get a pre-game slice!
For pizza with true authentic Italian flare we recommend a visit to Buca di Beppo. All the pizzas and dishes at Buca are inspired by the cuisine enjoyed for generations in villages throughout Italy. Serving up 8 different types of pizzas including 'Pizza Con Formaggio' and 'Supremo Italiana' you can't go wrong with any choice when you visit this festive and fun restaurant.
If you want a little beer to go with your pizza we recommend a visit to Gordon Biersch—their hand tossed pizzas and flatbreads will not disappoint. Indulge on classics like traditional pepperoni pizza or be adventurous with the California Cobb Flatbread that offers a little more zest with a drizzle of Märzen beer balsamic vinaigrette. Pair your Za with a refreshing handcrafted brew and you'll be set.
Come have a nice cold drink, and play some trivia at The Mare every Wednesday from 5:30 – 7:30 PM! This buzzer-style trivia is sponsored by Magic Hat Brewing Company, so you can enjoy Magic Hat drafts & bottles will be $1.00 less than normal pricing! Come out to play – remember, it's always free to play, and there are prizes for the winners!
The Columbus Blue Jackets get to enjoy two Arena District home games this week, starting with a divisional matchup against the Philadelphia Flyers on Thursday! Grab a few friends and catch the action live as the Jackets continue their hot start to the season.
Visit the plaza in front of Nationwide Arena this Thursday for the Nationwide-Pearl Alley Growers' Association Farmers Market! Stop by this free weekly event and bring home delicious fruit, vegetables, honey and more–all fresh and locally produced.
Remember Phil Collins? The talented singer who delivered global smash hits like 'In the Air Tonight' and 'Another Day in Paradise' in the 1980s? Well, he's still alive and kicking, and he's proving it when he brings his Not Dead Yet, Live! tour to Nationwide Arena this Friday. Watch this living legend perform recognizable favorites alongside his 16-year-old son Nicolas on drums, longtime guitarist Daryl Stuermer and more.
Can't make the Thursday game (or trying to continue the streak)? The Blue Jackets return to Nationwide Arena on Saturday to face off against the lean, mean Chicago Blackhawks. Don't miss the clash of these two storied Midwest teams.
This Saturday is Big Bang Columbus' Second Annual Brews, Boo'z, and Books Charity Drive! Bring children's books to donate to the Nationwide Children's Foundation – Reach Out and Read Program for discounted admission. This event will feature all your favorite local brews and delicious whiskeys and bourbons for one incredible evening. Guests will enjoy a one on one tasting event and mixology class, all while drinking for a great cause! This event is 21+, admission details here.
With its crisp breeze and scenic landscape, there's no better time than fall to run a race–the Columbus Marathon and Half-Marathon, to be exact. Since partnering with Nationwide Children's Hospital seven years ago, the marathon has raised $7 million for the organization. Whether you're looking to participate in the race this Sunday or simply donate your time or money, this is a fun way to get involved with a great cause!
The Clifton C floor plan at Arena Crossing Apartments features everything you need and more! This 1-bed, 1-bathroom features a charming layout, modern finishes, closet washer/dryer and amazing views of the Arena District.
Schedule a tour of Arena Crossing Apartment's Clifton C unit today!
For many adults in Columbus, meeting new people can be challenging. But it doesn't have to be!
If you live in a downtown apartment, there are dozens of neighbors in your building that can quickly become close friends. It's only a matter of meeting them.
Whether you're been in your unit for years or are new to Columbus, here are a few tips on how to meet and connect with your apartment neighbors.
Most apartment buildings in downtown Columbus feature a variety of common areas for their residents to enjoy. These spots range from community pools and fitness centers to outdoor gathering areas. If you're looking to meet new neighbors, frequenting these areas is a surefire way to strike up a conversation.
There's no easier way to meet people than through shared experiences. In Columbus, some of the downtown apartment complexes offer planned social activities with the intention of bringing neighbors together. From pool parties to holiday parties, and planned social events at neighboring bars and restaurants, check your apartment's social pages, resident portal or calendars to see what's going on in your community.
A great way to meet people in Columbus is to join a group of people with similar interests as you. Whether it's a fitness class, sports league, trivia team or volunteer opportunity, there's a likeminded local group to join. Scour the community bulletin in your apartment, or browse websites like Meetup, Nextdoor and even Craigslist. If you can't find anything, don't be afraid to embrace your interests and start the group yourself!
If there's a holiday coming up, show off your fun side and get in the spirit of the season! Decorating your apartment balcony can be a nice icebreaker to get some attention from people in your building. Or, even host a holiday gathering at your apartment. Make a Facebook event to get the word out there and invite those people you met even just through social media. Everyone loves a themed party, especially if it's as convenient as down the hall. So why not get everyone together and celebrate an upcoming holiday?
In order to find opportunities to meet people, it's important to stay in the know of what's going on in downtown Columbus. Knowing about the latest events provides a variety of options for meeting new friends on any given night. You can learn about these activities through social media, apartment bulletin boards or even right here on our blog!
Just a short walk for residents of Arena Crossing Apartments, Flats on Vine, or Flats II, the Arena District is downtown Columbus' entertainment epicenter, and attracts tons of people on any given night. From sporting events and concerts at Nationwide Arena to an impressive collection of community-minded bars and restaurants, you're bound to find new friends in the Arena District!
Overall, don't be afraid to step outside your comfort zone and make the first move in being friendly to your neighbors. A simple smile or kind favor can help remind others they're surrounded by good people and potential new friends.
Do you have any other ideas of how to connect with those around you? Feel free to comment your ideas below!
Kick off the Columbus Blue Jackets' 2018-19 season in style! This Friday– before they take on the Carolina Hurricanes in their home opener–the team is inviting fans to be part of their Opening Night Plaza Party, presented by Nationwide.
Held at the plaza in front of Nationwide Arena, the afternoon's main event – a "blue carpet" arrival of the Blue Jackets, and the opportunity to welcome your favorite players as they prepare to face the Carolina Hurricanes!
Other highlights of this free event (tickets to the game are not required to attend) include music, food, drinks, games, prizes, live radio/TV broadcasts and more. Don't miss it!
Still don't have tickets for the home opener? Don't worry, you can be a part of the 5th line on opening night! Click here to get tickets now.
NF – Perception Tour at EXPRESS LIVE!
Treat your ears to the unique musical stylings of hip-hop artist NF as he performs songs from his critically acclaimed third album, Perception, tomorrow night at EXPRESS LIVE!'s outdoor stage. Known for his highly emotional rap tunes, NF fans are guaranteed to enjoy this evening of hot fire.
The Revivalists at EXPRESS LIVE!
If hip-hop isn't your style, EXPRESS LIVE! is hosting 7-piece rock band The Revivalists this Wednesday. Hailing from New Orleans, The Revivalists' music has been described as "a Crescent City-rhythm spin on jam-band jubilee". The night will surely to be music to your ears!
Nathaniel Rateliff & The Night Sweats at EXPRESS LIVE!
Three nights, three diverse live music acts in downtown Columbus! On Thursday, folk, Americana and vintage R&B will be on full display as Denver-based Nathaniel Ratliff & The Night Sweats perform their long list of hits on the outdoor stage at EXPRESS LIVE!
Where are you watching the Columbus Blue Jackets season opener? At home? At a friend's house? How about at a bar in the Arena District with former Blue Jackets players? That's right, on Thursday, R Bar will be hosting CBJ alumni Fredrik Modin and Jean-Luc Grand-Pierre for a special watch party! Enjoy drink specials, giveaways, and the company of former NHL stars as you watch the Jackets take on the Red Wings.
Make home where the action is! Located in the heart of Columbus' Arena District, Arena Crossing is the perfect apartment building for luxurious downtown living.
The Madison at Arena Crossing is a 1,153 square-foot, 2-bedroom, 2-bathroom floor plan featuring a view-laden private balcony or terrace, modern appliances and beautiful hardwood flooring. Residents also receive access to the amenities of Arena Crossing–including a private parking garage, rooftop pool, Resident VIP membership and much more.
Schedule a tour of Arena Crossing's Madison unit today!


text:
package erogenousbeef.bigreactors.common.multiblock.helpers;

import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import cpw.mods.fml.common.network.ByteBufUtils;
import erogenousbeef.bigreactors.api.registry.Reactants;
import erogenousbeef.bigreactors.common.BRLog;
import erogenousbeef.bigreactors.common.data.ReactantStack;
import erogenousbeef.bigreactors.common.multiblock.interfaces.IConditionalUpdater;

/**
 * A helper class which allows multiple reactants to sit in one logical
 * container. It acts basically like a single tank containing multiple things,
 * and limiting the amount of stuff which can go into it based on the total
 * amount of stuff contained.
 *
 * @author Erogenous Beef
 */
public abstract class ReactantContainer implements IConditionalUpdater {

	private ReactantStack[] tanks;
	private int capacity;
	private String[] tankNames;

	private int ticksSinceLastUpdate;
	private static final int minimumTicksBetweenUpdates = 60;
	private static final float minimumDevianceForUpdate = 0.05f; // at least 5% difference before we send a fueling update to the client

	int[] levelAtLastUpdate;

	private static final int FORCE_UPDATE = -1000;

	public ReactantContainer(String[] tankNames, int capacity) {
		assert(tankNames != null);
		assert(tankNames.length > 0);

		this.tankNames = tankNames;
		tanks = new ReactantStack[tankNames.length];
		levelAtLastUpdate = new int[tankNames.length];

		for(int i = 0; i < tanks.length; i++) {
			tanks[i] = null;
			levelAtLastUpdate[i] = FORCE_UPDATE;
		}

		this.capacity = capacity;
	}

	public int getCapacity() { return capacity; }

	public void setCapacity(int newCapacity) {
		int oldCapacity = capacity;
		capacity = newCapacity;

		clampContentsToCapacity();
	}

	/// GETTERS
	public String getReactantType(int reactantIdx) {
		assert(reactantIdx >= 0 && reactantIdx < tanks.length);
		return tanks[reactantIdx] == null ? null : tanks[reactantIdx].getName();
	}

	public int getReactantAmount(int reactantIdx) {
		assert(reactantIdx >= 0 && reactantIdx < tanks.length);
		return tanks[reactantIdx] == null ? 0 : tanks[reactantIdx].amount;
	}

	/**
	 * @return Total amount of stuff contained, across all fluid tanks
	 */
	public int getTotalAmount() {
		int amt = 0;
		for(int i = 0; i < tanks.length; i++) {
			amt += getReactantAmount(i);
		}
		return amt;
	}

	/// SETTERS
	public void setReactant(int reactantIdx, ReactantStack newStack ) {
		assert(reactantIdx >= 0 && reactantIdx < tanks.length);
		tanks[reactantIdx] = newStack;
	}

	/// ADD/REMOVE HELPERS
	protected int addToStack(int idx, int fluidAmount) {
		if(tanks[idx] == null) {
			throw new IllegalArgumentException("Cannot add reactant with only an integer when tank is empty!");
		}

		int amtToAdd = Math.min(fluidAmount, getRemainingSpace());

		tanks[idx].amount += amtToAdd;
		return amtToAdd;
	}

	public int fill(int idx, String reactantName, int amount, boolean doFill) {
		assert(idx >= 0 && idx < tanks.length);
		if(reactantName == null || amount <= 0) {
			return 0;
		}

		if(!canAddToStack(idx, reactantName)) {
			return 0;
		}

		int amtToAdd = Math.min(amount, getRemainingSpace());
		if(amtToAdd <= 0) {
			return 0;
		}
		if(!doFill) {
			return amtToAdd;
		}

		if(tanks[idx] == null) {
			tanks[idx] = new ReactantStack(reactantName, amtToAdd);
		}
		else {
			tanks[idx].amount += amtToAdd;
		}

		return amtToAdd;
	}

	/**
	 * Dump everything in a given reactant tank.
	 * @param idx Index of the tank to dump
	 */
	public int dump(int idx) {
		assert(idx >= 0 && idx < tanks.length);

		int amt = tanks[idx] != null ? tanks[idx].amount : 0;
		setReactant(idx, null);

		return amt;
	}

	/**
	 * Remove some amount of reactant, but don't bother returning it.
	 * We're just dumping it into the ether.
	 * @param idx Index of the tank to dump from
	 * @param amount Maximum amount to dump
	 */
	public int dump(int idx, int amount) {
		assert(idx >= 0 && idx < tanks.length);
		if(tanks[idx] != null) {
			if(tanks[idx].amount <= amount) {
				amount = tanks[idx].amount;
				setReactant(idx, null);
			}
			else {
				tanks[idx].amount -= amount;
			}
			return amount;
		}
		else {
			return 0;
		}
	}

	/// VALIDATION HELPERS
	protected abstract boolean isReactantValidForStack(int stackIdx, String reactant);

	protected boolean canAddToStack(int idx, String incoming) {
		if(idx < 0 || idx >= tanks.length || incoming == null) { return false; }
		else if(tanks[idx] == null) {
			return isReactantValidForStack(idx, incoming);
		}
		return tanks[idx].isReactantEqual(incoming);
	}

	public boolean canDrain(int idx, ReactantStack reactant) {
		if(reactant == null || idx < 0 || idx >= tanks.length) { return false; }

		if(tanks[idx] == null) { return false; }

		return tanks[idx].isReactantEqual(reactant) && tanks[idx].amount > 0;
	}

	/// SAVE/LOAD

	protected NBTTagCompound writeToNBT(NBTTagCompound destination) {
		ReactantStack stack;
		for(int i = 0; i < tankNames.length; i++) {
			stack = tanks[i];
			if(stack != null) {
				destination.setTag(tankNames[i], stack.writeToNBT(new NBTTagCompound()));
			}
		}

		return destination;
	}

	protected void readFromNBT(NBTTagCompound data) {
		for(int i = 0; i < tankNames.length; i++) {
			if(data.hasKey(tankNames[i])) {
				tanks[i] = ReactantStack.createFromNBT(data.getCompoundTag(tankNames[i]));
				levelAtLastUpdate[i] = tanks[i] != null ? tanks[i].amount : FORCE_UPDATE;
			}
			else {
				tanks[i] = null;
				levelAtLastUpdate[i] = FORCE_UPDATE;
			}
		}
	}

	public void serialize(ByteBuf buffer) {
		buffer.writeInt(capacity);
		for(int i = 0; i < tankNames.length; i++) {
			boolean hasReactant = getReactantAmount(i) > 0;
			buffer.writeBoolean(hasReactant);
			if(hasReactant) {
				ByteBufUtils.writeUTF8String(buffer, tanks[i].getName());
				buffer.writeInt(tanks[i].amount);
			}
		}
	}

	public void deserialize(ByteBuf buffer) {
		capacity = buffer.readInt();
		for(int i = 0; i < tankNames.length; i++) {
			tanks[i] = null;

			boolean hasReactant = buffer.readBoolean();
			if(hasReactant) {
				String reactantName = ByteBufUtils.readUTF8String(buffer);
				int amount = buffer.readInt();

				if(!Reactants.isKnown(reactantName)) {
					BRLog.warning("Read an unknown reactant <%s> from a network message; tank %s will remain empty", reactantName, tankNames[i]);
				}
				else {
					tanks[i] = new ReactantStack(reactantName, amount);
					levelAtLastUpdate[i] = amount;
				}
			}
		}
	}

	/// MULTIBLOCK HELPERS
	protected void merge(ReactantContainer other) {
		if(other.capacity > capacity) {
			capacity = other.capacity;
			tanks = other.tanks;
		}
	}

	/// Implementation: IConditionalUpdater
	public boolean shouldUpdate() {
		ticksSinceLastUpdate++;

		if(minimumTicksBetweenUpdates < ticksSinceLastUpdate) {
			int dev = 0;
			boolean shouldUpdate = false;
			for(int i = 0; i < tanks.length && !shouldUpdate; i++) {

				if(tanks[i] == null && levelAtLastUpdate[i] > 0) {
					shouldUpdate = true;
				}
				else if(tanks[i] != null) {
					if(levelAtLastUpdate[i] == FORCE_UPDATE) {
						shouldUpdate = true;
					}
					else {
						dev += Math.abs(tanks[i].amount - levelAtLastUpdate[i]);
					}
				}
				// else, both levels are zero, no-op

				float divisor = capacity;
				if(divisor == 0) { divisor = 4000; } // totally arbitrary 4kmb
				if(((float)dev/divisor) >= minimumDevianceForUpdate) {
					// Only update if we're more than 5% off our current amount
					shouldUpdate = true;
				}
			}

			if(shouldUpdate) {
				resetLastSeenLevels();
			}

			ticksSinceLastUpdate = 0;
			return shouldUpdate;
		}

		return false;
	}

	/// DATA HELPERS
	protected void resetLastSeenLevels() {
		for(int i = 0; i < tanks.length; i++) {
			if(tanks[i] == null) {
				levelAtLastUpdate[i] = 0;
			}
			else {
				levelAtLastUpdate[i] = tanks[i].amount;
			}
		}
	}

	/**
	 * @return The amount of space remaining in the container.
	 */
	public int getRemainingSpace() {
		return getCapacity() - getTotalAmount();
	}

	/**
	 * When a container is overfilled, forcibly "spill" some reactants
	 * to return to a non-overfull state.
	 * This is most often useful when dealing with machine merges.
	 */
	protected void clampContentsToCapacity() {
		if(getTotalAmount() > capacity) {
			int diff = getTotalAmount() - capacity;

			// Reduce stuff in the tanks. Start with waste, to be nice to players.
			for(int i = tanks.length - 1; i >= 0 && diff > 0; i--) {
				if(tanks[i] != null) {
					if(diff > tanks[i].amount) {
						diff -= tanks[i].amount;
						tanks[i] = null;
					}
					else {
						tanks[i].amount -= diff;
						diff = 0;
					}
				}
			}
		}
	}

	public String getDebugInfo() {
		StringBuilder sb = new StringBuilder();
		sb.append("Capacity: ").append(Integer.toString(getCapacity()));
		for(int i = 0; i < tanks.length; i++) {
			sb.append("[").append(Integer.toString(i)).append("] ").append(tankNames[i]).append(": ");
			if(tanks[i] == null) {
				sb.append("NULL");
			}
			else {
				sb.append(tanks[i].toString());
			}
			sb.append("\n");
		}
		return sb.toString();
	}
}


text:
The next-gen Google Assistant is taking the privacy fight right to Siri—and it just might win
It's going to be hard for Apple to catch up.
By Michael Simon
Staff Writer, Macworld |
Michael Simon/IDG
During its I/O Developers Conference on Tuesday, Google did a live demo of the next-generation of Google Assistant running on a Pixel phone. It's a dramatic rethinking of how the Assistant interacts with you and your phone, down to its interface, which barely takes up any space on the screen. With a single "Hey Google" command, the presenter was able to execute 12 actions in 40 seconds, including launching and searching within third-party apps:
Open Calculator
Open Photos
Set a timer for 10 minutes
What's the weather today?
What about tomorrow?
Show me John Legend on Twitter
Get a Lyft ride to my hotel
Turn the flashlight on
Turn it off
Take a selfie
All that took just 40 seconds, but it's not just the speed that's impressive. Google Assistant only had to be summoned once, and it continued listening, understood the context of what was being asked, and didn't require any, um, assistance. When asked to get a Lyft ride to "my hotel," it knew where she was staying. It launched John Legend's profile in the Twitter app. It even started a countdown after opening the front camera.
Google demoed its next-gen Assistant at I/O 2019, and the interface is little more than a tiny string of text in the bottom right corner of the screen.
I tried the same thing with Siri and wasn't nearly as successful. I had to press the button each time, since Siri doesn't wait around after completing a task. (To be fair, Google Assistant doesn't on phones yet either.) Siri was able to parse "it" to mean flashlight when I asked to turn it off, but Siri wasn't able to launch a route on Lyft, and merely showed recent tweets about John Legend. I still had to press the shutter when the selfie cam came up. All in all, it still took more than 50 seconds to accomplish fewer tasks.
Google Assistant is so far ahead, I'm not sure Apple can ever catch up. The next-generation Assistant is due to launch in the fall on Pixel phones, and quite frankly, Siri isn't even as good as this generation. Where does Apple go from here?
Shrinking the cloud
To accomplish the tremendous speed boost, Google moved the entire AI model to the device itself, trimming the whole stack from 100GB down to 50MB. That means requests don't need to be routed through Google's servers, and Assistant can work even when your internet doesn't. It's not clear exactly how much you'll be able to do without being online, but general tasks like checking your calendar appointments and turning on the flashlight can be done locally on your phone.
Siri still takes over the whole screen when you want to ask it something, and even local tasks require an internet connection.
That might sound familiar. Apple has made a big deal about on-device processing and machine learning as part of its privacy push, and there has been persistent speculation that it is developing an offline Siri. To that end, Apple has been anonymizing and encrypting Siri data for years and using differential privacy to analyze data without collecting it. It's been a line in the sand between Apple and Google that's gotten thicker over time, but with the second-generation Assistant, Google is proving that it can both collect and protect your data.
Of course, Google still accesses far more data than Apple does—in fact, one of the key new Assistant features, Personal References, rifles through your messages and calendar entries to learn more about the people in your life—but Google is definitely rethinking how much needs to leave your phone. You can credit Apple with that shift in methodology, but Google appears to be doing a lot more. From the unobtrusive interface to the tremendous speed boost, Google understands what people want out of an assistant, and that includes keeping things as private as possible.
[ Further reading: The best smart speakers and digital assistants ]
In an op-ed for the New York Times earlier this week, Google CEO Sundar Pichai outlined a new approach for AI called "federated learning," which sounds an awful lot like Apple's differential privacy: "We're also working hard to challenge the assumption that products need more data to be more helpful. Data minimization is an important privacy principle for us, and we're encouraged by advances developed by Google A.I. researchers called 'federated learning.' It allows Google's products to work better for everyone without collecting raw data from your device."
Siri has way more problems than speed.
Skeptics will scoff at Google's privacy assertions and claims here, but the fact of the matter is, Google is doing incredible things with a fully on-device and offline Assistant. No matter how many toggles they build into Android, privacy issues will always plague Google, and for many Apple fans, its efforts will never be enough. But Assistant is acting in ways Siri is still only thinking about. The fact of the matter is Google is taking the fight to Apple in a big way. Apple has been banging the privacy drum for a while, but it's yet to show how it can keep data local and streamline Siri's usefulness. With the next-gen Assistant, Google is doing both, leaving Siri to play catch-up.
How does Apple respond? With WWDC set to kick off in just a few weeks, all eyes will be on Siri and Apple's new senior vice president of Machine Learning and AI Strategy John Giannandrea, who was plucked from Google last year. It's been years since Apple outlined its stance on using data to bolster Siri's smarts, and now it's time to show us all what it can do. Because pretty soon, it might be too late.
Michael Simon covers all things mobile for PCWorld and Macworld. You can usually find him with his nose buried in a screen. The best way to yell at him is on Twitter.


text:
Warplanes: August 29, 2003
The FAA (Federal Aviation Authority) has finally approved a UAV (Unmanned Aerial Vehicle) to fly in American airspace, subject to the same restrictions as piloted aircraft. In other words, able to fly just about anywhere, anytime. The RQ-4A Global Hawk has previously gotten the FAA approval for flights in all but two of the United States FAA regions. Global Hawk has already been approved for use in international airspace, as well as the national airspace of Australia, Costa Rica, Honduras, Denmark, Canada, Mexico, Portugal, Spain, Scotland, Venezuela and Ecuador. Global Hawk can be guided by ground based controllers, or take off, fly and land under control of it's own software. Global Hawk first flew in 1998 and has spent over 3,000 hours in the air, including operations in Iraq and Afghanistan. Three of the seven Global Hawks built so far have been lost, all to accidents. The RQ-4A weighs 12 tons and normally flies above commercial traffic (about 60,000 feet). Each UAV costs about $35 million and can stay in the air for 40 hours while traveling at some 640 kilometers an hour. A one tone payload is carried, which includes satellite radio equipment and other gear which allows a Global Hawk to respond, via its ground controllers, to queries and instructions from air traffic controllers.
Warplanes: Current 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999


Download the LifeMart app to access exclusive discounts from brands you know and love all in one convenient location*. Life is expensive LifeMart makes everyday life a little more affordable and a lot more fun for our millions of members nationwide.
Whether you're planning a major purchase like a car home or vacation or just want to save on day-to-day essentials. LifeMart has you covered.
Download the LifeMart app and start saving today*!
We continue to make improvements to keep the app running smoothly. And now you can filter your grocery coupons by category!


It's a wonder that while some people learn languages at school and in courses for years and still cannot hold conversations with natives, other people go abroad and acquire the skill in several months!
More and more people circulate around the globe for work, study, partnership, marriage, and tourism. English (or Spanish, French, German, etc.) as a second language is included in the school program in many countries, but no books, courses, or apps with flashcards and exercises can make people overcome the major fear and hurdle – the language barrier while speaking with natives.
Today we want to dedicate our research to language learning social network development. These are specialized websites for learning languages with people from all around the world! Ready to find out how to develop one of your own?
What is a Social Network for Language Learning?
How Much Does It Cost to Build Social Media for Language Learning?
It is a common understanding that a communicative approach is the most effective in teaching languages. Nothing can benefit this process greater than studying through communication with native speakers – to hear and understand the native pronunciation, learn informal and daily life expressions, and start speaking without fear of mistakes.
Understanding a necessity in this kind of communication, many language schools now try to hire foreigners as teachers. But such courses are usually costly and not everyone has time to attend offline classes.
So the best answer to solving this challenge is learning a language with social media! But how do you find people on Facebook or Instagram that would eagerly teach someone else their language? You wouldn't normally write to an unknown Facebook user: "Hey, do you want to practice English with me in exchange for Ukrainian?"… right?
People already use social media for language learning by creating language communities and groups, but even this method requires the effort of organizing the teaching process and it still doesn't end up being effective.
So, this idea gave birth to a mixture of social media and language learning.
1. Language learning platforms with some social network features like forums, discussions, adding friends from other registered students, and peer-to-peer reviews. The most well-known representatives are Duolingo, Busuu, and LingQ.
2. Social networks for finding a language exchange partner or native teacher. Good examples are Italki, WeSpeke, Bilingua, Speaky, Verbling, HelloPal, HelloTalk, Tandem, our client's project Langcer, etc.
The second type is what we are going to focus on in this article.
You may include subscription plans for your services or some additional features. Many websites provide a free trial period or refund in case of a user's dissatisfaction with the service.
This method is suitable for platforms that allow teachers to find students and earn money for lessons. For example, all registered users may buy credits on the site (depositing to the wallet in their account) and then use them to pay for lessons. The website then takes a percentage from each transaction. For example, Italki charges a 15% fee on transactions between teachers and students.
If you do not want to charge users, you can attract businesses to pay to advertise on your website. It is possible to tune personalized ad displays to targeted users according to their preferences.
"Our core belief is that language learning should be free. And much like in the physical world when you are on the street in Paris and ask for directions, no one sticks out their hand and says 'give me a Euro'." – Mike Elchik, co-founder of WeSpeke, explains his decision.
Let's regard the most common features found on these types of websites.
The main idea here is to allow users to search by language, but there can also be filters for gender, location, hourly rate for lessons, teachers' skill levels, and others if they are important.
Registration can be done via email or social media. The second variant will be able to automatically transfer user data like name, photo, contact info to your system to facilitate the user's registration. You can have separate profiles for students and teachers depending on the purpose of your website. Do not forget that all personal data should be securely stored in accordance with personal data regulations specific to your region.
Read Also: How Does GDPR Change the Way Your Website is Developed?
Depending on the type of a platform, user profiles can also be divided into student's and teacher's or be two-in-one.
Read Also: How Much Does It Cost to Build a Dating Website?
Like all other social networks, users should be able to create their friends list – "follow" and "be followed", "add to friends", send messages to each other, comment on each other's posts in a forum or thread.
Also, some websites and mobile apps provide a messenger feature for text, voice or video chat (like WhatsApp). The messages can be supported with extensions like "translator", "grammar correction", "transliteration", "voice-to-text" and vice versa, "adding words to vocabulary", sending photos, etc.
You can incentivize user activity by introducing a system of rewards (points, levels, badges) for the completion of certain tasks or reaching learning goals.
To enlarge your audience, you can allow your users to invite their friends through a referral link in exchange for discounts or free lessons. Provide a leaderboard to praise the best students and the most active users.
If your website allows finding a teacher and scheduling lessons from him/her, then you need a booking feature so that you can track all the transactions.
Add an opportunity to choose a day and time for a lesson in the teacher's calendar.
To regulate the payments between users and teachers and to guarantee the better security of transactions, you can take direction from Italki's and Langcer's experience with implementing the escrow mechanism of a secure transaction between students and teachers. When a student schedules a lesson, the system takes the payment from the student account and keeps it safe in a separate account until both sides confirm that the lesson was completed.
Add elements of gamification to the educational process. There are a lot of means to engage your audience. These can be games, language challenges, quizzes, tests. Do not forget to praise the students' successes with rewards, ratings, discounts, etc.
A feature which is often found in language learning social media is peer-to-peer learning. For example, that can be a notebook or place for discussions where users can ask questions and help other members correct their writing, explain the meaning of words and expressions, or answer general questions about culture and language.
Add to this a pre-development period (research and architecture creation), post-development QA testing, and bug-fixing.
In total, the development of this project took about 420 hours (3 months).
The price of a project with the same features according to our current hourly rate result in a starting cost of $15,000.
The best way to start speaking a foreign language is to communicate with natives. Luckily, with the spread of social media, it is no longer a problem to connect to people from all over the world. Social networks for language learning are tools for finding language partners and native speaking teachers.
When making social media for language learning, you should pay attention to matching users according to their interests and incentivize their activity with useful features that will allow learning more effectively. So, in fact, a language learning social network is a mixture of social media, dating websites, and eLearning platforms.
At Greenice, we have expertise in the development of all three types, and we also adore learning languages! We will be glad to work on your project!
Just share with us your requirements and we will come back with an estimate shortly. Let's help people learn languages together!
Prev post	How to Make a Price (Vendor) Comparison Website?


text:
Deregulation Act 2015
Prospective- Amendment
This version of this part contains provisions that are prospective.
The term provision is used to describe a definable element in a piece of legislation that has legislative effect – such as a Part, Chapter or section. A version of a provision is prospective either:
where the provision (Part, Chapter or section) has never come into force or;
where the text of the provision is subject to change, but no date has yet been appointed by the appropriate person or body for those changes to come into force.
Commencement Orders listed in the 'Changes to Legislation' box as not yet applied may bring this prospective version into force.
Deregulation Act 2015, Section 20 is up to date with all changes known to be in force on or before 20 January 2020. There are changes that may be brought into force at a future date. Changes that have been made appear in the content and are referenced with annotations.
Changes and effects yet to be applied to Schedule 10 Paragraph 20:
specified provision(s) amendment to earlier commencing SI 2015/994 art. 13 Sch. by S.I. 2015/1405 art. 2(3)
20E+W+SAfter section 90F insert—
"90FARegulations under sections 90C and 90D
(1)Regulations under section 90C or 90D are to be made by statutory instrument.
(2)Regulations under section 90C or 90D may—
(a)include incidental, supplementary, consequential or transitional provision or savings;
(b)make different provision for different purposes.
(3)A statutory instrument containing regulations made by the Secretary of State under section 90C or 90D is subject to annulment in pursuance of a resolution of either House of Parliament.
(4)A statutory instrument containing regulations made by the Welsh Ministers under section 90C or 90D is subject to annulment in pursuance of a resolution of the National Assembly for Wales."
Impact Assessments generally accompany all UK Government interventions of a regulatory nature that affect the private sector, civil society organisations and public services. They apply regardless of whether the regulation originates from a domestic or international source and can accompany primary (Acts etc) and secondary legislation (SIs). An Impact Assessment allows those with an interest in the policy area to understand:
Why the government is proposing to intervene;
The main options the government is considering, and which one is preferred;
How and to what extent new policies may impact on them; and,
The estimated costs and benefits of proposed measures.


1) Please try to remain active. Any and all inactivity will be noted, and any warnings received will be logged in the Pack History.
2) Do not bully, discriminate, or put down others for race, sexuality, or age. Any caught doing so will receive a warning or banishment. Warnings and banishments are logged.
3) Do not post any mature content of any kind. This includes within the chat box, on the pack thread, in RP or in any piece of art or writing.
4) Do not start arguments between members or beg for a higher rank. Such activities will be logged in the private Mod/Admin history.
1) No one-shot kills or injuries. Your wolf cannot land each blow. It is required that you give another wolf within the fight a chance to respond. NEVER fataly harm another wolf without permission from the user.
2) No "impossible-to-hit" wolves. Your wolf cannot, and will not, dodge every attack that your opponant plays. Wolves who continuously dodge and land hits will be deamed an unrealistic RPer. Such findings are logged in the Mod/Admin history.
4) Keep all religious content out of your characters and posts. We do not want to start a religious arguement, and not everyone will have the same beliefs as you.
6) Please do not double/triple post. This is when you post twice in a row. Three times offense is a warning via PM from a beta or alpha. Such warning is logged. If the warning is not listened to, then the warning will be put on your account and logged in the pack history.
2) Please try to keep ranting within the chat. It is fine to rant in the chatbox, but please keep it out of RP and other topics. Do not aim ranting at other members. Such event will be logged and user will be privatly warned.
3) Try to keep any personal information out of the chatbox, for safety reasons.
4) Do not advertise, spam, or troll the chatbox. Doing so will earn a warning and will be logged.


MA - Cat of commonwealth - Chapter 2. Arms, Great Seal and Other Emblems of the Commonwealth.
Massachusetts law prohibits possession of wild animals without a license. Licenses are only given out for limited reasons, none of which include the keeping of animals as pets. The classes for which licenses may be granted are propagator's licenses, public stocking licenses, dealer's licenses, possessor's licenses, and dog training licenses.
In Cambridge, Massachusetts, research institutions that perform experiments on animals must do so in conformity with all federal, state and local statutes, ordinances and regulations, as well as maintain or establish an autonomous animal care and use committee with the power to disapprove or restrict research, experiments or regarding the care and use of laboratory animals. This ordinance also establishes a Commissioner of Laboratory Animals (CLA) for the purpose of overseeing research institutions and their committees. Penalties for violating these provisions are also provided.
, the plaintiffs sought damages for emotional distress, loss of companionship, and society when defendant's dogs broke into plaintiff's backyard and killed their seven sheep. The plaintiffs loved their sheep like a parent would love a child, and went so far as to throw birthday parties for them. Plaintiff's counsel, Steven Wise, Esq., also instructed the court to consult a text on veterinary ethics, which defined companion animals to include the plaintiff's sheep within the definition. The court did not address the issue concerning the emotional distress claim, but instead stated that the class of persons authorized to recover were "persons" closely related to the injured person. Furthermore, Justice Jacobs noted that it would be irrational for plaintiffs to have greater rights in the case of a companion animal than in a case of the tortious death of an immediate family member.
In this Massachusetts case, the plaintiff, a concessionaire at the Brockton Fair intended to award goldfish as a prize in a game of chance. The defendant, Massachusetts Society for the Prevention of Cruelty to Animals (MSPCA), asserted that such conduct would violate G.L. c. 272, s 80F. In the action for declaratory relief, the court considered whether the term "animal" in the statute includes goldfish. The court concluded in the affirmative that, "in interpreting this humane statute designed to protect animals subject to possible neglect by prizewinners," former G.L. c. 272, s 80F applies to goldfish.
Irwin v. Degtiarov In this case, Degtiarov's unleashed dog attacked Irwin's dog without provocation. Though Irwin's dog survived, there were significant veterinary costs. Irwin brought this suit for damages in the form of veterinary costs, which were granted by the district court and affirmed by the appellate court. The sole issue on appeal considers whether damages should be capped at the market value of the dog, despite the reasonableness of the veterinary costs necessary to treat the dog's injuries. The appellate court affirms the damages for reasonable veterinary costs that were incurred for damage caused by a dog, even if these costs exceed the market or replacement value of the animal injured by the dog.
GOODWIN v. E. B. NELSON GROCERY CO.
Detailed Discussion of Massachusetts Great Ape Laws The following article discusses Massachusetts Great Ape law. Although Massachusetts does not have a law that specifically addresses Great Apes, several state laws cover them as protected endangered species. Its Endangered Species Act (MA ST 131A § 1 - 7) bans just about all activities related to the acquisition, possession, transport and sale of an endangered species. The Act's definition of "endangered species" specifically includes animals covered under federal law, encompassing Great Apes. The article argues that compared to other states, Massachusetts has perhaps slightly better than average laws with respect to the ownership and possession of Great Apes. The Commonwealth does not have any specific standards for keeping Great Apes in captivity, however it does reference federal standards in both its endangered species law as well as its exotic animal ban. It also does not contain the broad exception for research that many other state cruelty laws do.


text:
What does a blinking yellow traffic light mean?
Updated Nov 17, 2020 | Same topic: Automotive FYIs
Blinking yellow traffic light's there to keep you and other motorists safe.
As a driver in this day and age, we all know that traffic lights are important signaling devices that control the flow of road traffic, as well as pedestrians. Any busy intersection or crossing in the Philippine will have one, and most large cities the world over will definitely rely on them to keep the roads unimpeded.
Without these devices, intersections in busy city roads such as in Ayala, Makati would result in a messy, dangerous jumble of cars day in and day out.
Sometimes though, especially when driving late at night or on quiet intersections, traffic lights are not showing the usual red for stop, yellow for caution, and green for go pattern. Instead, only its yellow light is blinking. So what does a blinking yellow traffic light really mean?
Just because the traffic light is blinking doesn't mean you can just do what you want
A flashing yellow traffic light means...
Basically, it means that a driver should pass with caution. It doesn't mean that you should stop per se, but it is recommended that a driver should slow down and check if the way is clear.
This is especially crucial for intersections where the possibility of crossing traffic is high. And trust us, you don't want to test your chances by just cruising into a seemingly clear intersection without checking for oncoming traffic.
>>> Related: The importance of abiding traffic lights and road signs
But why not just use the normal traffic light mode instead?
Well, as we've said, traffic can become light in some places. As such, using the normal stop and go traffic light pattern will only waste a driver's time. So late at night, these lights are left with the blinking yellow traffic light.
Also, flashing yellow lights are used on their own in several key areas that aren't road intersections where caution is still recommended. These include train crossings, roads for merging on the highway, a three-way intersection, or on quiet intersections in the provinces.
You can also spot these at airports, mall parking lots, universities, etc
Aside from the mentioned reasons earlier, the "a flashing yellow traffic light mode" is also turned on when the traffic light is out of order. As such, motorists are advised to proceed with caution by slowing the vehicle down as it approaches an intersection.
>>> Related: A Deeper Understanding of the Different Road Signs in the Philippines
But what about a flashing yellow arrow?
This type of traffic signal light is usually found on roads that allow motorists to make a turn. For the flashing yellow arrow-shaped light, this means that those who are making a turn must yield to oncoming traffic. Also, they can only make the turn when the traffic flow becomes clear of incoming vehicles. In other words, turning vehicles should yield and give way.
It's a traffic signaling device telling you that patience equals safety
>>> Related: Top 5 causes of road accidents in the Philippines.
FAQs about blinking yellow traffic light
1. Question: What does a blinking yellow traffic light mean?
Answer: This means that a motorist must exercise caution when passing through an intersection.
2. Question: On the usual "stop and go mode," what does the yellow light mean?
Answer: The yellow light on a traffic light operating normally also means caution. Slow down and be prepared to make a full stop.
3. Question: When is a flashing yellow traffic light usually used?
Answer: A yellow light flashing mode of a traffic light is used when traffic is light, like when it's late at night.
4. Question: Should I stop when I encounter a flashing yellow traffic light?
Answer: You aren't required to stop, but at least slow down a bit so you can check if the intersection is clear or not.
5. Question: Where can single flashing yellow traffic signal lights be found?
Answer: These can be found on highway merging lanes, some three-way intersections, and even on low-traffic intersections in the provinces.
For more useful guides on safe driving practices, keep reading here on Philkotse.com.
road signs in the Philippines traffic light
Cesar G.B. Miguel
Cesar is a graduate of AB English with previous experience working as a freelance writer for varied internet publications in-between his former stints in the Pharmaceutical Industry, and later as a First Aid Provider and Training Staff at the Iligan City Disaster Risk Reduction and Management Office.
Since childhood, Cesar has been keenly interested in cars. He has learned the ins and outs of these marvelous vehicles and is a competent amateur mechanic who is keen on sharing his knowledge.
Cesar is perceptive of car culture in general – not only in the Philippines but in global regard, as well. His knowledge ranges from the prevalent stories and trends among car enthusiasts around the world, to closely following the latest local and international developments in the automotive industry.
Tagalog translation of LTO traffic signs, just in case you need one Dec 29, 2020
Speed Bumps: 3 Pros & Cons that every drivers should know Oct 07, 2020
Random Signs and Numbers on the Road: What Does It Mean? Oct 07, 2020
7 Most Expensive Fines for Traffic Violations in the Philippines (MMDA) Nov 28, 2019
10 Most Common Traffic Violations in the Philippines & Respective Fines Oct 14, 2020
Different types of car doors from regular to the unusual
EasyTrip to be phased out; 24-hour RFID installation sites now available
[FOR FUN] Top 5 anime series that car enthusiasts will love


text:
package ai.elimu.util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

/**
 * Stores information about where website visitors are coming from.
 */
public class CookieHelper {

    private static Logger logger = Logger.getLogger(CookieHelper.class);

    public static String getReferrer(HttpServletRequest request) {
        String referrer = null;
        for (Cookie cookie : request.getCookies()) {
            if ("referrerElimuAi".equals(cookie.getName())) {
                referrer = cookie.getValue();
                logger.info("referrer: " + referrer);
            }
        }
        return referrer;
    }

    public static void storeRefererCookie(HttpServletResponse response, String referrer)  {
        if (referrer.length() > 1000) {
            referrer = referrer.substring(0, 1000);
        }
        logger.info("Storing cookie 'referrerElimuAi': " + referrer);
        Cookie cookie = new Cookie("referrerElimuAi", referrer);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }

    public static String getUtmSource(HttpServletRequest request) {
        String utmSource = null;
        for (Cookie cookie : request.getCookies()) {
            if ("utmSourceElimuAi".equals(cookie.getName())) {
                utmSource = cookie.getValue();
                logger.info("utmSource: " + utmSource);
            }
        }
        return utmSource;
    }

    public static void storeSourceCookie(HttpServletResponse response, String value)  {
        logger.info("Storing cookie 'utmSourceElimuAi': " + value);
        Cookie cookie = new Cookie("utmSourceElimuAi", value);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }

    public static String getUtmMedium(HttpServletRequest request) {
        String utmMedium = null;
        for (Cookie cookie : request.getCookies()) {
            if ("utmMediumElimuAi".equals(cookie.getName())) {
                utmMedium = cookie.getValue();
                logger.info("utmMedium: " + utmMedium);
            }
        }
        return utmMedium;
    }

    public static void storeMediumCookie(HttpServletResponse response, String value)  {
        logger.info("Storing cookie 'utmMediumElimuAi': " + value);
        Cookie cookie = new Cookie("utmMediumElimuAi", value);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }

    public static String getUtmCampaign(HttpServletRequest request) {
        String utmCampaign = null;
        for (Cookie cookie : request.getCookies()) {
            if ("utmCampaignElimuAi".equals(cookie.getName())) {
                utmCampaign = cookie.getValue();
                logger.info("utmCampaign: " + utmCampaign);
            }
        }
        return utmCampaign;
    }

    public static void storeCampaignCookie(HttpServletResponse response, String value)  {
        logger.info("Storing cookie 'utmCampaignElimuAi': " + value);
        Cookie cookie = new Cookie("utmCampaignElimuAi", value);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }

    public static String getUtmTerm(HttpServletRequest request) {
        String utmTerm = null;
        for (Cookie cookie : request.getCookies()) {
            if ("utmTermElimuAi".equals(cookie.getName())) {
                utmTerm = cookie.getValue();
                logger.info("utmTerm: " + utmTerm);
            }
        }
        return utmTerm;
    }

    public static void storeTermCookie(HttpServletResponse response, String value)  {
        logger.info("Storing cookie 'utmTermElimuAi': " + value);
        Cookie cookie = new Cookie("utmTermElimuAi", value);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }

    public static Long getReferralId(HttpServletRequest request) {
        Long referralId = null;
        for (Cookie cookie : request.getCookies()) {
            if ("referralIdElimuAi".equals(cookie.getName())) {
                referralId = Long.valueOf(cookie.getValue());
                logger.info("referralId: " + referralId);
            }
        }
        return referralId;
    }

    public static void storeIdCookie(HttpServletResponse response, String value)  {
        logger.info("Storing cookie 'referralIdElimuAi': " + value);
        Cookie cookie = new Cookie("referralIdElimuAi", value);
        cookie.setDomain(".elimu.ai");
        cookie.setPath("/");
        cookie.setMaxAge(60 * 60 * 24 * 30 * 8); // 6 months
        response.addCookie(cookie);
    }
}