Ceiling Fans Miami Smartly » The two main concerns to address while searching for the right ceiling fans for your home are style and function. A related concern is the grade of the ceiling admirers because these fittings have an array of prices available and the price usually reflects the quality. Although your home has central air conditioning, ceiling fans is definitely an attractive, beautiful, and cost-saving addition. If Ceiling Fans Miami your property is constructed with lumber as the principal material and you have solid wood flooring, ceiling supporters with wooden cutting blades that complement the sort of wood used as floor can add a real touch of course.
dans fan city miami mustang ceiling fan 18 in dans from Ceiling Fans Miami, Take it with you when shopping for curtains or some other redecorating components screenshot downloaded from: ceilingfansmiami.com.
dans fan city miami mustang ceiling fan 18 in dans from Ceiling Fans Miami, Take it along with you when looking for drapes or another beautifying materials impression downloaded from: ceilingfansmiami.com.
Ceiling Fans Miami Smartly » A lighted ceiling lover mounted on the dining room desk with wooden blades that match the stand can provide the right decorating touch to help make the dining experience convenient and soothing. The light breeze generated by the admirer provides additional comfort if you are serving a number of men and women in a tiny area including the dining room.
Ceiling followers can be utilized at home. In a family or living room they provides a soft air flow and even additional lamps to make reading or other leisure activities more fun.
dans fan city miami mustang ceiling fan 18 in dans from Ceiling Fans Miami, Bring it along when looking for drapes or any other designing resources picture via from: ceilingfansmiami.com.
miami hurricanes ceiling fan hurricanes ceiling fan from Ceiling Fans Miami, Take it together with you when searching for curtains or other beautifying components impression got from: canesdeals.com.
dans fan city miami double ceiling fans archives dans from Ceiling Fans Miami, Bring it with you when shopping for curtains or another designing resources screenshot got from: ceilingfansmiami.com.
modern ceiling fans miami archives interior design from Ceiling Fans Miami, Bring it together with you when looking for drapes or another designing supplies image via from: interiordesignconvention.com.
presa l1 contemporary ceiling fans miami by spinto llc from Ceiling Fans Miami, Take it with you when looking for curtains or another decorating materials downloaded from: houzz.co.uk.
Ceiling Fans Miami Smartly » Rooms are ideal locations for ceiling fans. A soft, comforting breeze may help you relax and fall asleep and can provide an enjoyable experience when you awaken in the morning.
Look in a number of home and garden periodicals for ideas regarding where and the way to use ceiling followers throughout your home. Check the Internet for ceiling enthusiast manufacturer's websites. Many offer "tours" though a home that showcase the large number of uses for ceiling supporters. Let creative imagination and personal taste be your guide when deciding how to provide your house with these elegant fixtures.
Decide if you need the additional light that is provided by way of a ceiling fan that includes lighting fixtures. When in doubt, select a supporter which has a separate lighting equipment available that may be added at a later time should you make a decision that you need more light.
Ceiling Fans Miami Smartly » Browse the ceiling height of the area. Low ceilings will limit the kind of ceiling admirers you can make while high ceilings may necessitate some modifications like a down rod to set up the ceiling lover so it is only 7 or 8 ft from the ground.
Finally, seriously consider a fan that can have its rotation reversed. Ceiling Fans Miami The huge benefits include better cooling in the summer and better warming in the winter. Make sure that the design of ceiling fan suits the d?cor of the area. Ceiling admirers come in a multitude of styles and designs and you should haven't any trouble narrowing down your alternatives.
Related Posts of "Ceiling Fans Miami Smartly"


text:
Trump says U.S. open to talks with North Korea: White House
U.S. President Donald Trump told Moon Jae-in, the leader of South Korea, that the United States is open to talks with North Korea "at the appropriate time, under the right circumstances," the White House said on Wednesday, APA reports quoting Reuters.
Moon briefed Trump in a phone call on the talks held on Tuesday between North and South Korea, their first in more than two years. The White House said Moon thanked Trump for his "leadership in making the talks possible."
Two men are shot in Dublin as Ireland's bloody gang wars escalate
Iran plane crash: Khamenei defends armed forces in rare address

redpajama_set_name: RedPajamaCommonCrawl


If you have not already done so, take the SAT or ACT test and have your official scores sent to The Young Americans College of the Performing Arts' Admissions Office.
ACT, SAT, or Accuplacer scores may be used to satisfy the College's assessment requirement. Students who have not taken the ACT or SAT may contact the Admissions Office at [email protected] to inquire about taking the Accuplacer assessment test.
ACT scores can be requested through the ACT website; school code: 6944. SAT scores can be requested through the College Board website; school code: 7384. Those who plan to enroll in the North Central partnership must also send their placement scores to North Central Michigan College (ACT school code 2037. SAT school code 1569).
YACPA currently considers placement for two levels of English courses: English 111 and English 095. English 111 is a college-level English course. English 095 is a developmental English course which prepares the student for college-level English. Using the charts below, you can determine whether you meet the placement requirements for English 111 or English 095.
Reading down the column – both minimum scores for each test are used to determine the requirement.
Below are the minimum scores to place into our English 111 class.
If you have not taken the ACT or SAT, please contact the Admissions office about taking the Accuplacer exam.
Below are the minimum scores to place into our English 095 class.


text:
Las Gabias ist eine Gemeinde im zentralen Südteil der Vega de Granada (Provinz Granada), etwa acht Kilometer südwestlich der Provinzhauptstadt Granada in der spanischen Region Andalusien. Die Gemeinde grenzt an die Gemeinden Vegas del Genil, Cúllar Vega, Churriana de la Vega, Alhendín, La Malahá, Chimeneas und Santa Fe.

Las Gabias besteht aus den Ortsteilen Gabia la Grande sowie Gabia Chica, welches im Jahr 1973 mit dem Ortsteil Hijar (Las Gabias) vereinigt wurde.

Geschichte

Das Gemeindegebiet ist seit langer Zeit bewohnt. So wurde im Gemeindegebiet ein Taufbecken aus der Frühchristlichen Zeit gefunden so wie Reste einer römischen Olivenpresse. Ein Festungsturm aus maurischer Zeit war Verteidigungspunkt der Stadt Granada gegen den christlichen Vormarsch aus Alhama de Granada.

Wirtschaft

Die örtliche Wirtschaft stützt sich auf Landwirtschaft sowie Ziegelproduktion, darüber hinaus ist Las Gabias eine große Schlafstadt und liegt innerhalb der Agglomeration von Granada.

In Las Gabias wurde der erste vollständige Golfplatz der Provinz Granada sowie der Schießstand Juan Carlos I errichtet.

Maßlose Bebauung lässt, wie auch bei den anderen Gemeinde der Vega de Granada, den ländlichen Charakter der Gegend sowie die traditionellen Anbauformen verschwinden.

Einzelnachweise

Weblinks

 Rathaus Las Gabias
 Touristeninformationen über Las Gabias
 www.lasgabias.com

Ort in der Provinz Granada

redpajama_set_name: RedPajamaWikipedia


Load up your sleigh and get ready to adventure! We have figured out how to distill the North Pole into this very "cool" collection. Featuring a new thermochromatic color Candy Cane (red > white) and Glitter Glow Green. These putties make every day a holiday.


Looking for the very best watchmaker in the world ? Want to know everything about the Dufour Simplicity ? Welcome to the non-official Philippe Dufour web site !
Please, do not use this tel/fax number and e-mail address without a good reason : Mr Dufour fortunately spends most of his time working on his watches !
This independant site, created for art lovers looking for the very best of watchmaking, mostly aims at giving "up-to-date" links to the interesting sites devoted to Philippe Dufour creations.
Who is Philippe Dufour ?
Philippe Dufour is an AHCI member living in the Vallée de Joux, a very nice place considered as the cradle of high-end mechanical horology. He is clearly one of the most respected, most inovative and most talented master watchmakers working nowadays. His creations are considered as the quintessence of watchmaking, above everything that can be bought from known and respected companies.
Philippe Dufour was born in the Vallée and went to the Sentier technical school when he was 15 years old. He became a watchmaker in 1967 and was employed by Jaeger-le-Coultre. The master watchmaker Gabriel Locatelli gave him a great knowledge of horology. He then worked in the Caribean islands and came back to Switzerland in 1974, employed by Audemars Piguet and Gerald Genta. He gave life back to old and very complicated watches, including quite a lot of repeaters, working for the Osvaldo Patrizzi workshop. He also made five "grandes sonneries" for Audemars Piguet and, then, decided to produce watches under his own name in 1989.
Since that time, Philippe Dufour is one of the most sought after independant watchmaker. His search for perfection is what makes him so special in this world ! He is working alone (with the help of his daughter and of a young assistant) in his workshop, making nearly all the parts of his watches by himself and focusing on an incredible level of finishing and precision that can probably be found nowhere else today.
All of them were (or are being for the third one) produced in very small series. Their outsdanding quality can be seen from the first glance but becomes even more impressive under a microscope. Because Philippe Dufour has both an exceptionally deep understanding of how a watch works and a philosophy of excellence, he spends a lot of time on each watch and makes it a unique product. A Dufour simply cannot be compared with a Patek Philippe (or any other serious company): it is not an industrial product, it is a "one man" work of art.
Please, look at my Visit to Philippe Dufour to catch my Simplicity !!!
I decided to offer my simplicity a new blue strap.
Please, notice that those prices are just orders of magnitude. This is not an official web site and Philippe Dufour is free to change his prices whenever he wants ! Furthemore, it is possible (likely and desirable) that the simplicity will remain a very limited edition (anyway it takes so much time to make it that there will never be thousands !). Some combinations could therefore not be available anymore.
There is a book on Philippe Dufour ! You can find some informations here and order it here.
There are many articles on Philippe Dufour, describing him as "the greatest watchmaker among the greatest watchmakers". I will soon put here some scans.
Chronomania interviews Dufour - a fantastic jump into the world of watchmaking (nice pics). In french.
Peter Chong interviews Philippe Dufour - 1 - good to read this !
Peter Chong interviews Philippe Dufour - 2 - Is a $600000 watch a madness ?
Studiocana's Dufour site - nice place if... you speak japonese !
The Philippe Dufour owners club - if you already have one !
Horomundi's AHCI forum - a very promising forum for independant watchmaking !


Friday marked the third and final day of this year's Genealogy Open Days organised by Dublin City Library and Archives (DCL&A) at their premises at Pearse Street, Dublin 2. While the first of the events, held 26th July, was fairly quiet, that cannot be said for those held on 9th and 16th August. From the moment of opening the doors at 10:30am there were queues of people looking for genealogy advice. Most were from the Dublin area, but with a few from around the country and a few more from the US and Australia who were enjoying research trips to Ireland.
In addition to the panel of experts, there were stalls manned by family history societies and genealogy businesses, including, of course, the Irish Genealogical Research Society and the Irish Family History Society. Both had a busy time of fielding enquiries about membership and family research.
IGRS chairman, Steven Smyrl, attended the final Friday where he met an American-Dutch couple tracing their Irish Methodist forebears; a gentleman eager to trace his estranged mother, now thought to be living in England; and a lady seeking out her Christie ancestors from Ballyclare, Co. Antrim. The latter enquiry was a welcome surprise as Steven was able to tell the enquirer that he and she were likely related as his own Christie ancestors came from Ballyclare too!
Tara Doyle of Dublin Public Library and Archives should be congratulated on the way she very ably organised the event and marshalled the crowds. These Genealogy Days would be well worth repeating next year!


Power Plant Coal ... This coal crusher is a single stage, ... single stage ash crusher is positioned at the discharge of the ash hopper. This coal crusher is a single stage, ... single stage ash crusher is positioned at the discharge of the ash hopper.
coal mine belt discharge chute. coal conveyor trash chutes . coal conveyor feed chutes. Chute Design Considerations For Feeding and . Chat With Sales. Chute Design Considerations For Feeding and . Chat With Sales.
top level spiral chute conveyor . coal mine belt discharge chute coal conveyor trash chutes BINQ Mining conveyor discharge chute pittsburgh us SBM Machinery. coal conveyor trash chutes aimaeduin. conveyor discharge chute pittsburgh us Wilkinson Hi Rise is a leading trash and linen chute manufacturer Since Radial stacker / radial stackers, .
Conveyor belts invariably discharge into a chute for gravitational transport of the ore onto another ... used trash chutes sale sbm mining - sament.in . coal mine belt discharge chute - Crusher ... coal conveyor trash chutes - BINQ Mining - Beneficiation Plant ... conveyor discharge chute pittsburgh us SBM Machinery .
coal conveyor discharge chute coal chute conveyor. coal mine belt discharge chute Newest Crusher, Grinding . coal mine belt discharge chute pakistan crusher,stone crusher Gulin machine in iron ore processing plant » Learn More.
2018-10-05· Belt conveyor - A looped belt on which coal or other materials can be carried and which .. a breast, used as a traveling way for the miner, and sometimes, as an airway, or chute, or both. . Also called iron pyrites, fool's gold, sulfur balls. .. a shaft at which cages stop to receive and discharge cars, personnel, and material.
coal crusher discharge chutes for conveyors. mining conveyors and chutes photos . coal mine belt discharge chute - Crusher . coal conveyor . Play Video; . this would be that the fine coal discharge .
coal mine belt discharge chute - pakistan crusher,stone crusher ... Gulin machine in iron ore processing plant, coal mine belt discharge chute. Gulin provide the coal mine belt discharge chute solution case for you. ... conveyor discharge chutes in south africa - Crusher South Africa .


text:
app

.controller("IndexCtrl"
	, [       "$scope", "$mdBottomSheet", "$mdToast", "$translate", "localStorageService", "sysd", "Loading"
	, function($scope,   $mdBottomSheet,   $mdToast,   $translate,   localStorageService,   sysd,   Loading) {

	sysd.host = localStorageService.get("sysdhost") || "127.0.0.1";
	sysd.port = +localStorageService.get("sysdport") || 8;
	$scope.sysd = sysd;
	$scope.Loading = Loading;
	$scope.config = {
		host: sysd.host,
		port: sysd.port
	};
	$scope.apiReq = {
		method: "",
		path: ""
	};
	$scope.apiResData = "";

	$scope.showLangBottomSheet = function($event) {
		// show config view
		$scope.apiResData = "";

		$mdBottomSheet.show({
			templateUrl: "directives/langSelect.html",
			controller: "langSelectCtrl",
			targetEvent: $event
		}).then(function(clickedItem) {
			$translate.use(clickedItem.lang);
		});
	};

	$scope.api = function(path) {
		Loading.add("api");
		$scope.apiReq.method = "GET";
		$scope.apiReq.path = "/" + path;
		sysd.api.get[path]().then(function(data) {
			$scope.apiResData = JSON.stringify(data, undefined, 4);
		}, function() {
			$mdToast.show({
				template: "<md-toast>" +
					"
Execute API failed
" +
					"
" + path + "
" +
					"</md-toast>",
				hideDelay: 5000,
				position: "top left"
			});
		}).finally(function() {
			Loading.del("api");
		});
	};

	$scope.regapis = function() {
		Loading.add("regapis");
		sysd.regapis().then(function() {
			// success
		}, function(res) {
			if (sysd.host == "127.0.0.1" && sysd.port == 8) {
				return;
			}
			$mdToast.show({
				template: "<md-toast>" +
					"
Connect to sysd server failed
" +
					"
Please check configuration
" +
					"
" + sysd.host + ":" + sysd.port + "
" +
					"</md-toast>",
				hideDelay: 5000,
				position: "top left"
			});
		}).finally(function() {
			Loading.del("regapis");
		});
	};

	$scope.saveConfig = function() {
		sysd.host = $scope.config.host;
		sysd.port = $scope.config.port;
		localStorageService.set("sysdhost", sysd.host);
		localStorageService.set("sysdport", sysd.port);
		$scope.regapis();
	};

	$scope.resetConfig = function() {
		sysd.host = $scope.config.host = "127.0.0.1";
		sysd.port = $scope.config.port = 8;
		localStorageService.clearAll()
		$scope.regapis();
	};

	$scope.regapis();

}])

;

redpajama_set_name: RedPajamaGithub


"The Belcher's have retained our services for multiple projects since 2013. The largest single project was the construction of a 27' x 17' one-story Master Suite addition along with the remodel of existing square footage which included Laundry Room, Master Closet, Master Bathroom, and Kids Bathroom. Finishes included built-in custom cabinetry, window replacement, deluxe trim package, natural stone, heated tile floors, and hardwoods. The Belcher's recently sold this home; they received 26 showings and 3 offers in 7 days. Dan states, this was "obviously a reflection of the beautiful work" completed by T. Morgan Construction."
"The Betley's have been clients of T. Morgan Construction, Inc. since 2011. Renovation began in December, 2013 and included the complete remodel of a condominium recently purchased by the client to become their primary retirement home. This was a Floor-To-Ceiling renovation and included custom cabinetry, natural stone, hardwood flooring, full Kitchen, Bathrooms and deluxe art lighting."
"We began making repairs to Suzette's historic home in 2012 and worked on the project in phases through 2016. All exterior repairs were completed in a historically sensitive manner, in accordance with all requirements of the Indiana Historic Preservation Commission (IHPC). Interior renovations included kitchen and bathroom renovation, window replacement, chimney repairs, and the restoration of the existing flooring."
"Ms. Hoffman retained our services for the complete interior remodel of her historic home in Fountain Square. This property was designed to be used as a 2nd level residence and 1st level office. This Floor-To-Ceiling renovation was completed using "green" remodeling techniques and procedures. As is indicative of restoring a historic structure, the project included extensive electrical upgrades, plaster repairs, historic trim restoration, and adding adequate kitchen and bath spaces."
"Work for Dr. and Mrs. Lamkin, who purchased a condominium to downsize for retirement, was recently completed in 2017. This Floor-To-Ceiling renovation, included multiple bathrooms, kitchen, and custom cabinetry throughout the home. Also, a 2nd story addition was added to provide just a bit more living space. Additional work for the Lamkin's home included repairs to their existing residence so that it would be ready for sale."
To speak with any of our references, please contact T. Morgan Construction, Inc. at 317-955-8984 for their contact information. Thank you.


Introducing Khala Cloths' latest line: the original, 100% plant-based vegan wrap - no beeswax here!
Adorned with bright yellow and red sunflowers, painted and designed in-house by Khala Cloths co-founder, Tamar McKee, these organic hemp-cotton wraps are infused with six plant-based waxes and oils - including consciously-sourced soy wax, jojoba and coconut oil, and tree resin.
This wrap is especially designed to hold sandwiches, with a bright green hemp string and wood button (made in North America by a veteran-owned business) to hold your sandwich together without having to give it too big of a squeeze.


The nicotine booster allows to add nicotine to your nicotine free e-liquids (such as Remix Juice, MY's Vaping, GRENADINE,...).
This booster is a 10ml bottle with a ratio of 50 PG / 50 VG and 20mg/ml of nicotine.
The booster must be mixed with nicotine free e-liquids.


The Governor's Occupational Safety & Health Conference has been Pennsylvania's premier safety and health event for nine decades. This annual conference - where education, innovation, best practices, new products and services come together - has drawn tens of thousands of safety professionals since its inception. The conference has experienced growth in recent years, and continues to bring new options to safety professionals and vendors.
More than 1,100 safety professionals attend each year to take advantage of educational sessions, learning innovative, behavior-based safety practices to improve workplace safety culture.
Over 80 vendors and consultants are available to educate attendees on best practices and safety product improvements.
The Advisory Committee Members of the Governor's Occupational Safety & Health Conference look forward to seeing you in October!


Basing a movie on a comic book, once a point of derision, is now so common that we can expect 11 more movies from Marvel and another 11 from DC Comics. But the latest comic book that's getting the full-screen treatment isn't from Marvel or its archrivals at DC: It's Infinite Horizon, from the smaller, yet equally fabulous, Image Comics.
Infinite Horizon is based on a familiar source, The Odyssey, Homer's epic poem from 2700 years in the past. According to Variety, "In the series, the storyline follows a soldier with no name who, after surviving years of war, ends up stranded halfway across the globe when the conflict ended. Getting home means going through the hell: escaping shipwrecks, beating a vicious opponent wearing a cycloptic combat armor and resisting the siren's call of a predatory society."
Instead of following Odysseus from war-torn Troy to his home in Ithaca, our protagonist, "The Captain," is trying to return from post-war Syria to his home in the post-apocalyptic Catskills (but oddly, not Ithaca, New York).
Greg Berlanti, the producer of Arrow and The Flash, will be producing the movie for Warner Bros. -- the film studio that releases DC Comics movies. Unless Marvel adds another movie to its slate, or raids the archives of Dark Horse Comics, Warner Bros. will be one comic-book movie ahead of Marvel's home studio, The Walt Disney Company.
What we really want to know, though, is when, if Image is getting into the movie game, its fabulous Saga series going to get a big-screen treatment.


text:
The fifth edition of the Annual Review of Global Peace Operations was published by Lynn Reinner Publishers on 1 February 2010 and can be downloaded here.
"A vital reference for peace and conflict studies and global politics collections." — Libary Journal
A Field Based Review of the Peacebuilding Commission in Burundi
o Burundi was placed on the Peacebuilding Commission's (PBC) agenda in June 2006, as the peacekeeping mission there was drawing down. This report assesses the PBC's in-country performance against its different mandated functions and tools of engagement. It also considers the potential for the PBC's engagement through the Country-Specific Meetings and assesses implications for the concept of Country-Specific Configurations.
Read the full Policy Paper here
Author(s) / Contributor(s): Shepard Forman, Gigja Sorensen, Rahul Chandran
Topic(s): Fragile States
o The ability to monitor and report on performance is increasingly important for any successful sector. Individuals, organisations or systems cannot improve unless their shortcomings are identified and practical and creative solutions for improvements are put forward. This report aims to provide a system-level mapping and assessment of international humanitarian assistance.
Author(s) / Contributor(s): Abby Stoddard, Paul Harvey, Adele Harmer, Victoria DiDomenico, Lauren Brander
Topic(s): Crises, Fragile States, Global Governance, Humanitarian Crises
"If he withdraws, Joseph Kabila will become one of the most important personalities in Congolese history"
NYU-CIC Roundtable Explores Nexus between Religious Identity and Violent Extremism
As the U.S. gets more involved in Somalia, beware these three fallacies
Beyond Stalemate in Afghanistan


Southside With You, a movie about the early days of Michelle and Barack Obama's relationship, premiered at Sundance earlier this year to widely positive reviews. Now, anyone who didn't get the chance to attend the exclusive film festival can get their first look the Richard Tanne-directed movie, with the release of its first trailer.
The film chronicles what is apparently Michelle and Barack's first date in Chicago. Parker Sawyers plays the future POTUS and Tika Sumpter plays a young Michelle Robinson. John Legend serves as an executive producer.
Southside With You hits theaters on August 19th.
It is written and directed by first-time film-maker Richard Tanne and produced by John Legend. The film was well received when it premiered earlier this year at the Sundance film festival, with Variety's Justin Chang calling it "disarmingly romantic" and the Hollywood Reporter's Todd McCarthy recommending it as"warm and surprisingly engaging".


When it comes to doing market research, competition is usually your friend: it means that there is money to be made in a market. However when it comes to optimizing your site for the search engines it's a slightly different story: you need to be able to take a look at the competition that's out there and decide how good your chances are of ranking well for that keyword.
In this lesson we're going to take a look at SEO Competition Analysis to assess whether optimizing for a specific keyword is worth your time.
The first (and, far too often, only) trick that most affiliates try is to punch their keyword into the search engine to see how many results they get. Unfortunately, when many receive their 836,000,000 results back, they get discouraged, ditch that keyword and look for easier pickings.
However it may come as a surprise to you that this figure doesn't mean a whole lot and you should take it with a grain of salt. The 'number of search results' is an estimated figure, and not all those 836,000,000 listings actually appear in the search results. Furthermore, most of these sites won't have done any search engine optimization, so it's pretty easy to beat them.
Instead, use this figure more as an indicator of whether there's any activity in the market: if it's super-low (say, under a million) it might indicate a lack of interest in that particular word - try whacking it into your keyword search volume tool to see how many people are searching on it and see if it confirms this theory.
The next two steps try to identify how well search engine optimized the competition is. Is it a fluke that they're ranking well? Or have they designed their sites this way?
One of the key on-page SEO factors is your title text. This is the text that appears between <title> tags in your HTML, at the top of the page in your browser, and it's the clickable text that appears with your search engine listing. If a page has a keyword in their title tag, it usually means they're pretty focused on this keyword and have possibly got a bit of SEO going on.
If you enter allintitle:"your keyword" into Google it will tell you how many sites have your keywords in the title tag. A lower figure is obviously better; anything up to 5000 means you could be in there pretty easily, but don't discount keywords just because you get more than 5000 results in this test. As you'll soon see, there are still more factors to consider.
This is similar to the allintitle tool, but tells you how many sites have incoming links with those keywords in the anchor text. You may remember from our SEO lessons that anchor text is pretty important in determining your rankings. If there are lots of sites with your keyword in their anchor text, it makes it harder to rank well yourself. Ideally you want to see a low number here, but what constitutes "low" depends on the topic and the market. You may need to dig around for a while to get a feeling for what "low" is.
The quote marks on either side of your keyword are very important for searching for your exact keyword phrase in titles and anchor text. Without the speech marks, the search results could have the words in any order.
Also, the "all-in" part of allintitle or allinanchor is very literal. You can search for "intitle" or "inanchor." but there's no guarantee all of the words will come up in the search. You only want to do this if you're looking for a range of individual words as opposed to a full phrase.
To be safe whenever searching for competition on certain keyword phrases, use the speech marks around the keyword. This will always return results with the exact phrase, whether you're using allintitle, allinanchor, intitle, or inanchor.
PR (PageRank) is a reflection of the strength of a site's backlinks. Since backlinks are a pretty big component in determining your ranking, it's a reasonable indicator, but remember: it is completely possible for a high-PR site to rank lower than a low-PR site for any number of reasons. Perhaps their page isn't optimized for the keyword, or perhaps they have backlinks from good sites (lots of PR), but they're not targeting the keyword with their anchor text.
Use Traffic Travis to analyze the backlinks to a particular site: if there are thousands of backlinks with many coming from PR5+ sites or .edu sites then it makes it harder. If they're all using your keyword in their anchor text, then it's harder again.
If all the sites on the first page of Google are PR6+ with lots of good backlinks you may have a pretty tough time ranking well for this keyword.
Another thing to check is the age of your competitors' domains, using a WHOIS tool to check their creation date. Older domains tend to do better in the search engines than newer ones so, conversely, if most of your competitors have fairly new domains they may be easier to beat.
While you're doing all this research, keep in mind another key factor: Whether anybody is actually searching on your keyword!
Usually it's the case that the competition will heat up when there are lots of people searching on that keyword, but it's not always equally balanced. Work out whether the number of visitors you'll receive from a good ranking is really worth the effort involved in getting that ranking: some keywords have just too much competition and not enough traffic to justify the big effort.
Another important consideration when choosing a keyword is whether there's actually any money in the market! If you find a keyword that seems easy to rank for, ask yourself if there's a reason for this. Is it undiscovered, or unprofitable? A good indicator is whether there are any Google ads on the right of the search engine results - if people are paying to get traffic to their sites, then there must be some money to be made.
Many keywords to work with?
When you build an affiliate site for SEO you shouldn't focus on one keyword but instead have a few - that way your main keyword isn't the make or break focus of your SEO campaign.
When you're researching markets and keywords, try to find ones that have a number of highly searched keywords to target. You can use keyword research tools like Traffic Travis, Affilotools, or freekeywords.wordtracker.com to get ideas of search volumes for related keywords.
Since these keyword tools usually use the words you enter as the base for their suggestions, you can often miss finding keywords that are related, but not based on the same word. For instance, if you were focusing on "dog training" you might miss a keyword like "stop german shepherd aggression".
When Google returns results, you'll see that there are a bunch of words on the page listed in bold.
These are related words. "~garbage ~can", for example, gets additional words like "waste", "recycle", "containers" and "recycle cans".
If your main keywords look intimidating, don't completely rule out your chances of succeeding in a market. Take another look (and do some lateral thinking) and see if there are any easier words in the market that you can tackle first. For instance, a keyword like "trash cans" has a lot more competition and would be harder to rank for than a word like "garbage cans".
If you can optimize your site for a few easier keywords, you can get just as much traffic as if you ranked highly for that one difficult keyword. As a bonus the more targeted search terms tend to earn you more money as well! A keyword like "stop german shepherd aggression" is not only easier to rank for than "dog training", but people searching for this term are more likely to buy than people who are searching for the more general "dog training". Perhaps it's because they already know what sort of solution they want, or perhaps it's because you're better able to target your site to their specific interests. Regardless, it's a win-win situation for you as an affiliate!
Don't forget! If a keyword seems too easy to rank for, it may be because no-one is searching for it!
You may find targeting similar keywords is easier than your main keyword, while returning the same results!
Using more specific or creative targeting can not only improve your rankings, but even improve your conversions since you can target to customers who already know what they're looking for!
What's the smallest number of monthly searches for an exact match longtail keyword phrase you would recommend building a site towards? 500? 1000? 2500?
I've been looking into, trying, and failing with affiliate marketing for nearly a year now... Reading through this content has made me realize how little I know (I thought I knew quite a bit).
Very useful information for affiliates like me, I enjoyed this article.
if, allintitle > allinanchor, is it means that many website didn't build backlink to their page that have the keyword?


text:
Skating Merit Badge Workbook
Type your work on this page or download the Skating Workbook PDF.
Consider also using the Skating merit badge class preparation page for clarification and expections when participating in a Scoutmaster Bucky merit badge opportunity (online or in-person).
https://scoutmasterbucky.com/merit-badges/skating/
Requirement 1a: Explain to your counselor the most likely hazards associated with skating and what you should do to anticipate, help prevent, mitigate, and respond to these hazards.
Requirement 1b: Show that you know first aid for injuries or illnesses that could occur while skating, including hypothermia, frostbite, lacerations, abrasions, fractures, sprains, blisters, heat-related reactions, and shock.
Requirement 2: Complete ALL of the requirements for ONE of the following options.
Ice Skating Option
Requirement 2a: Do the following:
Requirement 2a1: Give general safety and courtesy rules for ice skating. Discuss preparations that must be taken when skating outdoors on natural ice. Explain how to make an ice rescue.
Requirement 2a2: Discuss the parts and functions of the different types of ice skates.
Requirement 2a3: Describe the proper way to carry ice skates.
Requirement 2a4: Describe how to store ice skates for long periods of time, such as seasonal storage.
Requirement 2b: Do the following:
Requirement 2b1: Skate forward at least 40 feet and come to a complete stop. Use either a two-footed snowplow stop or a one-footed snowplow stop.
Requirement 2b2: After skating forward, glide forward on two feet, then on one foot, first right and then left.
Requirement 2b3: Starting from a T position, stroke forward around the test area, avoiding the use of toe points if wearing figure skates.
Requirement 2c: Do the following:
Requirement 2c1: Glide backward on two feet for at least two times the skater's height.
Requirement 2c2: Skate backward for at least 20 feet on two skates.
Requirement 2c3: After gaining forward speed, glide forward on two feet, making a turn of 180 degrees around a cone, first to the right and then to the left.
Requirement 2d: Do the following:
Requirement 2d1: Perform forward crossovers in a figure-eight pattern.
Requirement 2d2: Explain to your counselor the safety considerations for running or participating in an ice skating race.
Requirement 2d3: Perform a hockey stop.
Roller Skating Option
Requirement 2a1: Give general safety and etiquette rules for roller skating.
Requirement 2a2: Discuss the parts and functions of the roller skate.
Requirement 2a3: Describe five essential steps to good skate care.
Requirement 2b1: Skate forward with smooth, linked strokes on two feet for at least 100 feet in both directions around the rink and demonstrate proper techniques for stopping.
Requirement 2b2: Skate forward and glide at least 15 feet on one skate, then on the other skate.
Requirement 2c1: Perform the crosscut.
Requirement 2c2: Skate backward for at least 40 feet on two skates, then for at least 15 feet on one skate.
Requirement 2c3: Skate forward in a slalom pattern for at least 40 feet on two skates, then for at least 20 feet on one skate.
Requirement 2c4: Skate backward in a slalom pattern for at least 15 feet on two skates.
Requirement 2d1: Shuttle skate once around the rink, bending twice along the way without stopping.
Requirement 2d2: Perform a widespread eagle.
Requirement 2d3: Perform a mohawk.
Requirement 2d4: Perform a series of two consecutive spins on skates, OR hop, skip, and jump on skates for at least 10 feet.
Requirement 2e: Do the following:
Requirement 2e1: Race on a speed track, demonstrating proper technique in starting, cornering, passing, and pacing.
Requirement 2e2: Perform the limbo under a pole placed at least chest-high, OR shoot-the-duck under a waist-high pole and rise while still on one foot.
Requirement 2e3: Perform the stepover.
Requirement 2e4: While skating, dribble a basketball the length of the floor, then return to your starting position, OR push a hockey ball with a stick around the entire rink in both directions.
In-Line Skating Option
Requirement 2a1: Give general and in-line skating safety rules and etiquette.
Requirement 2a2: Describe the parts and functions of the in-line skate.
Requirement 2a3: Describe the required and recommended safety equipment.
Requirement 2a4: Describe four essential steps to good skate care.
Requirement 2b1: Skate forward with smooth, linked strokes on two feet for at least 100 feet.
Requirement 2b3: Stop on command on flat pavement using the heel brake.
Requirement 2c1: Perform the forward crossover.
Requirement 2c2: Perform a series of forward, linked swizzles for at least 40 feet.
Requirement 2c3: Skate backward for at least 40 feet in a series of linked, backward swizzles.
Requirement 2c4: From a strong pace, perform a lunge turn around an object predetermined by your counselor.
Requirement 2c5: Perform a mohawk.
Requirement 2d1: Perform a series of at least four one-footed downhill slaloms on pavement with a gentle slope.
Requirement 2d2: Describe how to pass a pedestrian or another skater from behind.
Requirement 2d3: Describe at least three ways to avoid an unforeseen obstacle while skating.
Requirement 2d4: Describe two ways to get on and off a curb, and demonstrate at least one of these methods.


Commerce is turning into progressively electronic, so it is critical for businesses to understand this. A excellent way to do this is to start off making use of online video advertising to encourage your products. These ideas will show you how to start making videos.
Your ideal guess for making a productive online video clip is to goal for brief and sweet. The vast majority of people aren't going to observe lengthy films for that reason, you want to offer them with the desired information speedily. If you need to have a for a longer time video, consider chopping it up into a handful of other movies so folks can proceed on later on.
Give your customers some wonderful material and your video clip could go viral. It truly is not needed to have the newest products in purchase to be successful in this arena. If the info is quality, the video clip consequences don't require to be. Knowing this, purchase the very best digicam that is sensible for your funds.
Optimizing your movies is essential. Come up with different titles and descriptions for the films that you add to various internet sites. Be positive to use targeted search phrases, as nicely. It is also sensible to consist of make contact with details to make lifestyle less difficult for buyers.
Are you promoting a merchandise? Make a online video showing possible consumers how your product performs. This is a way to help construct up self-assurance in what you are promoting. A whole lot of possible consumers will be confident when they see a demonstration.
If you want to advertise a specific merchandise or services in a video clip, you want to supply your viewers with a link they can comply with to receive the item or support. It is very best if the hyperlink sits inside of the participant, but performs in the description if that is not an alternative. This will make sure that the hyperlink stays within the video clip must the movie be shared or embedded someplace else.
You must now recognize the significance that on-line films can have in your advertising and marketing marketing campaign. By utilizing films, you'll be able to get to out to tons of folks that could change into clients. Adhere to the tips introduced right here to make the extremely ideal approach for movie advertising.


text:
State Public Finance Commission Reverses Itself
By Zack Fink Queens
PUBLISHED 9:20 AM ET Oct. 24, 2019 PUBLISHED October 24, 2019 @9:20 AM
The state's Commission on Public Finance met on Long Island this week and voted to reverse itself on how to implement a system of campaign finance reform.
"We had a very strange occurrence in the last session where five commissioners reversed their votes from the previous session that had happened just the week before. And as far as I can tell from the discussion they had it wasn't based on any new evidence or study that was presented to them," said Larry Norden of the Brennan Center for Justice.
Last week the Commission voted unanimously to provide public matching funds for small donations. But on Tuesday, the Commission voted in a narrow 5 to 4 vote to limit public matching funds to donations candidates raise only within the individual Senate and Assembly districts they are running for.
After each meeting, video is posted on the Commission website of all votes, but video of last week's unanimous vote mysteriously never made it onto the website. That fueled accusations of backroom deal making and inadequate public oversight of the process.
"It's not as transparent as it should be. We think a weak program is emerging that could be designed to protect incumbents rather than empower small donors," said Alex Camarda, of Reinvent Albany.
The Tuesday vote was led by appointees to the 9-member Commission by Governor Cuomo and Assembly Speaker Carl Heastie. Appointees of Senate Majority Leader Andrea Stewart-Cousins and the two Republicans voted against overturning the previous vote.
"The issue is right now with Governor Cuomo and Speaker Heastie is that they want to hold on to a very hegemonic sense of power and we have to stand up as a people in this state and say absolutely not," said Jawanza Williams of Vocal New York.
Critics say if you limit matched contributions to those raised just in district, the program is likely unworkable. New York City allows matching funds for donations made from individuals who live anywhere in the city.
Experts say the logical thing to do here is allow matches on dollars raised throughout New York State, based on the city's model. The Commission has made no final determinations yet. There is another meeting next week. Their final report is due next month.


text:
#import "CCParticleSystem.h"

#define CC_MAX_PARTICLE_SIZE 64

/** CCParticleSystemPoint is a subclass of CCParticleSystem
 Attributes of a Particle System:
 * All the attributes of Particle System

 Features:
  * consumes small memory: uses 1 vertex (x,y) per particle, no need to assign tex coordinates
  * size can't be bigger than 64
  * the system can't be scaled since the particles are rendered using GL_POINT_SPRITE

 Limitations:
  * On 3rd gen iPhone devices and iPads, this node performs MUCH slower than CCParticleSystemQuad.
 */
@interface CCParticleSystemPoint : CCParticleSystem
{
	// Array of (x,y,size)
	ccPointSprite *vertices;
	// vertices buffer id
#if CC_USES_VBO
	GLuint	verticesID;
#endif
}
@end


In today's post a devotee's earnest wishes are fulfilled is narrated.
Anonymous Devotee from India says: Om Sai Ram. Jai Sai Ganesh.
Sai Ram Hetal Ji. May Baba bless you and your family abundantly for the selfless service you are rendering to the society. You are Sai Deva's chosen one. Needless to say, this blog is the source of great inspiration to us all and helps in boosting our faith and makes us more patience. With Baba's guidance and inspiration, I would like to share Baba's Leelas in my life in the recent past. Please do publish this on your blog with the necessary editing that may be required. Please do not mention my name and email id. My apologies to Baba for the delay in composing this experience. I surrender myself at your Lotus feet and am sure Baba will do the writing for me.
Baba is a boon for us in this age of kali. We as human beings are bound to falter and commit hundreds of mistakes. But Baba is always looking upon us and is always by our side, no matter, whether we know Him or not. I would request Sai devotee readers reading this post to refer to my earlier post, so as to get a real feel of Baba's love and the way He plans things of us behind the scenes. He un-wraps the gift that He plans for us without our knowledge, only when the right time comes and then it leaves us spellbound. All that is needed on our part is firm faith in the holy feet of our Guru and God, our most beloved Shri Sainath Maharaj.


text:
LadyExpat.com
Best guide for her
Over 3.1k virus cases identified
The Centre for Health Protection today said it is investigating 3,172 additional locally acquired COVID-19 cases, of which 449 were identified through nucleic acid tests and 2,723 via rapid antigen tests. Separately, 111 imported cases were detected. Furthermore, seven residential care homes for the elderly and five for disabled people logged 13 cases involving their residents. The Hospital Authority reported that 20 patients passed away in public hospitals. According to a preliminary analysis, the cause of death for nine patients was related to COVID-19, while that of the remaining 11 patients was unrelated. It also registered eight more critical cases, bringing the number of patients in critical condition to 93. Separately, to align with the Government's cancellation of issuing isolation orders from tomorrow, the authority will, starting from the same day, announce at 8.30am and 1pm the information of general out-patient clinics (GOPC) quota reserved for COVID-19
5 typhoon names added
Five new tropical cyclone names have been added to this year's list for typhoons in the western North Pacific and the South China Sea, the Hong Kong Observatory announced today. They are Penha, Peilou, Narra, Gaenari and Bang-lang. Penha, a name originating from China, is derived from Penha Hill, a scenic spot in Macau. Peilou, from China, is a common migratory bird in Macau. Narra, from the Philippines, is a species of tree. Gaenari, from Korea, is a spring flowering shrub with yellow flowers. Bang-lang, from Vietnam, is a flowering tree species. The United Nations Economic & Social Commission for Asia & the Pacific/World Meteorological Organization Typhoon Committee endorsed the names at its 54th session. They will replace the names of Vongfong, Linfa, Molave, Goni and Vamco. The committee will consider retiring names of tropical cyclones which have caused serious casualties and economic losses. In May 2020, Severe Typhoon Vongfong left at least 160 people injured and damaged more than 10,000 houses during its passage across the Philippines. In October 2020, Tropical Storm Linfa brought torrential rain to Vietnam, leading to 148 deaths or missing people. Severe Typhoon Molave hit the Philippines and Vietnam in late October 2020, resulting in at least 50 deaths, 40 injuries and 78 people missing. Super Typhoon Goni, the most intense tropical cyclone in the western North Pacific and the South China Sea since 2013, hit the Philippines in early November 2020. It killed at least 25 people and damaged over 170,000 houses. In mid-November 2020, Severe Typhoon Vamco brought torrential rain and squalls to the Philippines and Vietnam, leaving at least 102 people dead, 90 injured and 10 missing.
http://dlvr.it/SPNgzk
124 COVID-19 cases reported
The Centre for Health Protection today said it is investigating 124 additional COVID-19 cases. More cases were detected in Kwai Chung Estate. There are also more than 70 preliminary positive cases. Among the newly reported cases, 33 are related to Kwai Chung Estate, bringing the total number of positive and preliminary positive cases in the estate to 276. One more positive case was found after an earlier confirmed case occurred at Glory Court, Tsuen Wan Garden, both of them live in units 5 but on two different floors. The centre has co-ordinated with related government departments and conducted an inspection today. It was preliminarily considered that vertical transmission of virus via pipes is involved. The centre will issue quarantine orders to residents of unit 5 on all floors of the building who resided there during the incubation period of the relevant cases and transfer them to a quarantine facility. As it is possible that virus might be ejected from the open
Download Ricepon App on iPhone and Android
I found a very good dining app in Hong Kong. You can use QR Code to order food in restaurant, order takeaway at home and enjoy coupon. iPhone Download : https://tinyurl.com/wywn5lc Android Download : https://tinyurl.com/tnvlug8 Ricepon App Official Website : http://www.gingersoft.com.hk/ricepon-app/
Legal officer changes proposed
The Government has proposed to amend the law to allow legal officers of the Department of Justice to be appointed as a senior counsel. At a media session after attending a Legislative Council meeting today, Secretary for Justice Teresa Cheng explained the rationale behind the Government's proposal. She said: "Why is it that my colleagues in the Department of Justice - who by their qualifications are solicitors but are actually arguing very well and very efficiently with great eloquence and efficacy in the Court of Final Appeal - are not being recognised when they are actually even better than their counterparts? That has always been something that sometimes troubles me. "And for that reason, I have always been thinking about how we are going to overcome that problem. "Now, what really triggers my determination to take this further forward is when one of our Deputy Directors of Public Prosecutions, Vinci Lam, took silk on May 29. "That really showed that the form
© LadyExpat.com


text:
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/dialogflow/v2/session.proto

package com.google.cloud.dialogflow.v2;

/**
 *
 *
 *

 * The top-level message sent by the client to the
 * `StreamingDetectIntent` method.
 * Multiple request messages should be sent in order:
 * 1.  The first message must contain `session`, `query_input` plus optionally
 *     `query_params` and/or `single_utterance`. The message must not contain
 *     `input_audio`.
 * 2.  If `query_input` was set to a streaming input audio config,
 *     all subsequent messages must contain only `input_audio`.
 *     Otherwise, finish the request stream.
 *

 *
 * Protobuf type {@code google.cloud.dialogflow.v2.StreamingDetectIntentRequest}
 */
public final class StreamingDetectIntentRequest extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.dialogflow.v2.StreamingDetectIntentRequest)
    StreamingDetectIntentRequestOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use StreamingDetectIntentRequest.newBuilder() to construct.
  private StreamingDetectIntentRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private StreamingDetectIntentRequest() {
    session_ = "";
    singleUtterance_ = false;
    inputAudio_ = com.google.protobuf.ByteString.EMPTY;
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    return this.unknownFields;
  }

  private StreamingDetectIntentRequest(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 10:
            {
              java.lang.String s = input.readStringRequireUtf8();

              session_ = s;
              break;
            }
          case 18:
            {
              com.google.cloud.dialogflow.v2.QueryParameters.Builder subBuilder = null;
              if (queryParams_ != null) {
                subBuilder = queryParams_.toBuilder();
              }
              queryParams_ =
                  input.readMessage(
                      com.google.cloud.dialogflow.v2.QueryParameters.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(queryParams_);
                queryParams_ = subBuilder.buildPartial();
              }

              break;
            }
          case 26:
            {
              com.google.cloud.dialogflow.v2.QueryInput.Builder subBuilder = null;
              if (queryInput_ != null) {
                subBuilder = queryInput_.toBuilder();
              }
              queryInput_ =
                  input.readMessage(
                      com.google.cloud.dialogflow.v2.QueryInput.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(queryInput_);
                queryInput_ = subBuilder.buildPartial();
              }

              break;
            }
          case 32:
            {
              singleUtterance_ = input.readBool();
              break;
            }
          case 50:
            {
              inputAudio_ = input.readBytes();
              break;
            }
          default:
            {
              if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
    } finally {
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.cloud.dialogflow.v2.SessionProto
        .internal_static_google_cloud_dialogflow_v2_StreamingDetectIntentRequest_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.dialogflow.v2.SessionProto
        .internal_static_google_cloud_dialogflow_v2_StreamingDetectIntentRequest_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.class,
            com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.Builder.class);
  }

  public static final int SESSION_FIELD_NUMBER = 1;
  private volatile java.lang.Object session_;
  /**
   *
   *
   *

   * Required. The name of the session the query is sent to.
   * Format of the session name:
   * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
   * caller to choose an appropriate <Session ID>. It can be a random number or
   * some type of user identifier (preferably hashed). The length of the session
   * ID must not exceed 36 characters.
   *

   *
   * string session = 1;
   */
  public java.lang.String getSession() {
    java.lang.Object ref = session_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      session_ = s;
      return s;
    }
  }
  /**
   *
   *
   *

   * Required. The name of the session the query is sent to.
   * Format of the session name:
   * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
   * caller to choose an appropriate <Session ID>. It can be a random number or
   * some type of user identifier (preferably hashed). The length of the session
   * ID must not exceed 36 characters.
   *

   *
   * string session = 1;
   */
  public com.google.protobuf.ByteString getSessionBytes() {
    java.lang.Object ref = session_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      session_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int QUERY_PARAMS_FIELD_NUMBER = 2;
  private com.google.cloud.dialogflow.v2.QueryParameters queryParams_;
  /**
   *
   *
   *

   * Optional. The parameters of this query.
   *

   *
   * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
   */
  public boolean hasQueryParams() {
    return queryParams_ != null;
  }
  /**
   *
   *
   *

   * Optional. The parameters of this query.
   *

   *
   * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
   */
  public com.google.cloud.dialogflow.v2.QueryParameters getQueryParams() {
    return queryParams_ == null
        ? com.google.cloud.dialogflow.v2.QueryParameters.getDefaultInstance()
        : queryParams_;
  }
  /**
   *
   *
   *

   * Optional. The parameters of this query.
   *

   *
   * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
   */
  public com.google.cloud.dialogflow.v2.QueryParametersOrBuilder getQueryParamsOrBuilder() {
    return getQueryParams();
  }

  public static final int QUERY_INPUT_FIELD_NUMBER = 3;
  private com.google.cloud.dialogflow.v2.QueryInput queryInput_;
  /**
   *
   *
   *

   * Required. The input specification. It can be set to:
   * 1.  an audio config which instructs the speech recognizer how to process
   *     the speech audio,
   * 2.  a conversational query in the form of text, or
   * 3.  an event that specifies which intent to trigger.
   *

   *
   * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
   */
  public boolean hasQueryInput() {
    return queryInput_ != null;
  }
  /**
   *
   *
   *

   * Required. The input specification. It can be set to:
   * 1.  an audio config which instructs the speech recognizer how to process
   *     the speech audio,
   * 2.  a conversational query in the form of text, or
   * 3.  an event that specifies which intent to trigger.
   *

   *
   * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
   */
  public com.google.cloud.dialogflow.v2.QueryInput getQueryInput() {
    return queryInput_ == null
        ? com.google.cloud.dialogflow.v2.QueryInput.getDefaultInstance()
        : queryInput_;
  }
  /**
   *
   *
   *

   * Required. The input specification. It can be set to:
   * 1.  an audio config which instructs the speech recognizer how to process
   *     the speech audio,
   * 2.  a conversational query in the form of text, or
   * 3.  an event that specifies which intent to trigger.
   *

   *
   * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
   */
  public com.google.cloud.dialogflow.v2.QueryInputOrBuilder getQueryInputOrBuilder() {
    return getQueryInput();
  }

  public static final int SINGLE_UTTERANCE_FIELD_NUMBER = 4;
  private boolean singleUtterance_;
  /**
   *
   *
   *

   * Optional. If `false` (default), recognition does not cease until the
   * client closes the stream.
   * If `true`, the recognizer will detect a single spoken utterance in input
   * audio. Recognition ceases when it detects the audio's voice has
   * stopped or paused. In this case, once a detected intent is received, the
   * client should close the stream and start a new request with a new stream as
   * needed.
   * This setting is ignored when `query_input` is a piece of text or an event.
   *

   *
   * bool single_utterance = 4;
   */
  public boolean getSingleUtterance() {
    return singleUtterance_;
  }

  public static final int INPUT_AUDIO_FIELD_NUMBER = 6;
  private com.google.protobuf.ByteString inputAudio_;
  /**
   *
   *
   *

   * Optional. The input audio content to be recognized. Must be sent if
   * `query_input` was set to a streaming input audio config. The complete audio
   * over all streaming messages must not exceed 1 minute.
   *

   *
   * bytes input_audio = 6;
   */
  public com.google.protobuf.ByteString getInputAudio() {
    return inputAudio_;
  }

  private byte memoizedIsInitialized = -1;

  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (!getSessionBytes().isEmpty()) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, session_);
    }
    if (queryParams_ != null) {
      output.writeMessage(2, getQueryParams());
    }
    if (queryInput_ != null) {
      output.writeMessage(3, getQueryInput());
    }
    if (singleUtterance_ != false) {
      output.writeBool(4, singleUtterance_);
    }
    if (!inputAudio_.isEmpty()) {
      output.writeBytes(6, inputAudio_);
    }
    unknownFields.writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (!getSessionBytes().isEmpty()) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, session_);
    }
    if (queryParams_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getQueryParams());
    }
    if (queryInput_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getQueryInput());
    }
    if (singleUtterance_ != false) {
      size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, singleUtterance_);
    }
    if (!inputAudio_.isEmpty()) {
      size += com.google.protobuf.CodedOutputStream.computeBytesSize(6, inputAudio_);
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest)) {
      return super.equals(obj);
    }
    com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest other =
        (com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest) obj;

    boolean result = true;
    result = result && getSession().equals(other.getSession());
    result = result && (hasQueryParams() == other.hasQueryParams());
    if (hasQueryParams()) {
      result = result && getQueryParams().equals(other.getQueryParams());
    }
    result = result && (hasQueryInput() == other.hasQueryInput());
    if (hasQueryInput()) {
      result = result && getQueryInput().equals(other.getQueryInput());
    }
    result = result && (getSingleUtterance() == other.getSingleUtterance());
    result = result && getInputAudio().equals(other.getInputAudio());
    result = result && unknownFields.equals(other.unknownFields);
    return result;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + SESSION_FIELD_NUMBER;
    hash = (53 * hash) + getSession().hashCode();
    if (hasQueryParams()) {
      hash = (37 * hash) + QUERY_PARAMS_FIELD_NUMBER;
      hash = (53 * hash) + getQueryParams().hashCode();
    }
    if (hasQueryInput()) {
      hash = (37 * hash) + QUERY_INPUT_FIELD_NUMBER;
      hash = (53 * hash) + getQueryInput().hashCode();
    }
    hash = (37 * hash) + SINGLE_UTTERANCE_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getSingleUtterance());
    hash = (37 * hash) + INPUT_AUDIO_FIELD_NUMBER;
    hash = (53 * hash) + getInputAudio().hashCode();
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() {
    return newBuilder();
  }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(
      com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *
   *
   *

   * The top-level message sent by the client to the
   * `StreamingDetectIntent` method.
   * Multiple request messages should be sent in order:
   * 1.  The first message must contain `session`, `query_input` plus optionally
   *     `query_params` and/or `single_utterance`. The message must not contain
   *     `input_audio`.
   * 2.  If `query_input` was set to a streaming input audio config,
   *     all subsequent messages must contain only `input_audio`.
   *     Otherwise, finish the request stream.
   *

   *
   * Protobuf type {@code google.cloud.dialogflow.v2.StreamingDetectIntentRequest}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.dialogflow.v2.StreamingDetectIntentRequest)
      com.google.cloud.dialogflow.v2.StreamingDetectIntentRequestOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.dialogflow.v2.SessionProto
          .internal_static_google_cloud_dialogflow_v2_StreamingDetectIntentRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.dialogflow.v2.SessionProto
          .internal_static_google_cloud_dialogflow_v2_StreamingDetectIntentRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.class,
              com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.Builder.class);
    }

    // Construct using com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      session_ = "";

      if (queryParamsBuilder_ == null) {
        queryParams_ = null;
      } else {
        queryParams_ = null;
        queryParamsBuilder_ = null;
      }
      if (queryInputBuilder_ == null) {
        queryInput_ = null;
      } else {
        queryInput_ = null;
        queryInputBuilder_ = null;
      }
      singleUtterance_ = false;

      inputAudio_ = com.google.protobuf.ByteString.EMPTY;

      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.dialogflow.v2.SessionProto
          .internal_static_google_cloud_dialogflow_v2_StreamingDetectIntentRequest_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest getDefaultInstanceForType() {
      return com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest build() {
      com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest buildPartial() {
      com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest result =
          new com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest(this);
      result.session_ = session_;
      if (queryParamsBuilder_ == null) {
        result.queryParams_ = queryParams_;
      } else {
        result.queryParams_ = queryParamsBuilder_.build();
      }
      if (queryInputBuilder_ == null) {
        result.queryInput_ = queryInput_;
      } else {
        result.queryInput_ = queryInputBuilder_.build();
      }
      result.singleUtterance_ = singleUtterance_;
      result.inputAudio_ = inputAudio_;
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return (Builder) super.clone();
    }

    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return (Builder) super.setField(field, value);
    }

    @java.lang.Override
    public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
      return (Builder) super.clearField(field);
    }

    @java.lang.Override
    public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return (Builder) super.clearOneof(oneof);
    }

    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
      return (Builder) super.setRepeatedField(field, index, value);
    }

    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return (Builder) super.addRepeatedField(field, value);
    }

    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest) {
        return mergeFrom((com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest other) {
      if (other == com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest.getDefaultInstance())
        return this;
      if (!other.getSession().isEmpty()) {
        session_ = other.session_;
        onChanged();
      }
      if (other.hasQueryParams()) {
        mergeQueryParams(other.getQueryParams());
      }
      if (other.hasQueryInput()) {
        mergeQueryInput(other.getQueryInput());
      }
      if (other.getSingleUtterance() != false) {
        setSingleUtterance(other.getSingleUtterance());
      }
      if (other.getInputAudio() != com.google.protobuf.ByteString.EMPTY) {
        setInputAudio(other.getInputAudio());
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage =
            (com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }

    private java.lang.Object session_ = "";
    /**
     *
     *
     *

     * Required. The name of the session the query is sent to.
     * Format of the session name:
     * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
     * caller to choose an appropriate <Session ID>. It can be a random number or
     * some type of user identifier (preferably hashed). The length of the session
     * ID must not exceed 36 characters.
     *

     *
     * string session = 1;
     */
    public java.lang.String getSession() {
      java.lang.Object ref = session_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        session_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     *

     * Required. The name of the session the query is sent to.
     * Format of the session name:
     * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
     * caller to choose an appropriate <Session ID>. It can be a random number or
     * some type of user identifier (preferably hashed). The length of the session
     * ID must not exceed 36 characters.
     *

     *
     * string session = 1;
     */
    public com.google.protobuf.ByteString getSessionBytes() {
      java.lang.Object ref = session_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        session_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     *

     * Required. The name of the session the query is sent to.
     * Format of the session name:
     * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
     * caller to choose an appropriate <Session ID>. It can be a random number or
     * some type of user identifier (preferably hashed). The length of the session
     * ID must not exceed 36 characters.
     *

     *
     * string session = 1;
     */
    public Builder setSession(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }

      session_ = value;
      onChanged();
      return this;
    }
    /**
     *
     *
     *

     * Required. The name of the session the query is sent to.
     * Format of the session name:
     * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
     * caller to choose an appropriate <Session ID>. It can be a random number or
     * some type of user identifier (preferably hashed). The length of the session
     * ID must not exceed 36 characters.
     *

     *
     * string session = 1;
     */
    public Builder clearSession() {

      session_ = getDefaultInstance().getSession();
      onChanged();
      return this;
    }
    /**
     *
     *
     *

     * Required. The name of the session the query is sent to.
     * Format of the session name:
     * `projects/<Project ID>/agent/sessions/<Session ID>`. It's up to the API
     * caller to choose an appropriate <Session ID>. It can be a random number or
     * some type of user identifier (preferably hashed). The length of the session
     * ID must not exceed 36 characters.
     *

     *
     * string session = 1;
     */
    public Builder setSessionBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);

      session_ = value;
      onChanged();
      return this;
    }

    private com.google.cloud.dialogflow.v2.QueryParameters queryParams_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.dialogflow.v2.QueryParameters,
            com.google.cloud.dialogflow.v2.QueryParameters.Builder,
            com.google.cloud.dialogflow.v2.QueryParametersOrBuilder>
        queryParamsBuilder_;
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public boolean hasQueryParams() {
      return queryParamsBuilder_ != null || queryParams_ != null;
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public com.google.cloud.dialogflow.v2.QueryParameters getQueryParams() {
      if (queryParamsBuilder_ == null) {
        return queryParams_ == null
            ? com.google.cloud.dialogflow.v2.QueryParameters.getDefaultInstance()
            : queryParams_;
      } else {
        return queryParamsBuilder_.getMessage();
      }
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public Builder setQueryParams(com.google.cloud.dialogflow.v2.QueryParameters value) {
      if (queryParamsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        queryParams_ = value;
        onChanged();
      } else {
        queryParamsBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public Builder setQueryParams(
        com.google.cloud.dialogflow.v2.QueryParameters.Builder builderForValue) {
      if (queryParamsBuilder_ == null) {
        queryParams_ = builderForValue.build();
        onChanged();
      } else {
        queryParamsBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public Builder mergeQueryParams(com.google.cloud.dialogflow.v2.QueryParameters value) {
      if (queryParamsBuilder_ == null) {
        if (queryParams_ != null) {
          queryParams_ =
              com.google.cloud.dialogflow.v2.QueryParameters.newBuilder(queryParams_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          queryParams_ = value;
        }
        onChanged();
      } else {
        queryParamsBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public Builder clearQueryParams() {
      if (queryParamsBuilder_ == null) {
        queryParams_ = null;
        onChanged();
      } else {
        queryParams_ = null;
        queryParamsBuilder_ = null;
      }

      return this;
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public com.google.cloud.dialogflow.v2.QueryParameters.Builder getQueryParamsBuilder() {

      onChanged();
      return getQueryParamsFieldBuilder().getBuilder();
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    public com.google.cloud.dialogflow.v2.QueryParametersOrBuilder getQueryParamsOrBuilder() {
      if (queryParamsBuilder_ != null) {
        return queryParamsBuilder_.getMessageOrBuilder();
      } else {
        return queryParams_ == null
            ? com.google.cloud.dialogflow.v2.QueryParameters.getDefaultInstance()
            : queryParams_;
      }
    }
    /**
     *
     *
     *

     * Optional. The parameters of this query.
     *

     *
     * .google.cloud.dialogflow.v2.QueryParameters query_params = 2;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.dialogflow.v2.QueryParameters,
            com.google.cloud.dialogflow.v2.QueryParameters.Builder,
            com.google.cloud.dialogflow.v2.QueryParametersOrBuilder>
        getQueryParamsFieldBuilder() {
      if (queryParamsBuilder_ == null) {
        queryParamsBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.dialogflow.v2.QueryParameters,
                com.google.cloud.dialogflow.v2.QueryParameters.Builder,
                com.google.cloud.dialogflow.v2.QueryParametersOrBuilder>(
                getQueryParams(), getParentForChildren(), isClean());
        queryParams_ = null;
      }
      return queryParamsBuilder_;
    }

    private com.google.cloud.dialogflow.v2.QueryInput queryInput_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.dialogflow.v2.QueryInput,
            com.google.cloud.dialogflow.v2.QueryInput.Builder,
            com.google.cloud.dialogflow.v2.QueryInputOrBuilder>
        queryInputBuilder_;
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public boolean hasQueryInput() {
      return queryInputBuilder_ != null || queryInput_ != null;
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public com.google.cloud.dialogflow.v2.QueryInput getQueryInput() {
      if (queryInputBuilder_ == null) {
        return queryInput_ == null
            ? com.google.cloud.dialogflow.v2.QueryInput.getDefaultInstance()
            : queryInput_;
      } else {
        return queryInputBuilder_.getMessage();
      }
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public Builder setQueryInput(com.google.cloud.dialogflow.v2.QueryInput value) {
      if (queryInputBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        queryInput_ = value;
        onChanged();
      } else {
        queryInputBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public Builder setQueryInput(
        com.google.cloud.dialogflow.v2.QueryInput.Builder builderForValue) {
      if (queryInputBuilder_ == null) {
        queryInput_ = builderForValue.build();
        onChanged();
      } else {
        queryInputBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public Builder mergeQueryInput(com.google.cloud.dialogflow.v2.QueryInput value) {
      if (queryInputBuilder_ == null) {
        if (queryInput_ != null) {
          queryInput_ =
              com.google.cloud.dialogflow.v2.QueryInput.newBuilder(queryInput_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          queryInput_ = value;
        }
        onChanged();
      } else {
        queryInputBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public Builder clearQueryInput() {
      if (queryInputBuilder_ == null) {
        queryInput_ = null;
        onChanged();
      } else {
        queryInput_ = null;
        queryInputBuilder_ = null;
      }

      return this;
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public com.google.cloud.dialogflow.v2.QueryInput.Builder getQueryInputBuilder() {

      onChanged();
      return getQueryInputFieldBuilder().getBuilder();
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    public com.google.cloud.dialogflow.v2.QueryInputOrBuilder getQueryInputOrBuilder() {
      if (queryInputBuilder_ != null) {
        return queryInputBuilder_.getMessageOrBuilder();
      } else {
        return queryInput_ == null
            ? com.google.cloud.dialogflow.v2.QueryInput.getDefaultInstance()
            : queryInput_;
      }
    }
    /**
     *
     *
     *

     * Required. The input specification. It can be set to:
     * 1.  an audio config which instructs the speech recognizer how to process
     *     the speech audio,
     * 2.  a conversational query in the form of text, or
     * 3.  an event that specifies which intent to trigger.
     *

     *
     * .google.cloud.dialogflow.v2.QueryInput query_input = 3;
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.dialogflow.v2.QueryInput,
            com.google.cloud.dialogflow.v2.QueryInput.Builder,
            com.google.cloud.dialogflow.v2.QueryInputOrBuilder>
        getQueryInputFieldBuilder() {
      if (queryInputBuilder_ == null) {
        queryInputBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.dialogflow.v2.QueryInput,
                com.google.cloud.dialogflow.v2.QueryInput.Builder,
                com.google.cloud.dialogflow.v2.QueryInputOrBuilder>(
                getQueryInput(), getParentForChildren(), isClean());
        queryInput_ = null;
      }
      return queryInputBuilder_;
    }

    private boolean singleUtterance_;
    /**
     *
     *
     *

     * Optional. If `false` (default), recognition does not cease until the
     * client closes the stream.
     * If `true`, the recognizer will detect a single spoken utterance in input
     * audio. Recognition ceases when it detects the audio's voice has
     * stopped or paused. In this case, once a detected intent is received, the
     * client should close the stream and start a new request with a new stream as
     * needed.
     * This setting is ignored when `query_input` is a piece of text or an event.
     *

     *
     * bool single_utterance = 4;
     */
    public boolean getSingleUtterance() {
      return singleUtterance_;
    }
    /**
     *
     *
     *

     * Optional. If `false` (default), recognition does not cease until the
     * client closes the stream.
     * If `true`, the recognizer will detect a single spoken utterance in input
     * audio. Recognition ceases when it detects the audio's voice has
     * stopped or paused. In this case, once a detected intent is received, the
     * client should close the stream and start a new request with a new stream as
     * needed.
     * This setting is ignored when `query_input` is a piece of text or an event.
     *

     *
     * bool single_utterance = 4;
     */
    public Builder setSingleUtterance(boolean value) {

      singleUtterance_ = value;
      onChanged();
      return this;
    }
    /**
     *
     *
     *

     * Optional. If `false` (default), recognition does not cease until the
     * client closes the stream.
     * If `true`, the recognizer will detect a single spoken utterance in input
     * audio. Recognition ceases when it detects the audio's voice has
     * stopped or paused. In this case, once a detected intent is received, the
     * client should close the stream and start a new request with a new stream as
     * needed.
     * This setting is ignored when `query_input` is a piece of text or an event.
     *

     *
     * bool single_utterance = 4;
     */
    public Builder clearSingleUtterance() {

      singleUtterance_ = false;
      onChanged();
      return this;
    }

    private com.google.protobuf.ByteString inputAudio_ = com.google.protobuf.ByteString.EMPTY;
    /**
     *
     *
     *

     * Optional. The input audio content to be recognized. Must be sent if
     * `query_input` was set to a streaming input audio config. The complete audio
     * over all streaming messages must not exceed 1 minute.
     *

     *
     * bytes input_audio = 6;
     */
    public com.google.protobuf.ByteString getInputAudio() {
      return inputAudio_;
    }
    /**
     *
     *
     *

     * Optional. The input audio content to be recognized. Must be sent if
     * `query_input` was set to a streaming input audio config. The complete audio
     * over all streaming messages must not exceed 1 minute.
     *

     *
     * bytes input_audio = 6;
     */
    public Builder setInputAudio(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }

      inputAudio_ = value;
      onChanged();
      return this;
    }
    /**
     *
     *
     *

     * Optional. The input audio content to be recognized. Must be sent if
     * `query_input` was set to a streaming input audio config. The complete audio
     * over all streaming messages must not exceed 1 minute.
     *

     *
     * bytes input_audio = 6;
     */
    public Builder clearInputAudio() {

      inputAudio_ = getDefaultInstance().getInputAudio();
      onChanged();
      return this;
    }

    @java.lang.Override
    public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFieldsProto3(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }

    // @@protoc_insertion_point(builder_scope:google.cloud.dialogflow.v2.StreamingDetectIntentRequest)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.dialogflow.v2.StreamingDetectIntentRequest)
  private static final com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest();
  }

  public static com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<StreamingDetectIntentRequest> PARSER =
      new com.google.protobuf.AbstractParser<StreamingDetectIntentRequest>() {
        @java.lang.Override
        public StreamingDetectIntentRequest parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new StreamingDetectIntentRequest(input, extensionRegistry);
        }
      };

  public static com.google.protobuf.Parser<StreamingDetectIntentRequest> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<StreamingDetectIntentRequest> getParserForType() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.cloud.dialogflow.v2.StreamingDetectIntentRequest getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}