text:
Contact Us - Book Now!
Celebrity Sit-ins
Big Band Option
Spoken Four
Final Say
Galas & Fundraisers
Book the Band
Options >
MAGGIE SPEAKS IS A NATIONALLY RECOGNIZED, AWARD WINNING BAND.
Since 1998, Maggie Speaks has provided high quality, experienced, and customizable musical entertainment to private and public events from Sydney to Venice to our hometown of Chicago. Having shared the stage with names like Earth Wind and Fire, The Doobie Brothers, .38 Special, Rapper Ton Loc, Loverboy's Mike Reno, and Starship's Mickey Thomas among many others, Maggie Speaks is considered one of the hottest live bands in the Midwest. They've also performed for some of the largest corporations in the world, including Pepsi, IBM, Estee Lauder, Nike, and Marriott. Covering music from the 60's through today, Maggie Speaks has no musical limits. Rock, Pop, Top 40, Dance, Funk, Country, Hip Hop, Jazz, Motown, R&B and more, Maggie Speaks musical diversity is second to none. The members of Maggie Speaks include founder and vocalist David Calzaretta, Vocalist Nicole Garza, drummer Blake Cooper, bassist Shawn Sommer and guitarist Samir Varma. (read more)
history of maggie speaks
meet the sister bands
David Calzaretta
Founder/Vocalist
Samir Varma
Shawn Sommer
Blake Cooper
Nicole Garza
Then came the critically acclaimed and customizable sister bands. Maggie Speaks consistently has performed between 150 – 200 shows annually over the past 21 years. Their demand became so high that in 2006, they created a second band called Spoken Four, consisting of 5 additional musicians with matching skill sets to provide clients with another option from the brand and style they trusted and desired in the event that Maggie Speaks was unavailable. In the first year, Spoken Four performed 140 shows, leading to the creation of their third band Final Say in 2007. Final Say also began performing around 140 shows a year in the wedding, corporate, gala, fundraiser, night club, country club, festival and private event market. They continued to build trust and a reputation for highly professional performances with packed dance floors and boundless energy. In 2013 they created their fourth band Shout Out and then replicated for a fifth time in 2015 with the creation of Enough Said. Now collectively the bands perform approximately 500 shows annually in both the Chicago and global market place.
Talk Of The Town Big Band. In 2015, they took the knowledge that they learned about reading audiences, crafting medleys, producing events and executing flawless performances and created Talk of the Town Big Band which can scale anywhere from 8-15 pieces. This configuration is for clients that want a bigger footprint and visual impact with multiple singers / front people, live horns and strings. Talk of the Town is different from other big bands in that their front people are not tied behind music stands or iPads reading lyrics. They are putting on a show and interacting with the audience, creating a rapport with the audience that is second to none.
THE MAGGIE SPEAKS FAMILY OF BANDS PROVIDE HIGH QUALITY, CUSTOMIZABLE ENTERTAINMENT THAT LEAVES CROWDS BREATHLESS.
Spoken Four delivers versatile, astounding performances that keeps guests on their feet.
Watch Spoken Four
Final Say delivers a rare treat of sizzling chemistry, incredible energy, and songs no one can resist.
Watch Final Say
Shout Out are world class musicians who deliver high energy, non-stop performances.
Watch Shout Out
Enough Said's musicians and vocalists have toured with some of the top rock and pop artist's in the country.
Watch Enough Said
The possibilities are endless as the Talk of the Town Big Band can cater to your every "big splash" desire.
Watch Talk of the Town
A MAGNIFICENT MUSICAL JOURNEY BEGAN WITH A NOT SO TYPICAL START.
Dave Calzaretta, founder of Maggie Speaks and lead vocalist graduated from Indiana University Kelley School of Business with a degree in Accounting in 1996. After passing the CPA Exam in 1997 in Minnesota on his first attempt he moved back to his hometown of Chicago, ready to start his new carreer.
Answering an ad, tossing a coin. As it turned out, numbers were not enough to satisfy Dave. He became restless to return to his first love – music, mostly as a side gig to keep things interesting. He answered an ad in the Chicago Reader posted by two brothers (one a drummer and one a singing guitarist / keyboard player) looking for a singing bass player to potentially start a band. It clicked. Someone's contact number had to go on the bottom of their Demo CD. With the loss of a coin flip Dave became the "booking guy". He put his business skills to work and got the band in the right venues and marketed effectively to draw crowds.
Then came the festivals. As more people saw the band, they began playing at college towns like Illinois State University in Bloomington, IL, Southern Illinois University in Carbondale, IL, Eastern Illinois in Charleston, Western Illinois in Macomb, IL, Northern Illinois in Dekalb, Bradley University in Peoria, University of Illinois in Champaign-Urbana, Indiana University in Bloomington, IN. College kids would come home for the summer and see the band on their breaks. Then when they would eventually get married they started hiring Maggie Speaks as the band that provided the soundtrack to their college years. Many couples actually met at Maggie Speaks shows throughout the years.
"The band is able to perform almost any genre of music so no matter what situation or audience they are in front of, they always have a deep well of music, and decades and genres to draw from."
More of a band that plays weddings than a "wedding band", Maggie Speaks grew the wedding segment by word of mouth. They packed dance floors and pushed the envelope with modern music at a time when most wedding bands were thoroughly rooted in the disco 70's and Motown music. They began to craft a strategy with how to be relevant to both younger and older generations. They took the best elements of what a DJ would offer by providing a repertoire with no musical boundaries and a constant non-stop approach of going song to song with no dead air.
They expertly crafted medleys and mashups that seamlessly crossed generational boundaries and genres which engaged all demographics on the dance floor at once. For example they would begin a medley with a 70's tune which got the older generation on the dance floor and after a verse and a chorus would seamlessly transition into a modern tune which kept the older generation on the dance floor but then engaged the younger generation and from there, they just never stopped playing which kept the dance floor populated the entire evening.
They began performing at corporate events in 2000 after a Fortune 500 executive saw them perform at a night club in Chicago after a Cubs game. He saw the crowd and the response and decided that this was the energy that he wanted at his company's next event. After a hugely successful showing, the company began traveling the band all over the US for their events in other cities. Eventually this led to international travel. To date, Maggie Speaks has performed in 13 different countries and 33 different states.
Corporations began trusting Maggie Speaks for their biggest events and would often commission the band to build specialty theme shows such as a disco night, a Latin night, a country night, an 80's night, a 90's night, a yacht rock night, a tribute to the Eagles, an unplugged acoustic night. This led to the band being able perform almost any genre of music so no matter what situation or audience they are in front of, the always have a deep well of music, decades and genres to draw from.
"Celebrity Sit-Ins provide clients and the audience with the star power they seek at their events at an affordable price without the hassles of traveling celebrity talent."
An evolution to House Band for the Rock Stars. In 2007, the band added a female singer to the mix to further broaden their repertoire. In the 2014 the band added a hip hop artist to continue to capture the evolution of music. In 2017, looking for yet another angle and way of staying relevant and staying true to society's YouTube short attention span generation, they began working with current and former lead singers of world famous bands in a model called Celebrity Sit-In. Maggie Speaks serves as the house band for the stars as they rock through their 4 – 6 biggest hits. It provides the clients and the audience with the star power they seek at their events at an affordable price without the hassles of traveling celebrity talent. It is high impact in that you hear the hits and only the hits with no B-Sides or filler material without sacrificing the variety that Maggie Speaks brings to the performances.
Never getting boxed into a corner is a key to Maggie Speaks success. The clients of Maggie Speaks are provided with both great entertainment and an event producers mentality that is crucial to their events. Being a creative force in the industry allows clients to customize and design their events around Maggie Speaks. No longer is it taking a square peg and sticking it in a round hole. Dave Calzaretta and the band are able to gain a quick understanding of their clients themes, wants and needs and develop a custom program that leaves their guests in awe of what they are witnessing.
Part of what makes Maggie Speaks successful is the personality and reputation of Dave Calzaretta, band founder. He has sat on the board of directors from International Organizations such as IACEP (International Association of Corporate Entertainment Producers), and local Chicago board of directors such as ILEA (International Live Events Association…formerly International Special Events Society). He founded his event production and talent buying company Magnificent Events in 2000 and has been producing shows, bands and other entertainment ever since. He has booked celebrity talent such as Lionel Richie, the Barenaked Ladies, KC and the Sunshine Band, the Temptations, the Spinners, 38 Special, Night Ranger, Asia, Phil Vassar, Colby Callait, Bret Michaels, Charlie Daniels Band, Kansas and more. Calzaretta is seen as an innovator and authority throughout the events industry, speaking nationally at conferences such as Biz Bash, IACEP (International Association of Corporate Entertainment Producers), AEP (Association of Event Professionals), Event Solutions and The Special Event and ILEA (International Live Events Association).
Behind the scenes Blake Cooper, drummer of the band since 2000. Blake continues to evolve the bands on stage product through his expert knowledge of technology, keeping up with the latest industry trends incorporating technology into live performance. His expertise allows Maggie Speaks to take national celebrity touring innovations and apply them to corporate and private events.
Maggie Speaks is an internationally renowned cover band out of Chicago who have shared the stage with a who's-who list of celebrity talent. They have performed in 13 different countries and 33 different states for corporate, private and public events. They are the band to hire when everything has to be absolutely, 100% perfect. Contact Maggie Speaks today!
© 2019 Maggie Speaks


text:
Эрнест Мабука (, ; 16 июня 1988, Дуала, Камерун) — камерунский футболист, защитник клуба «Маккаби» (Хайфа) и национальной сборной Камеруна.

Биография
Футболом начал заниматься в 12 лет и был отдан в академию ФК «Лез Астр». Там же Мабука подписал свой первый рофессиональный контракт. После 10 лет, проведённых в «Лез Астре», уехал в Словакию и подписал контракт с «Жилиной». Дебют игрока в новом клубе состоялся в кубковой игре против Татрана, в сезоне 2010/11.

Достижения
 Чемпион Словакии (2): 2009/10, 2011/12
 Обладатель Кубка Словакии (1): 2011/12

Примечания

Ссылки

Футболисты Камеруна
Игроки сборной Камеруна по футболу
Игроки ФК «Лез Астр»
Игроки ФК «Жилина»
Игроки ФК «Маккаби» Хайфа

redpajama_set_name: RedPajamaWikipedia


A view of the Baku Bay from atop the Maiden Tower, a 12th-century architecture and UNESCO World Heritage site located in the Old City.
Baku, the capital of Azerbaijan, is an urban city of two million people along the shores of the Caspian Sea. The oil-rich city is the scientific, cultural and industrial center of Azerbaijan, where ancient architecture and historic sites can be found alongside modern skyscrapers and multimillion-dollar highrises.
In recent years, the rise in oil prices and revenue has enriched the economy of Azerbaijan, a former Soviet state, allowing it to redevelop the city of Baku at a scale unseen in its history. Thousands of buildings from the Soviet era have been demolished to make way for parks, luxury hotels, business centers and social facilities, and improvements made to the maintenance of the city's historic sites. Today, Azerbaijan is the production center for 70 percent of the South Caucasus' economy, with Baku becoming a major tourist destination in the region.
This recent national growth has also had an impact on the nascent contemporary art scene of Azerbaijan. In 2011, artist Aida Mahmudova founded the nonprofit Yarat Contemporary Art Space, whose exhibitions, lectures, projects and workshops now form the core of the local art community's activities. In March, ArtAsiaPacific was invited by Yarat to experience Baku's growing art scene, and to attend the opening of the group exhibition "Love Me, Love Me Not" at Heydar Aliyev Center, Baku, a multimillion-dollar cultural museum built in 2012.
Below are some highlights from the trip.
The Muhammad Mosque, an 11th-century architecture in Baku's Old City, with a view of the Flame Towers (a USD 350 million commercial highrise built in 2012) in the back. All photos by Hanae Ko for ArtAsiaPacific.
Outside view of Yay Gallery, a contemporary art gallery located in the Old City of Baku, Azerbaijan. An initiative of the Yarat Contemporary Art Space, the two-story organization regularly holds exhibitions, lectures, readings, film screenings and artist workshops.
A video projection of X-Event 2.7 According to the Protocol Salives (2009), a performance by French artist and choreographer duo Les Gens d'Uterpan (Annie Vigier and Franck Apertet) at Yay Gallery, 2014.
Exterior view of the building housing Afghan artist Reza Hazare's studio in Baku.
Afghan artist Reza Hazare at his studio in Baku, showing his surrealist paintings that illustrate everyday Afghan society.
Visitors at the front entrance of the Heydar Aliyev Center, a 619,000-square-foot building in Baku, designed by Iraqi-British architect Zaha Hadid. The center, named after the leader of Soviet-era Azerbaijan from 1969 to 1982, and president of Azerbaijan from 1993 to 2003, was built in 2012.
Interior view of the Heydar Aliyev Center, Baku.
Azerbaijani artist Orkhan Huseynov with his Plexiglas installation Handwork (2012), from the "Fly to Baku" touring exhibition at Heydar Aliyev Center, 2014.
Azerbaijani artist Farid Rasulov with his 2013 installation Untitled #4 (left) from the "Architectural Dichotomy" series. Installation at the "Love Me, Love Me Not" exhibition at Heydar Aliyev Center, 2014.
Interior view of Museum of Modern Art, Baku, which was designed by Azerbaijani painter and sculptor Altai Sadikhzade. The museum mainly displays artworks from the latter half of the 20th century, with focus on modern Azerbaijani art from the 1960s and '70s.
Where Did You Come From, Where Are You Going?! (2014), iron installation with light projection, by Azerbaijani artist Rashad Alakbarov. Installation from his solo exhibition "Words" at Museum of Modern Art, Baku, 2014.


text:
Home The Orchestra History of the Berliner Philharmoniker The era of Herbert von Karajan Essay
Karajan was well aware of the workings of power. It was all the more difficult for him to cope when the orchestra reflected on its basic rights in 1982 and did not want to do the maestro's bidding and appoint clarinettist Sabine Meyer for a probationary year. Worse still: when he tried to break the musicians' spirit with threatening actions, including cancelling television productions, the Philharmoniker refused for their part to perform under Karajan in Salzburg and Luzern and terminated the media agreements. Certainly this resistance, not at all compatible with his absolutist self-image, disturbed him deeply. Yet he believed to the bitter end that he was in charge. Upon submitting his resignation as principal conductor on 24 April 1989, three months before he died, his aim was probably to push through his controversial demands for more power. That, however, his resignation was accepted and no one attempted to persuade him to reverse his decision – that must have been the greatest defeat for him.
For interpretative musicians, Friedrich Schiller's opinion generally applies: "Posterity binds no garlands about the actor's head." Herbert von Karajan, however, broke through this law, as his successor Sir Simon Rattle stresses: "When Karajan was in town, the entire orchestra, every single musician, had to be there as well. He worked with them again and again on the same pieces, and he understood their joint interpretations as a process that could take years. But this is precisely how he not only achieved an unprecedented homogeneity, but also shaped the orchestra's unmistakeable personality. We are still profiting from that today, though in the meantime there are only a few members of the Philharmonic who themselves played under Karajan." And there's one more thing Rattle knows: "There will never be, there can never be a second Herbert von Karajan." Who would want to contradict him there?
Didn't he always pride himself on living in tune with the times and clairvoyantly anticipating the future, not least as concerned developments in technology and the market? Early on, Karajan recognised the opportunities of audio-visual media: his first music films came out in 1965; in 1966 he founded the company Cosmotel together with movie mogul Leo Kirch, who captured several of his opera productions on celluloid; and starting in 1982 his company Telemondial recorded Karajan's work for eternity on laser disc. As his own director, he showed himself in a favourable light, which is why the recordings were not made in concert, but rather reproduced under studio conditions. Karajan painstakingly ensured that even the visualisation satisfied his ideal of beauty, and arranged the musicians on his virtual film stage as would not have been possible live: dozens of violins positioned in a row, all of whom had to wield their bows exactly in parallel. The master in turn celebrated his art of conducting specially for the camera to the pre-recorded soundtrack … One can dismiss this approach as affectation or falsification, and yet the artificial aestheticizing of these recordings develops a peculiar attraction.
A highly concentrated and explosive combination of artistic vision and personal ambition, instinct for power and unwillingness to compromise in all musical and aesthetic questions – that was the fiery mixture that drove Karajan's life. The Berliner Philharmoniker, which he led for 34 years from 1955 to 1989, benefited for the most part from these ambivalent character traits. Karajan strongly believed that an orchestra that he left his mark on had to be the best ever. So he formed the Philharmonic according to his will, realised with them a sound such as he had always dreamed of: transparent, homogeneous and meticulously balanced among the different instrumental groups. It was a splendid celebration of beautiful sound and perfection. The high standard with which they made music then is still astonishing when you hear live recordings from the early sixties. The fine-tuning of how they play together is breathtaking; no ballast, no sharp edges, no friction placed a strain on the interpretations; they boast fluid tempi and a style characteristically oriented towards the melodic line. Everything breathes one spirit, one thing organically follows the next.
Karajan's accomplishments in cultural policy should not be underestimated: without him, Hans Scharoun's visionary Philharmonie would hardly have been built. After Scharoun's concept had almost fallen victim to local political intrigues, Karajan presented himself to mayor Willy Brandt and cut the Gordian knot. Without Karajan there would never have been the Salzburg Easter Festival and no fame in opera for the Berliner Philharmoniker; at his own entrepreneurial risk, without a penny of subsidies, he founded the festival in his home town in 1967, opening it with the Ring of the Nibelung, the most elaborate and expensive opera project of all. And he created, moreover, a new Wagner ideal of almost chamber music-like transparency that transformed even sceptics into Wagnerians. Without Karajan's intercession, finally, the Philharmoniker's salary model, which applies through the present day, would certainly not have come into effect.
What appeared to some pure wizardry on the part of Karajan, the "magician of sound", was in reality the result of an intensive rehearsal process. Again and again even familiar works would be refined, every nuance fathomed, the phrasing and articulation between the strings and the wind and brass soloists subtly synchronised, until everyone could completely trust themselves even if the "master", as Karajan was called, closed his eyes and fell into a trance at the evening concert. Karajan's ambitions included not only full-scale performances of the standard repertoire, no, he also worked obsessively on works of the Second Viennese School, which he placed on the rehearsal schedule even when they were not on the concert programmes. Even Adorno could not help but praise the Webern interpretations of the Berlin orchestra together with their director in his Introduction to the Sociology of Music, whereby he refrained from mentioning the conductor's name: to praise the hot shot Karajan, who was prominent even in the yellow press, was apparently not proper for a trailblazer of the avant-garde …
"The Conductor": in just two words, the title of the obituary of Herbert von Karajan published by the Frankfurter Allgemeine on 18 July 1989, two days after he died, said more than a long eulogy would have. Karajan's name had long since become synonymous with an entire profession; he was considered the highest authority in the musical life of the 20th century, on which he put his stamp like no one else did. No one from the classical music industry produced more recordings and had higher sales, no one recognised and exploited the aspects of consumer electronics, marketing and commercial promotion of culture more clear-sightedly. And who else but Karajan knew how to meet the needs of the post-war society with his aesthetics and his aura? As an elegant man of the world, a charismatic magician with the baton and omnipotent sovereign over legions of musicians, he corresponded perfectly to the contemporary ideal. Theodor W. Adorno once called him the "maestro of the German economic miracle".

redpajama_set_name: RedPajamaCommonCrawl


One Shelton teen has found a way to use the Internet for more productive purposes.
Fred Dapp, 16, a junior at Shelton High School, has recently been selected as one of 12 teenagers nationwide to be a part of the Boys & Girls Clubs of America's Teen Advisory Council. Nominated by staff at the Boys & Girls Club of the Lower Naugatuck Valley, Fred will be responsible for serving as liaison between the Boys & Girls Clubs of America and local youth.
He first became involved with the Boys & Girls Club in January 2012, when he came to the organization to fulfill community service hours required by Shelton High School. After volunteering for four months, Fred was compelled to stay involved.
"I love the positive energy of the club. It really feels like a family here," Fred said.
Now, in addition to working part time as a counselor in the 6- and 7-year-old program, Fred is responsible for helping younger club members off the busses in the afternoon and also serves as the treasurer of the Keystone Club, the Boys & Girls Club's youth leadership program for older teens.
Club staff noticed Fred's commitment to the Boys & Girls Club and to its mission to enable all youth to become productive, responsible, and caring citizens. Fred has demonstrated his dedication to the mission by constantly going above and beyond what is expected of him for the sole purpose of bettering the lives of Club youth.
As part of the Teen Advisory Council, Fred is required to participate in monthly conference calls to serve as an ongoing link between BGCA and today's youth. In addition to the conference calls, Fred is responsible for participating in an online forum regarding social networking and technology as it related to the youth of the community.
For more information visit: BGC-LNV.org.


The Ivey Watson Playground is located in Kings Park and has been specifically designed for children under 6. Within the Ivey Watson Playground is the beautiful Sticky Beaks Cafe, making this the perfect place to catch up with friends or hold a small family gathering.
The play area is quite large with lots of different play features. The whole playground is enclosed with fencing, except at the entrance which is open. This large playground will provide hours of entertainment as kids explore all the elements. It is designed for 6 and under.
There is also plenty of shelter if it rains, so this is a great place to catch up on that partly rainy day when you just need to get out of the house. This shelter is available to hire for parties and other functions.
You'll love the giant sized story books near the pirate ship play area that are great for some story time during their play.
And of course the playground is surrounded by the beautiful trees, bush and nature that is Kings Park. There are lots of grassed areas, shade, seating and tables around - so theres lots of room to set up your picnic rug or enjoy a packed lunch or a delicious meal from Sticky Beaks Cafe.
Make sure you check out the Sticky Beaks cafe has an amazing and delicious range of light meals, drinks and desserts at very reasonable prices. It's open for breakfast and lunch daily, and you can dine under the patio or take your food onto the grassed area and enjoy a picnic. Highchairs are available and they have a great little baby/toddler play pen area under the Community Shelter outside the cafe too.
If you haven't yet been to the Ivey Watson Playground and Sticky Beaks Cafe - then make it the location for your next playdate, its a great location as it's close to the city making it central for everyone.


Clean out your dryer's lint trap. This will ensure that your dryer operates efficiently and may also prevent fires. Be sure you inspect your lint trap for tears or holes that could mean lint is going into your pipes, because this can cause bigger problems as it may mean that lint is escaping into your pipes. The key towards maintaining low plumbing repair bills is to prevent problems before they happen. Drain clogs are a very common plumbing expense. Drains are easily get clogged by hair. It's a lot simpler to eliminate hair out of a screen than eliminating it off a pipe. Frozen pipes can cost you to incur expensive plumbing repair bills. The first thing to do is ensure your outside pipes are thoroughly wrapped or insulated. When wintertime comes, disconnect your garden hoses and make sure the outside water fixtures are turned off. You can save a bunch on your plumbing bills by doing this. More information about Professional Plumbers Stockdale Tx.
Fixtures, such as toilets and sinks, may also be equipped with individual cut-off valves. Make sure your entire family knows where each shut-off valve is, and mark the shut-off position for ease of use. Plumbing requires more skills than just an understanding of water. One of the common things plumbers deal with is repairing water lines. To improve the efficiency of your water heater, you should opt for a model that offers only the necessary capacity for your household. If you are starting to install a water heater and see a pipe going out from the drainage area, reconnect it before you finish the job. This could be one of the recirculation pipes, which makes a significant difference in water-heater efficiency. The heat of the sun is easy to forget when you are very involved in your work, but it still can be dangerous. When the weather get very cold, pipes could freeze and result in damages. Even pipes that are inside of the home. Be sure that you have a heat lamp or heater on these pipes to keep your water flowing.
If you are looking for Find Plumber In Fort Bliss Tx, sports tickets and theater seats at the best prices click here.


text:
Q: libGDX: Scale Textures when smaller resolution I've read some articles about Viewports to solve the problem with different resolution. But in every example they used a smaller size for the texture than the resolution of the screen. But what happens when my texture size is for example 1920 x 1080 and my screen is just 800 x 400?
Is there any kind of Viewport that can scale the texture? I didn't found anything for this problem.

A: Looks like you mean scaling and not compressing. Compressing is a technique to lower the file size of a file, like a .jpg does over a uncompressed .bmp. So if you mean scaling then it completely depends on what you want. If you have a 1920x1080 texture and want this to completely fit the 800x400 screen it needs to be stretched since 1920x1080 = 16x9 and 800x400 = 2:1 = 16:8.
To stretch the image you need to use StretchViewport. You would create the viewport with the world dimensions you want to show. So in this case the 1920x1080 image, or perhaps 16x9 and put that texture with there "world units) in your world. StretchViewport will make sure the viewport is stretched to whatever size you use.
If you want it to fit as much as possible but remain the aspect ratio of 16:9 then you can use the FitViewport. Like StretchViewport each viewport (except ScreenViewport) need to be supplied with world units, this is a important concept. World units are not meters nor pixels until you define your world units as such. Anyway, FitViewport will also make sure each device sees as much of your world as you supply it but your assets won't stretch/deform. Instead it will create a "black" bar, much like TV's do when the aspect ratio is not equal.
ScreenViewport, by default just takes the size of the screen. So a 1920x1080 pixel screen would show 1920x1080 world units and a 640x480 pixel screen would show 640x480 world units. Therefore, the higher resolution the screen has the more of the world is visible. The amount of world units a screen pixel represents can be changed.
There are a view others: FillViewport is like FitViewport it will remain aspect ratio but always fills the screen. And thus some parts may not be visible. For that reason I can't think of a use for this one over FitViewport. And there is ExtentVieport, a mix between FitViewport and ScreenViewport.

redpajama_set_name: RedPajamaStackExchange


text:
League of Legend's Ultimate Vayne Skins
HomeAll Posts...League of Legend's Ultimate Vayne Skins
League of Legends (LoL), commonly referred to as League, is a 2009 multiplayer online battle arena video game developed and published by Riot Games. Inspired by Defense of the Ancients, a custom map for Warcraft III, Riot's founders sought to develop a stand-alone game in the same genre. Since its release in October 2009, the game has been free-to-play and is monetized through purchasable character customization. The game is available for Microsoft Windows and macOS. In the game, two teams of five players battle in player versus player combat, each team occupying and defending their half of the map. Each of the ten players controls a character, known as a "champion", with unique abilities and differing styles of play.
Over the course of a match, champions gain levels by accruing experience points (XP) through killing enemies. Items can be acquired to increase champions' strength,[6] and are bought with gold, which players accrue passively over time and earn actively by defeating the opposing team's minions, champions, or defensive structures.
League of Legends is a multiplayer online battle arena (MOBA) game in which the player controls a character ("champion") with a set of unique abilities from an isometric perspective. As of November 2021, there are 157 champions available to play.
In the main game mode, Summoner's Rift, items are purchased through a shop menu available to players only when their champion is in the team's base. Each match is discrete; levels and items do not transfer from one match to another.
Best Vayne Skins
The best vayne skins in League of Legends are:
Dragonslayer Vayne, Soulstealer Vayne;
Aristocrat Vayne;
Vindicator Vayne;
SKT T1 Vayne;
Heartseeker Vayne;
Sentinel Vayne, FPX Vayne;
Spirit Blossom Vayne;
Firecracker Vayne;
Arclight Vayne;
PROJECT: Vayne;
Summoner's Rift
Summoner's Rift is the flagship game mode of League of Legends and the most prominent in the professional-level play. The mode has a ranked competitive ladder; a matchmaking system determines a player's skill level and generates a starting rank from which they can climb. There are nine tiers; the least skilled are Iron, Bronze, and Silver, and the highest are Master, Grandmaster, and Challenger.
Other Modes
Besides Summoner's Rift, League of Legends has two other permanent game modes. ARAM ("All Random, All Mid") is a five-versus-five mode like Summoner's Rift, but on a map called Howling Abyss with only one long lane, no jungle area, and with champions randomly chosen for players. Given the small size of the map, players must be vigilant in avoiding enemy abilities.
In E-sports
League of Legends is one of the world's largest esports, described by The New York Times as its "main attraction". Online viewership and in-person attendance for the game's esports events outperformed those of the National Basketball Association, the World Series, and the Stanley Cup in 2016. For the 2019 and 2020 League of Legends World Championship finals, Riot Games reported 44 and 45 peak million concurrent viewers respectively. Harvard Business Review said that League of Legends epitomized the birth of the esports industry.
Riot Games' first venture into music was in 2014 with the virtual heavy metal band Pentakill, promoting a skin line of the same name. Pentakill is composed of seven champions: Karthus, Yorick, Mordekaiser, Sona, Olaf, Kayle, and Viego.
For the 10th anniversary of League of Legends in 2019, Riot Games announced several games at various stages of production that were directly related to the League of Legends intellectual property (IP). A stand-alone version of Teamfight Tactics was announced for mobile operating systems iOS and Android at the event and released in March 2020.
The game has cross-platform play with the Windows and macOS clients. Legends of Runeterra, a free-to-play digital collectible card game, launched in April 2020 for Microsoft Windows; the game features characters from League of Legends.
Their music was primarily made by Riot Games' in-house music team but features cameos by Mötley Crüe drummer Tommy Lee and Danny Lohner, a former member of the industrial rock band Nine Inch Nails. Their second album, Grasp of the Undying, reached Number 1 on the iTunes metal charts in 2017.
League of Legends is the most popular game in esports, and it's not hard to see why. The epic battles between two teams of 5 champions are full of excitement and suspense. At the same time, there's a surprising amount of psychology that goes into winning these matches, which may be one reason League has such an active fanbase across all levels.
Craig Barnett


Officially celebrating its 20th anniversary, the Burnaby Blues and Roots Festival has released the full details of their highly anticipated 2019 lineup.
Now in its second decade, the family-friendly event returns to Deer Lake Park on Saturday, August 10, 2019.
The gates open at 12 pm, and the first musical act takes the stage at 1 pm.
This year's festival will feature performances by Feist, Lord Huron, Dan Mangan, The War and Treaty, William Prince, and Southern Avenue.
Tickets go on sale beginning at 10 on March 1, through LiveNation, with limited early-bird single tickets available for $50.


text:
COVID-19: Anabel boss seeks more govt support for tourism, hospitality industry
By Ebere Chibuzor
Thriving tourism sector in Nigeria has been threatened by the new COVID-19 strain even with measures being put in place to contain the virus.
This observation was made by the General Manager, Anabel Apartment and Suites, Vikas Saini, who noted that hotel occupancy had dropped drastically, leading to increased job loss in the travel and tourism industry.
Saini, who is also Chief Operating Officer at Anabel Apartment and Suites further, urged the Nigerian government to do more to support the hospitality industry.
He said, "Hospitality and tourism sector has also had its own share of the challenges arising from COVID-19 lockdown" imposed last year by the Nigerian's government, stressing that with government's announcement of stay-at-home and "social distancing" directives, most restaurant businesses were adversely affected. He said this led to rapid shutdown in cities and states to control COVID-19 spread, throwing many restaurants and hotels across the country out of business.
Saini pointed out that resorts and hotels booked by excited vacationers and corporate conference goers before the present COVID-19 pandemic had to be cancelled.
According to him, prior to the pandemic outbreak, hospitality sector was a major revenue earner, with propensity of creating thousands of jobs annually.
For instance, he said, "Nigeria has a long coastal line, forest reserves and cultural heritage sites which can improve tourism."
However, he noted, "The impact of COVID-19 is making it extremely difficult for many of the hospitality industry's establishments to continue paying workers with a sharp drop in sales and income, resulting in job losses.
"Many hotels are already closing down because of low patronage and inability to meet up with payment of workers' salary, electricity bills and other operating expenses."
He also gave major challenges of the hospitality industry in Nigeria as poor energy supply and cynical global perspicacity, poor standardisation and flawed hotel classification.
Others are inconsistent regulatory environment and skilled labour shortage caused by a few entrepreneurs with little knowledge of the workings of the industry as well as different taxes being paid to various forms of government.
Saini however noted, "Nigeria's tourism sector, with its great potential, has not been explored maximally."
He also spoke about "Anabel Apartments and Suites, which he described as the latest bespoke boutique apartment hotel in Abuja, providing one of the highest quality accommodations and impeccable services to an expanding array of noble and appreciative customers.
With emphasis on building loyalty through high level of quality service, he said the hotel aimed to offer clients modern stylish and affordable apartments, suites and independent rooms for both short and long-term stay.
He said, "We have a well-equipped modern multipurpose hall, with good acrostic characteristics, ideal for conferences with seating capacity 200 guests' minimum, banquets and meetings.
"Do not be amazed, at this time, Anabel Apartments and Suites invites guests to experience African menu of culinary delights; though the hotel's in-house bar was a great place to relax hitherto, this allows guests to choose from a colorful assorted drinks stacked in finely cut-glass bottles.
"The new outdoor pool bar is another exciting offer. Standard features and facilities in Anabel are super king bed size, free high speed wifi connection, secure digital safe, laundry service, SPA, GYM, swimming pool and many more. Additionally, the hotel is strategically located at a serene niche in the highbrow Asokoro Residential District, Abuja."
Saini further explained that in relation to the cost per unit space and quality of accommodation, ANABEL offers the most competitive rate and value for money package amongst the prime apartment and hotels in Abuja.
PIB: Senate queries N98.4m payment for enlightenment campaign
96 firms bid for NNPC pipelines, depots' repairs
Chief of Defence Staff (CDS) General Lucky Irabor
The Chief of Defence Staff (CDS), Gen. Lucky Irabor, yesterday threatened that the Federal Government would not fail to activate alternative actions should the marketers of petroleum product fail to end the prolonged fuel scarcity.
The CDS and Nigerian National Petroleum Company Limited (NNPCL) held a meeting with Major Oil Marketers Association of Nigeria (MOMAN); the Depot Petroleum Products Marketers Association of Nigeria (DAPPMAN), and Nigerian Association of Road Transport Owners (NARTO) in Abuja.
The Group Chief Executive Officer of NNPCL, Malam Mele Kyari, said pricing was an issue and not petrol supply as NNPCL has over 800 million litres of petrol in marine and over 700 million litres on land across retail outlets, sufficient for 30 days.
"We do have 24-day sufficiency for AGO (diesel) and the aviation we have 45 days of stuffiness for ATK aviation fuel," he said.
He added that there is fuel in every depot and evacuation was ongoing.
The NNPC boss noted that petrol smuggling was on the rise as over 67million litres of petrol has been evacuated daily but the crisis has prevailed.
2023: Why Wike, allies can't publicly declare support for Tinubu or Peter Obi
Housewife, son jailed for beating in-law to death over meat
Hitmen group arrested, jailed after trying to subcontract assassination job to one another
"We have evidence now and we're following this through that some of our customers are actually taking products to other countries. And we'll get to the root of this. And the appropriate government security agencies will deal with this," Kyari said.
The NNPC head also blamed the marketers, saying they did not follow the official petrol price rate at the depots and increased prices arbitrarily as some depots sell from N172 to N260/l above the agreed price, saying the marketers could not buy at that rate and sell at official rate.
"We have challenged IPMAN to bring documents on depots selling at N260 to them, but no one will bring a record,'' he added.
The Chief Executive, Nigerian Midstream and Downstream Petroleum Regulatory Authority (NMDPRA), Farouk Ahmed, confirmed there were several pacts with the marketers and transporters but such deals had not been followed through.
"But again, the more we agree, the more you lift the lever. We cannot continue like that," he said.
He said recently NMDPRA sanctioned seven depots as deterrents but that did not work.
He urged marketers to help provide names of depots selling above ex-depot price but they refused.
CDS Irabor said: "It's a crisis of internal nature which security and Police should lead but if it gets above that, there is an alternative.
"If there is no solution, let me reiterate that the government is not handicapped and there is an alternative and we pray that we don't get to the level where the alternative will be activated," Irabor said.
The Inspector General of Police Usman Alkali Baba, said the problem is in distribution, and urged operators for increased monitoring of the process.
"I think it is our role to assist the NNPC in monitoring the process of distribution if that will help us leverage the problem."
Chairman of the Major Oil Marketers Association of Nigeria (MoMAN) Adetunji Oyebanji, said there are other costs that operators incur outside the ex-depot price. As he urged members to work to ensure products are supplied at the official rate.
Chairman of the Depot and Petroleum Products Marketers Association of Nigeria (DAPPMAN), Mrs Winifred Akpani, said the depot owners met last week on how to solve the price problem and distribution too.
She urged NNPC to only deliver products to depots (members) that will supply the right way, alleging that DAPPMAN does not regulate depot owners who are non-members.
"We have all determined to ensure that we can help where we can help," adding that profiteering is causing many problems to the country.
NARTO president, Yusuf Othman, lamented the increase in freight rate due to market reality saying officially it is N42 per kilometre but in reality it's over N50 and so truckers give preference to marketers that pay cash and the market rate.
He decried the rising cost of buying trucks which he now said is over N60m as well as rising diesel cost of N880/l.
He noted that only major marketers pay twice for freight and that only OVH/NNPC give diesel at rebate, others do not.
According to Nigeria Union of Petroleum and Natural Gas Workers (NUPENG), President, Comrade Williams Akporeha, said marketers have no right to increase the price because petrol is subsidized.
"Our position at NUPENG is that any depot or filling station that sells above the price must have the wrath of Nigerians to face," he said.
The price of petrol across the country averaged between N380 and N400 per litre yesterday as the scarcity of the product assumed a disturbing dimension, nearly grinding economic activities.
Our correspondent who monitored some petrol stations in Aba, the commercial nerve of Abia state reports that most major marketers were out of stock of the product.
A visit to MRS filing by Asa road and among others revealed that they dispensed their PMS to customers at N400 per liter.
Commercial bus and tricycle operators operating within Umuahia capital city and Aba have since increased their fares with N50, N100 or more depending on the distance.
In Osun State, petrol was sold for N400, N370 and N365 per liter.
Although there is no long queues at the petrol stations selling at these prices, there are still are still long queues in other stations where it is sold for cheaper rates.
Long queues still surfaces at Bovas, NNPC, Matrix, NIPCO among others in the city.
Residents of Makurdi, Benue State capital and its environs are passing through hell to buy petrol too.
Yesterday, petrol was sold at #355 per litre in all the Independent marketers filing stations in Makurdi.
Getting the products was difficult as motorist remained on long queue for hours lamenting in frustration
The situation remained same in Adamawa State.
Car owners and commercial vehicle operators queued up in the few filling stations dispensing fuel where prices ranged at between N370 and N390 per litre within the state capital, Yola, and as much as N500 per litre in rural communities in the southern and northern tips of the state.
The whole of Yola had just one NNPC mega station selling fuel at the 'sane' price of N199 per litre yesterday, but the queue is usually so long that only people with the luxury of servants or unattached staff could send such persons, usually to buy large volumes of the commodity.
In Kaduna State, scarcity of petrol persisted in Kaduna, as price of the product reached N625 in the black market.
Also, our correspondents observed that, few major and independent petrol stations dispensing petrol for N210 per litre, had unprecedented queue, while filing stations on the outskirts of the metropolis, especially on Kaduna-Zaria highway, Kaduna-Abuja and Kaduna-Kachia roads, were selling for between N350 to N380 per litre.
The Nigeria Midstream and Down Stream Petroleum Regulatory Authority (NMDPRA) said it has intensified routine patrol and monitoring of servicing stations to enhance steady fuel supply in Adamawa.
While going round some of the filling stations in Yola , it was observed that a team of officials led by the State Coordinator of the Regulatory Agency directed all filling stations which had products to begin selling to consumers or risked being sanctioned.
In Edo State, Godwin Obaseki led administration promised quick end to the scarcity and hike in the price of Premium Motor Spirit (PMS), thereby receiving 780,000 litres of petrol.
It also set up of a task force to monitor the distribution and sale of petrol in filling stations across the 18 local government areas of the Southsouth state.
Edo Commissioner for Mining and Energy, Ethan Uzamere, an engineer, who was accompanied by his counterpart in the Ministry of Communication and Orientation, Chris Nehikhare, and the Special Adviser to Obaseki on Media Projects, Crusoe Osagie, made the disclosure yesterday afternoon in Benin at a news conference.
The news conference took place after the meeting between the representatives of Edo government and leaders of the protesting Civil Society Organisations (CSOs) in the state.
Uzamere revealed that the supplied product (780,000 litres) would be distributed among the major and independent marketers of petroleum products in Edo's three senatorial districts.
Consumers challenge Ikeja Electric over threat to withdraw prepaid meters
No Justification for current petrol scarcity – PENGASSAN
He stated that Edo government would monitor the sale of petrol in the state, in order to ensure that members of the public were not exploited by the owners of the various filling stations.
The commissioner for mining and energy in Edo disclosed that members of the petroleum monitoring task force would be unveiled later yesterday evening, while assuring that all efforts would be put in place to ensure that no product supplied to the state was diverted.
He said: "Edo government has heard the cries of the residents of the state on the issue of fuel scarcity in Edo. The state government is working to ensure the availability of the product.
"As part of the measures, Edo government has set up a task force to monitor the situation, and ensure that no resident of the state is exploited. We also wish to announce that already, the state has received 780,000 litres of petrol, which will be distributed to major and independent marketers.
"The task force, whose members will be announced before the close of work today (Tuesday), will monitor the distribution and sale of petroleum products in Edo State."
Nehikhare, in his remarks, gave an assurance that the welfare of the residents of Edo was very crucial, and being taken seriously by the state government.
Edo commissioner for communication and orientation also hailed leaders of CSOs for the maturity displayed in handling the protest that erupted on Monday, over petrol scarcity and price hike, while assuring that Obaseki's administration would continue to engage all the major stakeholders, in order to find a lasting solution to the fuel challenge.
Osagie, while also speaking, noted that part of the duties of the task force's members would be to monitor prices of petroleum products in Edo, while warn the marketers against arbitrary increase in the prices of the products,.declaring that anyone caught would be severely punished according to the dictates of the law.
Lagos announces 10-week traffic diversion on Lagos-Ibadan expressway
Lagos State Government has announced traffic diversion for 10 weeks on the Lagos-Ibadan expressway from the Old Tollgate to Berger section of the road.
The traffic diversion from Monday, January 30, 2023 to Friday, April 15, 2023, is in continuation of the ongoing rehabilitation work on the Lagos-Ibadan expressway by the Federal Ministry of Works and Housing.
This is contained in a statement issued on Friday by the Lagos State Commissioner for Transportation, Dr Frederic Oladeinde.
He however said going by the notification received, the construction would be carried out in short segments to minimise inconveniences for motorists while traffic on the Ibadan-bound carriageway would be narrowed to two lanes to allow for the reconstruction of half of the Ibadan-bound carriageway.
The commissioner explained that the U-turn in front of the Lagos State Emergency Centre will be temporarily closed to traffic, adding that motorists on the expressway will be diverted to the next U-turn at the Old Toll Gate by the traffic control point. In the same vein, Traffic from CMD Road intending to connect 7UP and Motorways on the Lagos bound carriageway will make use of the Old Tollgate/Traffic Point U–turn as well.
While emphasizing that trucks and heavy-duty vehicles will be diverted to Ojota Interchange, Oladeinde informed that traffic on CMD Road inbound the Expressway will be diverted to the entry point besides the FMW weighbridge to access the expressway on a contraflow as the exit route to the expressway by Caleb International School will equally be temporarily closed, adding that CMD Road will be used as an alternative for the displaced Ibadan bound traffic.
He appealed to the citizenry to shun indiscriminate stopping, waiting, and parking along CMD Road to complement the efforts of the Traffic Management Team deployed to manage vehicular movement.
He also said that signs showing directions would be mounted along the road to guide motorists.
Gunmen behead Imo council boss after N6m ransom
Gunmen have killed the sole administrator of Ideato North Local Government Area in Imo State, Chris Ohizu, two days after he was abducted.
Ohizu was abducted on Friday along with two other residents in his country home at Imoko in the Arondizuogu area.
The attackers also set his residence and vehicles ablaze.
The family of the late LGA boss was said to have paid N6m ransom to the gunmen to secure his release.
They reportedly collected the money and still went ahead to kill him.
Videos showing the battered head of the LGA boss appeared on social media in the early hours of Monday.
In one of the videos, the gunmen threatened to also attack the Imo State Governor, Hope Uzodimma, and other residents of the state.
Imo has witnessed a spate of violent attacks by gunmen in recent times .
The incident is coming some days after an about-to-wed couple was killed in Arondizogu, Ideato orth LGA.
Henry Okoye, Imo police spokesperson, said the police commenced investigation into the matter, adding that the command would soon release a statement on the incident.


text:
import React from 'react';
import CSSModules from 'react-css-modules';

// Styles
import styles from './index.scss';

const propTypes = {
};

const Footer = () => (

        Incidents data is provided realtime by Crysis CMS.
        For more details visit our Facebook and Twitter pages.

);

Footer.propTypes = propTypes;

export default CSSModules(Footer, styles);

redpajama_set_name: RedPajamaGithub


text:
<?php

namespace Eddmash\PowerOrm\Model\Query\Compiler;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Statement;
use Doctrine\DBAL\Types\Type;
use Eddmash\PowerOrm\Backends\ConnectionInterface;
use Eddmash\PowerOrm\Exception\FieldError;
use Eddmash\PowerOrm\Exception\KeyError;
use Eddmash\PowerOrm\Exception\NotImplemented;
use Eddmash\PowerOrm\Exception\QueryException;
use Eddmash\PowerOrm\Helpers\ArrayHelper;
use Eddmash\PowerOrm\Model\Field\Field;
use Eddmash\PowerOrm\Model\Field\RelatedField;
use Eddmash\PowerOrm\Model\Lookup\BaseLookup;
use Eddmash\PowerOrm\Model\Meta;
use Eddmash\PowerOrm\Model\Model;
use Eddmash\PowerOrm\Model\Query\Expression\BaseExpression;
use Eddmash\PowerOrm\Model\Query\Expression\Col;
use Eddmash\PowerOrm\Model\Query\Expression\OrderBy;
use Eddmash\PowerOrm\Model\Query\Joinable\BaseJoin;
use Eddmash\PowerOrm\Model\Query\Query;
use const Eddmash\PowerOrm\Model\Query\ORDER_DIRECTION;

/**
 * This file is part of the powerorm package.
 *
 * (c) Eddilbert Macharia (http://eddmash.com)<edd.cowan@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
class SqlFetchCompiler extends SqlCompiler
{
    public $klassInfo = [];

    public $annotations = [];

    public $select = [];

    public $where;

    protected function preSqlSetup()
    {
        // check if any of the tables have been used, if not initialize
        $noneUsed = true;
        foreach ($this->query->tablesAliasList as $tablesAlias) {
            if (!empty($this->query->aliasRefCount[$tablesAlias])) {
                $noneUsed = false;
            }
        }

        if ($noneUsed) {
            $this->query->getInitialAlias();
        }

        list($select, $klassInfo, $annotations) = $this->getSelect();
        $this->select = $select;
        $this->klassInfo = $klassInfo;
        $this->annotations = $annotations;

        $orderBy = $this->getOrderBy();
        $groupBy = $this->getGroupBy($this->select, $orderBy);
        $this->where = $this->query->where;

        return [$orderBy, $groupBy];
    }

    /**
     * @return array
     */
    public function getSelect()
    {
        $klassInfo = [];
        $select = [];
        $annotations = [];
        //keeps track of what position the column is at, helpful because of we
        // perform a join we might a column name
        // thats repeated a cross multiple tables, we can use the colmn names
        // to map back to model since it will cause
        // issues
        $selectIDX = 0;
        if ($this->query->useDefaultCols) {
            $selectList = [];
            /* @var $field Field */
            foreach ($this->getDefaultCols() as $col) {
                $alias = false;
                $select[] = [$col, $alias];
                $selectList[] = $selectIDX;
                ++$selectIDX;
            }
            $klassInfo['model'] = $this->query->model;
            $klassInfo['select_fields'] = $selectList;
        }

        // this are used when return the result as array so they are not
        // populated to any model
        foreach ($this->query->select as $col) {
            $alias = false;
            $select[] = [$col, $alias];
            ++$selectIDX;
        }

        // handle annotations
        foreach ($this->query->annotations as $alias => $annotation) {
            $annotations[$alias] = $selectIDX;
            $select[] = [$annotation, $alias];
            ++$selectIDX;
        }

        // handle select related

        if ($this->query->selectRelected) {
            $klassInfo['related_klass_infos'] = $this->getRelatedSelections($select);
            $this->getSelectFromParent($klassInfo);
        }

        return [$select, $klassInfo, $annotations];
    }

    public function getOrderBy()
    {
        // an array of arrays that indicate a colname and its a reference
        // e.g. [['name', false]]
        $orderByList = [];
        if (!$this->query->defaultOrdering) {
            $ordering = $this->query->orderBy;
        } else {
            $ordering = ($this->query->orderBy) ?
                $this->query->orderBy : $this->query->getMeta()->getOrderBy();
        }

        if ($this->query->standardOrdering) {
            list($asc, $desc) = ORDER_DIRECTION['ASC'];
        } else {
            list($asc, $desc) = ORDER_DIRECTION['DESC'];
        }

        foreach ($ordering as $orderName) {
            list($colName, $orderDir) = Query::getOrderDirection($orderName, $asc);
            $descending = ('DESC' == $orderDir) ? true : false;

            if ($orderName instanceof BaseExpression) {
                $order = $orderName;
                if (!$orderName instanceof OrderBy) {
                    $order = $orderName->ascendingOrder();
                }
                if (!$this->query->standardOrdering) {
                    $order = $order->reverseOrdering();
                }
                $orderByList[] = [$order, false];

                continue;
            }

            if (array_key_exists($colName, $this->query->annotations)) {
                $orderByList[] = [
                    new OrderBy($this->query->annotations[$colName], $descending),
                    false,
                ];

                continue;
            }

            // we are here we still have a string name, we need to convert
            // it to an expression that we can use
            if ($colName) {
                $orderByList = array_merge(
                    $orderByList,
                    $this->resolveOrderName(
                        $orderName,
                        $this->query->getMeta(),
                        null,
                        $asc
                    )
                );
            }
        }

        $seen = new ArrayCollection();
        $results = [];
        /* @var $orderExp BaseExpression */
        foreach ($orderByList as $orderitem) {
            list($orderExp, $isRef) = $orderitem;
            $resolved = $orderExp->resolveExpression(
                $this->query,
                true
            );
            list($sql, $params) = $this->compile($resolved);

            preg_match(
                "/(?P<name>.*)\s(?P<order>ASC|DESC)(.*)/",
                'demo_entry.id DESC',
                $match
            );
            $strippedSql = $match['name'];

            // ensure we dont add the same field twice
            if ($seen->contains([$strippedSql, $params])) {
                continue;
            }
            $seen->add([$strippedSql, $params]);
            $results[] = [$resolved, [$sql, $params, $isRef]];
        }

        return $results;
    }

    public function getGroupBy($select, $orderBy)
    {
        if (is_null($this->query->groupBy)) {
            return [];
        }

        $expressions = [];
        if (!$this->query->groupBy) {
            foreach ($this->query->groupBy as $item) {
                if (!$item instanceof SqlCompilableinterface) {
                    //                    $item = $item->re
                    throw new NotImplemented();
                } else {
                    $expressions[] = $item;
                }
            }
        }
        // Note that even if the group_by is set, it is only the minimal
        // set to group by. So, we need to add cols in select, order_by, and
        // having into the select in any case.

        /* @var $exp BaseExpression */
        foreach ($this->select as $colInfo) {
            list($exp, $alias) = $colInfo;
            foreach ($exp->getGroupByCols() as $groupByCol) {
                $expressions[] = $groupByCol;
            }
        }

        foreach ($orderBy as $orderItems) {
            list($exp, $opts) = $orderItems;
            list($sql, $params, $isRef) = $opts;
            if ($exp->containsAggregates()) {
                continue;
            }
            if ($isRef) {
                continue;
            }
            $expressions = array_merge($expressions, $exp->getSourceExpressions());
        }

        $results = [];
        $seen = new ArrayCollection();
        //todo having
        foreach ($expressions as $expression) {
            list($sql, $params) = $this->compile($expression);
            if (!$seen->contains([$sql, $params])) {
                $results[] = [$sql, $params];
                $seen[] = [$sql, $params];
            }
        }

        return $results;
    }

    /**     *
     * Returns the fields in the current models/those represented by the alias as Col expression, which know how to be
     * used in a query.
     *
     * @param null       $startAlias
     * @param Meta|null  $meta
     * @param Model|null $fromParent
     *
     * @return Col[]
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    public function getDefaultCols($startAlias = null, Meta $meta = null, $fromParent = null)
    {
        $fields = [];
        if (is_null($meta)) {
            $meta = $this->query->getMeta();
        }
        if (is_null($startAlias)) {
            $startAlias = $this->query->getInitialAlias();
        }

        foreach ($meta->getConcreteFields() as $field) {
            $model = $field->scopeModel->getMeta()->getConcreteModel();
            if ($meta->getNSModelName() == $model->getMeta()->getNSModelName()) {
                $model = null;
            }
            if ($fromParent && !is_null($model) &&
                is_subclass_of(
                    $fromParent->getMeta()->getConcreteModel(),
                    $model->getMeta()->getConcreteModel()->getMeta()->getNSModelName()
                )
            ) {
                // Avoid loading data for already loaded parents.
                // We end up here in the case selectRelated() resolution
                // proceeds from parent model to child model. In that case the
                // parent model data is already present in the SELECT clause,
                // and we want to avoid reloading the same data again.
                continue;
            }
            //todo if we ever do defer
            $fields[] = $field->getColExpression($startAlias);
        }

        return $fields;
    }

    /**
     * Used to get information needed when we are doing selectRelated(),.
     *
     * @param           $select
     * @param Meta|null $meta       the from which we expect to find the related fields
     * @param null      $rootAlias
     * @param int       $curDepth
     * @param null      $requested  the set of fields to use in selectRelated
     * @param null      $restricted true when we are to use just a set of relationship fields
     *
     * @return array
     *
     * @throws FieldError
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    private function getRelatedSelections(
        &$select,
        Meta $meta = null,
        $rootAlias = null,
        $curDepth = 1,
        $requested = null,
        $restricted = null
    ) {
        $relatedKlassInfo = [];

        if (!$restricted && $this->query->maxDepth && $curDepth > $this->query->maxDepth) {
            //We've recursed far enough; bail out.
            return $relatedKlassInfo;
        }
        $foundFields = [];
        if (is_null($meta)) {
            $meta = $this->query->getMeta();
            $rootAlias = $this->query->getInitialAlias();
        }

        if (is_null($requested)) {
            if (is_array($this->query->selectRelected)) {
                $requested = $this->query->selectRelected;
                $restricted = true;
            } else {
                $restricted = false;
            }
        }

        foreach ($meta->getNonM2MForwardFields() as $field) {
            $fieldModel = $field->scopeModel->getMeta()->getConcreteModel();
            $foundFields[] = $field->getName();

            if ($restricted) {
                // first ensure the requested fields are relational
                // and that we are not trying to use a non-relational field
                // we are getting the next field in the spanning relationship i.e author__user so we are getting user.
                // if not a spanning relationship we return an empty array.
                $nextSpanField = ArrayHelper::getValue($requested, $field->getName(), []);
                if (!$field->isRelation) {
                    if ($nextSpanField || in_array($field->getName(), $requested)) {
                        throw new FieldError(
                            sprintf(
                                "Non-relational field given in selectRelated: '%s'. ".
                                'Choices are: %s',
                                $field->getName(),
                                implode(', ', $this->query->getFieldChoices())
                            )
                        );
                    }
                }
            } else {
                $nextSpanField = false;
            }

            if (!static::selectRelatedDescend($field, $restricted, $requested)) {
                continue;
            }
            $klassInfo = [
                'model' => $field->relation->getToModel(),
                'field' => $field,
                'reverse' => false,
                'from_parent' => false,
            ];

            list($_, $_, $joinList, $_) = $this->query->setupJoins([$field->getName()], $meta, $rootAlias);
            $alias = end($joinList);
            $columns = $this->getDefaultCols($alias, $field->relation->getToModel()->getMeta());
            $selectFields = [];
            foreach ($columns as $column) {
                $selectFields[] = count($select);
                $select[] = [$column, false];
            }
            $klassInfo['select_fields'] = $selectFields;

            // now go the next field in the spanning relationship i.e. if we have author__user, we just did author
            // so no we do user and so in
            $nextKlassInfo = $this->getRelatedSelections(
                $select,
                $field->relation->getToModel()->getMeta(),
                $alias,
                $curDepth + 1,
                $nextSpanField,
                $restricted
            );
            $klassInfo['related_klass_infos'] = $nextKlassInfo;
            $relatedKlassInfo[] = $klassInfo;
        }

        if ($restricted) {
            $reverseFields = [];
            // we follow back relationship that represent single valuse this most will be relation field that are
            // unique e.g. OneToOneField or ForeignKey with unique set to true.
            // this meas we don't consider m2m fields even if they are unique

            foreach ($meta->getReverseRelatedObjects() as $field) {
                if ($field->unique && !$field->manyToMany) {
                    $model = $field->relation->getFromModel();
                    $reverseFields[] = [$field, $model];
                }
            }

            /* @var $rField RelatedField */
            /* @var $rModel Model */
            foreach ($reverseFields as $reverseField) {
                $rField = $reverseField[0];
                $rModel = $reverseField[1];

                if (!$this->selectRelatedDescend($rField, $restricted, $requested, true)) {
                    continue;
                }
                $relatedFieldName = $rField->getRelatedQueryName();

                $foundFields[] = $relatedFieldName;

                list($_, $_, $joinList, $_) = $this->query->setupJoins([$relatedFieldName], $meta, $rootAlias);
                $alias = end($joinList);
                $fromParent = false;
                if (
                    is_subclass_of($rModel, $meta->getNSModelName()) &&
                    $rModel->getMeta()->getNSModelName() === $meta->getNSModelName()
                ) {
                    $fromParent = true;
                }

                $rKlassInfo = [
                    'model' => $rModel,
                    'field' => $rField,
                    'reverse' => true,
                    'from_parent' => $fromParent,
                ];

                $rColumns = $this->getDefaultCols($alias, $rModel->getMeta(), $this->query->model);

                $rSelectFields = [];
                foreach ($rColumns as $column) {
                    $selectFields[] = count($select);
                    $select[] = [$column, false];
                }
                $rKlassInfo['select_fields'] = $rSelectFields;

                $rNextSpanField = ArrayHelper::getValue($requested, $rField->getRelatedQueryName(), []);

                $rNextKlassInfo = $this->getRelatedSelections(
                    $select,
                    $rModel->getMeta(),
                    $alias,
                    $curDepth + 1,
                    $rNextSpanField,
                    $restricted
                );
                $rKlassInfo['related_klass_infos'] = $rNextKlassInfo;

                $relatedKlassInfo[] = $rKlassInfo;
            }

            $fieldsNotFound = array_diff(array_keys($requested), $foundFields);

            if ($fieldsNotFound) {
                throw new FieldError(
                    sprintf(
                        'Invalid field name(s) given in select_related: %s. Choices are: %s',
                        implode(', ', $fieldsNotFound),
                        implode(', ', $this->query->getFieldChoices())
                    )
                );
            }
        }

        return $relatedKlassInfo;
    }

    /**
     * For each related klass, if the klass extends the model whose info we get, we need to add the models class to
     * the select_fields of the related class.
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    private function getSelectFromParent(&$klassInfo)
    {
        foreach ($klassInfo['related_klass_infos'] as &$relatedKlassInfo) {
            // get fields from parent and add them to the related class.
            if ($relatedKlassInfo['from_parent']) {
                $relatedKlassInfo['select_fields'] = array_merge(
                    $klassInfo['select_fields'],
                    $relatedKlassInfo['select_fields']
                );
            }

            // do the same for the related class fields incase it has own children.
            $this->getSelectFromParent($relatedKlassInfo);
        }
    }

    private function getDistinct()
    {
    }

    /**
     * @return array
     *
     * @throws KeyError
     */
    public function getFrom()
    {
        $result = [];
        $params = [];

        $refCount = $this->query->aliasRefCount;

        foreach ($this->query->tablesAliasList as $alias) {
            if (!ArrayHelper::getValue($refCount, $alias)) {
                continue;
            }

            try {
                /** @var $from BaseJoin */
                $from = ArrayHelper::getValue(
                    $this->query->tableJoinsMap,
                    $alias,
                    ArrayHelper::STRICT
                );

                list($fromSql, $fromParams) = $this->compile($from);
                array_push($result, $fromSql);

                $params = array_merge($params, $fromParams);
            } catch (KeyError $e) {
                continue;
            }
        }

        return [$result, $params];
    }

    /**
     * @param bool $chunked
     *
     * @return \Doctrine\DBAL\Statement
     *
     * @throws QueryException
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    public function executeSql($chunked = false)
    {
        try {
            list($sql, $params) = $this->asSql($this, $this->connection);
            $stmt = $this->connection->prepare($sql);
            foreach ($params as $index => $value) {
                // Columns/Parameters are 1-based,
                // so need to start at 1 instead of zero
                ++$index;
                $stmt->bindValue($index, $value);
            }

            $stmt->execute();

            return $stmt;
        } catch (\Exception $e) {
            throw QueryException::fromThrowable($e);
        }
    }

    /**
     * Ensure results are converted back to there respective php types.
     *
     * @param $values
     *
     * @return array
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    public function preparedResults($values)
    {
        $preparedValues = [];

        /* @var $col Col */
        /* @var $field Field */
        foreach ($this->select as $pos => $selectColumn) {
            $col = $selectColumn[0];
            $field = $col->getOutputField();
            $val = ArrayHelper::getValue($values, $pos);
            // first use the inbuilt converters
            try {
                $val = Type::getType(
                    $field->dbType($this->connection)
                )->convertToPHPValue($val, $this->connection->getDatabasePlatform());
            } catch (DBALException $exception) {
            }

            // use the field converters if any were provided by the user.
            $converters = $field->getDbConverters($this->connection);

            if ($converters) {
                foreach ($converters as $converter) {
                    $val = call_user_func($converter, $this->connection, $val, $field);
                }
            }
            $preparedValues[] = $val;
        }

        return $preparedValues;
    }

    public function getResultsIterator(Statement $statement)
    {
        // since php pdo normally returns an assoc array, we ask it return the values in form an array indexed
        // by column number as returned in the corresponding result set, starting at column 0.
        // this to avoid issues where joins result in columns with the same name e.g. user.id joined by blog.id
        $results = $statement->fetchAll(\PDO::FETCH_NUM);

        foreach ($results as $row) {
            yield $this->preparedResults($row);
        }
    }

    /**
     * Creates the SQL for this query. Returns the SQL string and list of parameters.
     *
     * @param CompilerInterface $compiler
     * @param Connection        $connection
     *
     * @return array
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     *
     * @throws KeyError
     * @throws NotImplemented
     */
    public function asSql(
        CompilerInterface $compiler = null,
        ConnectionInterface $connection = null
    ) {
        list($orderBy, $groupBy) = $this->preSqlSetup();
        $params = [];
        $distinctFields = $this->getDistinct();
        list($fromClause, $fromParams) = $this->getFrom();

        $results = ['SELECT'];

        // todo DISTINCT
        if ($this->query->distinct) {
            $results[] = $this->connection->getOperations()->distinctSql($distinctFields);
        }

        $cols = [];

        /* @var $col Col */
        foreach ($this->select as $colInfo) {
            list($col, $alias) = $colInfo;

            list($colSql, $colParams) = $this->compile($col);
            if ($alias) {
                $cols[] = sprintf('%s AS %s', $colSql, $alias);
            } else {
                $cols[] = $colSql;
            }
            $params = array_merge($params, $colParams);
        }

        $results[] = implode(', ', $cols);

        $results[] = 'FROM';

        $results = array_merge($results, $fromClause);
        $params = array_merge($params, $fromParams);

        if ($this->where) {
            list($sql, $whereParams) = $this->compile($this->where);
            if ($sql) {
                $results[] = 'WHERE';
                $results[] = $sql;
                $params = array_merge($params, $whereParams);
            }
        }

        $grouping = [];
        if ($groupBy) {
            foreach ($groupBy as $groupbyItem) {
                list($groupBySql, $groupByParams) = $groupbyItem;
                $grouping[] = $groupBySql;
                $params = array_merge($params, $groupByParams);
            }
        }

        if ($grouping) {
            //todo distinct
            $results[] = sprintf('GROUP BY %s', implode(', ', $grouping));
        }

        if ($orderBy) {
            $ordering = [];
            foreach ($orderBy as $orderByItem) {
                list($_, $opts) = $orderByItem;
                list($orderSql, $orderParams, $_) = $opts;
                $ordering[] = $orderSql;
                $params = array_merge($params, $orderParams);
            }
            $results[] = sprintf('ORDER BY %s', implode(', ', $ordering));
        }

        if ($this->query->limit) {
            $results[] = 'LIMIT';
            $results[] = $this->query->limit;
        }

        if (!is_null($this->query->offset)) {
            $results[] = 'OFFSET';
            $results[] = $this->query->offset;
        }

        return [implode(' ', $results), $params];
    }

    /**
     * Tries ot resolve a name like 'username' into a model field and then into
     * Col expression suitable for making queries.
     *
     * @param        $col
     * @param Meta   $meta
     * @param null   $alias
     * @param string $defaultOrder
     * @param array  $alreadyResolved helps avoid infinite loops
     *
     * @return array
     *
     * @throws KeyError
     * @throws NotImplemented
     * @throws \Eddmash\PowerOrm\Exception\ValueError
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     */
    private function resolveOrderName(
        $col,
        Meta $meta,
        $alias = null,
        $defaultOrder = 'ASC',
        &$alreadyResolved = []
    ) {
        list($col, $order) = Query::getOrderDirection($col, $defaultOrder);

        $nameParts = explode(BaseLookup::LOOKUP_SEPARATOR, $col);

        /* @var $targetField Field */
        list(
            $relationField, $targetFields, $alias, $joinList, $paths,
            $meta
            ) = $this->_setupJoins($nameParts, $meta, $alias);

        if ($relationField->isRelation && $meta->getOrderBy() &&
            empty($relationField->getAttrName())) {
            throw new NotImplemented(
                'This capability is yet to be implemented'
            );
        }

        list($targets, $alias, $joinList) = $this->query->trimJoins(
            $targetFields,
            $joinList,
            $paths
        );

        $fields = [];

        $descending = ('DESC' == $order) ? true : false;

        // convert the names to expressions

        /** @var $target Field */
        foreach ($targets as $target) {
            $fields[] = [
                new OrderBy($target->getColExpression($alias), $descending),
                false,
            ];
        }

        return $fields;
    }

    /**
     * A helper method for get_order_by and get_distinct.
     *
     * Note that get_ordering and get_distinct must produce same target
     * columns on same input, as the prefixes of get_ordering and get_distinct
     * must match. Executing SQL where this is not true is an error.
     *
     * @param      $nameParts
     * @param Meta $meta
     * @param null $rootAlias
     *
     * @since  1.1.0
     *
     * @author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
     *
     * @return array
     */
    private function _setupJoins($nameParts, Meta $meta, $rootAlias = null)
    {
        if (is_null($rootAlias)) {
            $rootAlias = $this->query->getInitialAlias();
        }

        list(
            $field, $targets, $joinList, $paths,
            $meta
            ) = $this->query->setupJoins($nameParts, $meta, $rootAlias);
        $alias = end($joinList);

        return [$field, $targets, $alias, $joinList, $paths, $meta];
    }

    public function hasResults()
    {
        $statement = $this->executeSql();

        return false === empty($statement->fetch());
    }
}