Polymer semiconductors, which can be processed on large-area and mechanically flexible substrates with low cost, are considered as one of the main components for future plastic electronics. However, they, especially n-type semiconducting polymers, currently lag behind inorganic counterparts in the charge carrier mobility – which characterizes how quickly charge carriers (electron) can move inside a semiconductor – and the chemical stability in ambient air.
Recently, a joint research team, consisting of Prof. Kilwon Cho and Dr. Boseok Kang (Dept. of Chemical Engineering, POSTECH), and Prof. Yun-Hi Kim and Dr. Ran Kim (Dept. of Chemistry, Gyungsang National University), has developed a new n-type semiconducting polymer with superior electron mobility and oxidative stability. The research outcome was published in Journal of the American Chemical Society (JACS) as a cover article and highlighted by the editors in JACS Spotlights.
The team modified a n-type conjugated polymer with semi-fluoroalkyl side chains – which are found to have several unique properties, such as hydrophobicity, rigidity, thermal stability, chemical and oxidative resistance, and the ability to self-organize. As a result, the modified polymer was shown to form a superstructure composed of polymer backbone crystals and side-chain crystals, resulting in a high degree of semicrystalline order. The team explained this phenomenon is attributed to the strong self-organization of the side chains and significantly boosts charge transport in polymer semiconductors.
Prof. Cho emphasized "We investigated the effects of semi-fluoroalkyl side chains of conjugated polymers at the molecular level and suggested a new strategy to design highly-performing polymeric materials for next-generation plastic electronics".
This research was supported by the Center for Advanced Soft Electronics under the Global Frontier Research Program and the National Research Foundation (NRF) of Korea funded by the Ministry of Science, ICT and Future Planning.


As well as our people internally, the NEF Consulting team includes external associates with a range of expertise and experience of the public, private and not-for-profit sectors, both from within the UK and globally. Many of them have previously worked for the New Economics Foundation.
The following associates work with us regularly. For more details, click on their image or name below. For details of the internal team, return to the Our People page.
Please direct all enquiries for associates through our general enquiries email.


Why EPS (Expanded Polystyrene) and not EPP (Expanded Polypropylene)?
Hi there! We have been getting tons of recent queries about why are we having EPS beads (Expanded Polystyrene Beads) in our bean bags instead of the rumoured to be much better EPP (Expanded Polypropylene Beads) in our quality bean bags? Well, we have the answers!
It is true that EPP last a longer time as compared to EPS. However, there are a couple of reasons why we at Bean Bag Mart do not believe in using EPP.
Being the pioneers in the Bean Bags industry in Singapore, (we have been around for more than 20 years!) we always strive to bring the best comfort and value for our clients.
Firstly, EPP beads are much denser as compared to EPS beads. As a result? It makes the bean bag a good 30 to 40% heavier at the same volume. We believe that a Bean Bag is supposed to be lightweight and easy to move around!
Secondly, it is definitely not true that EPS beads has a strong chemical smell. The smell only occurs after the Polystyrene beads are being heat blasted to its expanded size. After aging and airing, the EPS beads are odourless.
Thirdly, as EPP beads are denser, it's much harder to 'flow' within the bean bag and thus making the bean bag too firm and uncomfortable! You should be able to sink into the bean bag with the bag moulding your body shape. Why get a firm bean bag?! Bean bags are supposed to be able to give you proper support of your back when you lie into it and not be fixed shape that does not mould to your body.
Fourthly, EPS beads are cheaper to replace and although it does not last a longer time than EPP, the cheaper costs makes up for the replacement!
Last but not least, we have 2 exact same models of bean bags here in our showroom each filled with EPS and EPP. Drop by and test it out to see the difference! You will be amazed!
The lightweight and soft EPS beads that moulds to your body shape seamlessly.
The denser, heavier and firmer EPP beads.
Hi! I've just bought a bag of EPS beads and filled a beanbag, but they do have a very strong smell. You mentioned above that after aging and airing the smell goes away, is it possible that still needs to happen now that ive opened the bag and the smell will eventually go away?
Can you please give me a guide to the price difference between EPS and EPP?
There is nothing much to say when you have said almost all yourself except the part of the weight problem (besides the high fire risk in homes) which oddly I believe you must have overlook due to your busy schedule. Anyway, we always give top priority to the customer's request - EPS (just our recommendation) or EPP - we can do both - so how's that for service!
I'm Crystal from a Chinese factory which is professional on epp eps epo and others ,after read this articles ,I want to say that ,EPP is much better than EPS ,for the weight ,they are almost the same.BUT, EPP is more paddy than EPS .what the most important is ,EPP is a kind of healthy materials,it's Non-toxic and odorless ,while EPS contains benzene,you can search the benzene to find the harmful by yourself.


text:
WQED mini docs: Pittsburgh Women in World War II
Award-winning mini documentaries from the WQED archives are compiled into this new half-hour program. This episode showcases the wartime contributions of Pittsburgh-area women. Scheduled features (prior to final edit) include Florence Reynolds (WASP pilot), Lillie Lesesne (WAC nurse), Eleanor Berge (WAVE), Eva Turner (WAC), Sally Stephenson (WAVE), Laurette Smith Cribbins (home front "Rosie the Riveter") and Julia Parsons, who cracked German U-Boat code.
WQED mini docs: Pittsburgh Women in World War II aired on Mar 10, 2016.
Before the Last Chapter: Conversations About the End of Life
This panel discussion is focused on End of Life planning and the myriad of issues families, patients and healthcare providers face when confronted with the end of life.
Original airdate: Jun 29, 2011
Long Road Home
Long Road Home focuses on the compelling stories of Pittsburgh area veterans coping and healing with the emotional wounds of war, after combat in Iraq, Vietnam, Korea, and World War II. The documentary also explores current treatments and research into Post Traumatic Stress Disorder (PTSD) among returning veterans.
Original airdate: May 26, 2011
End of Life: Discussions on Dying & Dignity
Drilling For Answers: The Marcellus Shale Debate
This one-hour special explores the controversial issue of Marcellus Shale drilling in the Pittsburgh region. Hosted by Chris Moore, the program features guest panelists who are experts on various issues related to Marcellus Shale drilling. Tonia Caruso will field questions submitted through WQED's web site and Facebook page and present them to the panel.
Original airdate: Mar 31, 2011
Behind Closed Doors: A Town Hall Meeting on Domestic Violence
We'll hear from survivors, law enforcement, local women's shelters and mental health professionals working to help survivors and families put their lives back together. We will also air a special report on domestic violence along with clips from the documentary Telling Amy's Story.
Original airdate: Nov 18, 2010
The Marcellus Shale Debate: A Town Hall Meeting
Western Pennsylvania is sitting on what seems like an endless source of natural gas. The drilling promises jobs to a struggling economy, but at what cost? Environmental groups fear the drilling is a disaster waiting to happen and some homeowners say the process has already contaminated their drinking water.

redpajama_set_name: RedPajamaCommonCrawl


Vaclav Vytlacil (1892-1984), born in New York to Czech immigrant parents, was a longtime teacher at the Art Students League who played a role in promoting European modernism here in the 1930's. And as a founding member of the American Abstract Artists in 1936, he pushed actively for the recognition of home-grown American abstraction.
The 25 oils and works on paper in this show detail the course of his own painting between 1920 and the mid-1940's. Studying with Hans Hofmann in Munich from 1922 to 1926, Vytlacil learned a lot about Cezanne, as his early work here (presumably early, since much of it is, alas, undated) gives evidence. The angular distortions and broken planes in ''Still Life With Fruit and Decanter,'' a subtly colored composition of peaches and lemons in a basket, a crumpled cloth and a shiny vase on a tilted-up tabletop, pay lively tribute to the master.
By the 1930's, after studying the work of Picasso and Matisse in Paris, Vytlacil produced figural compositions, like the tempera on paper ''Woman at Mirror,'' a seated woman based on a synthesis of Picasso's neo-classical work. Around this time, too, he painted a group of semi-abstract New York cityscapes in which crowds of sketchy, ill-defined figures mill against massings of glamorous skyscrapers.


text:
Verbum Now February Preview Resources
February 1, 2017 By Verbum
For the month of February, Verbum Now members enjoy free access to:
Second Temple Period Collection (19 vols.)
The Second Temple Period Collection culls select academic work from a variety of disciplines in order to fully reveal the importance of this era's literary output and history. It features titles dedicated to the exposition of single topics, comprehensive histories, and commentaries on specific apocryphal and pseudepigraphal works that were composed during the Second Temple Period.
The Second Temple Period spans from roughly 515 B.C. to 70 A.D. (from the rebuilding of the Temple after the Babylonian exile to the destruction of the Temple by the Romans). This period of time covers both the span between the Old and New Testaments and the time during which nearly all the New Testament events took place. Studying the Second Temple Period, and the literature it produced, is therefore of paramount importance to understanding the cultural and historical background to the Christian scriptures.
The Second Temple Period Collection also includes Lorenzo DiTommaso's A Bibliography of Pseudepigrapha Research 1850-1999. This substantial volume covers nearly all secondary literature on pseudepigrapha research. A reference work without peer in English, and an invaluable resource for all those interested in the Pseudepigrapha.
Save Now on Last Month's Preview Resources
For a limited time, Verbum Now members also enjoy discounts on the following resources, which were featured as previews last month:
Tertullian and Paul
Select Works of Tertullian and Minucius Felix (2 vols.)
Not yet a Verbum Now member? Join today to get these great benefits, access to all the latest Verbum features, and more!
Filed Under: Verbum Now
Verbum 360 Training: Study a Bible Passage


text:
#ifndef NXOGRE_FLUIDDESCRIPTION_H
#define NXOGRE_FLUIDDESCRIPTION_H

#include "NxOgreStable.h"

#if NxOgreHasFluids == 1

#include "NxOgreCommon.h"
#include "NxOgreParticleData.h"
#include "NxOgreSimple.h"

namespace NxOgre
{

/** \brief
*/
class NxOgrePublicClass FluidDescription
{

  public: // Functions

  /** \brief FluidDescription constructor, all it does is call RigidBodyDescription::reset.
  */
                                               FluidDescription();

  virtual                                     ~FluidDescription();

  /** \brief Resets everything to their default values, and pointers are set to NULL.
  */
  void                                         reset();

  /** \brief Returns if the variables are in a valid range or not
  */
  bool                                         valid();

  /** \brief
  */
  SharedPointer<ParticleData>                  mParticleData;

  /** \brief
  */
  unsigned int                                 mMaxParticles;

  /** \brief
  */
  unsigned int                                 mNbReserveParticles;

  /** \brief
  */
  Real                                         mRestParticlesPerMetre;

  /** \brief
  */
  Real                                         mRestDensity;

  /** \brief
  */
  Real                                         mKernelRadiusMultiplier;

  /** \brief
  */
  Real                                         mMotionLimitMultiplier;

  /** \brief
  */
  Real                                         mCollisionDistanceMultiplier;

  /** \brief
  */
  unsigned int                                 mPacketSizeMultiplier;

  /** \brief
  */
  Real                                         mStiffness;

  /** \brief
  */
  Real                                         mViscosity;

  /** \brief
  */
  Real                                         mSurfaceTension;

  /** \brief
  */
  Real                                         mDamping;

  /** \brief
  */
  Real                                         mFadeInTime;

  /** \brief
  */
  Vec3                                         mExternalAcceleration;

  /** \brief
  */
  SimplePlane                                  mProjectionPlane;

  /** \brief
  */
  Real                                         mRestitutionForStaticShapes;

  /** \brief
  */
  Real                                         mDynamicFrictionForStaticShapes;

  /** \brief
  */
  Real                                         mStaticFrictionForStaticShapes;

  /** \brief
  */
  Real                                         mAttractionForStaticShapes;

  /** \brief
  */
  Real                                         mRestitutionForDynamicShapes;

  /** \brief
  */
  Real                                         mDynamicFrictionForDynamicShapes;

  /** \brief
  */
  Real                                         mStaticFrictionForDynamicShapes;

  /** \brief
  */
  Real                                         mAttractionForDynamicShapes;

  /** \brief
  */
  Real                                         mCollisionResponseCoefficient;

  /** \brief
  */
  unsigned int                                 mSimulationMethod;

  /** \brief
  */
  unsigned int                                 mCollisionMethod;

  /** \brief
  */
  GroupIdentifier                              mCollisionGroup;

  /** \brief
  */
  int4                                         mGroupsMask;

  /** \brief
  */
  MaterialIdentifier                           mForceFieldMaterial;

  /** \brief
  */
  unsigned int                                 mFlags;

  /** \brief Optional name.
  */
  String                                       mName;

  /** \brief
  */
  Compartment*                                 mCompartment;

}; // class FluidDescription

} // namespace NxOgre

#endif

#endif

redpajama_set_name: RedPajamaGithub


text:
Mortality trends for tuberculosis and sarcoidosis in English populations, 1979-2008.
Duncan ME., Goldacre MJ.
SETTING: Analysis of data sets that included both underlying and all contributing causes of death (together termed 'mentions'): the Oxford Record Linkage Study, 1979-2008, and England national data, 1995-2008. OBJECTIVE: To determine mortality trends for the granulomatous lung conditions tuberculosis (TB) and sarcoidosis in the Oxford region (1979-2008) and England (1995-2008). RESULTS: Mortality for mentions of TB in the Oxford region declined from 39.7 deaths per million population in 1979 to 9.0 in 2008. The corresponding rates for underlying cause were 17.1, falling to 4.5. In England, mortality rates from TB fell from 18.5/million in 1995 to 12.2 in 2008 (mentions), and from 9.3 in 1995 to 6.5 in 2008 (underlying cause). Numbers of deaths from sarcoidosis in Oxford were very small, and showed no significant trend. For the much larger England population, mortality rates based on mentions were 3.6/million in 1995 and 4.2 in 2008; the corresponding rates for sarcoidosis as underlying cause were 2.1 and 2.3. CONCLUSION: TB mortality is still declining in England, despite a recent resurgence in the prevalence of the disease. Mortality from sarcoidosis has been largely stable. The conventional statistic of underlying cause of death missed almost half of all certified TB and sarcoidosis deaths.
10.5588/ijtld.11.0077
Int J Tuberc Lung Dis
Adolescent, Adult, Aged, Cause of Death, Death Certificates, England, Female, Humans, Male, Middle Aged, Mortality, Registries, Sarcoidosis, Pulmonary, State Medicine, Time Factors, Tuberculosis, Pulmonary, Young Adult


"We strongly believe we stopped him on the way to a further attack, so lives were saved.
Police had previously said the suspect was in custody at the justice precinct within 36 minutes, but Mr Bush said the arrest at the roadside took only 21 minutes.
"By the end of today we should have completed the majority of those identifications. But I have to say that some of those victims will take a little longer."
While the priority was the families police also had other obligations, he said.
"The first one on behalf of the chief coroner and all of the coroners is to ensure absolute accuracy in that identification process," Mr Bush said.
The investigation was an international one, he said. The FBI are on the ground in New Zealand; Australian Federal Police, other Australian police and other jurisdictions overseas were being consulted.
"There was a lone gentleman who appeared at one of the cordons. He wasn't involved, he did have a firearm, so that's been dealt with.


text:
https://www.manchesterhive.com/search?f_0=author&q_0=Ali+Riaz
Author: Ali Riaz x
Islam and identity politics among British-Bangladeshis
Ali Riaz
The tendency among ethnic minority Muslim immigrant communities in Europe towards identification with Islam as a marker of identity is discussed in an array of studies, but seldom have they explained sufficiently how the change took place. Islam and Identity Politics among British-Bangladeshis: A Leap of Faith probes the causes of and conditions for the preference of the members of the British-Bangladeshi community for a religion-based identity vis-à-vis ethnicity-based identity, and the influence of Islamists in shaping the discourse. It also examines whether this salience of Muslim identity is a precursor to a new variant of diasporic Islam. Islam and Identity Politics delves into the micro-level dynamics, the internal and external factors and the role of the state and locates these within the broad framework of Muslim identity and Islamism, citizenship and the future of multiculturalism in Europe.
The introduction provides the background of the study, discussion of the conceptual building blocks and an outline of the book. Three events are referred to as examples of the growing appeal of political Islam to a section of British-Bangladeshis and the contestations within the community. This chapter also critically discusses the existing theoretical frameworks on diaspora and diasporic identity, and challenges the extant formulations of these concepts. It argues that they are limited and limiting, because they see diaspora as an end product instead of an ongoing experience, and diasporic identity as a fixed state instead of a dynamic process.
in Islam and identity politics among British-Bangladeshis
The Bangladeshi diaspora in the UK
This chapter provides a profile of the British Bangladeshi community. Drawing on various sources of data, particularly Censuses and Labour Force Surveys, the chapter locates the British-Bangladeshi community within British society and shows that a combination of poverty, deprivation, lack of opportunity and spatial segregation has made the community socially excluded and encapsulated. It compares the state of the community with the White majority population and other minority communities using a range of critical indices such as education, housing, and composition of households. The statistical profile is supplemented with historical narratives and information as to how the community evolved. The chapter maps the process of how the community responded to the challenges it has faced in previous decades.
A tale of two long summers
This chapter describes three events in the summers of 2005 and 2006 that riveted the Bengali community. They are: the election of George Galloway, the controversy over the filming of Brick Lane and the visit of a prominent Bangladeshi Islamist to England. The significant commonalities in these three events are highlighted: all reflect how religious identity is being brought to the forefront and how much strength the Islamists have gained both discursively and organizationally.
Identity, Islamism and politics
The internal factors
Four internal contributory factors, the impact of Bangladeshi politics, the rise of Islamist youth groups in the 1980s and the 1990s, the failures of the secular leadership, and the sources of funding to Islamic organizations in Britain are discussed in this chapter. The chapter shows that the salience of the Muslim identity among the British-Bangladeshis took place incrementally. The examinations of these factors also show that they shaped not only the identity of the individual at the social level but also at the community level, especially within the political realm. These factors were not mutually exclusive; in fact, the discussion shows that different circumstances offered different choices and some have made greater impacts than others.
The state as actor
This chapter examines the role of the British state in facilitating the salience of Islamic identity among the community, especially enabling Islamists to gain prominence within the community. The empirical data are organized around two topics: race and immigration policy, and foreign policy. The chapter demonstrates that among four phases of immigration policies: the era of hostility, the era of assimilationism, the era of multiculturalism, and the era of faith and social cohesion, the most recent has facilitated the rise of Islamists within the Bangladeshi community. The chapter argues that British foreign policy is not only about the ongoing wars in the Middle East and South Asia, but about a wide array of policies pursued over a long period, most importantly the government's approach to issues perceived as important by the Muslim community.
Beyond the present
The final chapter argues that two sets of questions/challenges have emerged and will have to be confronted by the British-Bangladeshi community on the one hand and the British state, on the other. The first set of questions involves the choice of the community; do the majority members of the community favor a fusion of religion and political activism? Should religion be the marker of their identity? The second set of questions is about the broader issues related to the policies of the state: does the British state continue to pursue policies that weaken secular forces? What is the future of multiculturalism in Britain? How will the issue of citizenship and the multiple identities of the minority communities be addressed?


This morning I was reading The Good Human's post Your Contract With Life On Earth and I started to think of the contracts we sign when we rent an apartment, house, office space, equipment, etc.
We sign these contracts promising to care properly for someone's property, right? I really appreciated the post since it made me look at this scenario on the larger scale of Earth. The Earth is the property of every person and every generation. When our lease is up shouldn't we let the next person move into a clean and presentable earth?
Wouldn't you be pretty ticked off if, on moving day, you found out the last tenants left heaps of trash & filth for you to deal with? What if the last tenants were your own parents? Yah, the ones that made you go clean your room all the time growing up. Furthermore, if they had left the place nice and clean for you to move into, wouldn't you be more apt to do the same for the next person moving in?
This isn't some unique thought I came up with. But it was a fresh perspective for me and I wanted to jot it down. Thanks to The Good Human!


text:
« 'Things fall apart, hearts rip open' – Caroline Leavitt
'Intense, mystical dreams, an obsession with TS Eliot, and music' – Vivienne Tuffnell »
The Undercover Soundtrack – Caroline Leavitt
The Undercover Soundtrack is a series where I host a writer who uses music as part of their creative environment – perhaps to connect with a character, populate a mysterious place, or hold a moment still to explore its depths. This week's post is by NYT bestselling author Caroline Leavitt @leavittnovelist
Soundtrack by the Smiths, the Beatles, Crowded House, Amy Winehouse, Tom Jones
My novel Cruel Beautiful World was written over a period of four years, with lots of tears, struggles, millions of pages, and I know for a fact, millions of songs. I admit that I listened to the same music over and over to get the emotional tone right. And I never could have silence when I wrote because the music both relaxed and inspired me.
You might think that because the novel is set in 1969 and 1970 that I listened to the period's rock and roll back then—kind of dippy hits like Scott McKenzie's If You're Going to San Francisco (Be Sure to Wear Some Flowers in Your Hair), but actually, I didn't. Hey, I grew up in the 70s and I didn't want my own experiences leaking too much into my narrative. I wanted my characters to claim their own lives and their own music. And I wanted to create their world for them.
Every day when I sat down to write, I would listen to The Smiths' There Is A Light That Never Goes Out. To me, the lyrics are so very 'cruel beautiful world-ish' on their own. The song is narrated by a man in pain. He knows that yes, there is this hope, this light, even as he's thinking about what a privilege it would be if a truck ran over him and the person he loves – death by Mack Truck. It always got me in just the right mood.
Some days, writing snags and I need a beat to propel me through it. Usually those songs have nothing to do with what I am writing, I just feel as if my heart is beating along with the musical beat. When I was writing the tortured, tangled relationships in the books, I listened to The Beatles Rubber Soul , that bright shiny sound, the beat that kept propelling me forward. I didn't listen to the lyrics (if I had, I would have been derailed) but the music acted as a pulse.
When I had to write the most wrenching scene of my novel, where a death occurs, something I had put off for months, I had to be really tender with myself, but I also had to brace myself so I would go deep, so I wouldn't pull back from what was important. That was when I listened to Those You've Known . What makes this song more meaningful and heartbreaking for me was my actor son was in a production of Spring Awakening, and he sang that song as Moritz. I wept listening to that song when I saw him onstage, and I wept while I was writing, but I got the scene done exactly as I wanted it to be.
Better Be Home Soon by Crowded House captures the feeling, the longing my characters have for one another–and my own internal longing which never seems to ebb. Listening to this song is like taking a vitamin for my writing. Back to Black by Amy Winehouse does the same thing for me because of its bluesy, smoky sound.
While I was thinking of my work as a whole, trying to categorize this unwieldy novel, my son was sprawled on a chair in the living room, avidly listening to this gorgeous song and I said, 'What's that? Who's that?' He looked up at me. 'Group Love,' he said. 'Cruel and Beautiful World.' I knew immediately that without the 'and' it would be the perfect title because it's sort of my world view. Yes, things fall apart, hearts rip open, but there is love, too, and beauty and art and fresh Insomnia cookies.
The day I finished my novel and sent it off to my agent, I cried. And then I put on Tom Jones's Country album, because that was the one I played every day when I was pregnant with my son Max. I sang along to it, feeling soothed. I used to put my headphones on my belly so my son could listen in, too.
I knew I was birthing something.
Caroline Leavitt is the New York Times Bestselling Author of Pictures of You, Is This Tomorrow and the critically acclaimed Cruel Beautiful World, which launched in paperback on 8 August. She reviews books for the San Francisco Chronicle, the Boston Globe and People, and she teaches writing online at Stanford and UCLA Extension Writers Program, as well as private clients. She was a finalist in the Sundance Screenwriters Lab. She lives with her husband, the writer Jeff Tamarkin, in NYC's unofficial sixth borough, Hoboken, near their actor son, who lives in Brooklyn. Right now, she's listening to lots of Benny King. You can find her on her website, Twitter (@leavittnovelist), Facebook, Instagram (carolineleavitt) and Litsy (Carolineleavitt)
1969, 1970s, Amy Winehouse, Caroline Leavitt, Crowded House, Cruel Beautiful World, How to find a title, literary fiction, music for writing fiction, Pictures of You, The Beatles, The Smiths, Tom Jones, undercover soundtrack
This entry was posted on August 9, 2017, 5:45 am and is filed under Undercover Soundtrack. You can follow any responses to this entry through RSS 2.0. You can leave a response, or trackback from your own site.
#1 by mrb on September 1, 2017 - 2:15 am
Any review with a 'Queen is Dead' song is all right. 'There Is A Light That Never Goes Out' is a perfect Smith's song to christen a complex mood.
It is true that personal anecdotes and experiences can become part of the story. I liked how your son is integrated by his part in Spring Awakening, your book title, and the Tom Jones ending. Grouplove is new to me, so thanks. I can definitely hear the chorus in a title or climax scene.
Your Underground Soundtrack piece was a story in itself. Best of luck with Cruel Beautiful World.
-mrb


text:
Pilot Training Next graduates 14 in learning experiment's second iteration
By Dan Hawkins, Air Education and Training Command Public Affairs / Published August 30, 2019
Brig. Gen. Jeannie Leavitt, Air Force Recruiting Service commander, poses for a group photo with Pilot Training Next students after graduation from the learning experiment's second iteration Aug. 29, 2019, at Joint Base San Antonio-Randolph, Texas. PTN is a program to explore and potentially prototype a training environment that integrates various technologies to produce pilots in an accelerated, cost efficient, learning-focused manner. (U.S. Air Force photo by Sean M. Worrell)
Brig. Gen. Jeannie Leavitt, Air Force Recruiting Service commander, speaks to the graduating class of the Pilot Training Next program, Aug. 29, 2019, at Joint Base San Antonio-Randolph, Texas. PTN is an experimental program under the "Learning Next" umbrella with a focus on understanding how Airmen learn, as well as exploring and potentially prototyping a flying training environment that integrates various technologies to produce pilots in an accelerated-and learning-focused manner. (U.S. Air Force photo by Sean M. Worrell)
JOINT BASE SAN ANTONIO-RANDOLPH, Texas (AFNS) --
Air Education and Training Command's Pilot Training Next program graduated 14 U.S. Air Force, U.S. Navy and the Royal Air Force students from the learning experiment's second iteration at Joint Base San Antonio-Randolph, Aug. 29.
Guest speaker Brig. Gen. Jeannie Leavitt, Air Force Recruiting Service commander and a trailblazer in aviation as the Air Force's first female fighter pilot, remarked on how the students represent the future and marveled at the fact that the students had the opportunity to be on the leading edge of a new way to learn.
"The fact is we are looking at a whole new way of learning in a non-standard way from the Air Force perspective," Leavitt said. "Remember…dream big, be bold and learn to take calculated risk."
PTN is an experimental program under the "Learning Next" umbrella with a focus on understanding how Airmen learn, as well as exploring and potentially prototyping a flying training environment that integrates various technologies to produce pilots in an accelerated-and learning-focused manner.
"You're pioneers...you've seen the speed of innovation," Lt. Col. Ryan Riley, Detachment 24 commander and PTN director, said while addressing the graduates. "This program is critical for our Air Force in this era of great power competition."
The graduates, which also included two Air National Guard students, were selected to fly airframes including the F-35 Lightning II, F-15E Strike Eagle, F-16 Fighting Falcon, C-17 Globemaster III, C-130 Hercules, EC-130 Compass Call, C-5 Galaxy, B-2 Spirit, C-146A Wolfhound and the T-6 Texan II (first assignment instructor pilot).
Additionally, one was selected to fly the U-28A, used as part of the Air Force Special Operations Command manned, airborne intelligence, surveillance and reconnaissance fleet. One other pilot will fly the C-146A Wolfhound, used to transport small teams in support of U.S. Special Operations Command.
The Navy graduates will fly the T-45A Goshawk, while the Royal Air Force graduate will move to the Typhoon.
With their family and friends looking on inside the Fleenor Auditorium, the new aviators reflected on the accomplishment of becoming a pilot.
"Pinning on the silver wings means accomplishing a goal I've had for years and serves as a symbol of all the hard work and dedication I've put in," said 2nd Lt. Aaron Sless, a distinguished graduate and the Warrior Award winner who is slated to fly the F-35. "It is a physical representation of the responsibility we are being given moving forward, becoming one of the most lethal and ready assets in the world's greatest Air Force."
For the students, learning how to fly in a nontraditional way was both difficult and exciting at the same time.
"It definitely made the process more difficult having to push through burgeoning technology, but I am glad that I could be a part of the development process towards a more efficient and thorough version of learning for the future," Sless said. "I am excited to see how PTN progresses technology and learning in the future and how it will be applied to undergraduate pilot training, and the Air Force at large."
For 2nd Lt. James Brittingham, the experience at PTN and getting the opportunity to help shape the future of pilot training has been everything he had hoped for, including his drop night assignment to fly the F-15E.
"I'm thrilled to fly my dream aircraft as it symbolizes the culmination of a life goal, and the start of a new life journey," Brittingham said. "It's also been very exciting to have input into the evolution of pilot training."
During the second iteration of PTN, which began in January of this year in Austin, Texas, before moving here in May, the training model was refined to incorporate more immersive and engaging academics, scenario-based training in the immersive training devices, competency-based learning models for training validation and artificial intelligence instruction.
"The competency-based learning and immersive scenario-based training increased the value of each of our sorties by ensuring that students were better prepared for each sortie," Riley said. "Using these tools creates competencies that are important, but likely won't be reinforced in live aircraft."
As an example, Riley talked to the use of clock-to-map-to-ground practice in an F-35. He also talked to the value of artificial intelligence in student feedback.
"Continuing to advance the capabilities of AI instruction to assist our students' practice further optimizes instructor involvement with the potential for students to gain more experience in primary weapons systems," Riley said.
Per the PTN cadre, a third iteration of the class is scheduled to begin in January 2020, building on the successes of the first two classes by incorporating new learning theories such as time-spaced-retrieval, deep repetition and adding additional competencies for peer-level conflict and multi-domain thinking and airmanship. Additionally, the incorporation and use of a T-6B+ variant for the class will test the ability to train formal training unit-ready pilots with combat and mobility competencies using moving map display, synthetic radar, air-to-air and air-to-ground symbology as well as detailed downloadable debrief files.
AFWN USAF AF Air Force Pilot Training Next PTN learning training AETC Air Education and Training Command Navy Royal Air Force Air Force Recruiting Service Air National Guard


Robert "Bob" Vernon Collins of Westland. Age 94.
A memorial celebrating Bob's wonderful life will be held in the summer - the exact date and place will be announced once plans are finalized.
Please share a memory of Bob on his tribute wall.
To send flowers or a remembrance gift to the family of Robert "Bob" Vernon Collins, please visit our Tribute Store.
"Email Address" would like to share the life celebration of Robert "Bob" Vernon Collins. Click on the "link" to go to share a favorite memory or leave a condolence message for the family.


In the 2nd CLUAS Opinion piece, Californian John Ford - a committed John Kerry supporter - provides a timely exploration of the importance of rock music and its role in politics, with a particular focus on the role music is playing in the 2004 American Presidential election.
I write from California. I spent my 20s in Los Angeles during the Reagan Era, and it was hell. That administration was supporting death and torture squads in El Salvador and Nicaragua, The environment was under attack. Far Right nuts were being nominated to the Federal & Supreme Courts. The national debt was being doubled and tripled (sounds like deja-vu all over again, huh?). I remember feeling that it was the first time in our history that the following generation would not have it better than their parents.
It felt like all music was political then. The local LA punk & club scene was wild. Lots of inherently political shows by bands like X and the Dead Kennedys (police helicopters, tear gas, night sticks - those were the days!). The Clash, for five nights at the Hollywood Paladium, railed against Reaganism / Thatcherism in the heart of comfortable California. Springsteen's music & shows progressed from personal dramas to dark tales of the decline of America, and he began to include booths for Vietnam Vet organizations and food banks at his shows. There were the big benefit tours: No Nukes shows, the Amnesty International tour, anti-apartheid shows, anti-foreign policy (in Central America) shows, a massive cross-cultural show at the LA Coliseum celebrating the release of Mandela (he was the closer).
These were great, inspiring times - but President Reagan was re-elected, and was followed by Bush senior. The horrors of their policies went on.
It's hard to exaggerate the importance of the upcoming US election, both for us here in America and for the rest of the world. This election matters because the current U.S. administration is so damned incompetent. They can't get things done (except for rewarding billionaires and killing poor people). An America that works with the rest of the world instead of against it will impact everyone. Throwing out this incompetent crowd of reactionary zealots and voting in Mr. Kerry's team will lead to less dead bodies at the hands of the U.S. We can start to rebuild some credibility in the world regarding human rights, the value of democracy, decreasing worldwide pollution, decreasing oil consumption and our reliance on tyrannical regimes to supply our oil fix, etc. The world, not just the U.S., will be a better place with President Bush out and President Kerry in.
For me, this election is all about my kids' future. They are going to be saddled with enormous national debt, which equates as less opportunity in life. Much more importantly, if President Bush is re-elected, they will inherit a country with a weakened constitution (which is everything in America), with maybe four more neo-Nazi Supreme Court judges, with more racial injustice, with more guns everywhere, with more 'hooray for me, to hell with you'. They will travel the world with a target on their back, as the enemy of the little guy. They will inherit the guilt of America as oppressor. It's not only appropriate for artists to be in an uproar over this election, it's imperative - and it's almost their duty.
My take is that folks aren't so much upset at artists trying to influence the political world; they're upset at rich, spoiled artists trying to tell us real folks what to think. Also, this time around there are artists pushing for a partisan candidate, instead of just protesting, in righteous indignation, against some injustice. It's so much easier to be comfortably "anti-" than to take a positive stand.
People didn't object so much when relatively poor artists like Odetta, Pete Seeger or Woody Guthrie took strident political stands about civil rights, World War 2, or The Depression. Guthrie wrote several partisan songs specifically promoting F.D.R. and the New Deal.
It's a bit different when spoiled multi-millionaires preach to us about what's best for the little guy, as they sip their brandy on the yacht. That's why there is a very short list of pop artists that have the proven integrity to pull it off. The artists on the Vote For Change tour have said that they are uncomfortable openly advocating for Senator Kerry, and don't do so lightly. The stakes have become so high, and the potential catastrophe of another four years of neo-conservatism so worrisome, that the partisan plea has become necessary. You don't get to vote against the status quo; in our system you can only vote for the opposition. A non-vote ("I'm not political") equals a vote for the bad guys.
One of my favourite artists-taking-a-political-stand stories is when John Lennon upset the Left and the Right when he sang, in Revolution, about his rejection of violence and of easy answers in our spirited quest to transform society, this at the height of the counterculture movement, both hippy-peaceful and Weather Underground-violent. That's the artist challenging his audience's assumptions and beliefs - using his platform to stimulate thought and maybe effect change. He's done his job; the audience can do what they want with it.
The key to all of this is the punk revelation that these artists aren't gods; they are just intelligent people whose opinions we've learned to trust. Consider what they are saying, do your homework, and use your own brain to decide. No one is asking any listener to 'vote as I say', but to get involved and become aware and make an informed choice.
Discuss this article on the CLUAS discussion board.


text:
Prague: Sightseeing Dinner Cruise on Open-Top Glass Boat
Popular Nature & Adventure in Prague
Prague: 50-Minute Sightseeing Evening Cruise
Prague: 1-Hour Panoramic Vltava River Cruise
Prague: Old Town Hall & Astronomical Clock Entrance Ticket
Prague: 2-Hour Lunch Cruise on the Vltava River
Prague: 24 or 48-Hour Hop-on Hop-off Bus
Prague: Historic City Center Bus Tour
Our most recommended Prague Nature & Adventure
1. Prague: Sightseeing Dinner Cruise on Open-Top Glass Boat
Discover Prague by night on a luxurious open-top boat as you feast on a delicious selection of traditional Czech and international dishes from the onboard buffet. See Prague's iconic structures along the Vltava River and get amazing views of the illuminated Prague Castle on this round-trip cruise. Travel on a unique glass boat with a specially insulated deck that prevents noise and vibrations and a section that has retractable glass walls and ceilings. Enhance your experience by upgrading to the window seat option to be guaranteed being seated in this section. Sip a welcome drink as you board and then glide down the river to the Charles Bridge and admire the neo-Renaissance Rudolfinum. Benefit from free Wi-Fi, listen to informative multi-lingual audio commentary, and follow your route by paper or online map as you go. Continue past the famous Dancing House and admire the panoramic views of Petrin Hill and Old Town Prague while being serenaded by live music on board. Enjoy a buffet dinner, which includes a wide selection of Czech and international dishes. After dinner, explore the open decks that allow you to feel the cooling river breeze and see the city from many vantage points that provide perfect photo opportunities. Dinner buffet selections: • Mozzarella with tomatoes and fresh basil pesto • Selection of domestic cheeses, ham, and salami • Duck pâté with cranberry sauce • Gran Moravia cheese • Greek salad • Fresh coleslaw • Chopped salad • Selection of bread and butter • Gluten-free pastries • Chicken noodle soup • Whole ham with bone • Beef goulash • Chicken schnitzels • Baked potatoes with zucchini • Spaghetti with cherry tomatoes and basil (vegan) • Paella with roasted vegetables and seafood • Steamed vegetables • Dumplings • Jasmine rice • Mashed potatoes • Homemade gingerbread • Apple strudel • Fresh fruit salad
2. From Prague: Terezin Concentration Camp Guided Tour
Terezin is located approximately ninety miles north of Prague and just south of Litomerice. The town was built in 1780 by Emperor Joseph II of Austria and named after his mother, Empress Maria Theresa. Terezin consisted of two fortresses. The Big Fortress was surrounded by ramparts and contained a barracks. However, Terezin had not been used as a fortress since 1882 and had become a garrison town, which was almost entirely separated from the rest of the countryside. Terezin changed dramatically when the Nazis renamed it Theresienstadt and sent the first Jewish transports there in November 1941. These workers made up the Aufbaukommando (construction detail), later known in the camp as AK1 and AK2. These men were sent to transform the garrison town into a camp. These workers transformed the town, that in 1940 held approximately 7,000 residents, into a concentration camp which held about 35,000 to 60,000 people. With your certified guide, you will be guided through the Terezin concentration camp, learning about the terrible history of this place. The tour visits most places of significance at the site. Afterwards, you will return to Prague.
3. Prague: 50-Minute Sightseeing Evening Cruise
Enjoy breathtaking views from the Vltava River and discover the beauty of one of the most famous cities in the world during this evening cruise. See majestic sights such as Charles Bridge, the Dancing House, Petřín Tower, and the historic fort of Vyšehrad. Admire the neo-Renaissance concert hall of the Rudolfinum and the biggest castle complex in the world, Prague Castle. Relax on an air-conditioned boat with a roof over the sundeck. Learn about the main sights with audio commentary available in 8 languages.
4. Prague: 2-Hour Lunch Cruise on the Vltava River
This 2-hour cruise through the heart of Prague combines a sightseeing tour with a buffet lunch. You'll be welcomed on board with a traditional Czech aperitif to help you relax for the journey ahead. The boat will sail along the Vltava River through the city's historic center, passing landmarks such as Charles Bridge, Prague Castle, the Rudolfinum, the National Theater, the Dancing House, the Emmaus Monastery, Vyšehrad, the Podolí Waterworks and the historic Štvanice Power Station. Charles Bridge is the most iconic of the landmarks. Built in the 14th century by Charles IV, it connects the city's Lesser Quarter to the Old Town. Along the edge of the bridge on both sides you'll see carved statues of saints important to the Czech lands. The lunch buffet is open throughout the cruise and a live band on the boat plays for the duration of the cruise as well.
5. Prague: 1-Hour Panoramic Vltava River Cruise
Take in stunning panoramic views of Charles Bridge, Prague Castle, and the skyline of the City of a Thousand Spires from the comfort of a boat on the Vltava River. This river cruise is perfect for families with small children or anyone who wants to enjoy an unforgettable experience in just an hour's time. Friendly bar staff serve light snacks along with coffee or cold drinks on the upper deck so you don't miss a moment of the action. The cruise begins and ends at the banks of the Vltava River. An inside deck, heated in the winter and air-conditioned in the summer, is also available.
6. Prague: 24 or 48-Hour Hop-on Hop-off Bus
Avoid the hassle of organized group tours and explore Prague at your own pace with a combined 24 or 48-hour ticket to the hop-on hop-off sightseeing bus. Once on board the bus, you will be provided with headphones and an audio guide (available in 23 languages), while a stewardess is available at all times to lend assistance. Listen to the fascinating history of Prague.
7. Český Krumlov and České Budějovice Day Trip from Prague
Enjoy a scenic ride from Prague through the southern Bohemia region of the Czech Republic. You'll arrive first at Cesky Krumlov, a UNESCO World Heritage Site that features over 300 historic buildings. The town is dominated by a huge castle and the church of St. Vitus. On this full-day excursion, you'll visit the historical center of Cesky Krumlov and tour the Castle. Continue on to Ceske Budejovice and see its unique historic square, lined with Renaissance and Baroque houses. After a full day exploring Southern Bohemia, sit back and enjoy the scenic countryside on your way back to Prague. Please note that the castle is closed from 1 November to 31 March.
8. Prague: City Tour By Bus, Boat, and on Foot
Visit some of Prague's most fascinating monuments and neighborhoods as your knowledgeable guide teaches you the city's history on this 4-hour tour. The famous Old Town makes up the first part of your tour, as an air-conditioned minibus takes you on a 30-minute journey past landmarks including the Dancing House, Wenceslas Square, and the National Gallery. You'll then be dropped at Prague Castle for a 75-minute walking tour of the largest ancient castle in the world. The grounds occupy 70,000 square meters of space and enjoy some of the best vantage points of the city — perfect for snapping photos. Next up is a relaxing river cruise along the Vltava River. Here you can simply sit back and unwind on an approximately 60-minute trip along the water, or head up to the upper deck and enjoy views of the city and the famous Charles Bridge. The final part involves a walking tour around the solemn beauty of the Jewish Quarter, the location of some of the city's finest architecture. From there you'll head to Old Town Square and the Astronomical Clock. Here your guide will explain its history and the meaning of its moving sculptures.
9. Prague: Old Town Hall & Astronomical Clock Entrance Ticket
The Old Town Hall is located on the Old Town Square and was established in 1338 as the seat of the Old Town administration. The complex consists of 5 buildings. The dominant part of the building is a Gothic tower with a chapel and a unique astronomical clock, where every hour between 9:00 AM and 11:00 PM, the twelve apostles rotate. Start your tour on the first floor, where the staterooms are located. Continue to the Gothic chapel of the Virgin Mary and the ceremonial halls. Afterwards, use the staircase leading to the third floor to the viewing gallery of the 70-meter tall tower and enjoy the most amazing views of Prague. A guided visit of the Old Town Hall medieval underground is included in your entrance ticket, so make sure not to miss out!
10. Prague 50-Minute River Sightseeing Cruise
Take in fantastic views from the river and discover the beauty of one of the most popular cities in the world. From your Vltava River boat trip you'll see the Charles Bridge, Prague Castle, and other iconic sights. Cruising along the Vltava River is probably the best way to view Prague. The boat is air-conditioned and has a roof over the sundeck. Audio guide commentary is available in Czech, English, German, Spanish, Italian, French, Polish, and Russian.
Top Attractions in Prague
1 Prague Castle
2 Vltava River
3 Prague Astronomical Clock
4 Petrin Lookout Tower
5 Prague National Theatre
6 Prague National Museum
7 Dancing House
8 Charles University
9 Charles Bridge
10 John Lennon Wall
11 Old Town, Prague
12 Staropramen Brewery
13 Prague Giant Metronome
14 Prague Zoo
15 State Opera, Prague
16 Old Town Square, Prague
17 Kampa Island
18 Prague Jewish Museum
19 Clementinum
20 Josefov
1 Prague Cruises & Boat Tours
2 Prague Shows & Musicals
3 Prague Dinner Shows
4 Prague Day Trips
5 Prague Tours
6 Prague City Cards
7 Prague Day Trips From
8 Prague Bus & Minivan Tours
9 Prague Concerts & Operas
10 Prague Dinner & Lunch Cruises
11 Prague River & Harbor Cruises
12 Prague Ghost & Vampire Tours
13 Prague Walking Tours
14 Prague Night Tours
15 Prague Sky Diving
16 Prague Tickets
17 Prague Hop-on Hop-off Tours
18 Prague Sailing Trips & Tours
19 Prague Bike Tours
20 Prague Nightlife & Bars
Cities in Czech Republic
1 Prague
2 Karlovy Vary
3 Kutná Hora
4 Brno
5 Terezin
6 Český Krumlov
7 Plzeň
8 Telč
9 Karlštejn
10 Adršpach
11 Benešov
12 Lidice
13 Nižbor
14 Teplice
15 Trebic
16 Ceske Budejovice
17 Ostrava
18 Žďár nad Sázavou
19 Loket
20 Hluboká nad Vltavou
Other Sightseeing Options in Prague
Want to discover all there is to do in Prague? Click here for a full list.
What people are saying about Prague
Our guide Stan was an amazing guy, knowledgeable and fun! the whole experience was priceless ! money VERY well spent. My wife and I had an amazing day, saw important tourist attractions and got a great feeling of prague. for the money we got a fantastic Paronama shot, Hot Tea and a printed photo which all were bonuses! Strongly recommend
Prague: Fat Tire E-Bike Guided Tour Reviewed by amir, 12/27/2021
This is really quite a bargain for the experience. The views are absolutely amazing! The live music was great and the buffet food was delicious. Service was excellent and the people working on the boat were very kind and caring. I enjoyed the cruise very much.
Prague: Dinner Cruise with Live Music Reviewed by Sana, 12/27/2021
Amazing exhibition of photos and history, I have not seen better for a long time. I recommend.
Prague: Dancing House Gallery and Rooftop Entrance Reviewed by George, 12/27/2021
We took the boat tour on Christmas night, and it was magical.
Prague: Sightseeing Dinner Cruise on Open-Top Glass Boat Reviewed by Kevin P, 12/31/2021
This was my daytime Birthday treat and it was wonderful.
Prague: 2-Hour Lunch Cruise on the Vltava River Reviewed by Linda, 12/29/2021


text:
namespace aima {
namespace search {
namespace problems {
namespace npuzzle {

std::vector<Index> State::GetBlockIndexes() const {
  std::vector<Index> indexes(size());
  for (Size i = 0; i < size(); ++i) {
    Block block = blocks_[i];
    indexes[block] = Index(i / width_, i % width_);
  }
  return indexes;
}

Blocks State::CopyBlocks(const Blocks& blocks, Size size) {
  Blocks copied_blocks(new Block[size]);
  std::memcpy(copied_blocks.get(), blocks.get(), size);
  return std::move(copied_blocks);
}

Index State::FindBlank(const Blocks& blocks, Size width, Size height) {
  auto begin = blocks.get();
  auto end = blocks.get() + width * height;
  auto index = std::find(begin, end, 0) - begin;
  Size i = index / width;
  Size j = index % width;
  return Index(i, j);
}

std::ostream& operator<<(std::ostream& os, const State& state) {
  Size width = state.width();
  auto blocks_ptr = state.blocks().get();
  for (Size i = 0; i < state.height(); ++i) {
    for (Size j = 0; j < state.width(); ++j) {
      os << (int) *blocks_ptr++;
      if (j == width - 1) os << "\n";
      else os << " ";
    }
  }
  return os;
}

void Problem::Validate() const throw (InvalidInputError) {
  if (size() == 0) throw InvalidInputError("Puzzle cannot be empty");
  if (width_ >= 16 || height_ >= 16) throw InvalidInputError("Puzzle too large");
  std::vector<bool> flags(size(), false);
  for (Size i = 0; i < size(); ++i) {
    Block block = initial_state_.blocks()[i];
    if (block < size()) flags[block] = true;
  }
  for (bool flag : flags) {
    if (!flag) {
      throw InvalidInputError(
          "Puzzle must contain all and only those numbers from 0 to n");
    }
  }
}

State Problem::BuildGoalState(bool blank_first) const {
  std::vector<Block> blocks;
  if (!blank_first) {
    for (Size i = 1; i < size(); ++i) blocks.push_back(i);
    blocks.push_back(0);
  } else {
    for (Size i = 0; i < size(); ++i) blocks.push_back(i);
  }
  return State::GetInstance(blocks.begin(), blocks.end(), width_, height_);
}

}  // npuzzle
}  // problems
}  // search
}  // aima


Abstract: In recent decades, climate change, the destruction of natural habitats and resources, and increased inequality among and within nations, have become the focus of intense debate among policy makers, business groups, international organisations, non-governmental organisations and the research community. The establishment of new global governance norms in an increasingly denationalised world has also impacted on policy decisions on these issues. Most people would argue that states and policy makers should incorporate commonly accepted environmental and socio-economic norms in research management policy making. Moreover, these should form an important component of the agenda setting out the development process for disadvantaged groups, particularly women, and ensuring environmental sustainability. The task is a complex one, and entails decisions that would promote development and the reduction of poverty and bring sustainable benefits to the widest number of people. The major challenge then is to manage the process of change in a just and equitable manner, while at the same time adhering to core environmental standards and ensuring environmental sustainability.


Nexelate Wire Shelving Starter Unit Includes 4 posts with leveling feet, 4 shelves and snap-on sleeves to secure shelves to posts. Features Global's exclusive Nexelate finish that's guaranteed against rust and corrosion for 7 full years in dry or wet storage applications. NSF approved. Easy assembly.
These epoxy wire shelves feature a patented truss reinforced design for extra strength and greater capacities. Open shelving permits sprinkler, air and light penetration and minimizes dust accumulation. Shelves easily adjust without tools and align accurately at 1" increments on numbered posts.
Shelf slides over black snap on sleeve to provide positive locking and fast, tool free adjustment. Numbered posts make leveling easy.
Your review: These shelves are very sturdy and are holding up very well, making great use of our space.
Pros: Very clean and sleek appearance.
Cons: The wires can cut into the bottoms of heavy boxes that press into the shelves over long periods of time.
Your review: Excellent in quality.sturdy in balance,attractive to view, functional in use.
Cons: Nothing noted. One shelf damaged in shipment and replaced without question.
Your review: This shelving is very versatile as it can adjusted at any time to accommodate a change in use. It is very sturdy.


text:
eng-citation
engineering publication and citation indices
mech-eng
Metric Stats
Ranking by Institution
chem-eng
civil-eng
elec-eng
The following results show the citation and publication indices for all staff at the Go8 universities which are identified as being associated with an Electrical Engineering Department.
All data was collected in Q1, 2014.
m-index for all staff in elec-eng
h-index for all staff in elec-eng
median value of various metrics for all staff in elec-eng
Metric/indices median values table
Lecturer S/Lecturer A/Professor Professor
h-index 9 13 17 24
Total citations 242 842 1259 2882
i10-index 8 19 31 54
m-index 0.9 0.7 0.98 1
* the number of staff with Google Scholar accounts (n = 75) out of staff sample size (N = 173)
For further details of how the data was collected and analysed, see the methodology section.
m-index for Professor level staff in elec-eng
h-index for Professor level staff in elec-eng
* the number of staff with Google Scholar accounts (n = 28) out of Professor level staff sample size (N = 69)
A/Professor
m-index for A/Professor level staff in elec-eng
h-index for A/Professor level staff in elec-eng
* the number of staff with Google Scholar accounts (n = 20) out of A/Professor level staff sample size (N = 47)
S/Lecturer
m-index for S/Lecturer level staff in elec-eng
h-index for S/Lecturer level staff in elec-eng
* the number of staff with Google Scholar accounts (n = 14) out of S/Lecturer level staff sample size (N = 31)
m-index for Lecturer level staff in elec-eng
h-index for Lecturer level staff in elec-eng
* the number of staff with Google Scholar accounts (n = 13) out of Lecturer level staff sample size (N = 26)
Observations on Citation Indices/Metrics
Results for the h-index, i10-index and total number of citations show similar trends as other Engineering fields, increasing with the level of staff seniority. With the exception of the h-index and total number of citations at the Professor level, all of the above indices and metrics are higher for Electrical Engineering staff at all seniority levels than for the other Engineering fields.
The m-index for the Electrical Engineering field is most variable for staff seniority level, with no clear increasing trend with seniority level. This trend in the m-index is based on relatively large staff numbers and participation rate suggesting the median values are a good representation of the staff landscape. This should allow all metrics and indices to be fairly robust indicators of nationally significant research impact rates across the Electrical Engineering field.
The h-index is defined by the number of publications with at least that number of citations each. It is an index which attempts to balance the productivity (# of papers) and impact (# number of citations) of scientific work. It has become the most widely used citation analysis tool to compare the research output of Academics worldwide +more…
m-index
The m-index is the normalisation of a h-index taking into account the number of years since the authors first publication. That is if 'n' is the number of years since the first publication, then m = h/n.
eng-citation.com (engineering publication and citation indices)


Sanrad Medical Systems is India's premier, pre-owned diagnostic imaging equipment provider with an exemplary service record spanning 25 years.
For the last 25 years, Sanrad Medical Systems has successfully enabled medical practitioners to access superior and trusted pre-owned diagnostic imaging equipment — for the betterment of the community.
With dedicated and competent people at the helm, our clients will be provided with timely, friendly and helpful service at every touch-point from sales to function with the availability of spares, always.
Enabling medical practitioners access to superior, trusted diagnostic imaging equipment for the betterment of the community.
To be an integral part of the nation's healthcare ecosystem and to be a one-stop destination for top-quality, pre-owned diagnostic imaging equipment with best-in-class customer support.
An eternal promise of integrity in every business relationship we cultivate, quality in every service we deliver and dedicated to furthering our knowledge in every step we take.
We are adept at walking you through the intricacies of not only buying technologically-advanced equipment from us but also provide industry-leading after-sales support services to the whole buying experience. With over five-hundred (500) successful installations, ten (10) support offices and hundred (100) employees across the country, Sanrad Medical Systems is committed to paving the way for the next wave of medical revolution in the country.
All activities are conducted honestly and ethically.
The company strives to keep updated with the latest technology and promotes continuous learning.
The company sincerely respects its customers, suppliers, employees and stakeholders.
Our each & every activity is firmly focused on providing unwavering quality products and services.
Testimonials from clients across the nation.
Sanrad's support teams are incredibly dedicated to regular visits to our diagnostic clinic for routine maintenance and service.
Sanrad has a unique distinction of providing quality, refurbished diagnostic equipment renowned for its shelf life and backed up by its impeccable service and application support record.
Sanrad sets itself apart from the competition in their customer-centric approach to providing support and commitment to quality in the products they sell.
Radiologist SRL Hitech Scans, Coimbatore.
All the diagnostic imaging equipment installations at our clinic have been facilitated by Sanrad and our prior experience working together with their support services has been fantastic.
We've partnered with Sanrad for diagnostic imaging equipment since our inception and suffice to say, their commitment towards delivering on the product and after-sales support services has been outstanding.
Sanrad has made the dream of having state-of-the-art, inexpensive diagnostic imaging scanners in rural areas and small towns for the betterment of patients, a reality.
Sanrad has been a boon for the medical fraternity like myself whose affordable, excellent systems helped me realise my ambition of starting up my diagnostic imaging clinic for the betterment of the community.
Sanrad has one of the best sales and service team in the business. They have a very knowledgeable workforce with service engineers, a priority call away for any service or troubleshooting needs.
Dr Kathe Diagnostic Center, Pune.
I've always been impressed with the way Sanrad has been able to deliver on its promise and commitment to its customers. The scanners are of the highest quality, and their reliability is legendary.


text:
package org.apereo.services.persondir.support.web;

import org.apache.commons.lang3.StringUtils;
import org.apereo.services.persondir.support.IAdditionalDescriptors;
import org.apereo.services.persondir.support.MultivaluedPersonAttributeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.filter.GenericFilterBean;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * {@link javax.servlet.Filter} that can provide {@link HttpServletRequest} headers and other properties on the request
 * as person attributes. The filter sets attributes on a {@link IAdditionalDescriptors} which it is configured with. To
 * work correctly the {@link IAdditionalDescriptors} object needs to be a session scoped Spring bean so that each user
 * gets only their own attributes correctly.
 *

 *

 * Required Configuration:
 *

 *
usernameAttribute

 *
additionalDescriptors

 *

 *
 * @author Eric Dalquist

 */
public class RequestAttributeSourceFilter extends GenericFilterBean {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    public enum ProcessingPosition {
        PRE,
        POST,
        BOTH;
    }

    private String usernameAttribute;
    private Map<String, Set<String>> cookieAttributeMapping = Collections.emptyMap();
    private Map<String, Set<String>> headerAttributeMapping = Collections.emptyMap();
    private Map<String, Set<String>> parameterAttributeMapping = Collections.emptyMap();
    private Map<String, Set<String>> requestAttributeMapping = Collections.emptyMap();
    private Set<String> headersToIgnoreSemicolons = new HashSet<>(Arrays.asList(new String[]{"User-Agent"}));
    private IAdditionalDescriptors additionalDescriptors;
    private String remoteUserAttribute;
    private String remoteAddrAttribute;
    private String remoteHostAttribute;
    private String serverNameAttribute;
    private String serverPortAttribute;
    private boolean clearExistingAttributes = false;
    private String referringParameterName;
    private String urlCharacterEncoding = StandardCharsets.UTF_8.name();

    private ProcessingPosition processingPosition = ProcessingPosition.POST;

    public String getUsernameAttribute() {
        return usernameAttribute;
    }

    /**
     * The name of the attribute from the request (header or property) to use as the username. Required
     * so that Person Directory can later associate these attributes with the user correctly during queries.
     *
     * @param usernameAttribute Name of the attribute from the request (header or property) to use as the username
     */
    public void setUsernameAttribute(final String usernameAttribute) {
        this.usernameAttribute = usernameAttribute;
    }

    public String getRemoteUserAttribute() {
        return remoteUserAttribute;
    }

    /**
     * If specified {@link HttpServletRequest#getRemoteUser()} is added as an attribute under the provided name
     *
     * @param remoteUserAttribute Name of the attribute to add when {@link HttpServletRequest#getRemoteUser()} is invoked
     */
    public void setRemoteUserAttribute(final String remoteUserAttribute) {
        this.remoteUserAttribute = remoteUserAttribute;
    }

    public String getRemoteAddrAttribute() {
        return remoteAddrAttribute;
    }

    /**
     * If specified {@link HttpServletRequest#getRemoteAddr()} is added as an attribute under the provided name
     *
     * @param remoteAddrAttribute Name of the attribute to add when {@link HttpServletRequest#getRemoteAddr()} is invoked
     */
    public void setRemoteAddrAttribute(final String remoteAddrAttribute) {
        this.remoteAddrAttribute = remoteAddrAttribute;
    }

    public String getRemoteHostAttribute() {
        return remoteHostAttribute;
    }

    /**
     * If specified {@link HttpServletRequest#getRemoteHost()} is added as an attribute under the provided name
     *
     * @param remoteHostAttribute Name of the attribute to add when {@link HttpServletRequest#getRemoteHost()} is invoked
     */
    public void setRemoteHostAttribute(final String remoteHostAttribute) {
        this.remoteHostAttribute = remoteHostAttribute;
    }

    public String getServerNameAttribute() {
        return serverNameAttribute;
    }

    /**
     * If specified {@link HttpServletRequest#getServerName()} is added as an attribute under the provided name
     *
     * @param serverNameAttribute Name of the attribute to add when {@link HttpServletRequest#getServerName()} is invoked
     */
    public void setServerNameAttribute(final String serverNameAttribute) {
        this.serverNameAttribute = serverNameAttribute;
    }

    public String getServerPortAttribute() {
        return serverPortAttribute;
    }

    /**
     * If specified {@link HttpServletRequest#getServerPort()} is added as an attribute under the provided name
     *
     * @param serverPortAttribute Name of the attribute to add when {@link HttpServletRequest#getServerPort()} is invoked
     */
    public void setServerPortAttribute(final String serverPortAttribute) {
        this.serverPortAttribute = serverPortAttribute;
    }

    public IAdditionalDescriptors getAdditionalDescriptors() {
        return additionalDescriptors;
    }

    /**
     * The {@link IAdditionalDescriptors} instance to set request attributes on. This should be a Spring session-scoped
     * proxy to allow each session to have its own set of request-populated attributes.
     *
     * @param additionalDescriptors {@link IAdditionalDescriptors} instance to set request attributes on
     */
    public void setAdditionalDescriptors(final IAdditionalDescriptors additionalDescriptors) {
        this.additionalDescriptors = additionalDescriptors;
    }

    public boolean isClearExistingAttributes() {
        return clearExistingAttributes;
    }

    /**
     * If true when attributes are found on the request any existing attributes in the provided {@link IAdditionalDescriptors}
     * object will cleared and replaced with the new attributes. If false (default) the new attributes overwrite existing
     * attributes of the same name but attributes in {@link IAdditionalDescriptors} not found on the current request
     * are not touched.
     *
     * @param clearExistingAttributes If existing all attributes should be cleared when any new attributes are found.
     */
    public void setClearExistingAttributes(final boolean clearExistingAttributes) {
        this.clearExistingAttributes = clearExistingAttributes;
    }

    public ProcessingPosition getProcessingPosition() {
        return processingPosition;
    }

    /**
     * Sets the pre/post/both position of the processing relative to the doFilter call.
     * PRE  means the attribute processing happens before the doFilter call
     * POST means the attribute processing happens after the doFilter call
     * BOTH means the attribute processing happens before and after the doFilter call
     *
     * @param processingPosition Processing position
     */
    public void setProcessingPosition(final ProcessingPosition processingPosition) {
        this.processingPosition = processingPosition;
    }

    /**
     * Set the {@link Map} to use for mapping from a cookie name to an attribute name or {@link Set} of attribute
     * names. Cookie names that are not specified as keys in this {@link Map} will be ignored.
     *

     * The passed {@link Map} must have keys of type {@link String} and values of type {@link String} or a {@link Set}
     * of {@link String}.
     *
     * @param cookieAttributeMapping {@link Map} from cookie names to attribute names, may not be null.
     * @throws IllegalArgumentException If the {@link Map} doesn't follow the rules stated above.
     * @see MultivaluedPersonAttributeUtils#parseAttributeToAttributeMapping(Map)
     */
    public void setCookieAttributeMapping(final Map<String, ?> cookieAttributeMapping) {
        this.cookieAttributeMapping = makeMapValueSetOfStrings(cookieAttributeMapping);
    }

    public Map<String, Set<String>> getCookieAttributeMapping() {
        return cookieAttributeMapping;
    }

    public Map<String, Set<String>> getHeaderAttributeMapping() {
        return headerAttributeMapping;
    }

    /**
     * Set the {@link Map} to use for mapping from a header name to an attribute name or {@link Set} of attribute
     * names. Header names that are not specified as keys in this {@link Map} will be ignored.
     *

     * The passed {@link Map} must have keys of type {@link String} and values of type {@link String} or a {@link Set}
     * of {@link String}.
     *
     * @param headerAttributeMapping {@link Map} from header names to attribute names, may not be null.
     * @throws IllegalArgumentException If the {@link Map} doesn't follow the rules stated above.
     * @see MultivaluedPersonAttributeUtils#parseAttributeToAttributeMapping(Map)
     */
    public void setHeaderAttributeMapping(final Map<String, ?> headerAttributeMapping) {
        this.headerAttributeMapping = makeMapValueSetOfStrings(headerAttributeMapping);
    }

    public Map<String, Set<String>> getRequestAttributeMapping() {
        return requestAttributeMapping;
    }

    /**
     * Set the {@link Map} to use for mapping from a request attributes to an attribute name or {@link Set} of attribute
     * names. Request attributes that are not specified as keys in this {@link Map} will be ignored.
     *

     * The passed {@link Map} must have keys of type {@link String} and values of type {@link String} or a {@link Set}
     * of {@link String}.
     *
     * @param requestAttributeMapping {@link Map} from request attributes to attribute names, may not be null.
     * @throws IllegalArgumentException If the {@link Map} doesn't follow the rules stated above.
     * @see MultivaluedPersonAttributeUtils#parseAttributeToAttributeMapping(Map)
     */
    public void setRequestAttributeMapping(final Map<String, ?> requestAttributeMapping) {
        this.requestAttributeMapping = makeMapValueSetOfStrings(requestAttributeMapping);
    }

    public Map<String, Set<String>> getParameterAttributeMapping() {
        return parameterAttributeMapping;
    }

    /**
     * Set the {@link Map} to use for mapping from a parameter name to an attribute name or {@link Set} of attribute
     * names. Parameter names that are not specified as keys in this {@link Map} will be ignored.
     *

     * The passed {@link Map} must have keys of type {@link String} and values of type {@link String} or a {@link Set}
     * of {@link String}.
     *
     * @param parameterAttributeMapping {@link Map} from parameter names to attribute names, may not be null.
     * @throws IllegalArgumentException If the {@link Map} doesn't follow the rules stated above.
     * @see MultivaluedPersonAttributeUtils#parseAttributeToAttributeMapping(Map)
     * @since 1.7.1
     */
    public void setParameterAttributeMapping(final Map<String, ?> parameterAttributeMapping) {
        this.parameterAttributeMapping = makeMapValueSetOfStrings(parameterAttributeMapping);
    }

    private Map<String, Set<String>> makeMapValueSetOfStrings(Map<String, ?> attributeMapping) {
        final Map<String, Set<String>> parsedParameterAttributeMapping = MultivaluedPersonAttributeUtils.parseAttributeToAttributeMapping(attributeMapping);

        if (parsedParameterAttributeMapping.containsKey("")) {
            throw new IllegalArgumentException("The map from attribute names to attributes must not have any empty keys.");
        }
        return parsedParameterAttributeMapping;
    }

    public String getReferringParameterName() {
        return referringParameterName;
    }

    /**
     * Name of a request parameter whose value is decoded and checked for parameterAttributeMapping matches.
     * This is useful when the user's browser follows a redirect path and the request parameters from the user's original
     * request are encoded in a 'refUrl' or similar parameter.  uPortal, for instance, does this. When a user accesses
     * /uPortal?nativeClient=true, a redirect chain encodes this to '/uPortal/Login?refUrl=%2FuPortal%2F%3FnativeClient%3Dtrue'.
     * Has no effect if not specified or if parameterAttributeMapping does not have matches to request
     * parameters in the referringParameterName.  If specified, parameterAttributeMapping
     * matches in first the referringParameterName and then the request parameters (thus would overwrite).
     * @param referringParameterName Name of a request parameter to decode and inspect for
     *                               parameterAttributeMapping matches.
     * @since 1.7.1
     */
    public void setReferringParameterName(String referringParameterName) {
        this.referringParameterName = referringParameterName;
    }

    public String getUrlCharacterEncoding() {
        return urlCharacterEncoding;
    }

    /**
     * Sets the URL character encoding to use to decode the value of the referringParameterName if it
     * was specified.  Defaults to UTF-8.
     * @param urlCharacterEncoding URL character encoding name
     * @since 1.7.1
     */
    public void setUrlCharacterEncoding(String urlCharacterEncoding) {
        this.urlCharacterEncoding = urlCharacterEncoding;
    }

    public Set<String> getHeadersToIgnoreSemicolons() {
        return headersToIgnoreSemicolons;
    }

    /**
     * Set of header values to ignore splitting on semicolons.  Some HTTP Headers, such as the User-Agent string,
     * should not be split on semicolons.  Defaults to User-Agent
     * @param headersToIgnoreSemicolons Set of HTTP Header names to not split its value on semicolons into
     *                                  multiple values
     */
    public void setHeadersToIgnoreSemicolons(Set<String> headersToIgnoreSemicolons) {
        this.headersToIgnoreSemicolons = headersToIgnoreSemicolons;
    }

    /* (non-Javadoc)
             * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
             */
    @Override
    public final void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain chain) throws IOException, ServletException {
        if (ProcessingPosition.PRE == this.processingPosition || ProcessingPosition.BOTH == this.processingPosition) {
            this.doProcessing(servletRequest);
        }

        chain.doFilter(servletRequest, servletResponse);

        if (ProcessingPosition.POST == this.processingPosition || ProcessingPosition.BOTH == this.processingPosition) {
            this.doProcessing(servletRequest);
        }
    }

    private void doProcessing(final ServletRequest servletRequest) {
        if (servletRequest instanceof HttpServletRequest) {
            final HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

            final Map<String, List<Object>> attributes = new LinkedHashMap<>();

            this.addRequestProperties(httpServletRequest, attributes);

            this.addRequestCookies(httpServletRequest, attributes);

            this.addRequestHeaders(httpServletRequest, attributes);

            addRequestParameters(httpServletRequest, attributes);

            addRequestAttributes(httpServletRequest, attributes);

            final String username;
            final List<Object> usernameAttributes = attributes.get(this.usernameAttribute);
            if (usernameAttributes == null || usernameAttributes.isEmpty() || usernameAttributes.get(0) == null) {
                logger.info("No username found as attribute '{}' among {}", usernameAttribute, attributes);
                username = null;
            } else {
                username = usernameAttributes.get(0).toString();
            }

            logger.debug("Adding attributes for user {}, attributes {}", username, attributes);

            this.additionalDescriptors.setName(username);

            if (this.clearExistingAttributes) {
                this.additionalDescriptors.setAttributes(attributes);
            } else {
                this.additionalDescriptors.addAttributes(attributes);
            }
        }
    }

    /**
     * Add other properties from the request to the attributes map.
     *
     * @param httpServletRequest Http Servlet Request
     * @param attributes Map of attributes to add additional attributes to from the Http Request
     */
    protected void addRequestProperties(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
        if (this.remoteUserAttribute != null) {
            final String remoteUser = httpServletRequest.getRemoteUser();
            attributes.put(this.remoteUserAttribute, list(remoteUser));
        }
        if (this.remoteAddrAttribute != null) {
            final String remoteAddr = httpServletRequest.getRemoteAddr();
            attributes.put(this.remoteAddrAttribute, list(remoteAddr));
        }
        if (this.remoteHostAttribute != null) {
            final String remoteHost = httpServletRequest.getRemoteHost();
            attributes.put(this.remoteHostAttribute, list(remoteHost));
        }
        if (this.serverNameAttribute != null) {
            final String serverName = httpServletRequest.getServerName();
            attributes.put(this.serverNameAttribute, list(serverName));
        }
        if (this.serverPortAttribute != null) {
            final int serverPort = httpServletRequest.getServerPort();
            attributes.put(this.serverPortAttribute, list(serverPort));
        }
    }

    /**
     * Add request cookies to the attributes map
     *
     * @param httpServletRequest Http Servlet Request
     * @param attributes Map of attributes to add additional attributes to from the Http Request
     */
    protected void addRequestCookies(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
        final Cookie[] cookies = httpServletRequest.getCookies();
        if (cookies == null) {
            return;
        }

        for (final Cookie cookie : cookies) {
            final String cookieName = cookie.getName();
            if (this.cookieAttributeMapping.containsKey(cookieName)) {
                for (final String attributeName : this.cookieAttributeMapping.get(cookieName)) {
                    attributes.put(attributeName, list(cookie.getValue()));
                }
            }
        }
    }

    /**
     * Add request headers to the attributes map
     *
     * @param httpServletRequest Http Servlet Request
     * @param attributes Map of attributes to add additional attributes to from the Http Request
     */
    protected void addRequestHeaders(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
        for (final Map.Entry<String, Set<String>> headerAttributeEntry : this.headerAttributeMapping.entrySet()) {
            final String headerName = headerAttributeEntry.getKey();
            final String value = httpServletRequest.getHeader(headerName);

            if (value != null) {
                for (final String attributeName : headerAttributeEntry.getValue()) {
                    attributes.put(attributeName,
                            headersToIgnoreSemicolons.contains(headerName) ?
                                    list(value)
                                    : splitOnSemiColonHandlingBackslashEscaping(value));
                }
            }
        }
    }

    /**
     * Add specified request parameters to the attributes map.  Some Shibboleth (Apache httpd mod-shib) configurations
     * use environment variables which get passed by AJP as request attributes rather than HTTP Headers to pass
     * attributes from the IDP to the application.  Since the attributes are likely from Shib, we want to do the
     * same semicolon splitting behavior as HTTP headers. Shib often passes multi-valued attributes, such as a
     * list of user roles.
     * @param httpServletRequest Servlet Request
     * @param attributes Map of attributes to add additional attributes to from the Http Request
     * @since 1.7.1
     */
    protected void addRequestAttributes(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
        for (final Map.Entry<String, Set<String>> attributeMapping : requestAttributeMapping.entrySet()) {
            final String attributeName = attributeMapping.getKey();
            final Object value = httpServletRequest.getAttribute(attributeName);

            if (value != null) {
                if (value instanceof String) {
                    for (final String attrName : attributeMapping.getValue()) {
                        attributes.put(attrName, splitOnSemiColonHandlingBackslashEscaping((String) value));
                    }
                } else {
                    logger.warn("Specified request attribute {} is not a String, is a {} so it is ignored", attributeName,
                            value.getClass());
                }
            } else {
                logger.debug("Did not find request attribute {} in the request", attributeName);
            }
        }
    }

    /**
     * Add specified request parameters to the attributes map.  The request parameters may be directly in
     * the URL or in a referringUrl parameter (with uPortal accessing /uPortal?nativeClient=true will go through
     * several redirects and get turned into /uPortal/Login?refUrl=%2FuPortal%2F%3FnativeClient%3Dtrue,
     * which when fetched with request.getParameter(refurl) yields '/uPortal/?nativeClient=true').
     * @param httpServletRequest Servlet Request
     * @param attributes Map of attributes to add additional attributes to from the Http Request
     * @since 1.7.1
     */
    protected void addRequestParameters(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
        // If a referringParameterName is specified, first match against
        if (referringParameterName != null
                && StringUtils.isNotBlank(httpServletRequest.getParameter(referringParameterName))) {
            String referringValue = httpServletRequest.getParameter(referringParameterName);
            Map<String, String> referringParameters = parseRequestParameterString(referringValue);
            for (final Map.Entry<String, Set<String>> parameterMapping : parameterAttributeMapping.entrySet()) {
                final String parameterName = parameterMapping.getKey();
                final String value = referringParameters.get(parameterName);

                if (value != null) {
                    for (final String attributeName : parameterMapping.getValue()) {
                        attributes.put(attributeName, list(value));
                    }
                }
            }
        }
        for (final Map.Entry<String, Set<String>> parameterMapping : parameterAttributeMapping.entrySet()) {
            final String parameterName = parameterMapping.getKey();
            final String value = httpServletRequest.getParameter(parameterName);

            if (value != null) {
                for (final String attributeName : parameterMapping.getValue()) {
                    attributes.put(attributeName, list(value));
                }
            }
        }
    }

    private Map<String, String> parseRequestParameterString(String requestParameterString) {
        Map<String, String> parameters = new HashMap<>();
        if (requestParameterString.indexOf("?") > 0) {
            requestParameterString = requestParameterString.substring(requestParameterString.indexOf("?") + 1);
        }
        String[] parameterStrings = requestParameterString.trim().split("&");
        for (String parameterString : parameterStrings) {
            String[] parts = parameterString.split("=");
            if (parts.length > 1) {
                parameters.put(parts[0], parts[1]);
            } else {
                logger.info("Ignoring encoded parameter {} in referring url parameter because it has no value",
                        parts[0]);
            }
        }
        return parameters;
    }

    /* Multiple attribute values are separated by a semicolon, and semicolons in values are escaped with a backslash */
    /* (https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess) */
    /* transforms "a;b" into list { "a", "b" } */
    /* transforms "a\;b" into list { "a;b" } */
    /* transforms "a;b\;" into list { "a", "b;" } */
    private static List<Object> splitOnSemiColonHandlingBackslashEscaping(final String in) {
        final List<Object> result = new LinkedList<>();

        int i = 1;
        String prefix = "";
        final String[] splitStringArr = in.split(";");
        for (final String s : splitStringArr) {
            final String s2 = s.replaceFirst("\\\\$", ";");
            if (s.equals(s2) || i == splitStringArr.length) {
                result.add(prefix + s2);
                prefix = "";
            } else {
                prefix += s2;
            }
            i++;
        }
        return result;
    }

    private List<Object> list(final Object value) {
        return Collections.singletonList(value);
    }
}


text:
No. 1 South Carolina, Boston power past Coastal 102-39
By PETE IACOBELLI The Associated Press
South Carolina forward Aliyah Boston (4) shoots between Coastal Carolina center Miriam Recarte, left, and forward Makaila Cange during the first half of an NCAA college basketball game in Columbia, S.C., Wednesday, Dec. 21, 2022. (AP Photo/Nell Redmond)[ASSOCIATED PRESS/Nell Redmond]
COLUMBIA, S.C. (AP) — Aliyah Boston had her 68th career double double with 11 points and 10 rebounds to keep No. 1 South Carolina undefeated in a 102-39 victory over Coastal Carolina. Boston played only 13 minutes as she moved four double-double games away from the program's all-time mark set by Sheila Foster four decades ago. The Gamecocks improved to 12-0 for a second straight season and the fourth time in Dawn Staley's 15 years as coach. South Carolina led 30-6 after one quarter and had little trouble extending the margin over the Chanticleers.
Coastal Carolina guard Deaja Richardson, left, strips the ball from South Carolina guard Zia Cooke during the first half of an NCAA college basketball game in Columbia, S.C., Wednesday, Dec. 21, 2022. (AP Photo/Nell Redmond)
Photo: ASSOCIATED PRESS/Nell Redmond
South Carolina forward Sania Feagin drives to the basket against Coastal Carolina during the first half of an NCAA college basketball game in Columbia, S.C., Wednesday, Dec. 21, 2022. (AP Photo/Nell Redmond)
South Carolina forward Aliyah Boston, center, drives to the basket against Coastal Carolina forward Makaila Cange (21) during the first half of an NCAA college basketball game against Coastal Carolina in Columbia, S.C., Wednesday, Dec. 21, 2022. South Carolina won 102-39. (AP Photo/Nell Redmond)


Richard Dean Defeudis is in big trouble for brandishing a knife last week. It was what he did before that you won't believe.
Defeudis is accused of burglarizing a family's home while they slept. After putting what he wanted in a bag he made his way into the bedroom where the homeowners were sleeping.
He stripped off his clothes and crawled into bed with the couple!
The man of the house awoke to see Defeudis sitting on top of him with the knife.
The homeowner pushed him off and reached for a handgun.
Defeudis grabbed his pants and ran... with the homeowner in pursuit. He eventually fired three shots at the ground and stopped running.
Defeudis then allegedly broke into a SECOND home, this one vacant, and hid until police found him.


text:
How old do you feel?
By Baglan Alseit Posted on 2022-08-19 Category :
Baglan Alseit
ekaterina_morozova says:
I believe that age only gives an idea of the biological processes that affect the body of each person. I refer to myself in different time frames: at one time I feel completely like a child( many people managed to preserve feelings that can only be felt at an early age), at another – I am as young as possible. And, of course, in certain moments of life, when you need to make, for example, difficult choices, take responsibility in a particular situation, I am a mature person
akira_aru says:
At the age of 14, I looked older than my peers( I looked 16 years old) and thought like older people,unlike my classmates, I had completely different hobbies and it was difficult for me to communicate with them. I felt like I was 17 years old and I was communicating with "youngsters". To be honest, my ESV was off the scale at that time, especially after reading The Catcher in the Rye, I could say that I was mixing everyone up with shit, but I also skillfully played the role of an ordinary 14-year-old girl. I communicated mainly with children over 18 and under 25, although on the Internet (Skype/vk). I never said my age so that my words were perceived as those of an adult, and when I revealed my age, they simply did not believe me. But after that, communication did not change, people already knew that I always communicate like this and I was glad that I was not perceived as a stupid child. At the age of 16, I began to feel like I was 18 years old. I began to communicate less with people, but the feeling that I was older than I was did not give me rest, sometimes it seemed as if I was born too late and in fact my mother should have given birth to me in the year 94. It was difficult for me to communicate with my peers, maybe it's because we have a small city, the contingent of which leaves much to be desired, but I was really lonely, my friends/classmates could not support my topics for communication. Even my "boyfriend", whom I dated at school, I just played the role, and when I came home I was myself. On the Internet, I could find people who were similar to me and it was easier for me. At the same time, I could communicate with people in their 30s and 40s, my mother's friends always talked to me on equal terms, unlike other children/teenagers, but the age difference made it clear. Now in my 18 years, on the contrary, I feel like a child, having moved away from my mother, I realized how little I knew, I knew a lot in theory how to live, but when I began to live with a guy who is about 22 years old and has a richer life experience(I found times of famine), I realized that I was still a child. Sometimes I scold myself for being overly cautious and realize that I'm still really that 14-year-old teenager who thinks he knows everything, but in reality knows nothing and can't do it. I hope I'll still be at 17 😀 when I'm 30. �
I still have a strange situation with the number "17", I was very much looking forward to my seventeenth birthday, a lot of changes took place this year and my life finally became richer. Now, after the 18th anniversary, I really want to extend the 17th anniversary, I often make mistakes and say that I am 17 and still do not believe that I am now an ADULT.
vlad_ivanov says:
I always felt younger, so I easily threw off 10 years from the years I had lived. Working with young people is an interesting job. Friends are full of energy. Lots of travel, lots of new stuff. Life!
But sometimes you realize that you have become an adult, specifically from those who are already well over n years old. A couple of months ago, I went to knock out a kindergarten for a child, I've been waiting in line for almost 3.5 years, I didn't really strain myself, but then the time came, the child needs socialization. I came to this district center, which has two (!)hours for reception. three days a week, from 11 to 13 o'clock. And here I am among 150 people, a significant part of whom are mothers with children who have no one to leave at home with, and we are standing in line, and when you approach the inspector, they tell you that there are no seats, but literally by September everything will be arranged, hold on, and you still need to take two or three references, right there, and you You feel very, very grown up.